diff --git a/assets/404-BVft3pyR.js b/assets/404-DgXcW6hh.js similarity index 92% rename from assets/404-BVft3pyR.js rename to assets/404-DgXcW6hh.js index 561d4b2..2c9d3d2 100644 --- a/assets/404-BVft3pyR.js +++ b/assets/404-DgXcW6hh.js @@ -1 +1 @@ -import{y as C,z as o,e as a,A as s}from"./index-_6IQhlPZ.js";import{V as L,a as r}from"./VRow-WkEz3xRr.js";import{V as h}from"./VContainer-Bg8RevuO.js";import{X as c,Y as n,Z as e,j as t,k as i}from"./vendor-vue-H0jQBZ7T.js";import"./vendor-vuetify-ChAgIwn2.js";const f="data:image/svg+xml,%3csvg%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns='http://www.w3.org/2000/svg'%20width='256'%20height='256'%20viewBox='0%200%20256%20256'%20fill='none'%3e%3cg%20clip-path='url(%23clip-path-74_1)'%3e%3cpath%20fill='%23FFFFFF'%20d='M0%20256L256%20256L256%200L0%200L0%20256Z'%3e%3c/path%3e%3crect%20x='0'%20y='0'%20width='256'%20height='128'%20fill='%23D8C4A0'%3e%3c/rect%3e%3crect%20x='0'%20y='128'%20width='256'%20height='128'%20fill='%23F5E0BB'%3e%3c/rect%3e%3cpath%20d='M28%20228L128%20128L228%20128L128%20228L28%20228Z'%20fill-rule='evenodd'%20fill='%23241A04'%3e%3c/path%3e%3cpath%20d='M28%20128L128%2028L228%2028L128%20128L28%20128Z'%20fill-rule='evenodd'%20fill='%2352452A'%3e%3c/path%3e%3cg%3e%3cpath%20fill='%23000000'%20d='M-3049.01%202467.94L-3043.48%202467.94L-3043.48%202466.99L-3045.92%202466.99C-3046.36%202466.99%20-3046.9%202467.04%20-3047.36%202467.08C-3045.29%202465.12%20-3043.9%202463.33%20-3043.9%202461.57C-3043.9%202460.01%20-3044.9%202458.99%20-3046.47%202458.99C-3047.58%202458.99%20-3048.35%202459.49%20-3049.06%202460.27L-3048.43%202460.9C-3047.93%202460.31%20-3047.32%202459.88%20-3046.6%202459.88C-3045.51%202459.88%20-3044.98%202460.61%20-3044.98%202461.62C-3044.98%202463.13%20-3046.25%202464.88%20-3049.01%202467.29L-3049.01%202467.94ZM-3039.27%202468.1C-3037.9%202468.1%20-3036.74%202466.95%20-3036.74%202465.24C-3036.74%202463.39%20-3037.7%202462.48%20-3039.19%202462.48C-3039.87%202462.48%20-3040.64%202462.88%20-3041.18%202463.54C-3041.13%202460.81%20-3040.13%202459.89%20-3038.91%202459.89C-3038.38%202459.89%20-3037.85%202460.15%20-3037.52%202460.56L-3036.89%202459.89C-3037.39%202459.36%20-3038.04%202458.99%20-3038.96%202458.99C-3040.66%202458.99%20-3042.21%202460.3%20-3042.21%202463.74C-3042.21%202466.65%20-3040.95%202468.1%20-3039.27%202468.1ZM-3041.15%202464.41C-3040.58%202463.6%20-3039.91%202463.3%20-3039.36%202463.3C-3038.3%202463.3%20-3037.78%202464.05%20-3037.78%202465.24C-3037.78%202466.44%20-3038.43%202467.23%20-3039.27%202467.23C-3040.37%202467.23%20-3041.03%202466.24%20-3041.15%202464.41ZM-3035.17%202467.94L-3030.34%202467.94L-3030.34%202467.03L-3032.1%202467.03L-3032.1%202459.15L-3032.95%202459.15C-3033.43%202459.42%20-3033.99%202459.62%20-3034.77%202459.77L-3034.77%202460.47L-3033.2%202460.47L-3033.2%202467.03L-3035.17%202467.03L-3035.17%202467.94ZM-3029.51%202467.94L-3028.4%202467.94L-3027.54%202465.25L-3024.33%202465.25L-3023.49%202467.94L-3022.31%202467.94L-3025.3%202459.15L-3026.54%202459.15L-3029.51%202467.94ZM-3027.27%202464.38L-3026.84%202463.02C-3026.52%202462.02%20-3026.24%202461.08%20-3025.96%202460.04L-3025.91%202460.04C-3025.62%202461.06%20-3025.35%202462.02%20-3025.02%202463.02L-3024.6%202464.38L-3027.27%202464.38ZM-3018.93%202468.1C-3017.26%202468.1%20-3016.19%202466.58%20-3016.19%202463.51C-3016.19%202460.47%20-3017.26%202458.99%20-3018.93%202458.99C-3020.61%202458.99%20-3021.67%202460.47%20-3021.67%202463.51C-3021.67%202466.58%20-3020.61%202468.1%20-3018.93%202468.1ZM-3018.93%202467.21C-3019.93%202467.21%20-3020.61%202466.09%20-3020.61%202463.51C-3020.61%202460.95%20-3019.93%202459.85%20-3018.93%202459.85C-3017.93%202459.85%20-3017.25%202460.95%20-3017.25%202463.51C-3017.25%202466.09%20-3017.93%202467.21%20-3018.93%202467.21ZM-3012.27%202468.1C-3010.6%202468.1%20-3009.53%202466.58%20-3009.53%202463.51C-3009.53%202460.47%20-3010.6%202458.99%20-3012.27%202458.99C-3013.95%202458.99%20-3015.01%202460.47%20-3015.01%202463.51C-3015.01%202466.58%20-3013.95%202468.1%20-3012.27%202468.1ZM-3012.27%202467.21C-3013.27%202467.21%20-3013.95%202466.09%20-3013.95%202463.51C-3013.95%202460.95%20-3013.27%202459.85%20-3012.27%202459.85C-3011.27%202459.85%20-3010.59%202460.95%20-3010.59%202463.51C-3010.59%202466.09%20-3011.27%202467.21%20-3012.27%202467.21Z'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip-path-74_1'%3e%3cpath%20d='M0%20256L256%20256L256%200L0%200L0%20256Z'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e",m={__name:"404",setup(d){return(p,l)=>(c(),n(h,{class:"fill-height"},{default:e(()=>[t(C,{class:"align-centerfill-height mx-auto","max-width":"900"},{default:e(()=>[t(o,{class:"mb-4",height:"150",src:f}),l[3]||(l[3]=i("div",{class:"text-center"},[i("div",{class:"text-body-2 font-weight-light mb-n1"},"出现了错误"),i("h1",{class:"text-h2 font-weight-bold"},"404")],-1)),l[4]||(l[4]=i("div",{class:"py-4"},null,-1)),t(L,null,{default:e(()=>[t(r,{cols:"12"},{default:e(()=>[t(a,{class:"py-4",color:"surface-variant","prepend-icon":"mdi-help",rounded:"lg",variant:"outlined"},{image:e(()=>[t(o,{position:"top right"})]),title:e(()=>[...l[1]||(l[1]=[i("h2",{class:"text-h5 font-weight-bold"},"为什么会出现此错误?",-1)])]),subtitle:e(()=>[...l[2]||(l[2]=[i("div",{class:"text-subtitle-1"},"大概是页面未找到",-1)])]),default:e(()=>[t(s,{contained:"","model-value":"",opacity:".12",persistent:"",scrim:"primary"})]),_:1})]),_:1}),t(r,{cols:"6"},{default:e(()=>[t(a,{class:"py-4",color:"surface-variant","prepend-icon":"mdi-home",rounded:"lg",title:"返回首页",to:"/",variant:"text"},{default:e(()=>[t(s,{contained:"","model-value":"",opacity:".06",persistent:"",scrim:"primary"})]),_:1})]),_:1}),t(r,{cols:"6"},{default:e(()=>[t(a,{class:"py-4",color:"surface-variant","prepend-icon":"mdi-arrow-left-drop-circle",rounded:"lg",title:"返回上一页",variant:"text",onClick:l[0]||(l[0]=u=>this.$router.back())},{default:e(()=>[t(s,{contained:"","model-value":"",opacity:".06",persistent:"",scrim:"primary"})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}))}},y={__name:"404",setup(d){return(p,l)=>(c(),n(m))}};export{y as default}; +import{A as C,B as o,e as a,C as s}from"./index-CFUCTEXJ.js";import{V as L,a as r}from"./VRow-Dw4j2TKL.js";import{V as h}from"./VContainer-RtoBp6rB.js";import{X as c,Y as n,Z as e,j as t,k as i}from"./vendor-vue-B2vxubPy.js";import"./vendor-vuetify-s-yw_Hr8.js";const f="data:image/svg+xml,%3csvg%20xmlns:xlink='http://www.w3.org/1999/xlink'%20xmlns='http://www.w3.org/2000/svg'%20width='256'%20height='256'%20viewBox='0%200%20256%20256'%20fill='none'%3e%3cg%20clip-path='url(%23clip-path-74_1)'%3e%3cpath%20fill='%23FFFFFF'%20d='M0%20256L256%20256L256%200L0%200L0%20256Z'%3e%3c/path%3e%3crect%20x='0'%20y='0'%20width='256'%20height='128'%20fill='%23D8C4A0'%3e%3c/rect%3e%3crect%20x='0'%20y='128'%20width='256'%20height='128'%20fill='%23F5E0BB'%3e%3c/rect%3e%3cpath%20d='M28%20228L128%20128L228%20128L128%20228L28%20228Z'%20fill-rule='evenodd'%20fill='%23241A04'%3e%3c/path%3e%3cpath%20d='M28%20128L128%2028L228%2028L128%20128L28%20128Z'%20fill-rule='evenodd'%20fill='%2352452A'%3e%3c/path%3e%3cg%3e%3cpath%20fill='%23000000'%20d='M-3049.01%202467.94L-3043.48%202467.94L-3043.48%202466.99L-3045.92%202466.99C-3046.36%202466.99%20-3046.9%202467.04%20-3047.36%202467.08C-3045.29%202465.12%20-3043.9%202463.33%20-3043.9%202461.57C-3043.9%202460.01%20-3044.9%202458.99%20-3046.47%202458.99C-3047.58%202458.99%20-3048.35%202459.49%20-3049.06%202460.27L-3048.43%202460.9C-3047.93%202460.31%20-3047.32%202459.88%20-3046.6%202459.88C-3045.51%202459.88%20-3044.98%202460.61%20-3044.98%202461.62C-3044.98%202463.13%20-3046.25%202464.88%20-3049.01%202467.29L-3049.01%202467.94ZM-3039.27%202468.1C-3037.9%202468.1%20-3036.74%202466.95%20-3036.74%202465.24C-3036.74%202463.39%20-3037.7%202462.48%20-3039.19%202462.48C-3039.87%202462.48%20-3040.64%202462.88%20-3041.18%202463.54C-3041.13%202460.81%20-3040.13%202459.89%20-3038.91%202459.89C-3038.38%202459.89%20-3037.85%202460.15%20-3037.52%202460.56L-3036.89%202459.89C-3037.39%202459.36%20-3038.04%202458.99%20-3038.96%202458.99C-3040.66%202458.99%20-3042.21%202460.3%20-3042.21%202463.74C-3042.21%202466.65%20-3040.95%202468.1%20-3039.27%202468.1ZM-3041.15%202464.41C-3040.58%202463.6%20-3039.91%202463.3%20-3039.36%202463.3C-3038.3%202463.3%20-3037.78%202464.05%20-3037.78%202465.24C-3037.78%202466.44%20-3038.43%202467.23%20-3039.27%202467.23C-3040.37%202467.23%20-3041.03%202466.24%20-3041.15%202464.41ZM-3035.17%202467.94L-3030.34%202467.94L-3030.34%202467.03L-3032.1%202467.03L-3032.1%202459.15L-3032.95%202459.15C-3033.43%202459.42%20-3033.99%202459.62%20-3034.77%202459.77L-3034.77%202460.47L-3033.2%202460.47L-3033.2%202467.03L-3035.17%202467.03L-3035.17%202467.94ZM-3029.51%202467.94L-3028.4%202467.94L-3027.54%202465.25L-3024.33%202465.25L-3023.49%202467.94L-3022.31%202467.94L-3025.3%202459.15L-3026.54%202459.15L-3029.51%202467.94ZM-3027.27%202464.38L-3026.84%202463.02C-3026.52%202462.02%20-3026.24%202461.08%20-3025.96%202460.04L-3025.91%202460.04C-3025.62%202461.06%20-3025.35%202462.02%20-3025.02%202463.02L-3024.6%202464.38L-3027.27%202464.38ZM-3018.93%202468.1C-3017.26%202468.1%20-3016.19%202466.58%20-3016.19%202463.51C-3016.19%202460.47%20-3017.26%202458.99%20-3018.93%202458.99C-3020.61%202458.99%20-3021.67%202460.47%20-3021.67%202463.51C-3021.67%202466.58%20-3020.61%202468.1%20-3018.93%202468.1ZM-3018.93%202467.21C-3019.93%202467.21%20-3020.61%202466.09%20-3020.61%202463.51C-3020.61%202460.95%20-3019.93%202459.85%20-3018.93%202459.85C-3017.93%202459.85%20-3017.25%202460.95%20-3017.25%202463.51C-3017.25%202466.09%20-3017.93%202467.21%20-3018.93%202467.21ZM-3012.27%202468.1C-3010.6%202468.1%20-3009.53%202466.58%20-3009.53%202463.51C-3009.53%202460.47%20-3010.6%202458.99%20-3012.27%202458.99C-3013.95%202458.99%20-3015.01%202460.47%20-3015.01%202463.51C-3015.01%202466.58%20-3013.95%202468.1%20-3012.27%202468.1ZM-3012.27%202467.21C-3013.27%202467.21%20-3013.95%202466.09%20-3013.95%202463.51C-3013.95%202460.95%20-3013.27%202459.85%20-3012.27%202459.85C-3011.27%202459.85%20-3010.59%202460.95%20-3010.59%202463.51C-3010.59%202466.09%20-3011.27%202467.21%20-3012.27%202467.21Z'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip-path-74_1'%3e%3cpath%20d='M0%20256L256%20256L256%200L0%200L0%20256Z'%20fill='white'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e",m={__name:"404",setup(d){return(p,l)=>(c(),n(h,{class:"fill-height"},{default:e(()=>[t(C,{class:"align-centerfill-height mx-auto","max-width":"900"},{default:e(()=>[t(o,{class:"mb-4",height:"150",src:f}),l[3]||(l[3]=i("div",{class:"text-center"},[i("div",{class:"text-body-2 font-weight-light mb-n1"},"出现了错误"),i("h1",{class:"text-h2 font-weight-bold"},"404")],-1)),l[4]||(l[4]=i("div",{class:"py-4"},null,-1)),t(L,null,{default:e(()=>[t(r,{cols:"12"},{default:e(()=>[t(a,{class:"py-4",color:"surface-variant","prepend-icon":"mdi-help",rounded:"lg",variant:"outlined"},{image:e(()=>[t(o,{position:"top right"})]),title:e(()=>[...l[1]||(l[1]=[i("h2",{class:"text-h5 font-weight-bold"},"为什么会出现此错误?",-1)])]),subtitle:e(()=>[...l[2]||(l[2]=[i("div",{class:"text-subtitle-1"},"大概是页面未找到",-1)])]),default:e(()=>[t(s,{contained:"","model-value":"",opacity:".12",persistent:"",scrim:"primary"})]),_:1})]),_:1}),t(r,{cols:"6"},{default:e(()=>[t(a,{class:"py-4",color:"surface-variant","prepend-icon":"mdi-home",rounded:"lg",title:"返回首页",to:"/",variant:"text"},{default:e(()=>[t(s,{contained:"","model-value":"",opacity:".06",persistent:"",scrim:"primary"})]),_:1})]),_:1}),t(r,{cols:"6"},{default:e(()=>[t(a,{class:"py-4",color:"surface-variant","prepend-icon":"mdi-arrow-left-drop-circle",rounded:"lg",title:"返回上一页",variant:"text",onClick:l[0]||(l[0]=u=>this.$router.back())},{default:e(()=>[t(s,{contained:"","model-value":"",opacity:".06",persistent:"",scrim:"primary"})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}))}},Z={__name:"404",setup(d){return(p,l)=>(c(),n(m))}};export{Z as default}; diff --git a/assets/AttendanceManagementDialog-CAjW2NDL.js b/assets/AttendanceManagementDialog-CAjW2NDL.js new file mode 100644 index 0000000..0880432 --- /dev/null +++ b/assets/AttendanceManagementDialog-CAjW2NDL.js @@ -0,0 +1 @@ +import{_ as L,e as x,c as w,f as v,r as F,i as d,d as k,M,v as z,q as _,k as E,g as P}from"./index-CFUCTEXJ.js";import{V as f}from"./VChip-DR8Ljy6R.js";import{V as b,a as C}from"./VRow-Dw4j2TKL.js";import{V as D}from"./VTextField-ByBRYn99.js";import{X as u,Y as h,Z as a,j as l,a1 as c,S as p,$ as A,k as o,_ as V,F as S,a2 as y}from"./vendor-vue-B2vxubPy.js";import{a0 as B}from"./vendor-vuetify-s-yw_Hr8.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";const N={name:"AttendanceManagementDialog",props:{modelValue:{type:Boolean,required:!0},studentList:{type:Array,required:!0},attendance:{type:Object,required:!0},dateString:{type:String,default:""}},emits:["update:modelValue","save","change"],setup(){const{mobile:t}=B();return{mobile:t}},data(){return{attendanceSearch:"",attendanceFilter:[]}},computed:{isMobile(){return P("display.forceDesktopMode")?!1:this.mobile},filteredStudents(){let t=[...this.studentList];if(this.attendanceSearch){const e=this.attendanceSearch.toLowerCase();t=t.filter(r=>r.toLowerCase().includes(e))}return this.attendanceFilter&&this.attendanceFilter.length>0&&(t=t.filter(e=>!!(this.attendanceFilter.includes("present")&&this.isPresent(e)||this.attendanceFilter.includes("absent")&&this.isAbsent(e)||this.attendanceFilter.includes("late")&&this.isLate(e)||this.attendanceFilter.includes("exclude")&&this.isExclude(e)))),t},extractedSurnames(){if(!this.studentList||this.studentList.length===0)return[];const t=new Map;return this.studentList.forEach(e=>{if(e&&e.length>0){const r=e.charAt(0);t.set(r,(t.get(r)||0)+1)}}),Array.from(t.entries()).map(([e,r])=>({name:e,count:r})).sort((e,r)=>e.name.localeCompare(r.name,"zh-CN"))}},methods:{toggleFilter(t){const e=this.attendanceFilter.indexOf(t);e===-1?this.attendanceFilter.push(t):this.attendanceFilter.splice(e,1)},isPresent(t){const{absent:e,late:r,exclude:m}=this.attendance;return!e.includes(t)&&!r.includes(t)&&!m.includes(t)},isAbsent(t){return this.attendance.absent.includes(t)},isLate(t){return this.attendance.late.includes(t)},isExclude(t){return this.attendance.exclude.includes(t)},getStudentStatusColor(t){return this.attendance.absent.includes(t)?"error":this.attendance.late.includes(t)?"warning":this.attendance.exclude.includes(t)?"grey":"success"},getStudentStatusIcon(t){return this.attendance.absent.includes(t)?"mdi-account-off":this.attendance.late.includes(t)?"mdi-clock-alert":this.attendance.exclude.includes(t)?"mdi-account-cancel":"mdi-account-check"},removeFromAll(t){const e=this.attendance.absent.indexOf(t);e>-1&&this.attendance.absent.splice(e,1);const r=this.attendance.late.indexOf(t);r>-1&&this.attendance.late.splice(r,1);const m=this.attendance.exclude.indexOf(t);m>-1&&this.attendance.exclude.splice(m,1)},setPresent(t){this.removeFromAll(t),this.$emit("change")},setAbsent(t){this.removeFromAll(t),this.attendance.absent.push(t),this.$emit("change")},setLate(t){this.removeFromAll(t),this.attendance.late.push(t),this.$emit("change")},setExclude(t){this.removeFromAll(t),this.attendance.exclude.push(t),this.$emit("change")},setAllPresent(){this.attendance.absent.splice(0,this.attendance.absent.length),this.attendance.late.splice(0,this.attendance.late.length),this.attendance.exclude.splice(0,this.attendance.exclude.length),this.$emit("change")},setAllAbsent(){this.setAllPresent(),this.attendance.absent.push(...this.studentList),this.$emit("change")},setAllLate(){this.setAllPresent(),this.attendance.late.push(...this.studentList),this.$emit("change")},setAllExclude(){this.setAllPresent(),this.attendance.exclude.push(...this.studentList),this.$emit("change")}}},O={class:"d-flex flex-wrap mt-2 gap-1"},T={class:"d-flex flex-wrap mb-4 gap-2"},q={class:"flex-grow-1"},I={class:"d-flex align-center"},j={class:"text-subtitle-1"},U={class:"attendance-actions"},R={class:"d-flex flex-wrap gap-2"};function X(t,e,r,m,s,i){return u(),h(E,{"model-value":r.modelValue,fullscreen:i.isMobile,"fullscreen-breakpoint":"sm","max-width":"900","onUpdate:modelValue":e[7]||(e[7]=n=>t.$emit("update:modelValue",n))},{default:a(()=>[l(x,null,{default:a(()=>[l(w,{class:"d-flex align-center"},{default:a(()=>[l(v,{class:"mr-2",icon:"mdi-account-group"}),e[8]||(e[8]=c(" 考勤 ",-1)),l(F),i.isMobile?A("",!0):(u(),h(f,{key:0,class:"ml-2",color:"primary",size:"small"},{default:a(()=>[c(p(r.dateString),1)]),_:1})),i.isMobile?(u(),h(d,{key:1,icon:"mdi-close",variant:"text",onClick:e[0]||(e[0]=n=>t.$emit("update:modelValue",!1))})):A("",!0)]),_:1}),l(k,null,{default:a(()=>[l(b,{class:"mb-4"},{default:a(()=>[l(C,{cols:"12",md:"12"},{default:a(()=>[l(D,{modelValue:s.attendanceSearch,"onUpdate:modelValue":e[1]||(e[1]=n=>s.attendanceSearch=n),clearable:"",hint:"支持筛选姓氏,如输入'孙'可筛选所有姓孙的学生",label:"搜索学生","prepend-inner-icon":"mdi-magnify",variant:"outlined"},null,8,["modelValue"]),o("div",O,[(u(!0),V(S,null,y(i.extractedSurnames,n=>(u(),h(d,{key:n.name,color:s.attendanceSearch===n.name?"primary":"",variant:s.attendanceSearch===n.name?"elevated":"text",onClick:g=>s.attendanceSearch=s.attendanceSearch===n.name?"":n.name},{default:a(()=>[c(p(n.name)+" ("+p(n.count)+") ",1)]),_:2},1032,["color","variant","onClick"]))),128))])]),_:1})]),_:1}),o("div",T,[o("div",null,[l(f,{"append-icon":s.attendanceFilter.includes("present")?"mdi-check":"",color:s.attendanceFilter.includes("present")?"success":"",variant:s.attendanceFilter.includes("present")?"elevated":"tonal",class:"px-2 filter-chip","prepend-icon":"mdi-account-check",value:"present",onClick:e[2]||(e[2]=n=>i.toggleFilter("present"))},{default:a(()=>[...e[9]||(e[9]=[c(" 到课 ",-1)])]),_:1},8,["append-icon","color","variant"]),l(f,{"append-icon":s.attendanceFilter.includes("absent")?"mdi-check":"",color:s.attendanceFilter.includes("absent")?"error":"",variant:s.attendanceFilter.includes("absent")?"elevated":"tonal",class:"px-2 filter-chip","prepend-icon":"mdi-account-off",value:"absent",onClick:e[3]||(e[3]=n=>i.toggleFilter("absent"))},{default:a(()=>[...e[10]||(e[10]=[c(" 请假 ",-1)])]),_:1},8,["append-icon","color","variant"]),l(f,{"append-icon":s.attendanceFilter.includes("late")?"mdi-check":"",color:s.attendanceFilter.includes("late")?"warning":"",variant:s.attendanceFilter.includes("late")?"elevated":"tonal",class:"px-2 filter-chip","prepend-icon":"mdi-clock-alert",value:"late",onClick:e[4]||(e[4]=n=>i.toggleFilter("late"))},{default:a(()=>[...e[11]||(e[11]=[c(" 迟到 ",-1)])]),_:1},8,["append-icon","color","variant"]),l(f,{"append-icon":s.attendanceFilter.includes("exclude")?"mdi-check":"",color:s.attendanceFilter.includes("exclude")?"grey":"",variant:s.attendanceFilter.includes("exclude")?"elevated":"tonal",class:"px-2 filter-chip","prepend-icon":"mdi-account-cancel",value:"exclude",onClick:e[5]||(e[5]=n=>i.toggleFilter("exclude"))},{default:a(()=>[...e[12]||(e[12]=[c(" 不参与 ",-1)])]),_:1},8,["append-icon","color","variant"])])]),l(b,null,{default:a(()=>[(u(!0),V(S,null,y(i.filteredStudents,n=>(u(),h(C,{key:n,cols:"12",lg:"4",md:"6",sm:"6"},{default:a(()=>[l(x,{border:"",class:"student-card"},{default:a(()=>[l(k,{class:"d-flex align-center pa-2"},{default:a(()=>[o("div",q,[o("div",I,[l(M,{color:i.getStudentStatusColor(n),class:"mr-2",size:"24"},{default:a(()=>[l(v,{size:"small"},{default:a(()=>[c(p(i.getStudentStatusIcon(n)),1)]),_:2},1024)]),_:2},1032,["color"]),o("div",j,p(n),1)])]),o("div",U,[l(d,{color:i.isPresent(n)?"success":"",title:"设为到课",icon:"mdi-account-check",size:i.isMobile?"default":"small",variant:"text",onClick:g=>i.setPresent(n)},null,8,["color","size","onClick"]),l(d,{color:i.isAbsent(n)?"error":"",title:"设为请假",icon:"mdi-account-off",size:i.isMobile?"default":"small",variant:"text",onClick:g=>i.setAbsent(n)},null,8,["color","size","onClick"]),l(d,{color:i.isLate(n)?"warning":"",title:"设为迟到",icon:"mdi-clock-alert",size:i.isMobile?"default":"small",variant:"text",onClick:g=>i.setLate(n)},null,8,["color","size","onClick"]),l(d,{color:i.isExclude(n)?"grey":"",title:"设为不参与",icon:"mdi-account-cancel",size:i.isMobile?"default":"small",variant:"text",onClick:g=>i.setExclude(n)},null,8,["color","size","onClick"])])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}),l(b,null,{default:a(()=>[l(C,{cols:"12",md:"12"},{default:a(()=>[l(x,{class:"mb-4",color:"primary",variant:"tonal"},{default:a(()=>[l(k,null,{default:a(()=>[e[17]||(e[17]=o("div",{class:"text-subtitle-2 mb-2"},"批量操作",-1)),o("div",R,[l(d,{class:"flex-grow-1",color:"success","prepend-icon":"mdi-account-check",onClick:i.setAllPresent},{default:a(()=>[...e[13]||(e[13]=[c(" 全部到齐 ",-1)])]),_:1},8,["onClick"]),l(d,{class:"flex-grow-1",color:"error","prepend-icon":"mdi-account-off",onClick:i.setAllAbsent},{default:a(()=>[...e[14]||(e[14]=[c(" 全部请假 ",-1)])]),_:1},8,["onClick"]),l(d,{class:"flex-grow-1",color:"warning","prepend-icon":"mdi-clock-alert",onClick:i.setAllLate},{default:a(()=>[...e[15]||(e[15]=[c(" 全部迟到 ",-1)])]),_:1},8,["onClick"]),l(d,{class:"flex-grow-1",color:"grey","prepend-icon":"mdi-account-cancel",onClick:i.setAllExclude},{default:a(()=>[...e[16]||(e[16]=[c(" 全部不参与 ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),l(z),l(_,null,{default:a(()=>[l(F),l(d,{color:"primary",onClick:e[6]||(e[6]=n=>t.$emit("save"))},{default:a(()=>[l(v,{start:""},{default:a(()=>[...e[18]||(e[18]=[c("mdi-content-save",-1)])]),_:1}),e[19]||(e[19]=c(" 保存 ",-1))]),_:1})]),_:1})]),_:1})]),_:1},8,["model-value","fullscreen"])}const $=L(N,[["render",X],["__scopeId","data-v-c09d5574"]]);export{$ as default}; diff --git a/assets/AttendanceManagementDialog-CCmX9Ffv.js b/assets/AttendanceManagementDialog-CCmX9Ffv.js deleted file mode 100644 index 82b2645..0000000 --- a/assets/AttendanceManagementDialog-CCmX9Ffv.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as L,e as x,c as w,h as v,o as F,l as d,d as k,L as M,i as z,q as _,p as E,g as P}from"./index-_6IQhlPZ.js";import{V as f}from"./VChip-Veb3ShEh.js";import{V as b,a as C}from"./VRow-WkEz3xRr.js";import{V as D}from"./VTextField-CuXGbmmC.js";import{X as u,Y as h,Z as a,j as l,a1 as c,S as p,$ as A,k as o,_ as V,F as S,a2 as y}from"./vendor-vue-H0jQBZ7T.js";import{a0 as B}from"./vendor-vuetify-ChAgIwn2.js";import"./autofocus-BrMOVHY_.js";const N={name:"AttendanceManagementDialog",props:{modelValue:{type:Boolean,required:!0},studentList:{type:Array,required:!0},attendance:{type:Object,required:!0},dateString:{type:String,default:""}},emits:["update:modelValue","save","change"],setup(){const{mobile:t}=B();return{mobile:t}},data(){return{attendanceSearch:"",attendanceFilter:[]}},computed:{isMobile(){return P("display.forceDesktopMode")?!1:this.mobile},filteredStudents(){let t=[...this.studentList];if(this.attendanceSearch){const e=this.attendanceSearch.toLowerCase();t=t.filter(r=>r.toLowerCase().includes(e))}return this.attendanceFilter&&this.attendanceFilter.length>0&&(t=t.filter(e=>!!(this.attendanceFilter.includes("present")&&this.isPresent(e)||this.attendanceFilter.includes("absent")&&this.isAbsent(e)||this.attendanceFilter.includes("late")&&this.isLate(e)||this.attendanceFilter.includes("exclude")&&this.isExclude(e)))),t},extractedSurnames(){if(!this.studentList||this.studentList.length===0)return[];const t=new Map;return this.studentList.forEach(e=>{if(e&&e.length>0){const r=e.charAt(0);t.set(r,(t.get(r)||0)+1)}}),Array.from(t.entries()).map(([e,r])=>({name:e,count:r})).sort((e,r)=>e.name.localeCompare(r.name,"zh-CN"))}},methods:{toggleFilter(t){const e=this.attendanceFilter.indexOf(t);e===-1?this.attendanceFilter.push(t):this.attendanceFilter.splice(e,1)},isPresent(t){const{absent:e,late:r,exclude:m}=this.attendance;return!e.includes(t)&&!r.includes(t)&&!m.includes(t)},isAbsent(t){return this.attendance.absent.includes(t)},isLate(t){return this.attendance.late.includes(t)},isExclude(t){return this.attendance.exclude.includes(t)},getStudentStatusColor(t){return this.attendance.absent.includes(t)?"error":this.attendance.late.includes(t)?"warning":this.attendance.exclude.includes(t)?"grey":"success"},getStudentStatusIcon(t){return this.attendance.absent.includes(t)?"mdi-account-off":this.attendance.late.includes(t)?"mdi-clock-alert":this.attendance.exclude.includes(t)?"mdi-account-cancel":"mdi-account-check"},removeFromAll(t){const e=this.attendance.absent.indexOf(t);e>-1&&this.attendance.absent.splice(e,1);const r=this.attendance.late.indexOf(t);r>-1&&this.attendance.late.splice(r,1);const m=this.attendance.exclude.indexOf(t);m>-1&&this.attendance.exclude.splice(m,1)},setPresent(t){this.removeFromAll(t),this.$emit("change")},setAbsent(t){this.removeFromAll(t),this.attendance.absent.push(t),this.$emit("change")},setLate(t){this.removeFromAll(t),this.attendance.late.push(t),this.$emit("change")},setExclude(t){this.removeFromAll(t),this.attendance.exclude.push(t),this.$emit("change")},setAllPresent(){this.attendance.absent.splice(0,this.attendance.absent.length),this.attendance.late.splice(0,this.attendance.late.length),this.attendance.exclude.splice(0,this.attendance.exclude.length),this.$emit("change")},setAllAbsent(){this.setAllPresent(),this.attendance.absent.push(...this.studentList),this.$emit("change")},setAllLate(){this.setAllPresent(),this.attendance.late.push(...this.studentList),this.$emit("change")},setAllExclude(){this.setAllPresent(),this.attendance.exclude.push(...this.studentList),this.$emit("change")}}},O={class:"d-flex flex-wrap mt-2 gap-1"},T={class:"d-flex flex-wrap mb-4 gap-2"},q={class:"flex-grow-1"},I={class:"d-flex align-center"},j={class:"text-subtitle-1"},U={class:"attendance-actions"},R={class:"d-flex flex-wrap gap-2"};function X(t,e,r,m,s,i){return u(),h(E,{"model-value":r.modelValue,fullscreen:i.isMobile,"fullscreen-breakpoint":"sm","max-width":"900","onUpdate:modelValue":e[7]||(e[7]=n=>t.$emit("update:modelValue",n))},{default:a(()=>[l(x,null,{default:a(()=>[l(w,{class:"d-flex align-center"},{default:a(()=>[l(v,{class:"mr-2",icon:"mdi-account-group"}),e[8]||(e[8]=c(" 考勤 ",-1)),l(F),i.isMobile?A("",!0):(u(),h(f,{key:0,class:"ml-2",color:"primary",size:"small"},{default:a(()=>[c(p(r.dateString),1)]),_:1})),i.isMobile?(u(),h(d,{key:1,icon:"mdi-close",variant:"text",onClick:e[0]||(e[0]=n=>t.$emit("update:modelValue",!1))})):A("",!0)]),_:1}),l(k,null,{default:a(()=>[l(b,{class:"mb-4"},{default:a(()=>[l(C,{cols:"12",md:"12"},{default:a(()=>[l(D,{modelValue:s.attendanceSearch,"onUpdate:modelValue":e[1]||(e[1]=n=>s.attendanceSearch=n),clearable:"",hint:"支持筛选姓氏,如输入'孙'可筛选所有姓孙的学生",label:"搜索学生","prepend-inner-icon":"mdi-magnify",variant:"outlined"},null,8,["modelValue"]),o("div",O,[(u(!0),V(S,null,y(i.extractedSurnames,n=>(u(),h(d,{key:n.name,color:s.attendanceSearch===n.name?"primary":"",variant:s.attendanceSearch===n.name?"elevated":"text",onClick:g=>s.attendanceSearch=s.attendanceSearch===n.name?"":n.name},{default:a(()=>[c(p(n.name)+" ("+p(n.count)+") ",1)]),_:2},1032,["color","variant","onClick"]))),128))])]),_:1})]),_:1}),o("div",T,[o("div",null,[l(f,{"append-icon":s.attendanceFilter.includes("present")?"mdi-check":"",color:s.attendanceFilter.includes("present")?"success":"",variant:s.attendanceFilter.includes("present")?"elevated":"tonal",class:"px-2 filter-chip","prepend-icon":"mdi-account-check",value:"present",onClick:e[2]||(e[2]=n=>i.toggleFilter("present"))},{default:a(()=>[...e[9]||(e[9]=[c(" 到课 ",-1)])]),_:1},8,["append-icon","color","variant"]),l(f,{"append-icon":s.attendanceFilter.includes("absent")?"mdi-check":"",color:s.attendanceFilter.includes("absent")?"error":"",variant:s.attendanceFilter.includes("absent")?"elevated":"tonal",class:"px-2 filter-chip","prepend-icon":"mdi-account-off",value:"absent",onClick:e[3]||(e[3]=n=>i.toggleFilter("absent"))},{default:a(()=>[...e[10]||(e[10]=[c(" 请假 ",-1)])]),_:1},8,["append-icon","color","variant"]),l(f,{"append-icon":s.attendanceFilter.includes("late")?"mdi-check":"",color:s.attendanceFilter.includes("late")?"warning":"",variant:s.attendanceFilter.includes("late")?"elevated":"tonal",class:"px-2 filter-chip","prepend-icon":"mdi-clock-alert",value:"late",onClick:e[4]||(e[4]=n=>i.toggleFilter("late"))},{default:a(()=>[...e[11]||(e[11]=[c(" 迟到 ",-1)])]),_:1},8,["append-icon","color","variant"]),l(f,{"append-icon":s.attendanceFilter.includes("exclude")?"mdi-check":"",color:s.attendanceFilter.includes("exclude")?"grey":"",variant:s.attendanceFilter.includes("exclude")?"elevated":"tonal",class:"px-2 filter-chip","prepend-icon":"mdi-account-cancel",value:"exclude",onClick:e[5]||(e[5]=n=>i.toggleFilter("exclude"))},{default:a(()=>[...e[12]||(e[12]=[c(" 不参与 ",-1)])]),_:1},8,["append-icon","color","variant"])])]),l(b,null,{default:a(()=>[(u(!0),V(S,null,y(i.filteredStudents,n=>(u(),h(C,{key:n,cols:"12",lg:"4",md:"6",sm:"6"},{default:a(()=>[l(x,{border:"",class:"student-card"},{default:a(()=>[l(k,{class:"d-flex align-center pa-2"},{default:a(()=>[o("div",q,[o("div",I,[l(M,{color:i.getStudentStatusColor(n),class:"mr-2",size:"24"},{default:a(()=>[l(v,{size:"small"},{default:a(()=>[c(p(i.getStudentStatusIcon(n)),1)]),_:2},1024)]),_:2},1032,["color"]),o("div",j,p(n),1)])]),o("div",U,[l(d,{color:i.isPresent(n)?"success":"",title:"设为到课",icon:"mdi-account-check",size:i.isMobile?"default":"small",variant:"text",onClick:g=>i.setPresent(n)},null,8,["color","size","onClick"]),l(d,{color:i.isAbsent(n)?"error":"",title:"设为请假",icon:"mdi-account-off",size:i.isMobile?"default":"small",variant:"text",onClick:g=>i.setAbsent(n)},null,8,["color","size","onClick"]),l(d,{color:i.isLate(n)?"warning":"",title:"设为迟到",icon:"mdi-clock-alert",size:i.isMobile?"default":"small",variant:"text",onClick:g=>i.setLate(n)},null,8,["color","size","onClick"]),l(d,{color:i.isExclude(n)?"grey":"",title:"设为不参与",icon:"mdi-account-cancel",size:i.isMobile?"default":"small",variant:"text",onClick:g=>i.setExclude(n)},null,8,["color","size","onClick"])])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1}),l(b,null,{default:a(()=>[l(C,{cols:"12",md:"12"},{default:a(()=>[l(x,{class:"mb-4",color:"primary",variant:"tonal"},{default:a(()=>[l(k,null,{default:a(()=>[e[17]||(e[17]=o("div",{class:"text-subtitle-2 mb-2"},"批量操作",-1)),o("div",R,[l(d,{class:"flex-grow-1",color:"success","prepend-icon":"mdi-account-check",onClick:i.setAllPresent},{default:a(()=>[...e[13]||(e[13]=[c(" 全部到齐 ",-1)])]),_:1},8,["onClick"]),l(d,{class:"flex-grow-1",color:"error","prepend-icon":"mdi-account-off",onClick:i.setAllAbsent},{default:a(()=>[...e[14]||(e[14]=[c(" 全部请假 ",-1)])]),_:1},8,["onClick"]),l(d,{class:"flex-grow-1",color:"warning","prepend-icon":"mdi-clock-alert",onClick:i.setAllLate},{default:a(()=>[...e[15]||(e[15]=[c(" 全部迟到 ",-1)])]),_:1},8,["onClick"]),l(d,{class:"flex-grow-1",color:"grey","prepend-icon":"mdi-account-cancel",onClick:i.setAllExclude},{default:a(()=>[...e[16]||(e[16]=[c(" 全部不参与 ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),l(z),l(_,null,{default:a(()=>[l(F),l(d,{color:"primary",onClick:e[6]||(e[6]=n=>t.$emit("save"))},{default:a(()=>[l(v,{start:""},{default:a(()=>[...e[18]||(e[18]=[c("mdi-content-save",-1)])]),_:1}),e[19]||(e[19]=c(" 保存 ",-1))]),_:1})]),_:1})]),_:1})]),_:1},8,["model-value","fullscreen"])}const W=L(N,[["render",X],["__scopeId","data-v-c09d5574"]]);export{W as default}; diff --git a/assets/AttendanceSidebar-DFGkatIT.js b/assets/AttendanceSidebar-DelMot9Y.js similarity index 91% rename from assets/AttendanceSidebar-DFGkatIT.js rename to assets/AttendanceSidebar-DelMot9Y.js index a986703..f02193e 100644 --- a/assets/AttendanceSidebar-DFGkatIT.js +++ b/assets/AttendanceSidebar-DelMot9Y.js @@ -1 +1 @@ -import{_ as w,g,am as m}from"./index-_6IQhlPZ.js";import{a as k}from"./VRow-WkEz3xRr.js";import{R as f,X as n,Y as b,Z as _,k as t,a1 as r,S as s,_ as l,F as c,a2 as p,$ as o,n as x}from"./vendor-vue-H0jQBZ7T.js";import{a0 as C}from"./vendor-vuetify-ChAgIwn2.js";const A={name:"AttendanceSidebar",props:{studentList:{type:Array,required:!0},attendance:{type:Object,required:!0},isEditingDisabled:{type:Boolean,default:!1}},emits:["click","disabled-click"],setup(){return{display:C()}},methods:{getSetting:g,handleClick(){this.isEditingDisabled?this.$emit("disabled-click"):this.$emit("click")}}},D={style:{"white-space":"nowrap"}},S={style:{"white-space":"nowrap"}},L={style:{"white-space":"nowrap"}},v={key:0},B={style:{"white-space":"nowrap"}},E={style:{"white-space":"nowrap"}},V={key:0},N={style:{"white-space":"nowrap"}},U={style:{"white-space":"nowrap"}},q={key:0},F={style:{"white-space":"nowrap"}};function M(h,e,a,u,R,y){return a.studentList&&a.studentList.length?f((n(),b(k,{key:0,class:x([{"cursor-not-allowed":a.isEditingDisabled},"attendance-area no-select"]),cols:"1",onClick:y.handleClick},{default:_(()=>[e[10]||(e[10]=t("h1",null,"出勤",-1)),t("h2",null,[e[0]||(e[0]=t("span",{style:{"white-space":"nowrap"}}," 应到",-1)),e[1]||(e[1]=r(" : ",-1)),t("span",D,s(a.studentList.length-a.attendance.exclude.length)+"人 ",1)]),t("h2",null,[e[2]||(e[2]=t("span",{style:{"white-space":"nowrap"}}," 实到",-1)),e[3]||(e[3]=r(" : ",-1)),t("span",S,s(a.studentList.length-a.attendance.absent.length-!y.getSetting("display.lateStudentsArePresent")*a.attendance.late.length-a.attendance.exclude.length)+"人 ",1)]),t("h2",null,[e[4]||(e[4]=t("span",{style:{"white-space":"nowrap"}}," 请假",-1)),e[5]||(e[5]=r(" : ",-1)),t("span",L,s(a.attendance.absent.length)+"人 ",1)]),(n(!0),l(c,null,p(a.attendance.absent,(d,i)=>(n(),l("h3",{key:"absent-"+i,class:"gray-text"},[u.display.lgAndUp.value?(n(),l("span",v,s(`${i+1}. `),1)):o("",!0),t("span",B,s(d),1)]))),128)),t("h2",null,[e[6]||(e[6]=t("span",{style:{"white-space":"nowrap"}},"迟到",-1)),e[7]||(e[7]=r(" : ",-1)),t("span",E,s(a.attendance.late.length)+"人 ",1)]),(n(!0),l(c,null,p(a.attendance.late,(d,i)=>(n(),l("h3",{key:"late-"+i,class:"gray-text"},[u.display.lgAndUp.value?(n(),l("span",V,s(`${i+1}. `),1)):o("",!0),t("span",N,s(d),1)]))),128)),t("h2",null,[e[8]||(e[8]=t("span",{style:{"white-space":"nowrap"}},"不参与",-1)),e[9]||(e[9]=r(" : ",-1)),t("span",U,s(a.attendance.exclude.length)+"人 ",1)]),(n(!0),l(c,null,p(a.attendance.exclude,(d,i)=>(n(),l("h3",{key:"exclude-"+i,class:"gray-text"},[u.display.lgAndUp.value?(n(),l("span",q,s(`${i+1}. `),1)):o("",!0),t("span",F,s(d),1)]))),128))]),_:1},8,["class","onClick"])),[[m,a.isEditingDisabled?!1:{class:`text-${["primary","secondary","info","success","warning","error"][Math.floor(Math.random()*6)]}`}]]):o("",!0)}const P=w(A,[["render",M],["__scopeId","data-v-5a7eaf6a"]]);export{P as default}; +import{_ as w,g,al as m}from"./index-CFUCTEXJ.js";import{a as k}from"./VRow-Dw4j2TKL.js";import{R as f,X as n,Y as b,Z as _,k as t,a1 as r,S as s,_ as l,F as c,a2 as p,$ as o,n as x}from"./vendor-vue-B2vxubPy.js";import{a0 as C}from"./vendor-vuetify-s-yw_Hr8.js";const A={name:"AttendanceSidebar",props:{studentList:{type:Array,required:!0},attendance:{type:Object,required:!0},isEditingDisabled:{type:Boolean,default:!1}},emits:["click","disabled-click"],setup(){return{display:C()}},methods:{getSetting:g,handleClick(){this.isEditingDisabled?this.$emit("disabled-click"):this.$emit("click")}}},D={style:{"white-space":"nowrap"}},S={style:{"white-space":"nowrap"}},L={style:{"white-space":"nowrap"}},v={key:0},B={style:{"white-space":"nowrap"}},E={style:{"white-space":"nowrap"}},V={key:0},N={style:{"white-space":"nowrap"}},U={style:{"white-space":"nowrap"}},q={key:0},F={style:{"white-space":"nowrap"}};function M(h,e,a,u,R,y){return a.studentList&&a.studentList.length?f((n(),b(k,{key:0,class:x([{"cursor-not-allowed":a.isEditingDisabled},"attendance-area no-select"]),cols:"1",onClick:y.handleClick},{default:_(()=>[e[10]||(e[10]=t("h1",null,"出勤",-1)),t("h2",null,[e[0]||(e[0]=t("span",{style:{"white-space":"nowrap"}}," 应到",-1)),e[1]||(e[1]=r(" : ",-1)),t("span",D,s(a.studentList.length-a.attendance.exclude.length)+"人 ",1)]),t("h2",null,[e[2]||(e[2]=t("span",{style:{"white-space":"nowrap"}}," 实到",-1)),e[3]||(e[3]=r(" : ",-1)),t("span",S,s(a.studentList.length-a.attendance.absent.length-!y.getSetting("display.lateStudentsArePresent")*a.attendance.late.length-a.attendance.exclude.length)+"人 ",1)]),t("h2",null,[e[4]||(e[4]=t("span",{style:{"white-space":"nowrap"}}," 请假",-1)),e[5]||(e[5]=r(" : ",-1)),t("span",L,s(a.attendance.absent.length)+"人 ",1)]),(n(!0),l(c,null,p(a.attendance.absent,(d,i)=>(n(),l("h3",{key:"absent-"+i,class:"gray-text"},[u.display.lgAndUp.value?(n(),l("span",v,s(`${i+1}. `),1)):o("",!0),t("span",B,s(d),1)]))),128)),t("h2",null,[e[6]||(e[6]=t("span",{style:{"white-space":"nowrap"}},"迟到",-1)),e[7]||(e[7]=r(" : ",-1)),t("span",E,s(a.attendance.late.length)+"人 ",1)]),(n(!0),l(c,null,p(a.attendance.late,(d,i)=>(n(),l("h3",{key:"late-"+i,class:"gray-text"},[u.display.lgAndUp.value?(n(),l("span",V,s(`${i+1}. `),1)):o("",!0),t("span",N,s(d),1)]))),128)),t("h2",null,[e[8]||(e[8]=t("span",{style:{"white-space":"nowrap"}},"不参与",-1)),e[9]||(e[9]=r(" : ",-1)),t("span",U,s(a.attendance.exclude.length)+"人 ",1)]),(n(!0),l(c,null,p(a.attendance.exclude,(d,i)=>(n(),l("h3",{key:"exclude-"+i,class:"gray-text"},[u.display.lgAndUp.value?(n(),l("span",q,s(`${i+1}. `),1)):o("",!0),t("span",F,s(d),1)]))),128))]),_:1},8,["class","onClick"])),[[m,a.isEditingDisabled?!1:{class:`text-${["primary","secondary","info","success","warning","error"][Math.floor(Math.random()*6)]}`}]]):o("",!0)}const P=w(A,[["render",M],["__scopeId","data-v-5a7eaf6a"]]);export{P as default}; diff --git a/assets/CacheManagement-CrSS2Bn6.js b/assets/CacheManagement-BjDS42mh.js similarity index 53% rename from assets/CacheManagement-CrSS2Bn6.js rename to assets/CacheManagement-BjDS42mh.js index 2f61212..f5b3666 100644 --- a/assets/CacheManagement-CrSS2Bn6.js +++ b/assets/CacheManagement-BjDS42mh.js @@ -1 +1 @@ -import{_ as S,c as b,o as A,l as p,h as d,d as C,j as E,k as N,s as L,t as P,e as _}from"./index-_6IQhlPZ.js";import{V as y}from"./VAlert-D9G_9owC.js";import{V as R,a as B,b as F,c as H}from"./VExpansionPanels-rcXmB3Pp.js";import{V as I}from"./VChip-Veb3ShEh.js";import{V as j}from"./VSkeletonLoader-CfCoJRep.js";import{X as i,Y as c,Z as s,j as t,k as r,a1 as l,$ as v,S as f,_ as w,F as V,a2 as x}from"./vendor-vue-H0jQBZ7T.js";import{V as M,a as k}from"./VRow-WkEz3xRr.js";import{V as z}from"./VContainer-Bg8RevuO.js";import"./vendor-vuetify-ChAgIwn2.js";const U={name:"CacheManager",data(){return{caches:[],loading:!1,serviceWorkerActive:!1,message:"",messageType:"info"}},mounted(){this.checkServiceWorker()},methods:{checkServiceWorker(){"serviceWorker"in navigator?navigator.serviceWorker.ready.then(()=>{this.serviceWorkerActive=!0,this.refreshCaches()}).catch(()=>{this.serviceWorkerActive=!1}):this.serviceWorkerActive=!1},async refreshCaches(){if(this.serviceWorkerActive){this.loading=!0,this.message="",this.caches=[];try{const a=await this.sendMessageToSW({type:"CACHE_KEYS"});for(const e of a.cacheNames){const n=await this.sendMessageToSW({type:"CACHE_CONTENT",cacheName:e});this.caches.push({name:e,urls:n.urls||[]})}}catch(a){this.showMessage("获取缓存信息失败: "+a.message,"error")}finally{this.loading=!1}}},async clearCache(a){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_CACHE",cacheName:a})).success?(this.showMessage(`已清除缓存: ${this.formatCacheName(a)}`,"success"),await this.refreshCaches()):this.showMessage("清除缓存失败","error")}catch(e){this.showMessage("清除缓存失败: "+e.message,"error")}finally{this.loading=!1}},async clearUrl(a,e){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_URL",cacheName:a,url:e})).success?(this.showMessage(`已从缓存中删除: ${this.getFileName(e)}`,"success"),await this.refreshCaches()):this.showMessage("删除缓存项失败","error")}catch(n){this.showMessage("删除缓存项失败: "+n.message,"error")}finally{this.loading=!1}},async clearAllCaches(){if(confirm("确定要清除所有缓存吗?这可能会导致应用需要重新下载资源。")){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_ALL_CACHES"})).success?(this.showMessage("已清除所有缓存","success"),await this.refreshCaches()):this.showMessage("清除所有缓存失败","error")}catch(a){this.showMessage("清除所有缓存失败: "+a.message,"error")}finally{this.loading=!1}}},sendMessageToSW(a){return new Promise((e,n)=>{if(!navigator.serviceWorker.controller){n(new Error("Service Worker 未控制页面"));return}const g=new MessageChannel;g.port1.onmessage=o=>{e(o.data)},navigator.serviceWorker.controller.postMessage(a,[g.port2]),setTimeout(()=>{n(new Error("Service Worker 响应超时"))},5e3)})},formatCacheName(a){return a.replace("workbox-precache-","预缓存-").replace("-cache","").replace("js","JS").replace("css","CSS").replace("html","HTML").replace("images","图片").replace("external-resources","外部资源").replace("cdn-cgi","CDN")},getFileName(a){try{const e=new URL(a),n=e.pathname.split("/");return n[n.length-1]||e.hostname}catch(e){return console.error("获取文件名失败:",e),a}},showMessage(a,e="info"){this.message=a,this.messageType=e,setTimeout(()=>{this.message===a&&(this.message="")},5e3)}}},D={class:"d-flex align-center"},O={class:"d-flex justify-end mb-2"};function Y(a,e,n,g,o,m){return i(),c(_,null,{default:s(()=>[t(b,{class:"d-flex align-center"},{default:s(()=>[e[2]||(e[2]=r("span",null,"缓存管理",-1)),t(A),t(p,{loading:o.loading,color:"error",onClick:m.clearAllCaches},{default:s(()=>[...e[0]||(e[0]=[l(" 清除所有缓存 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{class:"ml-2",icon:"",onClick:m.refreshCaches},{default:s(()=>[t(d,null,{default:s(()=>[...e[1]||(e[1]=[l("mdi-refresh",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1}),t(C,null,{default:s(()=>[o.serviceWorkerActive?v("",!0):(i(),c(y,{key:0,class:"mb-4",type:"warning"},{default:s(()=>[...e[3]||(e[3]=[l(" Service Worker 未激活,缓存管理功能不可用。 ",-1)])]),_:1})),o.message?(i(),c(y,{key:1,type:o.messageType,class:"mb-4"},{default:s(()=>[l(f(o.message),1)]),_:1},8,["type"])):v("",!0),o.caches.length>0?(i(),c(R,{key:2},{default:s(()=>[(i(!0),w(V,null,x(o.caches,u=>(i(),c(B,{key:u.name},{default:s(()=>[t(F,null,{default:s(()=>[r("div",D,[r("span",null,f(m.formatCacheName(u.name)),1),t(I,{class:"ml-2",size:"small"},{default:s(()=>[l(f(u.urls.length)+" 个文件",1)]),_:2},1024)])]),_:2},1024),t(H,null,{default:s(()=>[r("div",O,[t(p,{loading:o.loading,color:"error",size:"small",onClick:h=>m.clearCache(u.name)},{default:s(()=>[...e[4]||(e[4]=[l(" 清除此缓存 ",-1)])]),_:1},8,["loading","onClick"])]),t(E,{lines:"two"},{default:s(()=>[(i(!0),w(V,null,x(u.urls,(h,T)=>(i(),c(N,{key:T},{append:s(()=>[t(p,{color:"error",icon:"",size:"small",onClick:q=>m.clearUrl(u.name,h)},{default:s(()=>[t(d,null,{default:s(()=>[...e[5]||(e[5]=[l("mdi-delete",-1)])]),_:1})]),_:1},8,["onClick"])]),default:s(()=>[t(L,{class:"text-truncate"},{default:s(()=>[l(f(m.getFileName(h)),1)]),_:2},1024),t(P,{class:"text-truncate"},{default:s(()=>[l(f(h),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})):o.loading?(i(),c(j,{key:3,type:"article"})):(i(),c(y,{key:4,type:"info"},{default:s(()=>[...e[6]||(e[6]=[l(" 没有找到缓存数据。 ",-1)])]),_:1}))]),_:1})]),_:1})}const W=S(U,[["render",Y]]),$={name:"CacheManagementPage",components:{CacheManager:W},metaInfo:{title:"缓存管理"}},J={class:"d-flex align-center mb-6"},K={class:"d-flex align-center mb-2"},X={class:"d-flex align-center mb-2"};function Z(a,e,n,g,o,m){const u=W;return i(),c(z,null,{default:s(()=>[t(M,null,{default:s(()=>[t(k,{cols:"12"},{default:s(()=>[r("div",J,[t(d,{class:"mr-3",color:"primary",size:"x-large"},{default:s(()=>[...e[0]||(e[0]=[l("mdi-database-cog-outline",-1)])]),_:1}),e[1]||(e[1]=r("div",null,[r("h1",{class:"text-h4"},"缓存管理"),r("div",{class:"text-subtitle-1 text-grey"},"管理应用的本地缓存资源")],-1))]),t(_,{class:"mb-6",color:"info",density:"compact",variant:"tonal"},{default:s(()=>[t(C,{class:"d-flex align-center"},{default:s(()=>[t(d,{class:"mr-2",color:"info"},{default:s(()=>[...e[2]||(e[2]=[l("mdi-information-outline",-1)])]),_:1}),e[3]||(e[3]=r("span",null,"在这里您可以查看和管理应用的缓存文件。清除缓存可能会导致应用需要重新下载资源,但有助于解决某些显示问题。",-1))]),_:1})]),_:1}),t(M,null,{default:s(()=>[t(k,{cols:"12",md:"8"},{default:s(()=>[t(_,{class:"mb-4",variant:"tonal"},{default:s(()=>[t(C,null,{default:s(()=>[r("div",K,[t(d,{class:"mr-2",color:"primary"},{default:s(()=>[...e[4]||(e[4]=[l("mdi-information",-1)])]),_:1}),e[5]||(e[5]=r("span",{class:"text-h6"},"什么是缓存?",-1))]),e[6]||(e[6]=r("p",null," 缓存是浏览器在本地存储的网站资源副本,如图片、脚本和样式表等。这些缓存可以加快页面加载速度,减少数据使用,并在离线时提供基本功能。",-1))]),_:1})]),_:1})]),_:1}),t(k,{cols:"12",md:"4"},{default:s(()=>[t(_,{class:"mb-4",variant:"tonal"},{default:s(()=>[t(C,null,{default:s(()=>[r("div",X,[t(d,{class:"mr-2",color:"warning"},{default:s(()=>[...e[7]||(e[7]=[l("mdi-lightbulb-outline",-1)])]),_:1}),e[8]||(e[8]=r("span",{class:"text-h6"},"何时清除缓存?",-1))]),e[9]||(e[9]=r("ul",{class:"pl-4"},[r("li",null,"应用显示过时的内容"),r("li",null,"界面出现异常"),r("li",null,"应用功能不正常")],-1))]),_:1})]),_:1})]),_:1})]),_:1}),t(u)]),_:1})]),_:1})]),_:1})}const oe=S($,[["render",Z]]);export{oe as default}; +import{_ as S,c as b,r as A,i as p,f as d,d as C,l as E,n as N,o as L,p as P,e as _}from"./index-CFUCTEXJ.js";import{V as y}from"./VAlert-DO0N7oM6.js";import{V as R,a as B,b as F,c as H}from"./VExpansionPanels-qZkn9NEQ.js";import{V as I}from"./VChip-DR8Ljy6R.js";import{V as z}from"./VSkeletonLoader-AysIn-20.js";import{X as i,Y as c,Z as s,j as a,k as r,a1 as l,$ as v,S as f,_ as w,F as V,a2 as x}from"./vendor-vue-B2vxubPy.js";import{V as M,a as k}from"./VRow-Dw4j2TKL.js";import{V as U}from"./VContainer-RtoBp6rB.js";import"./vendor-vuetify-s-yw_Hr8.js";const j={name:"CacheManager",data(){return{caches:[],loading:!1,serviceWorkerActive:!1,message:"",messageType:"info"}},mounted(){this.checkServiceWorker()},methods:{checkServiceWorker(){"serviceWorker"in navigator?navigator.serviceWorker.ready.then(()=>{this.serviceWorkerActive=!0,this.refreshCaches()}).catch(()=>{this.serviceWorkerActive=!1}):this.serviceWorkerActive=!1},async refreshCaches(){if(this.serviceWorkerActive){this.loading=!0,this.message="",this.caches=[];try{const t=await this.sendMessageToSW({type:"CACHE_KEYS"});for(const e of t.cacheNames){const n=await this.sendMessageToSW({type:"CACHE_CONTENT",cacheName:e});this.caches.push({name:e,urls:n.urls||[]})}}catch(t){this.showMessage("获取缓存信息失败: "+t.message,"error")}finally{this.loading=!1}}},async clearCache(t){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_CACHE",cacheName:t})).success?(this.showMessage(`已清除缓存: ${this.formatCacheName(t)}`,"success"),await this.refreshCaches()):this.showMessage("清除缓存失败","error")}catch(e){this.showMessage("清除缓存失败: "+e.message,"error")}finally{this.loading=!1}},async clearUrl(t,e){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_URL",cacheName:t,url:e})).success?(this.showMessage(`已从缓存中删除: ${this.getFileName(e)}`,"success"),await this.refreshCaches()):this.showMessage("删除缓存项失败","error")}catch(n){this.showMessage("删除缓存项失败: "+n.message,"error")}finally{this.loading=!1}},async clearAllCaches(){if(confirm("确定要清除所有缓存吗?这可能会导致应用需要重新下载资源。")){this.loading=!0;try{(await this.sendMessageToSW({type:"CLEAR_ALL_CACHES"})).success?(this.showMessage("已清除所有缓存","success"),await this.refreshCaches()):this.showMessage("清除所有缓存失败","error")}catch(t){this.showMessage("清除所有缓存失败: "+t.message,"error")}finally{this.loading=!1}}},sendMessageToSW(t){return new Promise((e,n)=>{if(!navigator.serviceWorker.controller){n(new Error("Service Worker 未控制页面"));return}const g=new MessageChannel;g.port1.onmessage=o=>{e(o.data)},navigator.serviceWorker.controller.postMessage(t,[g.port2]),setTimeout(()=>{n(new Error("Service Worker 响应超时"))},5e3)})},formatCacheName(t){return t.replace("workbox-precache-","预缓存-").replace("-cache","").replace("js","JS").replace("css","CSS").replace("html","HTML").replace("images","图片").replace("external-resources","外部资源").replace("cdn-cgi","CDN")},getFileName(t){try{const e=new URL(t),n=e.pathname.split("/");return n[n.length-1]||e.hostname}catch(e){return console.error("获取文件名失败:",e),t}},showMessage(t,e="info"){this.message=t,this.messageType=e,setTimeout(()=>{this.message===t&&(this.message="")},5e3)}}},D={class:"d-flex align-center"},O={class:"d-flex justify-end mb-2"};function Y(t,e,n,g,o,m){return i(),c(_,null,{default:s(()=>[a(b,{class:"d-flex align-center"},{default:s(()=>[e[2]||(e[2]=r("span",null,"缓存管理",-1)),a(A),a(p,{loading:o.loading,color:"error",onClick:m.clearAllCaches},{default:s(()=>[...e[0]||(e[0]=[l(" 清除所有缓存 ",-1)])]),_:1},8,["loading","onClick"]),a(p,{class:"ml-2",icon:"",onClick:m.refreshCaches},{default:s(()=>[a(d,null,{default:s(()=>[...e[1]||(e[1]=[l("mdi-refresh",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1}),a(C,null,{default:s(()=>[o.serviceWorkerActive?v("",!0):(i(),c(y,{key:0,class:"mb-4",type:"warning"},{default:s(()=>[...e[3]||(e[3]=[l(" Service Worker 未激活,缓存管理功能不可用。 ",-1)])]),_:1})),o.message?(i(),c(y,{key:1,type:o.messageType,class:"mb-4"},{default:s(()=>[l(f(o.message),1)]),_:1},8,["type"])):v("",!0),o.caches.length>0?(i(),c(R,{key:2},{default:s(()=>[(i(!0),w(V,null,x(o.caches,u=>(i(),c(B,{key:u.name},{default:s(()=>[a(F,null,{default:s(()=>[r("div",D,[r("span",null,f(m.formatCacheName(u.name)),1),a(I,{class:"ml-2",size:"small"},{default:s(()=>[l(f(u.urls.length)+" 个文件",1)]),_:2},1024)])]),_:2},1024),a(H,null,{default:s(()=>[r("div",O,[a(p,{loading:o.loading,color:"error",size:"small",onClick:h=>m.clearCache(u.name)},{default:s(()=>[...e[4]||(e[4]=[l(" 清除此缓存 ",-1)])]),_:1},8,["loading","onClick"])]),a(E,{lines:"two"},{default:s(()=>[(i(!0),w(V,null,x(u.urls,(h,T)=>(i(),c(N,{key:T},{append:s(()=>[a(p,{color:"error",icon:"",size:"small",onClick:q=>m.clearUrl(u.name,h)},{default:s(()=>[a(d,null,{default:s(()=>[...e[5]||(e[5]=[l("mdi-delete",-1)])]),_:1})]),_:1},8,["onClick"])]),default:s(()=>[a(L,{class:"text-truncate"},{default:s(()=>[l(f(m.getFileName(h)),1)]),_:2},1024),a(P,{class:"text-truncate"},{default:s(()=>[l(f(h),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})):o.loading?(i(),c(z,{key:3,type:"article"})):(i(),c(y,{key:4,type:"info"},{default:s(()=>[...e[6]||(e[6]=[l(" 没有找到缓存数据。 ",-1)])]),_:1}))]),_:1})]),_:1})}const W=S(j,[["render",Y]]),$={name:"CacheManagementPage",components:{CacheManager:W},metaInfo:{title:"缓存管理"}},J={class:"d-flex align-center mb-6"},K={class:"d-flex align-center mb-2"},X={class:"d-flex align-center mb-2"};function Z(t,e,n,g,o,m){const u=W;return i(),c(U,null,{default:s(()=>[a(M,null,{default:s(()=>[a(k,{cols:"12"},{default:s(()=>[r("div",J,[a(d,{class:"mr-3",color:"primary",size:"x-large"},{default:s(()=>[...e[0]||(e[0]=[l("mdi-database-cog-outline",-1)])]),_:1}),e[1]||(e[1]=r("div",null,[r("h1",{class:"text-h4"},"缓存管理"),r("div",{class:"text-subtitle-1 text-grey"},"管理应用的本地缓存资源")],-1))]),a(_,{class:"mb-6",color:"info",density:"compact",variant:"tonal"},{default:s(()=>[a(C,{class:"d-flex align-center"},{default:s(()=>[a(d,{class:"mr-2",color:"info"},{default:s(()=>[...e[2]||(e[2]=[l("mdi-information-outline",-1)])]),_:1}),e[3]||(e[3]=r("span",null,"在这里您可以查看和管理应用的缓存文件。清除缓存可能会导致应用需要重新下载资源,但有助于解决某些显示问题。",-1))]),_:1})]),_:1}),a(M,null,{default:s(()=>[a(k,{cols:"12",md:"8"},{default:s(()=>[a(_,{class:"mb-4",variant:"tonal"},{default:s(()=>[a(C,null,{default:s(()=>[r("div",K,[a(d,{class:"mr-2",color:"primary"},{default:s(()=>[...e[4]||(e[4]=[l("mdi-information",-1)])]),_:1}),e[5]||(e[5]=r("span",{class:"text-h6"},"什么是缓存?",-1))]),e[6]||(e[6]=r("p",null," 缓存是浏览器在本地存储的网站资源副本,如图片、脚本和样式表等。这些缓存可以加快页面加载速度,减少数据使用,并在离线时提供基本功能。",-1))]),_:1})]),_:1})]),_:1}),a(k,{cols:"12",md:"4"},{default:s(()=>[a(_,{class:"mb-4",variant:"tonal"},{default:s(()=>[a(C,null,{default:s(()=>[r("div",X,[a(d,{class:"mr-2",color:"warning"},{default:s(()=>[...e[7]||(e[7]=[l("mdi-lightbulb-outline",-1)])]),_:1}),e[8]||(e[8]=r("span",{class:"text-h6"},"何时清除缓存?",-1))]),e[9]||(e[9]=r("ul",{class:"pl-4"},[r("li",null,"应用显示过时的内容"),r("li",null,"界面出现异常"),r("li",null,"应用功能不正常")],-1))]),_:1})]),_:1})]),_:1})]),_:1}),a(u)]),_:1})]),_:1})]),_:1})}const oe=S($,[["render",Z]]);export{oe as default}; diff --git a/assets/ChatWidget-CC4arZYT.js b/assets/ChatWidget-C2TaIq_w.js similarity index 97% rename from assets/ChatWidget-CC4arZYT.js rename to assets/ChatWidget-C2TaIq_w.js index c6b6aaf..f1f6826 100644 --- a/assets/ChatWidget-CC4arZYT.js +++ b/assets/ChatWidget-C2TaIq_w.js @@ -1,3 +1,3 @@ -import{s as Q,g as F,j as D,a as x}from"./socketClient-Cb2FghxN.js";import{_ as V,g as N,e as S,d as w,l as _,h as p,p as K,c as W,o as E,K as j,i as b,L as q,q as H}from"./index-_6IQhlPZ.js";import{X as u,_ as m,j as i,Z as a,k as c,S as f,a1 as g,$ as y,F as k,N as M,R as L,V as G,m as J,a2 as U,n as X,Y as $,ac as R,ad as B}from"./vendor-vue-H0jQBZ7T.js";import{p as O,s as Y}from"./soundList-BZnE47k0.js";import{V as C}from"./VChip-Veb3ShEh.js";import{f as Z,s as ee,c as te}from"./deviceEvents-BnDFIf8a.js";import{V as se}from"./VBadge-VwKD9DDf.js";import{V as ie}from"./VTooltip-C2Bprg_f.js";import{V as ne,a as T}from"./VRow-WkEz3xRr.js";import{V as oe}from"./VPagination-BiSMksGW.js";import{V as re}from"./VTextarea-CCCqy4pz.js";const ae={name:"EventSender",emits:["sent","error"],methods:{async sendEvent(e,t={}){try{return Q(e,t),this.$emit("sent",{eventName:e,content:t,timestamp:new Date().toISOString(),success:!0}),{success:!0,eventId:(t==null?void 0:t.eventId)||null,notificationId:(t==null?void 0:t.notificationId)||null}}catch(o){return console.error("发送事件失败:",o),this.$emit("error",{eventName:e,content:t,error:o.message,timestamp:new Date().toISOString(),success:!1}),{success:!1,error:o.message}}},async sendNotification(e,t=!1,o=[],d={},l=null){const r=`evt-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return this.sendEvent("notification",{eventId:r,notificationId:l,message:e,isUrgent:t,targetDevices:o,senderInfo:d})},async sendReceipt(e,t,o={},d=null){const l=`rcpt-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;return this.sendEvent("notification-receipt",{eventId:l,originalEventId:e,notificationId:d,status:t,deviceInfo:o})},async sendDisplayedReceipt(e={},t=null){const o=`disp-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;return this.sendEvent("notification-displayed",{eventId:o,notificationId:t,deviceInfo:e})},async sendReadReceipt(e={},t=null){const o=`read-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;return this.sendEvent("notification-read",{eventId:o,notificationId:t,deviceInfo:e})}}},le={style:{display:"none"}};function de(e,t,o,d,l,r){return u(),m("div",le)}const P=V(ae,[["render",de]]),ce={name:"UrgentNotification",components:{EventSender:P},data(){return{visible:!1,notificationQueue:[],currentIndex:0,autoCloseTimer:null,urgentSoundTimer:null,currentAudio:null}},computed:{currentNotification(){return this.notificationQueue[this.currentIndex]||null},hasNotifications(){return this.notificationQueue.length>0},hasMultipleNotifications(){return this.notificationQueue.length>1},notificationCountText(){return this.hasMultipleNotifications?`${this.currentIndex+1} / ${this.notificationQueue.length}`:""},isUrgent(){var e,t;return((t=(e=this.currentNotification)==null?void 0:e.content)==null?void 0:t.isUrgent)||!1},urgencyColor(){return this.isUrgent?"red darken-2":"blue darken-2"},iconColor(){return"white"},urgencyIcon(){return this.isUrgent?"mdi-alert-circle-outline":"mdi-information-outline"},urgencyTitle(){return this.isUrgent?"🚨 紧急通知":"📢 通知消息"},senderName(){var t,o,d;const e=((t=this.currentNotification)==null?void 0:t.senderInfo)||((d=(o=this.currentNotification)==null?void 0:o.content)==null?void 0:d.senderInfo);return e?e.deviceName||e.deviceType||"未知设备":"未知发送者"},deviceType(){var t,o,d;const e=((t=this.currentNotification)==null?void 0:t.senderInfo)||((d=(o=this.currentNotification)==null?void 0:o.content)==null?void 0:d.senderInfo);return(e==null?void 0:e.deviceType)=="teacher"?"教师":(e==null?void 0:e.deviceType)=="student"?"学生":(e==null?void 0:e.deviceType)=="classroom"?"教室":(e==null?void 0:e.deviceType)||"未知类型"},targetDevices(){var e,t;return((t=(e=this.currentNotification)==null?void 0:e.content)==null?void 0:t.targetDevices)||[]}},beforeUnmount(){this.autoCloseTimer&&clearTimeout(this.autoCloseTimer),this.urgentSoundTimer&&clearInterval(this.urgentSoundTimer),this.stopNotificationSound()},methods:{show(e){var o;if(this.notificationQueue.findIndex(d=>{var l,r;return((l=d.content)==null?void 0:l.notificationId)===((r=e.content)==null?void 0:r.notificationId)})!==-1){console.log("通知已存在,跳过添加");return}this.notificationQueue.push(e),this.visible?(o=e.content)!=null&&o.isUrgent&&!this.isUrgent?(this.currentIndex=this.notificationQueue.length-1,this.sendDisplayedReceipt(),this.playNotificationSound(),this.sendBrowserNotification(e),this.startUrgentSound()):this.sendBrowserNotification(e):(this.currentIndex=this.notificationQueue.length-1,this.visible=!0,this.sendDisplayedReceipt(),this.playNotificationSound(),this.sendBrowserNotification(e),this.isUrgent&&this.startUrgentSound())},close(){var e,t,o,d;try{this.sendReadReceipt(),console.log("已发送已读回执")}catch(l){console.warn("发送已读回执失败:",l)}if((t=(e=this.currentNotification)==null?void 0:e.content)!=null&&t.message){const l=this.isUrgent?"紧急通知":"通知";this.isUrgent?(o=this.$message)==null||o.error(l,`${this.currentNotification.content.message}`):(d=this.$message)==null||d.info(l,`${this.currentNotification.content.message}`)}this.notificationQueue.length>0&&(this.notificationQueue.splice(this.currentIndex,1),this.currentIndex>=this.notificationQueue.length&&(this.currentIndex=Math.max(0,this.notificationQueue.length-1)),this.notificationQueue.length>0?(this.sendDisplayedReceipt(),this.isUrgent?this.startUrgentSound():this.stopUrgentSound()):this.closeWithoutRead())},closeWithoutRead(){this.visible=!1,this.notificationQueue=[],this.currentIndex=0,this.autoCloseTimer&&(clearTimeout(this.autoCloseTimer),this.autoCloseTimer=null),this.stopUrgentSound()},formatTime(e){if(!e)return"";try{const t=new Date(e);if(new Date-t<24*60*60*1e3){const l=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");return`${l}:${r}`}else{const l=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${l}/${r}`}}catch{return"无效时间"}},getDeviceTypeLabel(e){return{classroom:"教室设备",student:"学生设备",teacher:"教师设备",admin:"管理员设备",system:"系统设备"}[e]||e},playNotificationSound(){try{this.stopNotificationSound();const e=this.isUrgent?N("notification.urgentSound"):N("notification.singleSound");this.currentAudio=O(e,!1),this.currentAudio||this.playFallbackSound()}catch(e){console.warn("无法播放通知音效:",e),this.playFallbackSound()}},playFallbackSound(){try{const e=new(window.AudioContext||window.webkitAudioContext),t=e.createOscillator(),o=e.createGain();t.connect(o),o.connect(e.destination),t.frequency.value=1e3,t.type="sine",o.gain.value=.3,t.start(),t.stop(e.currentTime+.3)}catch(e){console.warn("无法播放备用音效:",e)}},stopNotificationSound(){this.currentAudio&&(Y(this.currentAudio),this.currentAudio=null)},sendDisplayedReceipt(){var e;try{this.$refs.eventSender&&((e=this.currentNotification)!=null&&e.eventId)&&(this.$refs.eventSender.sendDisplayedReceipt({},this.currentNotification.content.notificationId),console.log("已发送显示回执:",this.currentNotification.eventId))}catch(t){console.warn("发送显示回执失败:",t)}},sendReadReceipt(){var e;try{this.$refs.eventSender&&((e=this.currentNotification)!=null&&e.eventId)&&(this.$refs.eventSender.sendReadReceipt({},this.currentNotification.content.notificationId),console.log("已发送已读回执:",this.currentNotification.eventId))}catch(t){console.warn("发送已读回执失败:",t)}},previousNotification(){this.currentIndex>0&&(this.currentIndex--,this.sendDisplayedReceipt(),this.isUrgent?this.startUrgentSound():this.stopUrgentSound())},nextNotification(){this.currentIndex{this.visible&&this.isUrgent?this.playFallbackSound():this.stopUrgentSound()},1e3))},stopUrgentSound(){this.urgentSoundTimer&&(clearInterval(this.urgentSoundTimer),this.urgentSoundTimer=null),this.stopNotificationSound()},async sendBrowserNotification(e){var t,o,d,l;if(!("Notification"in window)){console.warn("浏览器不支持通知API");return}try{let r=Notification.permission;if(r==="default"&&(r=await Notification.requestPermission()),r!=="granted"){console.warn("用户未授予通知权限");return}const I=((t=e.content)==null?void 0:t.message)||"新通知",n=e.senderInfo||((o=e.content)==null?void 0:o.senderInfo),v=(n==null?void 0:n.deviceName)||(n==null?void 0:n.deviceType)||"未知发送者",s=((d=e.content)==null?void 0:d.isUrgent)||!1,h=new Notification(s?"🚨 紧急通知":"📢 通知消息",{body:`${I} +import{s as Q,g as F,j as D,a as x}from"./socketClient-CkosNYrb.js";import{_ as V,g as N,e as S,d as w,i as _,f as p,k as K,c as W,r as E,F as j,v as b,M as q,q as H}from"./index-CFUCTEXJ.js";import{X as u,_ as m,j as i,Z as a,k as c,S as f,a1 as g,$ as y,F as k,N as M,R as L,V as G,m as J,a2 as U,n as X,Y as $,ad as R,a8 as B}from"./vendor-vue-B2vxubPy.js";import{p as O,s as Y}from"./soundList-D9U-Grcp.js";import{V as C}from"./VChip-DR8Ljy6R.js";import{f as Z,s as ee,c as te}from"./deviceEvents-BfEN8wCe.js";import{V as se}from"./VBadge-C7i5WU2T.js";import{V as ie}from"./VTooltip-CbK3h4lM.js";import{V as ne,a as T}from"./VRow-Dw4j2TKL.js";import{V as oe}from"./VPagination-D-juuf4L.js";import{V as re}from"./VTextarea-BxmmuONa.js";const ae={name:"EventSender",emits:["sent","error"],methods:{async sendEvent(e,t={}){try{return Q(e,t),this.$emit("sent",{eventName:e,content:t,timestamp:new Date().toISOString(),success:!0}),{success:!0,eventId:(t==null?void 0:t.eventId)||null,notificationId:(t==null?void 0:t.notificationId)||null}}catch(o){return console.error("发送事件失败:",o),this.$emit("error",{eventName:e,content:t,error:o.message,timestamp:new Date().toISOString(),success:!1}),{success:!1,error:o.message}}},async sendNotification(e,t=!1,o=[],d={},l=null){const r=`evt-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return this.sendEvent("notification",{eventId:r,notificationId:l,message:e,isUrgent:t,targetDevices:o,senderInfo:d})},async sendReceipt(e,t,o={},d=null){const l=`rcpt-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;return this.sendEvent("notification-receipt",{eventId:l,originalEventId:e,notificationId:d,status:t,deviceInfo:o})},async sendDisplayedReceipt(e={},t=null){const o=`disp-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;return this.sendEvent("notification-displayed",{eventId:o,notificationId:t,deviceInfo:e})},async sendReadReceipt(e={},t=null){const o=`read-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;return this.sendEvent("notification-read",{eventId:o,notificationId:t,deviceInfo:e})}}},le={style:{display:"none"}};function de(e,t,o,d,l,r){return u(),m("div",le)}const P=V(ae,[["render",de]]),ce={name:"UrgentNotification",components:{EventSender:P},data(){return{visible:!1,notificationQueue:[],currentIndex:0,autoCloseTimer:null,urgentSoundTimer:null,currentAudio:null}},computed:{currentNotification(){return this.notificationQueue[this.currentIndex]||null},hasNotifications(){return this.notificationQueue.length>0},hasMultipleNotifications(){return this.notificationQueue.length>1},notificationCountText(){return this.hasMultipleNotifications?`${this.currentIndex+1} / ${this.notificationQueue.length}`:""},isUrgent(){var e,t;return((t=(e=this.currentNotification)==null?void 0:e.content)==null?void 0:t.isUrgent)||!1},urgencyColor(){return this.isUrgent?"red darken-2":"blue darken-2"},iconColor(){return"white"},urgencyIcon(){return this.isUrgent?"mdi-alert-circle-outline":"mdi-information-outline"},urgencyTitle(){return this.isUrgent?"🚨 紧急通知":"📢 通知消息"},senderName(){var t,o,d;const e=((t=this.currentNotification)==null?void 0:t.senderInfo)||((d=(o=this.currentNotification)==null?void 0:o.content)==null?void 0:d.senderInfo);return e?e.deviceName||e.deviceType||"未知设备":"未知发送者"},deviceType(){var t,o,d;const e=((t=this.currentNotification)==null?void 0:t.senderInfo)||((d=(o=this.currentNotification)==null?void 0:o.content)==null?void 0:d.senderInfo);return(e==null?void 0:e.deviceType)=="teacher"?"教师":(e==null?void 0:e.deviceType)=="student"?"学生":(e==null?void 0:e.deviceType)=="classroom"?"教室":(e==null?void 0:e.deviceType)||"未知类型"},targetDevices(){var e,t;return((t=(e=this.currentNotification)==null?void 0:e.content)==null?void 0:t.targetDevices)||[]}},beforeUnmount(){this.autoCloseTimer&&clearTimeout(this.autoCloseTimer),this.urgentSoundTimer&&clearInterval(this.urgentSoundTimer),this.stopNotificationSound()},methods:{show(e){var o;if(this.notificationQueue.findIndex(d=>{var l,r;return((l=d.content)==null?void 0:l.notificationId)===((r=e.content)==null?void 0:r.notificationId)})!==-1){console.log("通知已存在,跳过添加");return}this.notificationQueue.push(e),this.visible?(o=e.content)!=null&&o.isUrgent&&!this.isUrgent?(this.currentIndex=this.notificationQueue.length-1,this.sendDisplayedReceipt(),this.playNotificationSound(),this.sendBrowserNotification(e),this.startUrgentSound()):this.sendBrowserNotification(e):(this.currentIndex=this.notificationQueue.length-1,this.visible=!0,this.sendDisplayedReceipt(),this.playNotificationSound(),this.sendBrowserNotification(e),this.isUrgent&&this.startUrgentSound())},close(){var e,t,o,d;try{this.sendReadReceipt(),console.log("已发送已读回执")}catch(l){console.warn("发送已读回执失败:",l)}if((t=(e=this.currentNotification)==null?void 0:e.content)!=null&&t.message){const l=this.isUrgent?"紧急通知":"通知";this.isUrgent?(o=this.$message)==null||o.error(l,`${this.currentNotification.content.message}`):(d=this.$message)==null||d.info(l,`${this.currentNotification.content.message}`)}this.notificationQueue.length>0&&(this.notificationQueue.splice(this.currentIndex,1),this.currentIndex>=this.notificationQueue.length&&(this.currentIndex=Math.max(0,this.notificationQueue.length-1)),this.notificationQueue.length>0?(this.sendDisplayedReceipt(),this.isUrgent?this.startUrgentSound():this.stopUrgentSound()):this.closeWithoutRead())},closeWithoutRead(){this.visible=!1,this.notificationQueue=[],this.currentIndex=0,this.autoCloseTimer&&(clearTimeout(this.autoCloseTimer),this.autoCloseTimer=null),this.stopUrgentSound()},formatTime(e){if(!e)return"";try{const t=new Date(e);if(new Date-t<24*60*60*1e3){const l=String(t.getHours()).padStart(2,"0"),r=String(t.getMinutes()).padStart(2,"0");return`${l}:${r}`}else{const l=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return`${l}/${r}`}}catch{return"无效时间"}},getDeviceTypeLabel(e){return{classroom:"教室设备",student:"学生设备",teacher:"教师设备",admin:"管理员设备",system:"系统设备"}[e]||e},playNotificationSound(){try{this.stopNotificationSound();const e=this.isUrgent?N("notification.urgentSound"):N("notification.singleSound");this.currentAudio=O(e,!1),this.currentAudio||this.playFallbackSound()}catch(e){console.warn("无法播放通知音效:",e),this.playFallbackSound()}},playFallbackSound(){try{const e=new(window.AudioContext||window.webkitAudioContext),t=e.createOscillator(),o=e.createGain();t.connect(o),o.connect(e.destination),t.frequency.value=1e3,t.type="sine",o.gain.value=.3,t.start(),t.stop(e.currentTime+.3)}catch(e){console.warn("无法播放备用音效:",e)}},stopNotificationSound(){this.currentAudio&&(Y(this.currentAudio),this.currentAudio=null)},sendDisplayedReceipt(){var e;try{this.$refs.eventSender&&((e=this.currentNotification)!=null&&e.eventId)&&(this.$refs.eventSender.sendDisplayedReceipt({},this.currentNotification.content.notificationId),console.log("已发送显示回执:",this.currentNotification.eventId))}catch(t){console.warn("发送显示回执失败:",t)}},sendReadReceipt(){var e;try{this.$refs.eventSender&&((e=this.currentNotification)!=null&&e.eventId)&&(this.$refs.eventSender.sendReadReceipt({},this.currentNotification.content.notificationId),console.log("已发送已读回执:",this.currentNotification.eventId))}catch(t){console.warn("发送已读回执失败:",t)}},previousNotification(){this.currentIndex>0&&(this.currentIndex--,this.sendDisplayedReceipt(),this.isUrgent?this.startUrgentSound():this.stopUrgentSound())},nextNotification(){this.currentIndex{this.visible&&this.isUrgent?this.playFallbackSound():this.stopUrgentSound()},1e3))},stopUrgentSound(){this.urgentSoundTimer&&(clearInterval(this.urgentSoundTimer),this.urgentSoundTimer=null),this.stopNotificationSound()},async sendBrowserNotification(e){var t,o,d,l;if(!("Notification"in window)){console.warn("浏览器不支持通知API");return}try{let r=Notification.permission;if(r==="default"&&(r=await Notification.requestPermission()),r!=="granted"){console.warn("用户未授予通知权限");return}const I=((t=e.content)==null?void 0:t.message)||"新通知",n=e.senderInfo||((o=e.content)==null?void 0:o.senderInfo),v=(n==null?void 0:n.deviceName)||(n==null?void 0:n.deviceType)||"未知发送者",s=((d=e.content)==null?void 0:d.isUrgent)||!1,h=new Notification(s?"🚨 紧急通知":"📢 通知消息",{body:`${I} 来自: ${v}`,icon:"/pwa/image/icon-192.png",badge:"/pwa/image/icon-192.png",tag:((l=e.content)==null?void 0:l.notificationId)||`notification-${Date.now()}`,requireInteraction:s,silent:!1,vibrate:s?[200,100,200,100,200]:[200],timestamp:e.timestamp||Date.now()});h.onclick=()=>{window.focus(),h.close()},s||setTimeout(()=>{h.close()},1e4)}catch(r){console.error("发送浏览器通知失败:",r)}}}},ue={class:"urgent-title mb-6"},he={class:"urgent-subtitle mb-6"},fe={key:0,class:"navigation-controls mt-6"},me={class:"notification-counter mb-3"},ge={class:"navigation-buttons"},pe={class:"mt-8"};function ve(e,t,o,d,l,r){const I=P;return u(),m(k,null,[i(K,{modelValue:l.visible,"onUpdate:modelValue":t[0]||(t[0]=n=>l.visible=n),"max-width":"800",persistent:"",transition:"dialog-transition",class:"urgent-notification-dialog"},{default:a(()=>[i(S,{class:"urgent-notification-card",color:r.urgencyColor,elevation:"24"},{default:a(()=>[i(w,null,{default:a(()=>{var n,v,s;return[c("div",ue,f(((v=(n=r.currentNotification)==null?void 0:n.content)==null?void 0:v.message)||"无内容"),1),c("div",he,f(r.senderName)+" "+f(r.deviceType)+" "+f(r.formatTime((s=r.currentNotification)==null?void 0:s.timestamp)),1),r.hasMultipleNotifications?(u(),m("div",fe,[i(S,{variant:"flat",color:"rgba(255,255,255,0.1)"},{default:a(()=>[i(w,{class:"text-center"},{default:a(()=>[c("div",me,[i(C,{color:"white",variant:"flat",size:"small"},{default:a(()=>[g(f(r.notificationCountText),1)]),_:1})]),c("div",ge,[i(_,{disabled:l.currentIndex===0,color:"white",variant:"outlined",size:"small",onClick:r.previousNotification},{default:a(()=>[i(p,null,{default:a(()=>[...t[1]||(t[1]=[g(" mdi-chevron-left ",-1)])]),_:1}),t[2]||(t[2]=g(" 上一个 ",-1))]),_:1},8,["disabled","onClick"]),i(_,{disabled:l.currentIndex===l.notificationQueue.length-1,color:"white",variant:"outlined",size:"small",class:"ml-2",onClick:r.nextNotification},{default:a(()=>[t[4]||(t[4]=g(" 下一个 ",-1)),i(p,null,{default:a(()=>[...t[3]||(t[3]=[g(" mdi-chevron-right ",-1)])]),_:1})]),_:1},8,["disabled","onClick"])])]),_:1})]),_:1})])):y("",!0),c("div",pe,[i(_,{color:"white",size:"large",variant:"flat",onClick:r.close},{default:a(()=>[i(p,{left:""},{default:a(()=>[...t[5]||(t[5]=[g(" mdi-check ",-1)])]),_:1}),t[6]||(t[6]=g(" 我知道了 ",-1))]),_:1},8,["onClick"])])]}),_:1})]),_:1},8,["color"])]),_:1},8,["modelValue"]),i(I,{ref:"eventSender"},null,512)],64)}const z=V(ce,[["render",ve],["__scopeId","data-v-6190a823"]]),ye={name:"ChatWidget",components:{UrgentNotification:z},props:{modelValue:{type:Boolean,default:!1},showButton:{type:Boolean,default:!0},offset:{type:Number,default:16},width:{type:Number,default:380},height:{type:Number,default:520}},emits:["update:modelValue"],data(){return{visible:this.modelValue,text:"",messages:[],allEvents:[],lastVisit:null,unreadCount:0,connected:!1,socketId:"",currentMode:"chat",currentPage:1,itemsPerPage:20,loading:!1,isDestroying:!1,eventStats:{chat:0,kvChanged:0,other:0},cleanupFunctions:[]}},computed:{panelStyle(){return{right:this.offset+"px",bottom:this.offset+"px",width:this.width+"px",height:this.height+"px"}},toggleStyle(){return{right:this.offset+"px",bottom:this.offset+"px"}},canSend(){return!!(N("server.kvToken")&&this.text.trim())},showToggleButton(){return this.$props.showButton&&!this.visible},decoratedMessages(){if(!this.lastVisit)return this.messages;const e=this.messages.findIndex(d=>d.at&&new Date(d.at).getTime()>=new Date(this.lastVisit).getTime());if(e<=0)return this.messages;const t=this.messages.slice(0,e),o=this.messages.slice(e);return[...t,{_id:"divider",_type:"divider"},...o]},currentDisplayItems(){return this.currentMode==="chat"?this.decoratedMessages:this.paginatedEvents},paginatedEvents(){if(this.isDestroying||!this.allEvents)return[];const e=(this.currentPage-1)*this.itemsPerPage,t=e+this.itemsPerPage;return this.allEvents.slice(e,t)},totalPages(){return this.isDestroying||!this.allEvents?1:Math.ceil(this.allEvents.length/this.itemsPerPage)},modeTitle(){return this.currentMode==="chat"?"设备聊天室":"所有事件"}},watch:{modelValue(e){this.visible=e,e&&this.onOpen()}},mounted(){try{const s=localStorage.getItem("chat.lastVisit");s&&(this.lastVisit=s)}catch{}const e=F();this.connected=!!e.connected,this.socketId=e.id||"",e.on("connect",()=>{this.connected=!0,this.socketId=e.id||""}),e.on("disconnect",()=>{this.connected=!1});const t=N("server.kvToken");t&&D(t);const o=s=>(...h)=>{if(!this.isDestroying)try{s(...h)}catch(A){console.error("ChatWidget 事件处理错误:",A)}},d=x("chat:message",o(s=>{this.pushMessage(s),this.addEvent({_id:`legacy-chat-${Date.now()}-${Math.random()}`,type:"chat:message",content:s,timestamp:s.at||new Date().toISOString(),senderId:s.senderId,uuid:s.uuid,senderInfo:s.senderInfo})})),l=x("chat",o(s=>{if(s&&s.content&&s.content.text){const h={text:s.content.text,senderId:s.senderId,at:s.timestamp,uuid:s.senderId,senderInfo:s.senderInfo};this.pushMessage(h),this.addEvent({_id:s.eventId||`chat-${Date.now()}-${Math.random()}`,type:"chat",content:s.content,timestamp:s.timestamp,eventId:s.eventId,senderId:s.senderId,senderInfo:s.senderInfo})}}));this.deviceEventHandler=te({onChat:o((s,h)=>{this.pushMessage(s),this.addEvent(h)}),onKvChanged:o((s,h)=>{this.addEvent(h)}),onUrgentNotice:o((s,h)=>{this.addEvent(h),this.showUrgentNotification(h)}),onNotification:o((s,h)=>{console.log("收到通知事件:",s,h),this.addEvent(h),this.showUrgentNotification(h)}),onOtherEvent:o(s=>{(s.type==="urgent-notice"||s.type==="notification")&&this.showUrgentNotification(s),this.addEvent(s)}),enableLegacySupport:!0});const r=x("device-event",this.deviceEventHandler),I=x("kv-key-changed",o(s=>{s.content&&s.timestamp?this.addEvent({_id:`kv-${Date.now()}-${Math.random()}`,type:"kv-key-changed",content:s.content,timestamp:s.timestamp,eventId:s.eventId,senderId:s.senderId,senderInfo:s.senderInfo}):this.addEvent({_id:`legacy-kv-${Date.now()}-${Math.random()}`,type:"kv-key-changed",content:s,timestamp:s.updatedAt||new Date().toISOString(),uuid:s.uuid})})),n=x("urgent-notice",o(s=>{console.log("收到紧急通知:",s),this.addEvent({_id:`urgent-${Date.now()}-${Math.random()}`,type:"urgent-notice",content:s.content||s,timestamp:s.timestamp||new Date().toISOString(),eventId:s.eventId,senderId:s.senderId,senderInfo:s.senderInfo}),this.showUrgentNotification(s)})),v=x("notification",o(s=>{var h;console.log("收到通知事件:",s),this.addEvent({_id:`notification-${Date.now()}-${Math.random()}`,type:"notification",content:s.content||s,timestamp:s.timestamp||new Date().toISOString(),eventId:s.eventId,senderId:s.senderId,senderInfo:s.senderInfo||((h=s.content)==null?void 0:h.senderInfo)}),this.showUrgentNotification(s)}));this.cleanupFunctions=[d,l,n,v,r,I],this.visible&&this.onOpen()},beforeUnmount(){this.isDestroying=!0,this.cleanupFunctions&&Array.isArray(this.cleanupFunctions)&&this.cleanupFunctions.forEach(e=>{try{typeof e=="function"&&e()}catch(t){console.warn("ChatWidget 清理函数执行失败:",t)}});try{this.offMessage&&this.offMessage(),this.offDeviceEvent&&this.offDeviceEvent(),this.offKvChanged&&this.offKvChanged()}catch(e){console.warn("ChatWidget 旧清理函数执行失败:",e)}this.cleanupFunctions=[],this.messages=[],this.allEvents=[]},methods:{open(){this.visible=!0,this.$emit("update:modelValue",!0),this.onOpen()},close(){this.visible=!1,this.$emit("update:modelValue",!1);try{localStorage.setItem("chat.lastVisit",new Date().toISOString())}catch{}this.unreadCount=0},onOpen(){this.$nextTick(()=>this.scrollToBottom())},insertEmoji(e){this.text+=e,this.$nextTick(()=>{var t,o;if((o=(t=this.$refs.inputRef)==null?void 0:t.$el)!=null&&o.querySelector){const d=this.$refs.inputRef.$el.querySelector("textarea");d==null||d.focus()}})},handleEnter(e){e.shiftKey||this.send()},send(){const e=this.text.trim();if(!e)return;const t={_id:`self-${Date.now()}-${Math.random()}`,text:e,at:new Date().toISOString(),senderId:this.socketId,self:!0,senderInfo:{deviceName:"我",deviceType:"client",isReadOnly:!1}};this.pushMessage(t),this.addEvent({_id:`self-event-${Date.now()}-${Math.random()}`,type:"chat",content:{text:e},timestamp:new Date().toISOString(),senderId:this.socketId,senderInfo:{deviceName:"本设备",deviceType:"client",isReadOnly:!1}}),ee(e),this.text=""},pushMessage(e){if(!(this.isDestroying||!e))try{const t={_id:`${e.at||Date.now()}-${Math.random()}`,text:typeof(e==null?void 0:e.text)=="string"?e.text:(e==null?void 0:e.text)||"",at:e.at||new Date().toISOString(),senderId:e.senderId,self:!!(e.senderId&&e.senderId===this.socketId),senderInfo:e.senderInfo||null,deviceName:this.getDeviceName(e.senderInfo,e.senderId===this.socketId)};if(!t.text)return;this.messages.push(t),this.visible||this.unreadCount++,this.$nextTick(()=>{this.isDestroying||this.scrollToBottom()}),this.messages.length>500&&this.messages.shift()}catch(t){console.error("ChatWidget pushMessage 错误:",t)}},formatTime(e){try{const t=new Date(e),o=String(t.getHours()).padStart(2,"0"),d=String(t.getMinutes()).padStart(2,"0");return`${o}:${d}`}catch{return""}},scrollToBottom(){if(!this.isDestroying)try{const e=this.$refs.listRef;if(!e)return;requestAnimationFrame(()=>{!this.isDestroying&&e&&(e.scrollTop=e.scrollHeight)})}catch(e){console.warn("ChatWidget scrollToBottom 错误:",e)}},addEvent(e){if(!(this.isDestroying||!e))try{this.allEvents.unshift(e),e.type==="chat"||e.type==="chat:message"?this.eventStats.chat++:e.type==="kv-key-changed"?this.eventStats.kvChanged++:this.eventStats.other++,this.allEvents.length>200&&(this.allEvents=this.allEvents.slice(0,200))}catch(t){console.error("ChatWidget addEvent 错误:",t)}},getEventColor(e){switch(e){case"chat":case"chat:message":return"success";case"kv-key-changed":return"info";default:return"warning"}},getEventTypeLabel(e){switch(e){case"chat":case"chat:message":return"聊天";case"kv-key-changed":return"KV变化";default:return e}},formatDeviceInfo(e){return Z(e)},getDeviceName(e,t=!1){return t?"我":e?e.deviceName==="realtime"?"系统":e.deviceName||e.deviceType||"未知设备":"未知设备"},showUrgentNotification(e){try{this.$refs.urgentNotification?this.$refs.urgentNotification.show(e):console.warn("紧急通知组件未找到")}catch(t){console.error("显示紧急通知失败:",t)}}}},_e={class:"text-subtitle-1"},Ie={key:0,ref:"listRef",class:"messages"},Se={key:0,class:"divider-row"},we={class:"avatar"},xe={class:"bubble"},ke={key:0,class:"sender-name"},Ne={class:"text"},be={class:"meta"},Te={key:0,class:"device-name"},Ce={key:1,class:"events-container"},Ve={class:"event-stats mb-3"},Ee={class:"text-h6"},Me={class:"text-h6"},Ue={class:"text-h6"},$e={class:"events-list"},Re={class:"d-flex align-center mb-1"},Be={class:"text-caption"},Oe={key:0,class:"mb-1 text-caption"},Pe={class:"event-content"},ze={key:0,class:"chat-content"},Ae={key:1,class:"text-caption event-data"},Qe={key:0,class:"text-center text-grey pa-4"},Fe={key:0,class:"pagination mt-2"};function De(e,t,o,d,l,r){const I=z;return u(),m(k,null,[r.showToggleButton?(u(),m("div",{key:0,style:M(r.toggleStyle),class:"chat-toggle"},[i(_,{color:"primary",icon:"",variant:"flat",onClick:t[0]||(t[0]=n=>r.open())},{default:a(()=>[i(se,{content:l.unreadCount||void 0,"model-value":l.unreadCount>0,color:"error",overlap:""},{default:a(()=>[i(p,null,{default:a(()=>[...t[7]||(t[7]=[g(" mdi-chat ",-1)])]),_:1})]),_:1},8,["content","model-value"])]),_:1})],4)):y("",!0),L(c("div",{style:M(r.panelStyle),class:"chat-panel"},[i(S,{border:"",class:"chat-card",elevation:"8"},{default:a(()=>[i(W,{class:"d-flex align-center"},{default:a(()=>[i(p,{class:"mr-2"},{default:a(()=>[...t[8]||(t[8]=[g(" mdi-chat-processing ",-1)])]),_:1}),c("span",_e,f(r.modeTitle),1),i(E),i(j,{modelValue:l.currentMode,"onUpdate:modelValue":t[1]||(t[1]=n=>l.currentMode=n),class:"mr-2",mandatory:"",size:"small",variant:"outlined"},{default:a(()=>[i(_,{value:"chat",size:"small"},{default:a(()=>[i(p,null,{default:a(()=>[...t[9]||(t[9]=[g("mdi-chat",-1)])]),_:1})]),_:1}),i(_,{value:"events",size:"small"},{default:a(()=>[i(p,null,{default:a(()=>[...t[10]||(t[10]=[g("mdi-format-list-bulleted",-1)])]),_:1})]),_:1})]),_:1},8,["modelValue"]),i(ie,{location:"top"},{activator:a(({props:n})=>[i(C,J({color:l.connected?"success":"grey",size:"x-small"},n,{variant:"tonal"}),{default:a(()=>[g(f(l.connected?"已连接":"未连接"),1)]),_:1},16,["color"])]),default:a(()=>[c("span",null,"Socket "+f(l.socketId||"-"),1)]),_:1}),i(_,{icon:"",variant:"text",onClick:t[2]||(t[2]=n=>r.close())},{default:a(()=>[i(p,null,{default:a(()=>[...t[11]||(t[11]=[g("mdi-close",-1)])]),_:1})]),_:1})]),_:1}),i(b),i(w,{class:"chat-body"},{default:a(()=>[l.currentMode==="chat"?(u(),m("div",Ie,[(u(!0),m(k,null,U(r.decoratedMessages,n=>(u(),m(k,{key:n._id},[n._type==="divider"?(u(),m("div",Se,[i(b,{class:"my-2"}),t[12]||(t[12]=c("div",{class:"divider-text"}," 今天 - 上次访问 ",-1)),i(b,{class:"my-2"})])):(u(),m("div",{key:1,class:X([{self:n.self},"message-row"])},[c("div",we,[i(q,{color:n.self?"primary":"grey",size:"24"},{default:a(()=>[i(p,{size:"small"},{default:a(()=>[g(f(n.self?"mdi-account":"mdi-account-outline"),1)]),_:2},1024)]),_:2},1032,["color"])]),c("div",xe,[!n.self&&n.deviceName?(u(),m("div",ke,f(n.deviceName),1)):y("",!0),c("div",Ne,f(n.text),1),c("div",be,[n.self&&n.deviceName?(u(),m("span",Te,f(n.deviceName)+" • ",1)):y("",!0),g(" "+f(r.formatTime(n.at)),1)])])],2))],64))),128))],512)):(u(),m("div",Ce,[c("div",Ve,[i(ne,{dense:""},{default:a(()=>[i(T,{cols:"4"},{default:a(()=>[i(S,{color:"success",dark:"",size:"small"},{default:a(()=>[i(w,{class:"text-center pa-2"},{default:a(()=>[c("div",Ee,f(l.eventStats.chat),1),t[13]||(t[13]=c("div",{class:"text-caption"}," 聊天 ",-1))]),_:1})]),_:1})]),_:1}),i(T,{cols:"4"},{default:a(()=>[i(S,{color:"info",dark:"",size:"small"},{default:a(()=>[i(w,{class:"text-center pa-2"},{default:a(()=>[c("div",Me,f(l.eventStats.kvChanged),1),t[14]||(t[14]=c("div",{class:"text-caption"}," KV变化 ",-1))]),_:1})]),_:1})]),_:1}),i(T,{cols:"4"},{default:a(()=>[i(S,{color:"warning",dark:"",size:"small"},{default:a(()=>[i(w,{class:"text-center pa-2"},{default:a(()=>[c("div",Ue,f(l.eventStats.other),1),t[15]||(t[15]=c("div",{class:"text-caption"}," 其他 ",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),c("div",$e,[(u(!0),m(k,null,U(r.paginatedEvents,n=>(u(),m("div",{key:n._id,class:"event-item mb-2"},[i(S,{color:r.getEventColor(n.type),size:"small",variant:"outlined"},{default:a(()=>[i(w,{class:"pa-2"},{default:a(()=>{var v;return[c("div",Re,[i(C,{color:r.getEventColor(n.type),size:"x-small"},{default:a(()=>[g(f(r.getEventTypeLabel(n.type)),1)]),_:2},1032,["color"]),i(E),c("span",Be,f(r.formatTime(n.timestamp||n.at)),1)]),n.senderInfo?(u(),m("div",Oe,[t[16]||(t[16]=c("strong",null,"发送者:",-1)),g(" "+f(r.formatDeviceInfo(n.senderInfo)),1)])):y("",!0),c("div",Pe,[n.type==="chat"||n.type==="chat:message"?(u(),m("div",ze,f(((v=n.content)==null?void 0:v.text)||n.text),1)):(u(),m("pre",Ae,f(JSON.stringify(n.content||n,null,1)),1))])]}),_:2},1024)]),_:2},1032,["color"])]))),128)),l.allEvents.length===0?(u(),m("div",Qe," 暂无事件 ")):y("",!0)]),r.totalPages>1?(u(),m("div",Fe,[i(oe,{modelValue:l.currentPage,"onUpdate:modelValue":t[3]||(t[3]=n=>l.currentPage=n),length:r.totalPages,"total-visible":3,size:"small"},null,8,["modelValue","length"])])):y("",!0)]))]),_:1}),l.currentMode==="chat"?(u(),$(b,{key:0})):y("",!0),l.currentMode==="chat"?(u(),$(H,{key:1,class:"chat-input"},{default:a(()=>[i(_,{class:"mr-1",icon:"",variant:"text",onClick:t[4]||(t[4]=n=>r.insertEmoji("😄"))},{default:a(()=>[i(p,null,{default:a(()=>[...t[17]||(t[17]=[g("mdi-emoticon-outline",-1)])]),_:1})]),_:1}),i(re,{ref:"inputRef",modelValue:l.text,"onUpdate:modelValue":t[5]||(t[5]=n=>l.text=n),"auto-grow":"",class:"flex-grow-1","hide-details":"",placeholder:"输入消息",rows:"1",variant:"solo",onKeydown:[R(B(r.handleEnter,["prevent"]),["enter"]),t[6]||(t[6]=R(B(()=>{},["shift","stop"]),["enter"]))]},null,8,["modelValue","onKeydown"]),i(_,{disabled:!r.canSend,class:"ml-2",color:"primary",onClick:r.send},{default:a(()=>[i(p,{start:""},{default:a(()=>[...t[18]||(t[18]=[g(" mdi-send ",-1)])]),_:1}),t[19]||(t[19]=g(" 发送 ",-1))]),_:1},8,["disabled","onClick"])]),_:1})):y("",!0)]),_:1})],4),[[G,l.visible]]),i(I,{ref:"urgentNotification"},null,512)],64)}const Ke=V(ye,[["render",De],["__scopeId","data-v-1a62ac2a"]]),tt=Object.freeze(Object.defineProperty({__proto__:null,default:Ke},Symbol.toStringTag,{value:"Module"}));export{tt as C,P as _,Ke as a}; diff --git a/assets/ExamConfigEditor-DzELjE-Y.js b/assets/ExamConfigEditor-DzELjE-Y.js deleted file mode 100644 index 8a31d83..0000000 --- a/assets/ExamConfigEditor-DzELjE-Y.js +++ /dev/null @@ -1,2 +0,0 @@ -import{d as Q}from"./dataProvider-BwUtbSl1.js";import{o as ae,q as Qe,k as g,N as Se,n as ne,b as _,e as P,j as o,s as et,a1 as f,F as ce,I as Ae,D as tt,m as fe,t as at,X as w,_ as R,Y as E,Z as r,S as U,$ as F,a2 as ye,ad as nt,R as lt,V as ot}from"./vendor-vue-H0jQBZ7T.js";import{D as $e,E as it,C as rt,l as x,G as st,I as ut,_ as dt,h as V,j as He,k as ke,s as mt,d as G,e as q,K as ct,c as ee,o as se,U as ft,i as gt,q as Te,p as vt}from"./index-_6IQhlPZ.js";import{V as Ve}from"./VAlert-D9G_9owC.js";import{V as ht}from"./VSkeletonLoader-CfCoJRep.js";import{V as be}from"./VTooltip-C2Bprg_f.js";import{V as xe,b as pt}from"./VChip-Veb3ShEh.js";import{a as B,V as ue}from"./VRow-WkEz3xRr.js";import{V as te}from"./VTextField-CuXGbmmC.js";import{V as yt}from"./VTextarea-CCCqy4pz.js";import{V as bt}from"./VSwitch-CdpUb5tZ.js";import{V as wt}from"./VAutocomplete-lO4hforf.js";import{V as Be}from"./VSheet-U4CNWLuy.js";import{a as Le,m as Ct,V as Oe}from"./VDatePicker-cLZU-Ed4.js";import{f as we,u as Ce,p as he,aM as Dt,an as Ke,n as ge,z as Re,a5 as _e}from"./vendor-vuetify-ChAgIwn2.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-BGVL0kta.js";import"./autofocus-BrMOVHY_.js";import"./VSelect-ANRyd3L-.js";import"./VCheckboxBtn-DCkgbmVP.js";import"./VBadge-VwKD9DDf.js";const kt=he({allowedValues:Function,ampm:Boolean,color:String,disabled:Boolean,displayedValue:null,double:Boolean,format:{type:Function,default:e=>e},max:{type:Number,required:!0},min:{type:Number,required:!0},scrollable:Boolean,readonly:Boolean,rotate:{type:Number,default:0},step:{type:Number,default:1},modelValue:{type:Number}},"VTimePickerClock"),je=we()({name:"VTimePickerClock",props:kt(),emits:{change:e=>!0,input:e=>!0},setup(e,t){let{emit:i}=t;const n=_(null),l=_(null),u=_(void 0),a=_(!1),d=_(null),s=_(null),p=Dt(c=>i("change",c),750),{textColorClasses:I,textColorStyles:M}=$e(()=>e.color),{backgroundColorClasses:k,backgroundColorStyles:h}=it(()=>e.color),N=P(()=>e.max-e.min+1),S=P(()=>e.double?N.value/2:N.value),C=P(()=>360/S.value),j=P(()=>C.value*Math.PI/180),$=P(()=>e.modelValue==null?e.min:e.modelValue),le=P(()=>.62),de=P(()=>{const c=[];for(let y=e.min;y<=e.max;y=y+e.step)c.push(y);return c});ae(()=>e.modelValue,c=>{u.value=c});function z(c){u.value!==c&&(u.value=c),i("input",c)}function J(c){return!e.allowedValues||e.allowedValues(c)}function X(c){if(!e.scrollable||e.disabled)return;c.preventDefault();const y=Math.sign(-c.deltaY||1);let T=$.value;do T=T+y,T=(T-e.min+N.value)%N.value+e.min;while(!J(T)&&T!==$.value);T!==e.displayedValue&&z(T),p(T)}function Z(c){return e.double&&c-e.min>=S.value}function Y(c){return Z(c)?le.value:1}function b(c){const y=e.rotate*Math.PI/180;return{x:Math.sin((c-e.min)*j.value+y)*Y(c),y:-Math.cos((c-e.min)*j.value+y)*Y(c)}}function A(c,y){const T=(Math.round(c/C.value)+(y?S.value:0))%N.value+e.min;return c<360-C.value/2?T:y?e.max-S.value+1:e.min}function W(c){const{x:y,y:T}=b(c);return{left:`${Math.round(50+y*50)}%`,top:`${Math.round(50+T*50)}%`}}function m(c,y){const T=y.x-c.x,ie=y.y-c.y;return Math.sqrt(T*T+ie*ie)}function v(c,y){const T=2*Math.atan2(y.y-c.y-m(c,y),y.x-c.x);return Math.abs(T*180/Math.PI)}function O(c){d.value===null&&(d.value=c),s.value=c,z(c)}function D(c){var Ue,Fe;if(c.preventDefault(),!a.value&&c.type!=="click"||!n.value)return;const{width:y,top:T,left:ie}=(Ue=n.value)==null?void 0:Ue.getBoundingClientRect(),{width:De}=((Fe=l.value)==null?void 0:Fe.getBoundingClientRect())??{width:0},{clientX:Ge,clientY:Xe}="touches"in c?c.touches[0]:c,Ie={x:y/2,y:-y/2},Me={x:Ge-ie,y:T-Xe},Ee=Math.round(v(Ie,Me)-e.rotate+360)%360,Pe=e.double&&m(Ie,Me)<(De+De*le.value)/4,Ze=Math.ceil(15/C.value);let re;for(let pe=0;peg("div",{class:ne([{"v-time-picker-clock":!0,"v-time-picker-clock--indeterminate":e.modelValue==null,"v-time-picker-clock--readonly":e.readonly}]),onMousedown:H,onTouchstart:H,onWheel:X,ref:n},[g("div",{class:"v-time-picker-clock__inner",ref:l},[g("div",{class:ne([{"v-time-picker-clock__hand":!0,"v-time-picker-clock__hand--inner":Z(e.modelValue)},I.value]),style:Se([{transform:`rotate(${e.rotate+C.value*($.value-e.min)}deg) scaleY(${Y($.value)})`},M.value])},null),de.value.map(c=>{const y=c===$.value;return g("div",{class:ne([{"v-time-picker-clock__item":!0,"v-time-picker-clock__item--active":y,"v-time-picker-clock__item--disabled":e.disabled||!J(c)},y&&k.value]),style:Se([W(c),y&&h.value])},[g("span",null,[e.format(c)])])})])]))}}),Tt=he({active:Boolean,color:String,disabled:Boolean,label:String,modelValue:String,error:String,showHint:Boolean,readonly:Boolean},"VTimePickerField"),Ne=we()({name:"VTimePickerField",props:Tt(),emits:{"update:modelValue":e=>!0},setup(e,t){let{emit:i}=t;const{textColorClasses:n,textColorStyles:l}=$e(()=>e.color),u=_(),a=et(!1);function d(s){if(["Backspace","Delete"].includes(s.key)){s.preventDefault();const p=s.target;p.value="",i("update:modelValue",null)}}return Ce(()=>o(te,{ref:u,_as:"VTimePickerField",autocomplete:"off",class:ne(["v-time-picker-controls__time__field",{"v-time-picker-controls__time__field--active":e.active},e.active?n.value:[]]),style:Se(e.active?l.value:[]),disabled:e.disabled,variant:"solo-filled",inputmode:"numeric",hideDetails:"auto","aria-label":e.label,"aria-invalid":!!e.error,"aria-errormessage":e.error,error:!!e.error,hint:e.showHint?e.label:void 0,persistentHint:!0,flat:!0,modelValue:e.modelValue??(a.value?"":"--"),"onUpdate:modelValue":s=>i("update:modelValue",s),onKeydown:d,onFocus:()=>a.value=!0,onBlur:()=>a.value=!1},null)),rt({},u)}});function L(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return String(e).padStart(t,"0")}function qe(e){return e?(e-1)%12+1:12}function ve(e,t){return e%12+(t==="pm"?12:0)}function me(e){const t=e.replaceAll(/\D/g,"");return t.length>0?Number(t):null}function Vt(e,t,i){{if(e===23&&t)return{value:0};if(e===0&&!t)return{value:23}}return{value:e+(t?1:-1)}}function xt(e,t){return e===59&&t?0:e===0&&!t?59:e+(t?1:-1)}const Ye=he({allowedHours:[Function,Array],allowedMinutes:[Function,Array],allowedSeconds:[Function,Array],max:String,min:String},"time-validation");function We(e){const t=P(()=>{const u=e.min?Number(e.min.split(":")[0]):0,a=e.max?Number(e.max.split(":")[0]):23;return d=>da?!1:Array.isArray(e.allowedHours)?e.allowedHours.includes(d):typeof e.allowedHours=="function"?e.allowedHours(d):!0}),i=P(()=>{const[u,a]=e.min?e.min.split(":").map(Number):[0,0],[d,s]=e.max?e.max.split(":").map(Number):[23,59],p=u*60+a,I=d*60+s;return(M,k)=>{if(M!==null){const h=60*M+k;if(hI)return!1}return Array.isArray(e.allowedMinutes)?e.allowedMinutes.includes(k):typeof e.allowedMinutes=="function"?e.allowedMinutes(k):!0}}),n=P(()=>{const[u,a,d]=e.min?e.min.split(":").map(Number):[0,0,0],[s,p,I]=e.max?e.max.split(":").map(Number):[23,59,59],M=u*3600+a*60+(d||0),k=s*3600+p*60+(I||0);return(h,N,S)=>{if(h!==null&&N!==null){const C=3600*h+60*N+S;if(Ck)return!1}return Array.isArray(e.allowedSeconds)?e.allowedSeconds.includes(S):typeof e.allowedSeconds=="function"?e.allowedSeconds(S):!0}});function l(u,a,d){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,p=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;const I=u==="hour"?t.value:u==="minute"?h=>i.value(s,h):h=>n.value(s,p,h),M=u==="hour"?h=>Vt(h,d).value:h=>xt(h,d),k=u==="hour"?24:60;for(let h=1;h<=k&&(a=M(a),!I(a));h++);return a}return{isAllowedHour:t,isAllowedMinute:i,isAllowedSecond:n,findNextAllowed:l}}const Nt=he({ampm:Boolean,color:String,disabled:Boolean,inputHints:Boolean,hour:[Number,String],minute:[Number,String],second:[Number,String],period:String,readonly:Boolean,useSeconds:Boolean,value:Number,viewMode:String,...Ye()},"VTimePickerControls"),ze=we()({name:"VTimePickerControls",props:Nt(),emits:{"update:period":e=>!0,"update:viewMode":e=>!0,"update:hour":e=>!0,"update:minute":e=>!0,"update:second":e=>!0},setup(e,t){let{emit:i}=t;const{t:n}=Ke(),{isAllowedHour:l,isAllowedMinute:u,isAllowedSecond:a,findNextAllowed:d}=We(e),s=P(()=>e.hour!==null?e.ampm?ve(Number(e.hour),e.period??"am"):Number(e.hour):null),p=P(()=>e.minute!==null?Number(e.minute):null),I=P(()=>{var m;return e.hour===null?!0:((m=l.value)==null?void 0:m.call(l,Number(s.value)))??!0}),M=P(()=>{var m;return e.minute===null?!0:((m=u.value)==null?void 0:m.call(u,s.value,Number(e.minute)))??!0}),k=P(()=>{var m;return e.second===null?!0:((m=a.value)==null?void 0:m.call(a,s.value,p.value,Number(e.second)))??!0}),h={in:m=>{if(m==null||isNaN(Number(m)))return null;const v=Number(m);return e.ampm?L(qe(v)):L(v)},out:m=>{if(isNaN(Number(m))||m==null||m==="")return null;const v=typeof m=="string"?me(m):Number(m);return v===null?null:e.ampm?ve(v,e.period??"am"):Re(v,0,23)}},N=ge(e,"hour",void 0,h.in,h.out),S={in:m=>m!=null&&!isNaN(Number(m))?L(`${m}`):null,out:m=>{if(isNaN(Number(m))||m==null||m==="")return null;const v=typeof m=="string"?me(m):Number(m);return v!==null?Re(v,0,59):null}},C=ge(e,"minute",void 0,S.in,S.out),j=ge(e,"second",void 0,S.in,S.out);function $(m){if(!["ArrowUp","ArrowDown"].includes(m.key))return;m.preventDefault(),m.stopPropagation();const v=e.period==="am",O=e.ampm?ve(Number(N.value??0),v?"am":"pm"):Number(N.value??0),D=d("hour",O,m.key==="ArrowUp"),H=v&&D>=12||!v&&D<12;e.ampm&&H?(i("update:period",e.period==="am"?"pm":"am"),Ae(()=>N.value=L(D))):N.value=L(D)}function le(m){if(!["ArrowUp","ArrowDown"].includes(m.key))return;m.preventDefault(),m.stopPropagation();const v=Number(C.value??0),O=d("minute",v,m.key==="ArrowUp",s.value);C.value=L(O)}function de(m){if(!["ArrowUp","ArrowDown"].includes(m.key))return;m.preventDefault(),m.stopPropagation();const v=Number(j.value??0),O=d("second",v,m.key==="ArrowUp",s.value,p.value);j.value=L(O)}function z(m,v,O){return D=>{if(!D.data)return;const H=D.target,{value:K,selectionStart:oe,selectionEnd:c}=H??{};if(me(D.data)===null){D.preventDefault();return}const y=K?K.slice(0,oe)+D.data+K.slice(c):D.data;if(y.length>2){if(oe===c&&c===0&&D.data.trim().startsWith("0")){D.preventDefault(),H.value=y.trim().substring(0,2),O(H.value),D.data.trim().length===1&&H.setSelectionRange(1,1);return}if(oe===c&&c===1&&K.startsWith("0")){D.preventDefault(),H.value=y.trim().substring(0,2),O(H.value);return}const ie=e.viewMode==="hour"?e.ampm?12:23:59;if(me(y)>ie){D.preventDefault(),H.value=L(String(me(D.data)).substring(0,2)),O(H.value);return}}const T=m(y);v(T)&&D.preventDefault()}}function J(m){i("update:period",m);const v=d("hour",m==="am"?23:11,!0);Ae(()=>N.value=L(v))}const X=_(),Z=_(),Y=_();ae(()=>e.viewMode,(m,v)=>{switch(v){case"hour":X.value.blur();break;case"minute":Z.value.blur();break;case"second":Y.value.blur();break}});const b=z(h.out,m=>h.in(m)===N.value,m=>N.value=m),A=z(S.out,m=>S.in(m)===C.value,m=>C.value=m),W=z(S.out,m=>S.in(m)===j.value,m=>j.value=m);return Ce(()=>g("div",{class:"v-time-picker-controls"},[g("div",{class:ne({"v-time-picker-controls__time":!0,"v-time-picker-controls__time--with-ampm":e.ampm,"v-time-picker-controls__time--with-seconds":e.useSeconds})},[o(Ne,{ref:X,active:e.viewMode==="hour",color:e.color,disabled:e.disabled,label:n("$vuetify.timePicker.hour"),showHint:e.inputHints,error:I.value?void 0:n("$vuetify.timePicker.notAllowed"),modelValue:N.value,"onUpdate:modelValue":m=>N.value=m,onKeydown:$,onBeforeinput:b,onFocus:()=>i("update:viewMode","hour")},null),g("span",{class:"v-time-picker-controls__time__separator"},[f(":")]),o(Ne,{ref:Z,active:e.viewMode==="minute",color:e.color,disabled:e.disabled,label:n("$vuetify.timePicker.minute"),showHint:e.inputHints,error:M.value?void 0:n("$vuetify.timePicker.notAllowed"),modelValue:C.value,"onUpdate:modelValue":m=>C.value=m,onKeydown:le,onBeforeinput:A,onFocus:()=>i("update:viewMode","minute")},null),e.useSeconds&&g("span",{key:"secondsDivider",class:"v-time-picker-controls__time__separator"},[f(":")]),e.useSeconds&&g(ce,null,[o(Ne,{key:"secondsVal",ref:Y,active:e.viewMode==="second",color:e.color,disabled:e.disabled,label:n("$vuetify.timePicker.second"),showHint:e.inputHints,error:k.value?void 0:n("$vuetify.timePicker.notAllowed"),modelValue:j.value,"onUpdate:modelValue":m=>j.value=m,onKeydown:de,onBeforeinput:W,onFocus:()=>i("update:viewMode","second")},null)]),e.ampm&&g("div",{class:"v-time-picker-controls__ampm"},[o(x,{active:e.period==="am",color:e.period==="am"?e.color:void 0,class:ne({"v-time-picker-controls__ampm__am":!0,"v-time-picker-controls__ampm__btn":!0,"v-time-picker-controls__ampm__btn__active":e.period==="am"}),disabled:e.disabled,text:n("$vuetify.timePicker.am"),variant:e.disabled&&e.period==="am"?"elevated":"tonal",onClick:()=>e.period!=="am"?J("am"):null},null),o(x,{active:e.period==="pm",color:e.period==="pm"?e.color:void 0,class:ne({"v-time-picker-controls__ampm__pm":!0,"v-time-picker-controls__ampm__btn":!0,"v-time-picker-controls__ampm__btn__active":e.period==="pm"}),disabled:e.disabled,text:n("$vuetify.timePicker.pm"),variant:e.disabled&&e.period==="pm"?"elevated":"tonal",onClick:()=>e.period!=="pm"?J("pm"):null},null)])])])),{}}}),St=he({disabled:Boolean,format:{type:String,default:"ampm"},viewMode:{type:String,default:"hour"},period:{type:String,default:"am",validator:e=>["am","pm"].includes(e)},modelValue:null,readonly:Boolean,scrollable:Boolean,useSeconds:Boolean,variant:{type:String,default:"dial"},...Ye(),..._e(Ct({title:"$vuetify.timePicker.title"}),["landscape"]),...ut()},"VTimePicker"),Je=we()({name:"VTimePicker",props:St(),emits:{"update:hour":e=>!0,"update:minute":e=>!0,"update:period":e=>!0,"update:second":e=>!0,"update:modelValue":e=>!0,"update:viewMode":e=>!0},setup(e,t){let{emit:i,slots:n}=t;const{t:l}=Ke(),{densityClasses:u}=st(e),a=_(null),d=_(null),s=_(null),p=_(null),I=_(null),M=_(null),k=ge(e,"period","am"),h=ge(e,"viewMode","hour"),N=_(null),S=_(null),C=P(()=>e.format==="ampm"),{isAllowedHour:j,isAllowedMinute:$,isAllowedSecond:le}=We(e),de=at(()=>e.modelValue!==null&&a.value===null&&d.value===null&&(!e.useSeconds||s.value===null));function z(){const b=J();b!==null&&b!==e.modelValue&&i("update:modelValue",b),de.value&&i("update:modelValue",null)}ae(a,z),ae(d,z),ae(s,z),ae(()=>e.modelValue,b=>X(b)),ae(()=>e.useSeconds,(b,A)=>{A&&!b&&h.value==="second"&&(h.value="minute"),!b&&s.value!==null&&(s.value=null)}),tt(()=>{X(e.modelValue)});function J(){return a.value!=null&&d.value!=null&&(!e.useSeconds||s.value!=null)?`${L(a.value)}:${L(d.value)}`+(e.useSeconds?`:${L(s.value)}`:""):null}function X(b){if(b==null||b==="")a.value=null,d.value=null,s.value=null;else if(b instanceof Date)a.value=b.getHours(),d.value=b.getMinutes(),s.value=b.getSeconds();else{const[A,,W,,m,v]=b.trim().toLowerCase().match(/^(\d+):(\d+)(:(\d+))?([ap]m)?$/)||new Array(6);a.value=v?ve(parseInt(A,10),v):parseInt(A,10),d.value=parseInt(W,10),s.value=parseInt(m||0,10)}k.value=a.value==null||a.value<12?"am":"pm"}function Z(b){h.value==="hour"?a.value=C.value?ve(b,k.value):b:h.value==="minute"?d.value=b:s.value=b}function Y(b){switch(h.value||"hour"){case"hour":i("update:hour",b);break;case"minute":i("update:minute",b);break;case"second":i("update:second",b);break}const A=a.value!==null&&d.value!==null&&(e.useSeconds?s.value!==null:!0);h.value==="hour"?h.value="minute":e.useSeconds&&h.value==="minute"&&(h.value="second"),!(a.value===p.value&&d.value===I.value&&(!e.useSeconds||s.value===M.value)||J()===null)&&(p.value=a.value,I.value=d.value,e.useSeconds&&(M.value=s.value),A&&z())}Ce(()=>{const b=_e(Le.filterProps(e),["hideHeader"]),A=ze.filterProps(e),W=je.filterProps(_e(e,["format","modelValue","min","max"])),m=h.value==="hour"?j.value:h.value==="minute"?v=>$.value(a.value,v):v=>le.value(a.value,d.value,v);return o(Le,fe(b,{color:void 0,class:["v-time-picker",`v-time-picker--variant-${e.variant}`,e.class,u.value],hideHeader:e.hideHeader&&e.variant!=="input",style:e.style}),{title:()=>{var v;return((v=n.title)==null?void 0:v.call(n))??g("div",{class:"v-time-picker__title"},[l(e.title)])},header:()=>o(ze,fe(A,{ampm:C.value,hour:a.value,minute:d.value,period:k.value,second:s.value,viewMode:h.value,inputHints:e.variant==="input","onUpdate:hour":v=>a.value=v,"onUpdate:minute":v=>d.value=v,"onUpdate:second":v=>s.value=v,"onUpdate:period":v=>k.value=v,"onUpdate:viewMode":v=>h.value=v,ref:N}),null),default:()=>o(je,fe(W,{allowedValues:m,double:h.value==="hour"&&!C.value,format:h.value==="hour"?C.value?qe:v=>v:v=>L(v,2),max:h.value==="hour"?C.value&&k.value==="am"?11:23:59,min:h.value==="hour"&&C.value&&k.value==="pm"?12:0,size:20,step:h.value==="hour"?1:5,modelValue:h.value==="hour"?a.value:h.value==="minute"?d.value:s.value,onChange:Y,onInput:Z,ref:S}),null),actions:n.actions})})}}),_t={name:"ExamConfigEditor",props:{configId:{type:String,required:!0},dialogMode:{type:Boolean,default:!1}},emits:["saved","error","opened","deleted"],data(){return{localConfig:{examName:"",message:"",room:"",examInfos:[]},loading:!1,saving:!1,deleting:!1,deleteDialog:!1,error:"",success:"",isEditMode:!1,showJsonPreview:!1,availableSubjects:[],customSubjectInput:"",enableCustomAlertTime:!1,defaultExamTips:["请保持卷面整洁,字迹清晰,诚信应考。在听到终考铃时立刻起立,停止作答。","沉着 冷静 细心 守记","答题不守记,自己两行泪。"]}},computed:{formattedJson(){try{return JSON.stringify(this.localConfig,null,2)}catch(e){return console.error("格式化JSON时出错:",e),"无效的JSON格式"}},formattedStorageJson(){try{const e={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(t=>({name:t.name,start:this.formatDisplayDateTime(t.start),end:this.formatDisplayDateTime(t.end),alertTime:parseInt(t.alertTime)||15}))};return JSON.stringify(e,null,2)}catch(e){return console.error("格式化存储JSON时出错:",e),"无效的JSON格式"}},isValidConfig(){return this.localConfig.examName&&this.localConfig.message&&this.localConfig.examInfos&&this.localConfig.examInfos.length>0&&this.localConfig.examInfos.every(e=>e.name&&e.start&&e.end)},validationErrors(){const e=[];if((!this.localConfig.examName||this.localConfig.examName.trim()==="")&&e.push("考试名称不能为空"),(!this.localConfig.message||this.localConfig.message.trim()==="")&&e.push("考试提示不能为空"),!this.localConfig.examInfos||this.localConfig.examInfos.length===0)e.push("至少需要添加一个考试科目");else{this.localConfig.examInfos.forEach((t,i)=>{const n=`第${i+1}个科目`;if((!t.name||t.name.trim()==="")&&e.push(`${n}的名称不能为空`),t.start||e.push(`${n}的开始时间不能为空`),t.end||e.push(`${n}的结束时间不能为空`),t.start&&t.end){const l=new Date(t.start),u=new Date(t.end);isNaN(l.getTime())&&e.push(`${n}的开始时间格式不正确`),isNaN(u.getTime())&&e.push(`${n}的结束时间格式不正确`),!isNaN(l.getTime())&&!isNaN(u.getTime())&&(u<=l&&e.push(`${n}的结束时间必须晚于开始时间`),(u-l)/(1e3*60*60)>24&&e.push(`${n}的考试时长不能超过24小时`))}});for(let t=0;td&&e.push(`第${t+1}个科目与第${i+1}个科目的时间有重叠`)}}}return e},hasValidationErrors(){return this.validationErrors.length>0}},watch:{configId:{immediate:!0,handler(e){e&&this.loadConfig()}}},created(){this.loadSubjects()},methods:{async loadSubjects(){try{const e=await Q.loadData("classworks-config-subject");e&&Array.isArray(e)?this.availableSubjects=e.sort((t,i)=>(t.order??0)-(i.order??0)).map(t=>({name:t.name,order:t.order??0})):this.availableSubjects=[{name:"语文",order:0},{name:"数学",order:1},{name:"英语",order:2},{name:"物理",order:3},{name:"化学",order:4},{name:"生物",order:5},{name:"政治",order:6},{name:"历史",order:7},{name:"地理",order:8}]}catch(e){console.warn("加载科目列表失败,使用默认列表:",e),this.availableSubjects=[{name:"语文",order:0},{name:"数学",order:1},{name:"英语",order:2},{name:"物理",order:3},{name:"化学",order:4},{name:"生物",order:5},{name:"政治",order:6},{name:"历史",order:7},{name:"地理",order:8}]}},autoFillRemaining(){if(this.localConfig.examInfos.length===0)return;let e=null;for(let t=this.localConfig.examInfos.length-1;t>=0;t--)if(this.localConfig.examInfos[t].end){e=new Date(this.localConfig.examInfos[t].end);break}e||(e=new Date);for(let t=0;t12)return`${t}月份不合法(1-12)`;if(I<1||I>31)return`${t}日期不合法(1-31)`;if(M<0||M>23)return`${t}小时不合法(0-23)`;if(k<0||k>59)return`${t}分钟不合法(0-59)`;const h=new Date(s,p-1,I,M,k);return isNaN(h.getTime())?`${t}日期不存在`:h.getMonth()!==p-1||h.getDate()!==I?`${t}日期不存在`:!0},validateEndAfterStart(e){if(!e.startFormatted||!e.endFormatted)return!0;try{const t=new Date(e.start||e.startFormatted.replace(/\//g,"-")),i=new Date(e.end||e.endFormatted.replace(/\//g,"-"));return isNaN(t.getTime())||isNaN(i.getTime())?!0:i<=t?"结束时间必须晚于开始时间":(i.getTime()-t.getTime())/(1e3*60*60)>24?"考试时长不能超过24小时":!0}catch{return!0}},validateNoTimeOverlap(e,t){if(!e.startFormatted||!e.endFormatted)return!0;try{const i=new Date(e.start||e.startFormatted.replace(/\//g,"-")),n=new Date(e.end||e.endFormatted.replace(/\//g,"-"));if(isNaN(i.getTime())||isNaN(n.getTime()))return!0;for(let l=0;l=a&&ia&&n<=d||i<=a&&n>=d)return`时间与"${u.name||`第${l+1}个科目`}"重叠`}return!0}catch{return!0}},toggleAlertTimeMode(){this.enableCustomAlertTime||this.localConfig.examInfos.forEach(e=>{e.alertTime=15})},getExamDuration(e){if(!e.start||!e.end)return"";try{const t=new Date(e.start),i=new Date(e.end);if(isNaN(t.getTime())||isNaN(i.getTime()))return"";const n=i.getTime()-t.getTime(),l=Math.round(n/(1e3*60));if(l<60)return`${l}分钟`;const u=Math.floor(l/60),a=l%60;return a===0?`${u}小时`:`${u}小时${a}分钟`}catch{return""}},updateStartDateTimeFromInput(e){if(e===void 0||!this.localConfig.examInfos[e])return;const t=this.localConfig.examInfos[e],i=t.startFormatted;if(!i)return;const n=i.match(/(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s+(\d{1,2}):(\d{1,2})/);if(!n)return;const[,l,u,a,d,s]=n,p=new Date(parseInt(l),parseInt(u)-1,parseInt(a),parseInt(d),parseInt(s));isNaN(p.getTime())||(t.startDate=p,t.startTime=this.formatTimeOnly(p),t.start=this.formatDateTimeLocal(p),this.updateStartDateTime(e))},updateEndDateTimeFromInput(e){if(e===void 0||!this.localConfig.examInfos[e])return;const t=this.localConfig.examInfos[e],i=t.endFormatted;if(!i)return;const n=i.match(/(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s+(\d{1,2}):(\d{1,2})/);if(!n)return;const[,l,u,a,d,s]=n,p=new Date(parseInt(l),parseInt(u)-1,parseInt(a),parseInt(d),parseInt(s));isNaN(p.getTime())||(t.endDate=p,t.endTime=this.formatTimeOnly(p),t.end=this.formatDateTimeLocal(p),this.updateEndDateTime(e))},async loadConfig(){var e;this.loading=!0,this.error="";try{const t=await Q.loadData(`es_${this.configId}`);if(t){this.localConfig={examName:"",message:"",room:"",examInfos:[],...t},Array.isArray(this.localConfig.examInfos)||(this.localConfig.examInfos=[]),this.localConfig.examInfos.forEach(n=>{if(n.start){const l=this.parseDateTime(n.start);n.start=this.formatDateTimeLocal(l),n.startDate=l,n.startTime=this.formatTimeOnly(l),n.startFormatted=this.formatDisplayDateTime(l),n.startDateMenu=!1}if(n.end){const l=this.parseDateTime(n.end);n.end=this.formatDateTimeLocal(l),n.endDate=l,n.endTime=this.formatTimeOnly(l),n.endFormatted=this.formatDisplayDateTime(l),n.endDateMenu=!1}try{if(n.start&&n.end){const l=new Date(n.start),u=new Date(n.end),a=Math.round((u.getTime()-l.getTime())/(1e3*60));a>0&&a<=24*60?n.durationMinutes=a:n.durationMinutes=120}else n.durationMinutes=120}catch{n.durationMinutes=120}n.alertTime===void 0||n.alertTime===null?n.alertTime=15:n.alertTime=parseInt(n.alertTime)||15});const i=this.localConfig.examInfos.some(n=>n.alertTime!==15);this.enableCustomAlertTime=i}else console.error("加载配置失败:",t),this.error="加载配置失败: "+(((e=t.error)==null?void 0:e.message)||"未知错误"),this.$emit("error",this.error)}catch(t){console.error(t),this.error="加载配置失败: "+t.message,this.$emit("error",this.error)}finally{this.loading=!1}},async saveConfig(){var e;if(!this.isValidConfig){const t=this.validationErrors;return t.length>0?this.error=`配置验证失败:${t.join(";")}`:this.error="请填写完整的配置信息",!1}this.saving=!0,this.error="";try{const t={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(n=>({name:n.name,start:this.formatDisplayDateTime(n.start),end:this.formatDisplayDateTime(n.end),alertTime:parseInt(n.alertTime)||15}))},i=await Q.saveData(`es_${this.configId}`,t);return i?(this.success="配置保存成功",this.$emit("saved",t),!0):(this.error="保存配置失败: "+(((e=i.error)==null?void 0:e.message)||"未知错误"),this.$emit("error",this.error),!1)}catch(t){return this.error="保存配置失败: "+t,this.$emit("error",this.error),!1}finally{this.saving=!1}},addExamInfo(){let e=new Date;if(this.localConfig.examInfos.length>0){const l=this.localConfig.examInfos[this.localConfig.examInfos.length-1];l.end&&(e=new Date(l.end))}const t=new Date(e.getTime()+10*60*1e3),i=new Date(t.getTime()+2*60*60*1e3),n={name:"",start:this.formatDateTimeLocal(t),end:this.formatDateTimeLocal(i),durationMinutes:120,alertTime:15,startDate:t,startTime:this.formatTimeOnly(t),startFormatted:this.formatDisplayDateTime(t),startDateMenu:!1,endDate:i,endTime:this.formatTimeOnly(i),endFormatted:this.formatDisplayDateTime(i),endDateMenu:!1};this.localConfig.examInfos.push(n)},removeExamInfo(e){this.localConfig.examInfos.splice(e,1)},moveExamInfo(e,t){const i=e+t;if(i>=0&&i24*60&&(i=24*60),t.durationMinutes=i,(!t.startDate||!t.startTime)&&t.start){const n=new Date(t.start);isNaN(n.getTime())||(t.startDate=n,t.startTime=this.formatTimeOnly(n))}if(t.startDate&&t.startTime){const n=new Date(t.startDate),[l,u]=String(t.startTime).split(":");n.setHours(parseInt(l),parseInt(u),0,0);const a=new Date(n.getTime()+i*60*1e3);t.endDate=a,t.endTime=this.formatTimeOnly(a),t.end=this.formatDateTimeLocal(a),t.endFormatted=this.formatDisplayDateTime(a)}},formatDateTimeLocal(e){if(!e)return"";let t;if(typeof e=="string"?e.includes("/")?t=new Date(e.replace(/\//g,"-")):t=new Date(e):t=new Date(e),isNaN(t.getTime()))return"";const i=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),u=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${i}-${n}-${l}T${u}:${a}`},formatDisplayDateTime(e){if(!e)return"";const t=new Date(e);if(isNaN(t.getTime()))return e;const i=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),u=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${i}/${n}/${l} ${u}:${a}`},parseDateTime(e){return e?typeof e=="string"?e.includes("/")?new Date(e.replace(/\//g,"-")):new Date(e):new Date(e):new Date},formatTimeOnly(e){if(!e)return"00:00";const t=new Date(e);if(isNaN(t.getTime()))return"00:00";const i=String(t.getHours()).padStart(2,"0"),n=String(t.getMinutes()).padStart(2,"0");return`${i}:${n}`},updateStartDateTime(e){const t=this.localConfig.examInfos[e];if(!t.startDate||!t.startTime)return;const i=new Date(t.startDate),[n,l]=t.startTime.split(":");i.setHours(parseInt(n),parseInt(l),0,0),t.start=this.formatDateTimeLocal(i),t.startFormatted=this.formatDisplayDateTime(i);let u=parseInt(t.durationMinutes);if(isNaN(u)||u<=0||u>24*60)try{let d=null;if(t.endDate&&t.endTime){d=new Date(t.endDate);const[s,p]=String(t.endTime).split(":");d.setHours(parseInt(s),parseInt(p),0,0)}else t.end&&(d=new Date(t.end));if(d&&!isNaN(d.getTime())){const s=Math.round((d.getTime()-i.getTime())/6e4);s>0&&s<=24*60&&(u=s)}}catch{}(isNaN(u)||u<=0||u>24*60)&&(u=120);const a=new Date(i.getTime()+u*60*1e3);t.endDate=a,t.endTime=this.formatTimeOnly(a),t.end=this.formatDateTimeLocal(a),t.endFormatted=this.formatDisplayDateTime(a),t.durationMinutes=u},updateEndDateTime(e){const t=this.localConfig.examInfos[e];if(!t.endDate||!t.endTime)return;const i=new Date(t.endDate),[n,l]=t.endTime.split(":");i.setHours(parseInt(n),parseInt(l),0,0),t.end=this.formatDateTimeLocal(i),t.endFormatted=this.formatDisplayDateTime(i);try{if(t.startDate&&t.startTime){const u=new Date(t.startDate),[a,d]=String(t.startTime).split(":");u.setHours(parseInt(a),parseInt(d),0,0);const s=Math.round((i.getTime()-u.getTime())/(1e3*60));s>0&&s<=24*60&&(t.durationMinutes=s)}}catch{}},async openConfig(){try{const e=await Q.getKeyCloudUrl(`es_${this.configId}`,{autoMigrate:!0,autoConfig:!0});if(e.success&&e.url){const t=`https://es.examaware.cn/exam/?configUrl=${encodeURIComponent(e.url)}`;window.open(t,"_blank"),this.success="配置已在新窗口中打开",this.$emit("opened",{configId:this.configId,url:e.url})}else throw new Error(e.error||"获取云端地址失败")}catch(e){this.error="打开配置失败: "+e.message,this.$emit("error","打开配置失败: "+e.message)}},confirmDelete(){this.deleteDialog=!0},async deleteConfig(){this.deleting=!0;try{const i=(await Q.loadData("es_list")||[]).filter(l=>l.id!==this.configId);if(!await Q.saveData("es_list",i))throw new Error("更新云端列表失败");this.deleteDialog=!1,this.$emit("deleted",{success:!0,message:"配置删除成功",configId:this.configId})}catch(e){console.error("删除配置失败:",e),this.$emit("deleted",{success:!1,message:"删除失败: "+e.message})}finally{this.deleting=!1}},openInEa2Player(){var e;try{const t={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(u=>({name:u.name,start:this.formatDisplayDateTime(u.start),end:this.formatDisplayDateTime(u.end),alertTime:parseInt(u.alertTime)||15}))},i=JSON.stringify(t),n=btoa(unescape(encodeURIComponent(i))),l=`examaware://player?data=${encodeURIComponent(n)}`;window.location.href=l,(e=this.$message)==null||e.success("正在拉起 ExamAware2 播放器...")}catch(t){this.error="拉起播放器失败: "+t.message}}}},It={class:"d-flex align-center"},Mt={class:"d-flex align-center"},Et={key:4,class:"d-flex justify-space-between align-center mb-4"},Pt={class:"d-flex align-center gap-2"},Ut={key:5},Ft={class:"mb-8"},At={class:"text-h3 font-weight-bold",style:{"line-height":"1.2"}},Ht={class:"text-subtitle-1 text-grey",style:{"white-space":"pre-wrap","line-height":"1.8"}},Bt={key:0,class:"mb-8"},Lt={class:"d-flex align-center"},Ot={class:""},Rt={class:"mb-3"},jt={class:"d-flex align-center mb-1"},zt={class:"text-h6 font-weight-medium text-success"},Jt={class:"d-flex align-center mb-1"},$t={class:"text-h6 font-weight-medium text-error"},Kt={key:1,class:"text-center py-12"},qt={class:"json-preview"},Yt={key:6},Wt={class:"text-subtitle-2 font-weight-bold d-block mb-2"},Gt={key:0,class:"mt-3"},Xt={class:"text-caption text-medium-emphasis mt-2 ml-2"},Zt={class:"d-flex align-center mr-4"},Qt={class:"w-100"},ea={class:"d-flex align-center mb-3"},ta={class:"d-flex gap-1"},aa={class:"text-primary font-weight-bold"},na={key:1,class:"text-center py-12"};function la(e,t,i,n,l,u){return w(),R("div",null,[l.error?(w(),E(Ve,{key:0,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"error",variant:"tonal","onClick:close":t[0]||(t[0]=a=>l.error="")},{default:r(()=>[g("div",It,[o(V,{class:"mr-2"},{default:r(()=>[...t[10]||(t[10]=[f("mdi-alert-circle",-1)])]),_:1}),f(" "+U(l.error),1)])]),_:1})):F("",!0),l.success?(w(),E(Ve,{key:1,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"success",variant:"tonal","onClick:close":t[1]||(t[1]=a=>l.success="")},{default:r(()=>[g("div",Mt,[o(V,{class:"mr-2"},{default:r(()=>[...t[11]||(t[11]=[f("mdi-check-circle",-1)])]),_:1}),f(" "+U(l.success),1)])]),_:1})):F("",!0),u.hasValidationErrors&&!l.loading?(w(),E(Ve,{key:2,border:"start",class:"mb-4 mt-3 mx-2",type:"warning",variant:"tonal"},{default:r(()=>[t[13]||(t[13]=g("div",{class:"d-flex align-center"},[g("span",{class:"font-weight-bold"},"配置验证失败,请检查以下问题:")],-1)),o(He,{class:"bg-transparent",density:"compact"},{default:r(()=>[(w(!0),R(ce,null,ye(u.validationErrors,(a,d)=>(w(),E(ke,{key:d,class:"px-0 py-0"},{prepend:r(()=>[o(V,{color:"warning",size:"small"},{default:r(()=>[...t[12]||(t[12]=[f("mdi-circle-small",-1)])]),_:1})]),default:r(()=>[o(mt,{class:"text-body-2"},{default:r(()=>[f(U(a),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):F("",!0),l.loading?(w(),E(q,{key:3,class:"my-4",outlined:""},{default:r(()=>[o(G,null,{default:r(()=>[o(ht,{class:"mx-auto",type:"article"})]),_:1})]),_:1})):F("",!0),l.loading?F("",!0):(w(),R("div",Et,[g("div",Pt,[o(x,{disabled:!u.isValidConfig,class:"text-none",color:"success","prepend-icon":"mdi-open-in-new",variant:"elevated",onClick:u.openConfig},{default:r(()=>[...t[14]||(t[14]=[f(" 打开 ExamSchedule ",-1)])]),_:1},8,["disabled","onClick"]),o(x,{disabled:!u.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-link-variant",variant:"elevated",onClick:u.copyConfigUrl},{default:r(()=>[...t[15]||(t[15]=[f(" 复制远程链接 ",-1)])]),_:1},8,["disabled","onClick"]),o(x,{disabled:!u.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-download",variant:"elevated",onClick:u.downloadAsJson},{default:r(()=>[...t[16]||(t[16]=[f(" JSON 文件 ",-1)])]),_:1},8,["disabled","onClick"]),o(x,{disabled:!u.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-download",variant:"elevated",onClick:u.downloadAsEa2},{default:r(()=>[...t[17]||(t[17]=[f(" .ea2 文件 ",-1)])]),_:1},8,["disabled","onClick"]),o(x,{disabled:!u.isValidConfig,class:"text-none",color:"secondary","prepend-icon":"mdi-play-circle",variant:"elevated",onClick:u.openInEa2Player},{default:r(()=>[...t[18]||(t[18]=[f(" 拉起EA2播放器 ",-1)])]),_:1},8,["disabled","onClick"]),u.isValidConfig?F("",!0):(w(),E(be,{key:0,activator:"parent",location:"bottom"},{default:r(()=>[...t[19]||(t[19]=[g("span",null,"请先完善配置信息后再操作",-1)])]),_:1}))]),o(ct,{modelValue:l.isEditMode,"onUpdate:modelValue":t[2]||(t[2]=a=>l.isEditMode=a),color:"primary",divided:"",variant:"outlined"},{default:r(()=>[o(x,{class:"text-error","prepend-icon":"mdi-delete",onClick:u.confirmDelete},{default:r(()=>[...t[20]||(t[20]=[f(" 删除配置 ",-1)])]),_:1},8,["onClick"]),o(x,{value:!1,"prepend-icon":"mdi-eye"},{default:r(()=>[...t[21]||(t[21]=[f(" 预览",-1)])]),_:1}),o(x,{value:!0,"prepend-icon":"mdi-pencil"},{default:r(()=>[...t[22]||(t[22]=[f(" 编辑",-1)])]),_:1})]),_:1},8,["modelValue"])])),!l.loading&&!l.isEditMode?(w(),R("div",Ut,[g("div",Ft,[g("div",At,U(l.localConfig.examName||"未设置考试名称"),1),g("div",Ht,U(l.localConfig.message||"未设置考试提示"),1),l.localConfig.room?(w(),E(xe,{key:0,class:"px-4 py-2",size:"large"},{default:r(()=>[o(V,{start:""},{default:r(()=>[...t[23]||(t[23]=[f("mdi-home",-1)])]),_:1}),f(" 考场:"+U(l.localConfig.room),1)]),_:1})):F("",!0)]),l.localConfig.examInfos&&l.localConfig.examInfos.length>0?(w(),R("div",Bt,[o(ue,null,{default:r(()=>[(w(!0),R(ce,null,ye(l.localConfig.examInfos,(a,d)=>(w(),E(B,{key:d,cols:"12",lg:"4",md:"6"},{default:r(()=>[o(q,{class:"h-100",hover:"",variant:"tonal"},{default:r(()=>[o(ee,{class:"bg-primary-lighten-5 pa-4"},{default:r(()=>[g("div",Lt,[o(V,{class:"mr-2"},{default:r(()=>[...t[24]||(t[24]=[f("mdi-book-open-page-variant",-1)])]),_:1}),g("span",Ot,U(a.name||"未设置科目"),1)])]),_:2},1024),o(G,{class:"pa-4"},{default:r(()=>[g("div",Rt,[g("div",jt,[o(V,{class:"mr-2",color:"success",size:"small"},{default:r(()=>[...t[25]||(t[25]=[f("mdi-clock-start ",-1)])]),_:1}),t[26]||(t[26]=g("span",{class:"text-body-2 text-grey-darken-1"},"开始时间",-1))]),g("div",zt,U(a.startFormatted||a.start||"未设置"),1)]),g("div",null,[g("div",Jt,[o(V,{class:"mr-2",color:"error",size:"small"},{default:r(()=>[...t[27]||(t[27]=[f("mdi-clock-end ",-1)])]),_:1}),t[28]||(t[28]=g("span",{class:"text-body-2 text-grey-darken-1"},"结束时间",-1))]),g("div",$t,U(a.endFormatted||a.end||"未设置"),1)])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):(w(),R("div",Kt,[o(V,{class:"mb-4",color:"grey-lighten-2",size:"80"},{default:r(()=>[...t[29]||(t[29]=[f(" mdi-calendar-blank ",-1)])]),_:1}),t[32]||(t[32]=g("div",{class:"text-h5 text-grey-darken-1 mb-2"},"暂无考试科目安排",-1)),t[33]||(t[33]=g("div",{class:"text-body-1 text-grey mb-4"},' 点击上方"添加科目"按钮开始配置考试时间表 ',-1)),o(x,{color:"primary",variant:"outlined",onClick:u.quickEdit},{default:r(()=>[o(V,{start:""},{default:r(()=>[...t[30]||(t[30]=[f("mdi-plus",-1)])]),_:1}),t[31]||(t[31]=f(" 立即添加 ",-1))]),_:1},8,["onClick"])])),o(q,{border:"",class:"mb-4",elevation:"2"},{default:r(()=>[o(ee,{class:"d-flex align-center text-white cursor-pointer",onClick:t[3]||(t[3]=a=>l.showJsonPreview=!l.showJsonPreview)},{default:r(()=>[o(V,{class:"mr-2"},{default:r(()=>[...t[34]||(t[34]=[f("mdi-code-json",-1)])]),_:1}),t[36]||(t[36]=f(" 配置预览 ",-1)),o(se),o(x,{color:"white","prepend-icon":"mdi-content-copy",size:"small",variant:"outlined",onClick:nt(u.copyToClipboard,["stop"])},{default:r(()=>[...t[35]||(t[35]=[f(" 复制 ",-1)])]),_:1},8,["onClick"]),o(x,{icon:l.showJsonPreview?"mdi-chevron-up":"mdi-chevron-down",class:"ml-2",color:"white",size:"small",variant:"text"},null,8,["icon"])]),_:1}),o(ft,null,{default:r(()=>[lt(o(G,{class:"pa-4"},{default:r(()=>[o(q,{class:"pa-4",variant:"tonal"},{default:r(()=>[g("pre",qt,[g("code",null,U(u.formattedStorageJson),1)])]),_:1})]),_:1},512),[[ot,l.showJsonPreview]])]),_:1})]),_:1})])):F("",!0),!l.loading&&l.isEditMode?(w(),R("div",Yt,[o(q,{border:"",class:"mb-4",elevation:"1"},{default:r(()=>[o(ee,{class:"d-flex align-center bg-primary-lighten-5 pa-4"},{default:r(()=>[o(V,{class:"mr-2"},{default:r(()=>[...t[37]||(t[37]=[f("mdi-information",-1)])]),_:1}),t[38]||(t[38]=g("span",{class:"font-weight-bold"},"基本信息",-1))]),_:1}),o(G,{class:"pa-6"},{default:r(()=>[o(ue,null,{default:r(()=>[o(B,{cols:"12",md:"6"},{default:r(()=>[o(te,{modelValue:l.localConfig.examName,"onUpdate:modelValue":t[4]||(t[4]=a=>l.localConfig.examName=a),rules:[a=>!!a||"考试名称不能为空",a=>a&&a.trim().length>0||"考试名称不能为空白字符",a=>!a||a.length<=100||"考试名称不能超过100个字符"],clearable:"",density:"comfortable",label:"考试名称",placeholder:"如:2025年高考模拟考试","prepend-inner-icon":"mdi-calendar-text",required:"",variant:"outlined"},null,8,["modelValue","rules"])]),_:1}),o(B,{cols:"12",md:"6"},{default:r(()=>[o(te,{modelValue:l.localConfig.room,"onUpdate:modelValue":t[5]||(t[5]=a=>l.localConfig.room=a),clearable:"",density:"comfortable",label:"考场号(仅 ExamSchedule-Management 支持此配置)",placeholder:"如:一号考场","prepend-inner-icon":"mdi-home",variant:"outlined"},null,8,["modelValue"])]),_:1})]),_:1}),o(ue,null,{default:r(()=>[o(B,{cols:"12"},{default:r(()=>[g("span",Wt,[o(V,{size:"small",class:"mr-1"},{default:r(()=>[...t[39]||(t[39]=[f("mdi-message-text",-1)])]),_:1}),t[40]||(t[40]=f(" 考试提示 ",-1))]),o(yt,{modelValue:l.localConfig.message,"onUpdate:modelValue":t[6]||(t[6]=a=>l.localConfig.message=a),rules:[a=>!!a||"考试提示不能为空",a=>a&&a.trim().length>0||"考试提示不能为空白字符"],clearable:"",density:"comfortable",label:"输入考试相关的提示信息...","no-resize":"",placeholder:"例如:请保持卷面整洁,诚信应考。在听到终考铃时立刻停止作答。",rows:"3",variant:"outlined"},null,8,["modelValue","rules"]),!l.localConfig.message||l.localConfig.message.trim()===""?(w(),R("div",Gt,[o(pt,{class:"d-flex gap-2",column:""},{default:r(()=>[(w(!0),R(ce,null,ye(l.defaultExamTips,(a,d)=>(w(),E(xe,{key:d,class:"cursor-pointer",color:"primary",size:"small",variant:"outlined",onClick:s=>u.selectDefaultTip(a)},{default:r(()=>[o(V,{size:"small",start:""},{default:r(()=>[...t[41]||(t[41]=[f("mdi-plus",-1)])]),_:1}),f(" "+U(a.substring(0,20))+"... ",1)]),_:2},1032,["onClick"]))),128))]),_:1}),g("div",Xt,[o(V,{class:"mr-1",size:"x-small"},{default:r(()=>[...t[42]||(t[42]=[f("mdi-lightbulb-outline",-1)])]),_:1}),t[43]||(t[43]=f(" 点击上方选项快速添加常用考试提示 ",-1))])])):F("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),o(q,{border:"",class:"mb-4",elevation:"1"},{default:r(()=>[o(ee,{class:"d-flex align-center bg-success-lighten-5 pa-4"},{default:r(()=>[o(V,{class:"mr-2"},{default:r(()=>[...t[44]||(t[44]=[f("mdi-format-list-bulleted",-1)])]),_:1}),t[47]||(t[47]=g("span",{class:"font-weight-bold"},"考试科目安排",-1)),o(se),g("div",Zt,[o(bt,{modelValue:l.enableCustomAlertTime,"onUpdate:modelValue":t[7]||(t[7]=a=>l.enableCustomAlertTime=a),color:"primary",density:"compact","hide-details":"",onChange:u.toggleAlertTimeMode},{label:r(()=>[...t[45]||(t[45]=[g("span",{class:"text-body-2"},"自定义提醒时间",-1)])]),_:1},8,["modelValue","onChange"])]),o(x,{color:"success","prepend-icon":"mdi-plus",size:"small",variant:"elevated",onClick:u.addExamInfo},{default:r(()=>[...t[46]||(t[46]=[f(" 添加科目 ",-1)])]),_:1},8,["onClick"])]),_:1}),o(G,{class:"pa-0"},{default:r(()=>[l.localConfig.examInfos&&l.localConfig.examInfos.length>0?(w(),E(He,{key:0,class:"py-0"},{default:r(()=>[(w(!0),R(ce,null,ye(l.localConfig.examInfos,(a,d)=>(w(),E(ke,{key:d,class:"border-b pa-4 hover-highlight"},{default:r(()=>[g("div",Qt,[g("div",ea,[o(xe,{color:d%2===0?"primary":"secondary",size:"small",variant:"tonal",class:"mr-3"},{default:r(()=>[o(V,{start:"",size:"small"},{default:r(()=>[f("mdi-numeric-"+U(d+1)+"-circle",1)]),_:2},1024),f(" 第 "+U(d+1)+" 科目 ",1)]),_:2},1032,["color"]),o(se),g("div",ta,[d>0?(w(),E(x,{key:0,color:"primary",icon:"mdi-arrow-up",size:"x-small",variant:"text",onClick:s=>u.moveExamInfo(d,-1)},{default:r(()=>[o(be,{activator:"parent",location:"bottom"},{default:r(()=>[...t[48]||(t[48]=[f("上移",-1)])]),_:1})]),_:1},8,["onClick"])):F("",!0),du.moveExamInfo(d,1)},{default:r(()=>[o(be,{activator:"parent",location:"bottom"},{default:r(()=>[...t[49]||(t[49]=[f("下移",-1)])]),_:1})]),_:1},8,["onClick"])):F("",!0),o(x,{color:"error",icon:"mdi-delete",size:"x-small",variant:"text",onClick:s=>u.removeExamInfo(d)},{default:r(()=>[o(be,{activator:"parent",location:"bottom"},{default:r(()=>[...t[50]||(t[50]=[f("删除",-1)])]),_:1})]),_:1},8,["onClick"])])]),o(ue,{class:"align-start"},{default:r(()=>[o(B,{cols:"12",md:"4"},{default:r(()=>[o(wt,{modelValue:a.name,"onUpdate:modelValue":s=>a.name=s,items:l.availableSubjects,rules:[s=>!!s||"科目名称不能为空",s=>s&&s.trim().length>0||"科目名称不能为空白字符"],clearable:"",density:"comfortable","item-title":"name",label:"科目名称","no-data-text":"没有可用科目,请输入自定义名称","prepend-inner-icon":"mdi-book",variant:"outlined"},{"prepend-item":r(()=>[l.customSubjectInput?(w(),E(ke,{key:0,title:"自定义:"},{append:r(()=>[g("span",aa,U(l.customSubjectInput),1)]),_:1})):F("",!0),l.customSubjectInput?(w(),E(gt,{key:1})):F("",!0)]),_:1},8,["modelValue","onUpdate:modelValue","items","rules"])]),_:2},1024),o(B,{cols:"12",md:"3"},{default:r(()=>[o(Be,{modelValue:a.startDateMenu,"onUpdate:modelValue":s=>a.startDateMenu=s,"close-on-content-click":!1,"min-width":"auto","offset-y":"",transition:"scale-transition"},{activator:r(({props:s})=>[o(te,fe({modelValue:a.startFormatted,"onUpdate:modelValue":p=>a.startFormatted=p,rules:[p=>!!p||"开始时间不能为空",p=>u.validateTimeFormat(p,"开始时间"),()=>u.validateNoTimeOverlap(a,d)],density:"comfortable",label:"开始时间",placeholder:"2025/01/01 09:00","prepend-inner-icon":"mdi-clock-start"},{ref_for:!0},s,{variant:"outlined",onBlur:p=>u.updateStartDateTimeFromInput(d)}),{append:r(()=>[o(V,null,{default:r(()=>[...t[51]||(t[51]=[f("mdi-calendar-clock",-1)])]),_:1})]),_:1},16,["modelValue","onUpdate:modelValue","rules","onBlur"])]),default:r(()=>[o(q,{"min-width":"500"},{default:r(()=>[o(ee,{class:"text-center py-3 bg-primary-lighten-5"},{default:r(()=>[o(V,{class:"mr-2",color:"primary"},{default:r(()=>[...t[52]||(t[52]=[f("mdi-clock-start",-1)])]),_:1}),t[53]||(t[53]=f(" 选择开始时间 ",-1))]),_:1}),o(G,{class:"pa-0"},{default:r(()=>[o(ue,{"no-gutters":""},{default:r(()=>[o(B,{class:"border-e",cols:"6"},{default:r(()=>[o(Oe,{modelValue:a.startDate,"onUpdate:modelValue":[s=>a.startDate=s,s=>u.updateStartDateTime(d)],color:"primary",elevation:"0",locale:"zh-cn","show-adjacent-months":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(B,{cols:"6"},{default:r(()=>[o(Je,{modelValue:a.startTime,"onUpdate:modelValue":[s=>a.startTime=s,s=>u.updateStartDateTime(d)],color:"primary",elevation:"0",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),o(Te,null,{default:r(()=>[o(se),o(x,{color:"grey",variant:"text",onClick:s=>a.startDateMenu=!1},{default:r(()=>[...t[54]||(t[54]=[f(" 关闭 ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(B,{cols:"12",md:"3"},{default:r(()=>[o(Be,{modelValue:a.endDateMenu,"onUpdate:modelValue":s=>a.endDateMenu=s,"close-on-content-click":!1,"min-width":"auto","offset-y":"",transition:"scale-transition"},{activator:r(({props:s})=>[o(te,fe({modelValue:a.endFormatted,"onUpdate:modelValue":p=>a.endFormatted=p,rules:[p=>!!p||"结束时间不能为空",p=>u.validateTimeFormat(p,"结束时间"),()=>u.validateEndAfterStart(a),()=>u.validateNoTimeOverlap(a,d)],density:"comfortable",label:"结束时间",placeholder:"2025/01/01 11:00","prepend-inner-icon":"mdi-clock-end"},{ref_for:!0},s,{variant:"outlined",onBlur:p=>u.updateEndDateTimeFromInput(d)}),{append:r(()=>[o(V,null,{default:r(()=>[...t[55]||(t[55]=[f("mdi-calendar-clock",-1)])]),_:1})]),_:1},16,["modelValue","onUpdate:modelValue","rules","onBlur"])]),default:r(()=>[o(q,{"min-width":"500"},{default:r(()=>[o(ee,{class:"text-center py-3 bg-error-lighten-5"},{default:r(()=>[o(V,{class:"mr-2",color:"error"},{default:r(()=>[...t[56]||(t[56]=[f("mdi-clock-end",-1)])]),_:1}),t[57]||(t[57]=f(" 选择结束时间 ",-1))]),_:1}),o(G,{class:"pa-0"},{default:r(()=>[o(ue,{"no-gutters":""},{default:r(()=>[o(B,{class:"border-e",cols:"6"},{default:r(()=>[o(Oe,{modelValue:a.endDate,"onUpdate:modelValue":[s=>a.endDate=s,s=>u.updateEndDateTime(d)],color:"error",elevation:"0",locale:"zh-cn","show-adjacent-months":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(B,{cols:"6"},{default:r(()=>[o(Je,{modelValue:a.endTime,"onUpdate:modelValue":[s=>a.endTime=s,s=>u.updateEndDateTime(d)],color:"error",elevation:"0",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),o(Te,null,{default:r(()=>[o(se),o(x,{color:"grey",variant:"text",onClick:s=>a.endDateMenu=!1},{default:r(()=>[...t[58]||(t[58]=[f(" 关闭 ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(B,{cols:"12",md:"2"},{default:r(()=>[o(te,{modelValue:a.durationMinutes,"onUpdate:modelValue":s=>a.durationMinutes=s,rules:[s=>!!s||"时长不能为空",s=>!isNaN(s)||"时长必须是数字",s=>parseInt(s)>0||"时长必须大于0",s=>parseInt(s)<=1440||"时长不能超过1440分钟(24小时)"],type:"number",min:"1",max:"1440",density:"comfortable",label:"时长(分钟)",placeholder:"例如:120","prepend-inner-icon":"mdi-timer",variant:"outlined",hint:u.durationHint(a),"persistent-hint":"",onBlur:s=>u.updateDurationFromInput(d)},null,8,["modelValue","onUpdate:modelValue","rules","hint","onBlur"])]),_:2},1024),l.enableCustomAlertTime?(w(),E(B,{key:0,cols:"12",md:"2"},{default:r(()=>[o(te,{modelValue:a.alertTime,"onUpdate:modelValue":s=>a.alertTime=s,rules:[s=>!!s||"提醒时间不能为空",s=>!isNaN(s)||"提醒时间必须是数字",s=>parseInt(s)>=0||"提醒时间不能为负数",s=>parseInt(s)<=120||"提醒时间不能超过120分钟"],type:"number",min:"0",max:"120",density:"comfortable",label:"提醒时间(分钟)",placeholder:"例如:15","prepend-inner-icon":"mdi-bell-ring",variant:"outlined",hint:"考试结束前提醒","persistent-hint":""},null,8,["modelValue","onUpdate:modelValue","rules"])]),_:2},1024)):F("",!0)]),_:2},1024)])]),_:2},1024))),128))]),_:1})):(w(),R("div",na,[o(V,{class:"mb-4",color:"grey-lighten-2",size:"80"},{default:r(()=>[...t[59]||(t[59]=[f(" mdi-calendar-blank ",-1)])]),_:1}),t[61]||(t[61]=g("div",{class:"text-h5 text-grey-darken-1 mb-2"},"暂无考试科目安排",-1)),t[62]||(t[62]=g("div",{class:"text-body-1 text-grey mb-4"},' 点击上方"添加科目"按钮开始配置 ',-1)),o(x,{color:"success","prepend-icon":"mdi-plus",size:"large",variant:"elevated",onClick:u.addExamInfo},{default:r(()=>[...t[60]||(t[60]=[f(" 立即添加科目 ",-1)])]),_:1},8,["onClick"])]))]),_:1})]),_:1})])):F("",!0),o(vt,{modelValue:l.deleteDialog,"onUpdate:modelValue":t[9]||(t[9]=a=>l.deleteDialog=a),"max-width":"400"},{default:r(()=>[o(q,null,{default:r(()=>[o(ee,{class:"d-flex align-center"},{default:r(()=>[o(V,{class:"mr-2",color:"error"},{default:r(()=>[...t[63]||(t[63]=[f("mdi-delete-alert",-1)])]),_:1}),t[64]||(t[64]=f(" 确认删除配置 ",-1))]),_:1}),o(G,null,{default:r(()=>[t[65]||(t[65]=f(" 确定要删除配置 ",-1)),g("strong",null,U(l.localConfig.examName||`配置 ${i.configId}`),1),t[66]||(t[66]=f(" 吗? ",-1)),t[67]||(t[67]=g("br",null,null,-1)),t[68]||(t[68]=g("small",{class:"text-grey"},"此操作不可撤销,将会删除所有相关数据",-1))]),_:1}),o(Te,null,{default:r(()=>[o(se),o(x,{color:"grey",variant:"text",onClick:t[8]||(t[8]=a=>l.deleteDialog=!1)},{default:r(()=>[...t[69]||(t[69]=[f(" 取消 ",-1)])]),_:1}),o(x,{loading:l.deleting,color:"error",variant:"outlined",onClick:u.deleteConfig},{default:r(()=>[...t[70]||(t[70]=[f(" 删除 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}const xa=dt(_t,[["render",la],["__scopeId","data-v-415c7c7f"]]);export{xa as default}; diff --git a/assets/ExamConfigEditor-wXpc4eEz.js b/assets/ExamConfigEditor-wXpc4eEz.js new file mode 100644 index 0000000..7daf7bd --- /dev/null +++ b/assets/ExamConfigEditor-wXpc4eEz.js @@ -0,0 +1,2 @@ +import{d as Q}from"./dataProvider-bUkzKSNt.js";import{o as ae,q as Qe,k as g,N as Se,n as ne,b as _,e as P,j as o,s as et,a1 as f,F as ce,I as Ae,D as tt,m as fe,t as at,X as w,_ as R,Y as E,Z as r,S as F,$ as U,a2 as ye,a8 as nt,R as lt,V as ot}from"./vendor-vue-B2vxubPy.js";import{G as $e,H as it,D as rt,i as x,J as st,L as ut,_ as dt,f as V,l as He,n as ke,o as mt,d as G,e as q,F as ct,c as ee,r as se,W as ft,v as gt,q as Te,k as vt}from"./index-CFUCTEXJ.js";import{V as Ve}from"./VAlert-DO0N7oM6.js";import{V as ht}from"./VSkeletonLoader-AysIn-20.js";import{V as be}from"./VTooltip-CbK3h4lM.js";import{V as xe,a as pt}from"./VChip-DR8Ljy6R.js";import{a as B,V as ue}from"./VRow-Dw4j2TKL.js";import{V as te}from"./VTextField-ByBRYn99.js";import{V as yt}from"./VTextarea-BxmmuONa.js";import{V as bt}from"./VSwitch-DKh_Uq_M.js";import{V as wt}from"./VAutocomplete-CrWVUMTj.js";import{V as Be}from"./VSheet-B8D7XEg5.js";import{a as Le,m as Ct,V as Oe}from"./VDatePicker-BWfVQdXc.js";import{f as we,u as Ce,p as he,aM as Dt,an as Ke,n as ge,z as Re,a5 as _e}from"./vendor-vuetify-s-yw_Hr8.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-CdH9Xda8.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";import"./VSelect-Fp4MUhJW.js";import"./VCheckboxBtn-DOw5vjpY.js";import"./VBadge-C7i5WU2T.js";const kt=he({allowedValues:Function,ampm:Boolean,color:String,disabled:Boolean,displayedValue:null,double:Boolean,format:{type:Function,default:e=>e},max:{type:Number,required:!0},min:{type:Number,required:!0},scrollable:Boolean,readonly:Boolean,rotate:{type:Number,default:0},step:{type:Number,default:1},modelValue:{type:Number}},"VTimePickerClock"),je=we()({name:"VTimePickerClock",props:kt(),emits:{change:e=>!0,input:e=>!0},setup(e,t){let{emit:i}=t;const n=_(null),l=_(null),u=_(void 0),a=_(!1),d=_(null),s=_(null),p=Dt(c=>i("change",c),750),{textColorClasses:I,textColorStyles:M}=$e(()=>e.color),{backgroundColorClasses:k,backgroundColorStyles:h}=it(()=>e.color),N=P(()=>e.max-e.min+1),S=P(()=>e.double?N.value/2:N.value),C=P(()=>360/S.value),j=P(()=>C.value*Math.PI/180),$=P(()=>e.modelValue==null?e.min:e.modelValue),le=P(()=>.62),de=P(()=>{const c=[];for(let y=e.min;y<=e.max;y=y+e.step)c.push(y);return c});ae(()=>e.modelValue,c=>{u.value=c});function z(c){u.value!==c&&(u.value=c),i("input",c)}function J(c){return!e.allowedValues||e.allowedValues(c)}function X(c){if(!e.scrollable||e.disabled)return;c.preventDefault();const y=Math.sign(-c.deltaY||1);let T=$.value;do T=T+y,T=(T-e.min+N.value)%N.value+e.min;while(!J(T)&&T!==$.value);T!==e.displayedValue&&z(T),p(T)}function Z(c){return e.double&&c-e.min>=S.value}function Y(c){return Z(c)?le.value:1}function b(c){const y=e.rotate*Math.PI/180;return{x:Math.sin((c-e.min)*j.value+y)*Y(c),y:-Math.cos((c-e.min)*j.value+y)*Y(c)}}function A(c,y){const T=(Math.round(c/C.value)+(y?S.value:0))%N.value+e.min;return c<360-C.value/2?T:y?e.max-S.value+1:e.min}function W(c){const{x:y,y:T}=b(c);return{left:`${Math.round(50+y*50)}%`,top:`${Math.round(50+T*50)}%`}}function m(c,y){const T=y.x-c.x,ie=y.y-c.y;return Math.sqrt(T*T+ie*ie)}function v(c,y){const T=2*Math.atan2(y.y-c.y-m(c,y),y.x-c.x);return Math.abs(T*180/Math.PI)}function O(c){d.value===null&&(d.value=c),s.value=c,z(c)}function D(c){var Fe,Ue;if(c.preventDefault(),!a.value&&c.type!=="click"||!n.value)return;const{width:y,top:T,left:ie}=(Fe=n.value)==null?void 0:Fe.getBoundingClientRect(),{width:De}=((Ue=l.value)==null?void 0:Ue.getBoundingClientRect())??{width:0},{clientX:Ge,clientY:Xe}="touches"in c?c.touches[0]:c,Ie={x:y/2,y:-y/2},Me={x:Ge-ie,y:T-Xe},Ee=Math.round(v(Ie,Me)-e.rotate+360)%360,Pe=e.double&&m(Ie,Me)<(De+De*le.value)/4,Ze=Math.ceil(15/C.value);let re;for(let pe=0;peg("div",{class:ne([{"v-time-picker-clock":!0,"v-time-picker-clock--indeterminate":e.modelValue==null,"v-time-picker-clock--readonly":e.readonly}]),onMousedown:H,onTouchstart:H,onWheel:X,ref:n},[g("div",{class:"v-time-picker-clock__inner",ref:l},[g("div",{class:ne([{"v-time-picker-clock__hand":!0,"v-time-picker-clock__hand--inner":Z(e.modelValue)},I.value]),style:Se([{transform:`rotate(${e.rotate+C.value*($.value-e.min)}deg) scaleY(${Y($.value)})`},M.value])},null),de.value.map(c=>{const y=c===$.value;return g("div",{class:ne([{"v-time-picker-clock__item":!0,"v-time-picker-clock__item--active":y,"v-time-picker-clock__item--disabled":e.disabled||!J(c)},y&&k.value]),style:Se([W(c),y&&h.value])},[g("span",null,[e.format(c)])])})])]))}}),Tt=he({active:Boolean,color:String,disabled:Boolean,label:String,modelValue:String,error:String,showHint:Boolean,readonly:Boolean},"VTimePickerField"),Ne=we()({name:"VTimePickerField",props:Tt(),emits:{"update:modelValue":e=>!0},setup(e,t){let{emit:i}=t;const{textColorClasses:n,textColorStyles:l}=$e(()=>e.color),u=_(),a=et(!1);function d(s){if(["Backspace","Delete"].includes(s.key)){s.preventDefault();const p=s.target;p.value="",i("update:modelValue",null)}}return Ce(()=>o(te,{ref:u,_as:"VTimePickerField",autocomplete:"off",class:ne(["v-time-picker-controls__time__field",{"v-time-picker-controls__time__field--active":e.active},e.active?n.value:[]]),style:Se(e.active?l.value:[]),disabled:e.disabled,variant:"solo-filled",inputmode:"numeric",hideDetails:"auto","aria-label":e.label,"aria-invalid":!!e.error,"aria-errormessage":e.error,error:!!e.error,hint:e.showHint?e.label:void 0,persistentHint:!0,flat:!0,modelValue:e.modelValue??(a.value?"":"--"),"onUpdate:modelValue":s=>i("update:modelValue",s),onKeydown:d,onFocus:()=>a.value=!0,onBlur:()=>a.value=!1},null)),rt({},u)}});function L(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return String(e).padStart(t,"0")}function qe(e){return e?(e-1)%12+1:12}function ve(e,t){return e%12+(t==="pm"?12:0)}function me(e){const t=e.replaceAll(/\D/g,"");return t.length>0?Number(t):null}function Vt(e,t,i){{if(e===23&&t)return{value:0};if(e===0&&!t)return{value:23}}return{value:e+(t?1:-1)}}function xt(e,t){return e===59&&t?0:e===0&&!t?59:e+(t?1:-1)}const Ye=he({allowedHours:[Function,Array],allowedMinutes:[Function,Array],allowedSeconds:[Function,Array],max:String,min:String},"time-validation");function We(e){const t=P(()=>{const u=e.min?Number(e.min.split(":")[0]):0,a=e.max?Number(e.max.split(":")[0]):23;return d=>da?!1:Array.isArray(e.allowedHours)?e.allowedHours.includes(d):typeof e.allowedHours=="function"?e.allowedHours(d):!0}),i=P(()=>{const[u,a]=e.min?e.min.split(":").map(Number):[0,0],[d,s]=e.max?e.max.split(":").map(Number):[23,59],p=u*60+a,I=d*60+s;return(M,k)=>{if(M!==null){const h=60*M+k;if(hI)return!1}return Array.isArray(e.allowedMinutes)?e.allowedMinutes.includes(k):typeof e.allowedMinutes=="function"?e.allowedMinutes(k):!0}}),n=P(()=>{const[u,a,d]=e.min?e.min.split(":").map(Number):[0,0,0],[s,p,I]=e.max?e.max.split(":").map(Number):[23,59,59],M=u*3600+a*60+(d||0),k=s*3600+p*60+(I||0);return(h,N,S)=>{if(h!==null&&N!==null){const C=3600*h+60*N+S;if(Ck)return!1}return Array.isArray(e.allowedSeconds)?e.allowedSeconds.includes(S):typeof e.allowedSeconds=="function"?e.allowedSeconds(S):!0}});function l(u,a,d){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,p=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;const I=u==="hour"?t.value:u==="minute"?h=>i.value(s,h):h=>n.value(s,p,h),M=u==="hour"?h=>Vt(h,d).value:h=>xt(h,d),k=u==="hour"?24:60;for(let h=1;h<=k&&(a=M(a),!I(a));h++);return a}return{isAllowedHour:t,isAllowedMinute:i,isAllowedSecond:n,findNextAllowed:l}}const Nt=he({ampm:Boolean,color:String,disabled:Boolean,inputHints:Boolean,hour:[Number,String],minute:[Number,String],second:[Number,String],period:String,readonly:Boolean,useSeconds:Boolean,value:Number,viewMode:String,...Ye()},"VTimePickerControls"),ze=we()({name:"VTimePickerControls",props:Nt(),emits:{"update:period":e=>!0,"update:viewMode":e=>!0,"update:hour":e=>!0,"update:minute":e=>!0,"update:second":e=>!0},setup(e,t){let{emit:i}=t;const{t:n}=Ke(),{isAllowedHour:l,isAllowedMinute:u,isAllowedSecond:a,findNextAllowed:d}=We(e),s=P(()=>e.hour!==null?e.ampm?ve(Number(e.hour),e.period??"am"):Number(e.hour):null),p=P(()=>e.minute!==null?Number(e.minute):null),I=P(()=>{var m;return e.hour===null?!0:((m=l.value)==null?void 0:m.call(l,Number(s.value)))??!0}),M=P(()=>{var m;return e.minute===null?!0:((m=u.value)==null?void 0:m.call(u,s.value,Number(e.minute)))??!0}),k=P(()=>{var m;return e.second===null?!0:((m=a.value)==null?void 0:m.call(a,s.value,p.value,Number(e.second)))??!0}),h={in:m=>{if(m==null||isNaN(Number(m)))return null;const v=Number(m);return e.ampm?L(qe(v)):L(v)},out:m=>{if(isNaN(Number(m))||m==null||m==="")return null;const v=typeof m=="string"?me(m):Number(m);return v===null?null:e.ampm?ve(v,e.period??"am"):Re(v,0,23)}},N=ge(e,"hour",void 0,h.in,h.out),S={in:m=>m!=null&&!isNaN(Number(m))?L(`${m}`):null,out:m=>{if(isNaN(Number(m))||m==null||m==="")return null;const v=typeof m=="string"?me(m):Number(m);return v!==null?Re(v,0,59):null}},C=ge(e,"minute",void 0,S.in,S.out),j=ge(e,"second",void 0,S.in,S.out);function $(m){if(!["ArrowUp","ArrowDown"].includes(m.key))return;m.preventDefault(),m.stopPropagation();const v=e.period==="am",O=e.ampm?ve(Number(N.value??0),v?"am":"pm"):Number(N.value??0),D=d("hour",O,m.key==="ArrowUp"),H=v&&D>=12||!v&&D<12;e.ampm&&H?(i("update:period",e.period==="am"?"pm":"am"),Ae(()=>N.value=L(D))):N.value=L(D)}function le(m){if(!["ArrowUp","ArrowDown"].includes(m.key))return;m.preventDefault(),m.stopPropagation();const v=Number(C.value??0),O=d("minute",v,m.key==="ArrowUp",s.value);C.value=L(O)}function de(m){if(!["ArrowUp","ArrowDown"].includes(m.key))return;m.preventDefault(),m.stopPropagation();const v=Number(j.value??0),O=d("second",v,m.key==="ArrowUp",s.value,p.value);j.value=L(O)}function z(m,v,O){return D=>{if(!D.data)return;const H=D.target,{value:K,selectionStart:oe,selectionEnd:c}=H??{};if(me(D.data)===null){D.preventDefault();return}const y=K?K.slice(0,oe)+D.data+K.slice(c):D.data;if(y.length>2){if(oe===c&&c===0&&D.data.trim().startsWith("0")){D.preventDefault(),H.value=y.trim().substring(0,2),O(H.value),D.data.trim().length===1&&H.setSelectionRange(1,1);return}if(oe===c&&c===1&&K.startsWith("0")){D.preventDefault(),H.value=y.trim().substring(0,2),O(H.value);return}const ie=e.viewMode==="hour"?e.ampm?12:23:59;if(me(y)>ie){D.preventDefault(),H.value=L(String(me(D.data)).substring(0,2)),O(H.value);return}}const T=m(y);v(T)&&D.preventDefault()}}function J(m){i("update:period",m);const v=d("hour",m==="am"?23:11,!0);Ae(()=>N.value=L(v))}const X=_(),Z=_(),Y=_();ae(()=>e.viewMode,(m,v)=>{switch(v){case"hour":X.value.blur();break;case"minute":Z.value.blur();break;case"second":Y.value.blur();break}});const b=z(h.out,m=>h.in(m)===N.value,m=>N.value=m),A=z(S.out,m=>S.in(m)===C.value,m=>C.value=m),W=z(S.out,m=>S.in(m)===j.value,m=>j.value=m);return Ce(()=>g("div",{class:"v-time-picker-controls"},[g("div",{class:ne({"v-time-picker-controls__time":!0,"v-time-picker-controls__time--with-ampm":e.ampm,"v-time-picker-controls__time--with-seconds":e.useSeconds})},[o(Ne,{ref:X,active:e.viewMode==="hour",color:e.color,disabled:e.disabled,label:n("$vuetify.timePicker.hour"),showHint:e.inputHints,error:I.value?void 0:n("$vuetify.timePicker.notAllowed"),modelValue:N.value,"onUpdate:modelValue":m=>N.value=m,onKeydown:$,onBeforeinput:b,onFocus:()=>i("update:viewMode","hour")},null),g("span",{class:"v-time-picker-controls__time__separator"},[f(":")]),o(Ne,{ref:Z,active:e.viewMode==="minute",color:e.color,disabled:e.disabled,label:n("$vuetify.timePicker.minute"),showHint:e.inputHints,error:M.value?void 0:n("$vuetify.timePicker.notAllowed"),modelValue:C.value,"onUpdate:modelValue":m=>C.value=m,onKeydown:le,onBeforeinput:A,onFocus:()=>i("update:viewMode","minute")},null),e.useSeconds&&g("span",{key:"secondsDivider",class:"v-time-picker-controls__time__separator"},[f(":")]),e.useSeconds&&g(ce,null,[o(Ne,{key:"secondsVal",ref:Y,active:e.viewMode==="second",color:e.color,disabled:e.disabled,label:n("$vuetify.timePicker.second"),showHint:e.inputHints,error:k.value?void 0:n("$vuetify.timePicker.notAllowed"),modelValue:j.value,"onUpdate:modelValue":m=>j.value=m,onKeydown:de,onBeforeinput:W,onFocus:()=>i("update:viewMode","second")},null)]),e.ampm&&g("div",{class:"v-time-picker-controls__ampm"},[o(x,{active:e.period==="am",color:e.period==="am"?e.color:void 0,class:ne({"v-time-picker-controls__ampm__am":!0,"v-time-picker-controls__ampm__btn":!0,"v-time-picker-controls__ampm__btn__active":e.period==="am"}),disabled:e.disabled,text:n("$vuetify.timePicker.am"),variant:e.disabled&&e.period==="am"?"elevated":"tonal",onClick:()=>e.period!=="am"?J("am"):null},null),o(x,{active:e.period==="pm",color:e.period==="pm"?e.color:void 0,class:ne({"v-time-picker-controls__ampm__pm":!0,"v-time-picker-controls__ampm__btn":!0,"v-time-picker-controls__ampm__btn__active":e.period==="pm"}),disabled:e.disabled,text:n("$vuetify.timePicker.pm"),variant:e.disabled&&e.period==="pm"?"elevated":"tonal",onClick:()=>e.period!=="pm"?J("pm"):null},null)])])])),{}}}),St=he({disabled:Boolean,format:{type:String,default:"ampm"},viewMode:{type:String,default:"hour"},period:{type:String,default:"am",validator:e=>["am","pm"].includes(e)},modelValue:null,readonly:Boolean,scrollable:Boolean,useSeconds:Boolean,variant:{type:String,default:"dial"},...Ye(),..._e(Ct({title:"$vuetify.timePicker.title"}),["landscape"]),...ut()},"VTimePicker"),Je=we()({name:"VTimePicker",props:St(),emits:{"update:hour":e=>!0,"update:minute":e=>!0,"update:period":e=>!0,"update:second":e=>!0,"update:modelValue":e=>!0,"update:viewMode":e=>!0},setup(e,t){let{emit:i,slots:n}=t;const{t:l}=Ke(),{densityClasses:u}=st(e),a=_(null),d=_(null),s=_(null),p=_(null),I=_(null),M=_(null),k=ge(e,"period","am"),h=ge(e,"viewMode","hour"),N=_(null),S=_(null),C=P(()=>e.format==="ampm"),{isAllowedHour:j,isAllowedMinute:$,isAllowedSecond:le}=We(e),de=at(()=>e.modelValue!==null&&a.value===null&&d.value===null&&(!e.useSeconds||s.value===null));function z(){const b=J();b!==null&&b!==e.modelValue&&i("update:modelValue",b),de.value&&i("update:modelValue",null)}ae(a,z),ae(d,z),ae(s,z),ae(()=>e.modelValue,b=>X(b)),ae(()=>e.useSeconds,(b,A)=>{A&&!b&&h.value==="second"&&(h.value="minute"),!b&&s.value!==null&&(s.value=null)}),tt(()=>{X(e.modelValue)});function J(){return a.value!=null&&d.value!=null&&(!e.useSeconds||s.value!=null)?`${L(a.value)}:${L(d.value)}`+(e.useSeconds?`:${L(s.value)}`:""):null}function X(b){if(b==null||b==="")a.value=null,d.value=null,s.value=null;else if(b instanceof Date)a.value=b.getHours(),d.value=b.getMinutes(),s.value=b.getSeconds();else{const[A,,W,,m,v]=b.trim().toLowerCase().match(/^(\d+):(\d+)(:(\d+))?([ap]m)?$/)||new Array(6);a.value=v?ve(parseInt(A,10),v):parseInt(A,10),d.value=parseInt(W,10),s.value=parseInt(m||0,10)}k.value=a.value==null||a.value<12?"am":"pm"}function Z(b){h.value==="hour"?a.value=C.value?ve(b,k.value):b:h.value==="minute"?d.value=b:s.value=b}function Y(b){switch(h.value||"hour"){case"hour":i("update:hour",b);break;case"minute":i("update:minute",b);break;case"second":i("update:second",b);break}const A=a.value!==null&&d.value!==null&&(e.useSeconds?s.value!==null:!0);h.value==="hour"?h.value="minute":e.useSeconds&&h.value==="minute"&&(h.value="second"),!(a.value===p.value&&d.value===I.value&&(!e.useSeconds||s.value===M.value)||J()===null)&&(p.value=a.value,I.value=d.value,e.useSeconds&&(M.value=s.value),A&&z())}Ce(()=>{const b=_e(Le.filterProps(e),["hideHeader"]),A=ze.filterProps(e),W=je.filterProps(_e(e,["format","modelValue","min","max"])),m=h.value==="hour"?j.value:h.value==="minute"?v=>$.value(a.value,v):v=>le.value(a.value,d.value,v);return o(Le,fe(b,{color:void 0,class:["v-time-picker",`v-time-picker--variant-${e.variant}`,e.class,u.value],hideHeader:e.hideHeader&&e.variant!=="input",style:e.style}),{title:()=>{var v;return((v=n.title)==null?void 0:v.call(n))??g("div",{class:"v-time-picker__title"},[l(e.title)])},header:()=>o(ze,fe(A,{ampm:C.value,hour:a.value,minute:d.value,period:k.value,second:s.value,viewMode:h.value,inputHints:e.variant==="input","onUpdate:hour":v=>a.value=v,"onUpdate:minute":v=>d.value=v,"onUpdate:second":v=>s.value=v,"onUpdate:period":v=>k.value=v,"onUpdate:viewMode":v=>h.value=v,ref:N}),null),default:()=>o(je,fe(W,{allowedValues:m,double:h.value==="hour"&&!C.value,format:h.value==="hour"?C.value?qe:v=>v:v=>L(v,2),max:h.value==="hour"?C.value&&k.value==="am"?11:23:59,min:h.value==="hour"&&C.value&&k.value==="pm"?12:0,size:20,step:h.value==="hour"?1:5,modelValue:h.value==="hour"?a.value:h.value==="minute"?d.value:s.value,onChange:Y,onInput:Z,ref:S}),null),actions:n.actions})})}}),_t={name:"ExamConfigEditor",props:{configId:{type:String,required:!0},dialogMode:{type:Boolean,default:!1}},emits:["saved","error","opened","deleted"],data(){return{localConfig:{examName:"",message:"",room:"",examInfos:[]},loading:!1,saving:!1,deleting:!1,deleteDialog:!1,error:"",success:"",isEditMode:!1,showJsonPreview:!1,availableSubjects:[],customSubjectInput:"",enableCustomAlertTime:!1,defaultExamTips:["请保持卷面整洁,字迹清晰,诚信应考。在听到终考铃时立刻起立,停止作答。","沉着 冷静 细心 守记","答题不守记,自己两行泪。"]}},computed:{formattedJson(){try{return JSON.stringify(this.localConfig,null,2)}catch(e){return console.error("格式化JSON时出错:",e),"无效的JSON格式"}},formattedStorageJson(){try{const e={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(t=>({name:t.name,start:this.formatDisplayDateTime(t.start),end:this.formatDisplayDateTime(t.end),alertTime:parseInt(t.alertTime)||15}))};return JSON.stringify(e,null,2)}catch(e){return console.error("格式化存储JSON时出错:",e),"无效的JSON格式"}},isValidConfig(){return this.localConfig.examName&&this.localConfig.message&&this.localConfig.examInfos&&this.localConfig.examInfos.length>0&&this.localConfig.examInfos.every(e=>e.name&&e.start&&e.end)},validationErrors(){const e=[];if((!this.localConfig.examName||this.localConfig.examName.trim()==="")&&e.push("考试名称不能为空"),(!this.localConfig.message||this.localConfig.message.trim()==="")&&e.push("考试提示不能为空"),!this.localConfig.examInfos||this.localConfig.examInfos.length===0)e.push("至少需要添加一个考试科目");else{this.localConfig.examInfos.forEach((t,i)=>{const n=`第${i+1}个科目`;if((!t.name||t.name.trim()==="")&&e.push(`${n}的名称不能为空`),t.start||e.push(`${n}的开始时间不能为空`),t.end||e.push(`${n}的结束时间不能为空`),t.start&&t.end){const l=new Date(t.start),u=new Date(t.end);isNaN(l.getTime())&&e.push(`${n}的开始时间格式不正确`),isNaN(u.getTime())&&e.push(`${n}的结束时间格式不正确`),!isNaN(l.getTime())&&!isNaN(u.getTime())&&(u<=l&&e.push(`${n}的结束时间必须晚于开始时间`),(u-l)/(1e3*60*60)>24&&e.push(`${n}的考试时长不能超过24小时`))}});for(let t=0;td&&e.push(`第${t+1}个科目与第${i+1}个科目的时间有重叠`)}}}return e},hasValidationErrors(){return this.validationErrors.length>0}},watch:{configId:{immediate:!0,handler(e){e&&this.loadConfig()}}},created(){this.loadSubjects()},methods:{async loadSubjects(){try{const e=await Q.loadData("classworks-config-subject");e&&Array.isArray(e)?this.availableSubjects=e.sort((t,i)=>(t.order??0)-(i.order??0)).map(t=>({name:t.name,order:t.order??0})):this.availableSubjects=[{name:"语文",order:0},{name:"数学",order:1},{name:"英语",order:2},{name:"物理",order:3},{name:"化学",order:4},{name:"生物",order:5},{name:"政治",order:6},{name:"历史",order:7},{name:"地理",order:8}]}catch(e){console.warn("加载科目列表失败,使用默认列表:",e),this.availableSubjects=[{name:"语文",order:0},{name:"数学",order:1},{name:"英语",order:2},{name:"物理",order:3},{name:"化学",order:4},{name:"生物",order:5},{name:"政治",order:6},{name:"历史",order:7},{name:"地理",order:8}]}},autoFillRemaining(){if(this.localConfig.examInfos.length===0)return;let e=null;for(let t=this.localConfig.examInfos.length-1;t>=0;t--)if(this.localConfig.examInfos[t].end){e=new Date(this.localConfig.examInfos[t].end);break}e||(e=new Date);for(let t=0;t12)return`${t}月份不合法(1-12)`;if(I<1||I>31)return`${t}日期不合法(1-31)`;if(M<0||M>23)return`${t}小时不合法(0-23)`;if(k<0||k>59)return`${t}分钟不合法(0-59)`;const h=new Date(s,p-1,I,M,k);return isNaN(h.getTime())?`${t}日期不存在`:h.getMonth()!==p-1||h.getDate()!==I?`${t}日期不存在`:!0},validateEndAfterStart(e){if(!e.startFormatted||!e.endFormatted)return!0;try{const t=new Date(e.start||e.startFormatted.replace(/\//g,"-")),i=new Date(e.end||e.endFormatted.replace(/\//g,"-"));return isNaN(t.getTime())||isNaN(i.getTime())?!0:i<=t?"结束时间必须晚于开始时间":(i.getTime()-t.getTime())/(1e3*60*60)>24?"考试时长不能超过24小时":!0}catch{return!0}},validateNoTimeOverlap(e,t){if(!e.startFormatted||!e.endFormatted)return!0;try{const i=new Date(e.start||e.startFormatted.replace(/\//g,"-")),n=new Date(e.end||e.endFormatted.replace(/\//g,"-"));if(isNaN(i.getTime())||isNaN(n.getTime()))return!0;for(let l=0;l=a&&ia&&n<=d||i<=a&&n>=d)return`时间与"${u.name||`第${l+1}个科目`}"重叠`}return!0}catch{return!0}},toggleAlertTimeMode(){this.enableCustomAlertTime||this.localConfig.examInfos.forEach(e=>{e.alertTime=15})},getExamDuration(e){if(!e.start||!e.end)return"";try{const t=new Date(e.start),i=new Date(e.end);if(isNaN(t.getTime())||isNaN(i.getTime()))return"";const n=i.getTime()-t.getTime(),l=Math.round(n/(1e3*60));if(l<60)return`${l}分钟`;const u=Math.floor(l/60),a=l%60;return a===0?`${u}小时`:`${u}小时${a}分钟`}catch{return""}},updateStartDateTimeFromInput(e){if(e===void 0||!this.localConfig.examInfos[e])return;const t=this.localConfig.examInfos[e],i=t.startFormatted;if(!i)return;const n=i.match(/(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s+(\d{1,2}):(\d{1,2})/);if(!n)return;const[,l,u,a,d,s]=n,p=new Date(parseInt(l),parseInt(u)-1,parseInt(a),parseInt(d),parseInt(s));isNaN(p.getTime())||(t.startDate=p,t.startTime=this.formatTimeOnly(p),t.start=this.formatDateTimeLocal(p),this.updateStartDateTime(e))},updateEndDateTimeFromInput(e){if(e===void 0||!this.localConfig.examInfos[e])return;const t=this.localConfig.examInfos[e],i=t.endFormatted;if(!i)return;const n=i.match(/(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s+(\d{1,2}):(\d{1,2})/);if(!n)return;const[,l,u,a,d,s]=n,p=new Date(parseInt(l),parseInt(u)-1,parseInt(a),parseInt(d),parseInt(s));isNaN(p.getTime())||(t.endDate=p,t.endTime=this.formatTimeOnly(p),t.end=this.formatDateTimeLocal(p),this.updateEndDateTime(e))},async loadConfig(){var e;this.loading=!0,this.error="";try{const t=await Q.loadData(`es_${this.configId}`);if(t){this.localConfig={examName:"",message:"",room:"",examInfos:[],...t},Array.isArray(this.localConfig.examInfos)||(this.localConfig.examInfos=[]),this.localConfig.examInfos.forEach(n=>{if(n.start){const l=this.parseDateTime(n.start);n.start=this.formatDateTimeLocal(l),n.startDate=l,n.startTime=this.formatTimeOnly(l),n.startFormatted=this.formatDisplayDateTime(l),n.startDateMenu=!1}if(n.end){const l=this.parseDateTime(n.end);n.end=this.formatDateTimeLocal(l),n.endDate=l,n.endTime=this.formatTimeOnly(l),n.endFormatted=this.formatDisplayDateTime(l),n.endDateMenu=!1}try{if(n.start&&n.end){const l=new Date(n.start),u=new Date(n.end),a=Math.round((u.getTime()-l.getTime())/(1e3*60));a>0&&a<=24*60?n.durationMinutes=a:n.durationMinutes=120}else n.durationMinutes=120}catch{n.durationMinutes=120}n.alertTime===void 0||n.alertTime===null?n.alertTime=15:n.alertTime=parseInt(n.alertTime)||15});const i=this.localConfig.examInfos.some(n=>n.alertTime!==15);this.enableCustomAlertTime=i}else console.error("加载配置失败:",t),this.error="加载配置失败: "+(((e=t.error)==null?void 0:e.message)||"未知错误"),this.$emit("error",this.error)}catch(t){console.error(t),this.error="加载配置失败: "+t.message,this.$emit("error",this.error)}finally{this.loading=!1}},async saveConfig(){var e;if(!this.isValidConfig){const t=this.validationErrors;return t.length>0?this.error=`配置验证失败:${t.join(";")}`:this.error="请填写完整的配置信息",!1}this.saving=!0,this.error="";try{const t={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(n=>({name:n.name,start:this.formatDisplayDateTime(n.start),end:this.formatDisplayDateTime(n.end),alertTime:parseInt(n.alertTime)||15}))},i=await Q.saveData(`es_${this.configId}`,t);return i?(this.success="配置保存成功",this.$emit("saved",t),!0):(this.error="保存配置失败: "+(((e=i.error)==null?void 0:e.message)||"未知错误"),this.$emit("error",this.error),!1)}catch(t){return this.error="保存配置失败: "+t,this.$emit("error",this.error),!1}finally{this.saving=!1}},addExamInfo(){let e=new Date;if(this.localConfig.examInfos.length>0){const l=this.localConfig.examInfos[this.localConfig.examInfos.length-1];l.end&&(e=new Date(l.end))}const t=new Date(e.getTime()+10*60*1e3),i=new Date(t.getTime()+2*60*60*1e3),n={name:"",start:this.formatDateTimeLocal(t),end:this.formatDateTimeLocal(i),durationMinutes:120,alertTime:15,startDate:t,startTime:this.formatTimeOnly(t),startFormatted:this.formatDisplayDateTime(t),startDateMenu:!1,endDate:i,endTime:this.formatTimeOnly(i),endFormatted:this.formatDisplayDateTime(i),endDateMenu:!1};this.localConfig.examInfos.push(n)},removeExamInfo(e){this.localConfig.examInfos.splice(e,1)},moveExamInfo(e,t){const i=e+t;if(i>=0&&i24*60&&(i=24*60),t.durationMinutes=i,(!t.startDate||!t.startTime)&&t.start){const n=new Date(t.start);isNaN(n.getTime())||(t.startDate=n,t.startTime=this.formatTimeOnly(n))}if(t.startDate&&t.startTime){const n=new Date(t.startDate),[l,u]=String(t.startTime).split(":");n.setHours(parseInt(l),parseInt(u),0,0);const a=new Date(n.getTime()+i*60*1e3);t.endDate=a,t.endTime=this.formatTimeOnly(a),t.end=this.formatDateTimeLocal(a),t.endFormatted=this.formatDisplayDateTime(a)}},formatDateTimeLocal(e){if(!e)return"";let t;if(typeof e=="string"?e.includes("/")?t=new Date(e.replace(/\//g,"-")):t=new Date(e):t=new Date(e),isNaN(t.getTime()))return"";const i=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),u=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${i}-${n}-${l}T${u}:${a}`},formatDisplayDateTime(e){if(!e)return"";const t=new Date(e);if(isNaN(t.getTime()))return e;const i=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),u=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0");return`${i}/${n}/${l} ${u}:${a}`},parseDateTime(e){return e?typeof e=="string"?e.includes("/")?new Date(e.replace(/\//g,"-")):new Date(e):new Date(e):new Date},formatTimeOnly(e){if(!e)return"00:00";const t=new Date(e);if(isNaN(t.getTime()))return"00:00";const i=String(t.getHours()).padStart(2,"0"),n=String(t.getMinutes()).padStart(2,"0");return`${i}:${n}`},updateStartDateTime(e){const t=this.localConfig.examInfos[e];if(!t.startDate||!t.startTime)return;const i=new Date(t.startDate),[n,l]=t.startTime.split(":");i.setHours(parseInt(n),parseInt(l),0,0),t.start=this.formatDateTimeLocal(i),t.startFormatted=this.formatDisplayDateTime(i);let u=parseInt(t.durationMinutes);if(isNaN(u)||u<=0||u>24*60)try{let d=null;if(t.endDate&&t.endTime){d=new Date(t.endDate);const[s,p]=String(t.endTime).split(":");d.setHours(parseInt(s),parseInt(p),0,0)}else t.end&&(d=new Date(t.end));if(d&&!isNaN(d.getTime())){const s=Math.round((d.getTime()-i.getTime())/6e4);s>0&&s<=24*60&&(u=s)}}catch{}(isNaN(u)||u<=0||u>24*60)&&(u=120);const a=new Date(i.getTime()+u*60*1e3);t.endDate=a,t.endTime=this.formatTimeOnly(a),t.end=this.formatDateTimeLocal(a),t.endFormatted=this.formatDisplayDateTime(a),t.durationMinutes=u},updateEndDateTime(e){const t=this.localConfig.examInfos[e];if(!t.endDate||!t.endTime)return;const i=new Date(t.endDate),[n,l]=t.endTime.split(":");i.setHours(parseInt(n),parseInt(l),0,0),t.end=this.formatDateTimeLocal(i),t.endFormatted=this.formatDisplayDateTime(i);try{if(t.startDate&&t.startTime){const u=new Date(t.startDate),[a,d]=String(t.startTime).split(":");u.setHours(parseInt(a),parseInt(d),0,0);const s=Math.round((i.getTime()-u.getTime())/(1e3*60));s>0&&s<=24*60&&(t.durationMinutes=s)}}catch{}},async openConfig(){try{const e=await Q.getKeyCloudUrl(`es_${this.configId}`,{autoMigrate:!0,autoConfig:!0});if(e.success&&e.url){const t=`https://es.examaware.cn/exam/?configUrl=${encodeURIComponent(e.url)}`;window.open(t,"_blank"),this.success="配置已在新窗口中打开",this.$emit("opened",{configId:this.configId,url:e.url})}else throw new Error(e.error||"获取云端地址失败")}catch(e){this.error="打开配置失败: "+e.message,this.$emit("error","打开配置失败: "+e.message)}},confirmDelete(){this.deleteDialog=!0},async deleteConfig(){this.deleting=!0;try{const i=(await Q.loadData("es_list")||[]).filter(l=>l.id!==this.configId);if(!await Q.saveData("es_list",i))throw new Error("更新云端列表失败");this.deleteDialog=!1,this.$emit("deleted",{success:!0,message:"配置删除成功",configId:this.configId})}catch(e){console.error("删除配置失败:",e),this.$emit("deleted",{success:!1,message:"删除失败: "+e.message})}finally{this.deleting=!1}},openInEa2Player(){var e;try{const t={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(u=>({name:u.name,start:this.formatDisplayDateTime(u.start),end:this.formatDisplayDateTime(u.end),alertTime:parseInt(u.alertTime)||15}))},i=JSON.stringify(t),n=btoa(unescape(encodeURIComponent(i))),l=`examaware://player?data=${encodeURIComponent(n)}`;window.location.href=l,(e=this.$message)==null||e.success("正在拉起 ExamAware2 播放器...")}catch(t){this.error="拉起播放器失败: "+t.message}}}},It={class:"d-flex align-center"},Mt={class:"d-flex align-center"},Et={key:4,class:"d-flex justify-space-between align-center mb-4"},Pt={class:"d-flex align-center gap-2"},Ft={key:5},Ut={class:"mb-8"},At={class:"text-h3 font-weight-bold",style:{"line-height":"1.2"}},Ht={class:"text-subtitle-1 text-grey",style:{"white-space":"pre-wrap","line-height":"1.8"}},Bt={key:0,class:"mb-8"},Lt={class:"d-flex align-center"},Ot={class:""},Rt={class:"mb-3"},jt={class:"d-flex align-center mb-1"},zt={class:"text-h6 font-weight-medium text-success"},Jt={class:"d-flex align-center mb-1"},$t={class:"text-h6 font-weight-medium text-error"},Kt={key:1,class:"text-center py-12"},qt={class:"json-preview"},Yt={key:6},Wt={class:"text-subtitle-2 font-weight-bold d-block mb-2"},Gt={key:0,class:"mt-3"},Xt={class:"text-caption text-medium-emphasis mt-2 ml-2"},Zt={class:"d-flex align-center mr-4"},Qt={class:"w-100"},ea={class:"d-flex align-center mb-3"},ta={class:"d-flex gap-1"},aa={class:"text-primary font-weight-bold"},na={key:1,class:"text-center py-12"};function la(e,t,i,n,l,u){return w(),R("div",null,[l.error?(w(),E(Ve,{key:0,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"error",variant:"tonal","onClick:close":t[0]||(t[0]=a=>l.error="")},{default:r(()=>[g("div",It,[o(V,{class:"mr-2"},{default:r(()=>[...t[10]||(t[10]=[f("mdi-alert-circle",-1)])]),_:1}),f(" "+F(l.error),1)])]),_:1})):U("",!0),l.success?(w(),E(Ve,{key:1,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"success",variant:"tonal","onClick:close":t[1]||(t[1]=a=>l.success="")},{default:r(()=>[g("div",Mt,[o(V,{class:"mr-2"},{default:r(()=>[...t[11]||(t[11]=[f("mdi-check-circle",-1)])]),_:1}),f(" "+F(l.success),1)])]),_:1})):U("",!0),u.hasValidationErrors&&!l.loading?(w(),E(Ve,{key:2,border:"start",class:"mb-4 mt-3 mx-2",type:"warning",variant:"tonal"},{default:r(()=>[t[13]||(t[13]=g("div",{class:"d-flex align-center"},[g("span",{class:"font-weight-bold"},"配置验证失败,请检查以下问题:")],-1)),o(He,{class:"bg-transparent",density:"compact"},{default:r(()=>[(w(!0),R(ce,null,ye(u.validationErrors,(a,d)=>(w(),E(ke,{key:d,class:"px-0 py-0"},{prepend:r(()=>[o(V,{color:"warning",size:"small"},{default:r(()=>[...t[12]||(t[12]=[f("mdi-circle-small",-1)])]),_:1})]),default:r(()=>[o(mt,{class:"text-body-2"},{default:r(()=>[f(F(a),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):U("",!0),l.loading?(w(),E(q,{key:3,class:"my-4",outlined:""},{default:r(()=>[o(G,null,{default:r(()=>[o(ht,{class:"mx-auto",type:"article"})]),_:1})]),_:1})):U("",!0),l.loading?U("",!0):(w(),R("div",Et,[g("div",Pt,[o(x,{disabled:!u.isValidConfig,class:"text-none",color:"success","prepend-icon":"mdi-open-in-new",variant:"elevated",onClick:u.openConfig},{default:r(()=>[...t[14]||(t[14]=[f(" 打开 ExamSchedule ",-1)])]),_:1},8,["disabled","onClick"]),o(x,{disabled:!u.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-link-variant",variant:"elevated",onClick:u.copyConfigUrl},{default:r(()=>[...t[15]||(t[15]=[f(" 复制远程链接 ",-1)])]),_:1},8,["disabled","onClick"]),o(x,{disabled:!u.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-download",variant:"elevated",onClick:u.downloadAsJson},{default:r(()=>[...t[16]||(t[16]=[f(" JSON 文件 ",-1)])]),_:1},8,["disabled","onClick"]),o(x,{disabled:!u.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-download",variant:"elevated",onClick:u.downloadAsEa2},{default:r(()=>[...t[17]||(t[17]=[f(" .ea2 文件 ",-1)])]),_:1},8,["disabled","onClick"]),o(x,{disabled:!u.isValidConfig,class:"text-none",color:"secondary","prepend-icon":"mdi-play-circle",variant:"elevated",onClick:u.openInEa2Player},{default:r(()=>[...t[18]||(t[18]=[f(" 拉起EA2播放器 ",-1)])]),_:1},8,["disabled","onClick"]),u.isValidConfig?U("",!0):(w(),E(be,{key:0,activator:"parent",location:"bottom"},{default:r(()=>[...t[19]||(t[19]=[g("span",null,"请先完善配置信息后再操作",-1)])]),_:1}))]),o(ct,{modelValue:l.isEditMode,"onUpdate:modelValue":t[2]||(t[2]=a=>l.isEditMode=a),color:"primary",divided:"",variant:"outlined"},{default:r(()=>[o(x,{class:"text-error","prepend-icon":"mdi-delete",onClick:u.confirmDelete},{default:r(()=>[...t[20]||(t[20]=[f(" 删除配置 ",-1)])]),_:1},8,["onClick"]),o(x,{value:!1,"prepend-icon":"mdi-eye"},{default:r(()=>[...t[21]||(t[21]=[f(" 预览",-1)])]),_:1}),o(x,{value:!0,"prepend-icon":"mdi-pencil"},{default:r(()=>[...t[22]||(t[22]=[f(" 编辑",-1)])]),_:1})]),_:1},8,["modelValue"])])),!l.loading&&!l.isEditMode?(w(),R("div",Ft,[g("div",Ut,[g("div",At,F(l.localConfig.examName||"未设置考试名称"),1),g("div",Ht,F(l.localConfig.message||"未设置考试提示"),1),l.localConfig.room?(w(),E(xe,{key:0,class:"px-4 py-2",size:"large"},{default:r(()=>[o(V,{start:""},{default:r(()=>[...t[23]||(t[23]=[f("mdi-home",-1)])]),_:1}),f(" 考场:"+F(l.localConfig.room),1)]),_:1})):U("",!0)]),l.localConfig.examInfos&&l.localConfig.examInfos.length>0?(w(),R("div",Bt,[o(ue,null,{default:r(()=>[(w(!0),R(ce,null,ye(l.localConfig.examInfos,(a,d)=>(w(),E(B,{key:d,cols:"12",lg:"4",md:"6"},{default:r(()=>[o(q,{class:"h-100",hover:"",variant:"tonal"},{default:r(()=>[o(ee,{class:"bg-primary-lighten-5 pa-4"},{default:r(()=>[g("div",Lt,[o(V,{class:"mr-2"},{default:r(()=>[...t[24]||(t[24]=[f("mdi-book-open-page-variant",-1)])]),_:1}),g("span",Ot,F(a.name||"未设置科目"),1)])]),_:2},1024),o(G,{class:"pa-4"},{default:r(()=>[g("div",Rt,[g("div",jt,[o(V,{class:"mr-2",color:"success",size:"small"},{default:r(()=>[...t[25]||(t[25]=[f("mdi-clock-start ",-1)])]),_:1}),t[26]||(t[26]=g("span",{class:"text-body-2 text-grey-darken-1"},"开始时间",-1))]),g("div",zt,F(a.startFormatted||a.start||"未设置"),1)]),g("div",null,[g("div",Jt,[o(V,{class:"mr-2",color:"error",size:"small"},{default:r(()=>[...t[27]||(t[27]=[f("mdi-clock-end ",-1)])]),_:1}),t[28]||(t[28]=g("span",{class:"text-body-2 text-grey-darken-1"},"结束时间",-1))]),g("div",$t,F(a.endFormatted||a.end||"未设置"),1)])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):(w(),R("div",Kt,[o(V,{class:"mb-4",color:"grey-lighten-2",size:"80"},{default:r(()=>[...t[29]||(t[29]=[f(" mdi-calendar-blank ",-1)])]),_:1}),t[32]||(t[32]=g("div",{class:"text-h5 text-grey-darken-1 mb-2"},"暂无考试科目安排",-1)),t[33]||(t[33]=g("div",{class:"text-body-1 text-grey mb-4"},' 点击上方"添加科目"按钮开始配置考试时间表 ',-1)),o(x,{color:"primary",variant:"outlined",onClick:u.quickEdit},{default:r(()=>[o(V,{start:""},{default:r(()=>[...t[30]||(t[30]=[f("mdi-plus",-1)])]),_:1}),t[31]||(t[31]=f(" 立即添加 ",-1))]),_:1},8,["onClick"])])),o(q,{border:"",class:"mb-4",elevation:"2"},{default:r(()=>[o(ee,{class:"d-flex align-center text-white cursor-pointer",onClick:t[3]||(t[3]=a=>l.showJsonPreview=!l.showJsonPreview)},{default:r(()=>[o(V,{class:"mr-2"},{default:r(()=>[...t[34]||(t[34]=[f("mdi-code-json",-1)])]),_:1}),t[36]||(t[36]=f(" 配置预览 ",-1)),o(se),o(x,{color:"white","prepend-icon":"mdi-content-copy",size:"small",variant:"outlined",onClick:nt(u.copyToClipboard,["stop"])},{default:r(()=>[...t[35]||(t[35]=[f(" 复制 ",-1)])]),_:1},8,["onClick"]),o(x,{icon:l.showJsonPreview?"mdi-chevron-up":"mdi-chevron-down",class:"ml-2",color:"white",size:"small",variant:"text"},null,8,["icon"])]),_:1}),o(ft,null,{default:r(()=>[lt(o(G,{class:"pa-4"},{default:r(()=>[o(q,{class:"pa-4",variant:"tonal"},{default:r(()=>[g("pre",qt,[g("code",null,F(u.formattedStorageJson),1)])]),_:1})]),_:1},512),[[ot,l.showJsonPreview]])]),_:1})]),_:1})])):U("",!0),!l.loading&&l.isEditMode?(w(),R("div",Yt,[o(q,{border:"",class:"mb-4",elevation:"1"},{default:r(()=>[o(ee,{class:"d-flex align-center bg-primary-lighten-5 pa-4"},{default:r(()=>[o(V,{class:"mr-2"},{default:r(()=>[...t[37]||(t[37]=[f("mdi-information",-1)])]),_:1}),t[38]||(t[38]=g("span",{class:"font-weight-bold"},"基本信息",-1))]),_:1}),o(G,{class:"pa-6"},{default:r(()=>[o(ue,null,{default:r(()=>[o(B,{cols:"12",md:"6"},{default:r(()=>[o(te,{modelValue:l.localConfig.examName,"onUpdate:modelValue":t[4]||(t[4]=a=>l.localConfig.examName=a),rules:[a=>!!a||"考试名称不能为空",a=>a&&a.trim().length>0||"考试名称不能为空白字符",a=>!a||a.length<=100||"考试名称不能超过100个字符"],clearable:"",density:"comfortable",label:"考试名称",placeholder:"如:2025年高考模拟考试","prepend-inner-icon":"mdi-calendar-text",required:"",variant:"outlined"},null,8,["modelValue","rules"])]),_:1}),o(B,{cols:"12",md:"6"},{default:r(()=>[o(te,{modelValue:l.localConfig.room,"onUpdate:modelValue":t[5]||(t[5]=a=>l.localConfig.room=a),clearable:"",density:"comfortable",label:"考场号(仅 ExamSchedule-Management 支持此配置)",placeholder:"如:一号考场","prepend-inner-icon":"mdi-home",variant:"outlined"},null,8,["modelValue"])]),_:1})]),_:1}),o(ue,null,{default:r(()=>[o(B,{cols:"12"},{default:r(()=>[g("span",Wt,[o(V,{size:"small",class:"mr-1"},{default:r(()=>[...t[39]||(t[39]=[f("mdi-message-text",-1)])]),_:1}),t[40]||(t[40]=f(" 考试提示 ",-1))]),o(yt,{modelValue:l.localConfig.message,"onUpdate:modelValue":t[6]||(t[6]=a=>l.localConfig.message=a),rules:[a=>!!a||"考试提示不能为空",a=>a&&a.trim().length>0||"考试提示不能为空白字符"],clearable:"",density:"comfortable",label:"输入考试相关的提示信息...","no-resize":"",placeholder:"例如:请保持卷面整洁,诚信应考。在听到终考铃时立刻停止作答。",rows:"3",variant:"outlined"},null,8,["modelValue","rules"]),!l.localConfig.message||l.localConfig.message.trim()===""?(w(),R("div",Gt,[o(pt,{class:"d-flex gap-2",column:""},{default:r(()=>[(w(!0),R(ce,null,ye(l.defaultExamTips,(a,d)=>(w(),E(xe,{key:d,class:"cursor-pointer",color:"primary",size:"small",variant:"outlined",onClick:s=>u.selectDefaultTip(a)},{default:r(()=>[o(V,{size:"small",start:""},{default:r(()=>[...t[41]||(t[41]=[f("mdi-plus",-1)])]),_:1}),f(" "+F(a.substring(0,20))+"... ",1)]),_:2},1032,["onClick"]))),128))]),_:1}),g("div",Xt,[o(V,{class:"mr-1",size:"x-small"},{default:r(()=>[...t[42]||(t[42]=[f("mdi-lightbulb-outline",-1)])]),_:1}),t[43]||(t[43]=f(" 点击上方选项快速添加常用考试提示 ",-1))])])):U("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),o(q,{border:"",class:"mb-4",elevation:"1"},{default:r(()=>[o(ee,{class:"d-flex align-center bg-success-lighten-5 pa-4"},{default:r(()=>[o(V,{class:"mr-2"},{default:r(()=>[...t[44]||(t[44]=[f("mdi-format-list-bulleted",-1)])]),_:1}),t[47]||(t[47]=g("span",{class:"font-weight-bold"},"考试科目安排",-1)),o(se),g("div",Zt,[o(bt,{modelValue:l.enableCustomAlertTime,"onUpdate:modelValue":t[7]||(t[7]=a=>l.enableCustomAlertTime=a),color:"primary",density:"compact","hide-details":"",onChange:u.toggleAlertTimeMode},{label:r(()=>[...t[45]||(t[45]=[g("span",{class:"text-body-2"},"自定义提醒时间",-1)])]),_:1},8,["modelValue","onChange"])]),o(x,{color:"success","prepend-icon":"mdi-plus",size:"small",variant:"elevated",onClick:u.addExamInfo},{default:r(()=>[...t[46]||(t[46]=[f(" 添加科目 ",-1)])]),_:1},8,["onClick"])]),_:1}),o(G,{class:"pa-0"},{default:r(()=>[l.localConfig.examInfos&&l.localConfig.examInfos.length>0?(w(),E(He,{key:0,class:"py-0"},{default:r(()=>[(w(!0),R(ce,null,ye(l.localConfig.examInfos,(a,d)=>(w(),E(ke,{key:d,class:"border-b pa-4 hover-highlight"},{default:r(()=>[g("div",Qt,[g("div",ea,[o(xe,{color:d%2===0?"primary":"secondary",size:"small",variant:"tonal",class:"mr-3"},{default:r(()=>[o(V,{start:"",size:"small"},{default:r(()=>[f("mdi-numeric-"+F(d+1)+"-circle",1)]),_:2},1024),f(" 第 "+F(d+1)+" 科目 ",1)]),_:2},1032,["color"]),o(se),g("div",ta,[d>0?(w(),E(x,{key:0,color:"primary",icon:"mdi-arrow-up",size:"x-small",variant:"text",onClick:s=>u.moveExamInfo(d,-1)},{default:r(()=>[o(be,{activator:"parent",location:"bottom"},{default:r(()=>[...t[48]||(t[48]=[f("上移",-1)])]),_:1})]),_:1},8,["onClick"])):U("",!0),du.moveExamInfo(d,1)},{default:r(()=>[o(be,{activator:"parent",location:"bottom"},{default:r(()=>[...t[49]||(t[49]=[f("下移",-1)])]),_:1})]),_:1},8,["onClick"])):U("",!0),o(x,{color:"error",icon:"mdi-delete",size:"x-small",variant:"text",onClick:s=>u.removeExamInfo(d)},{default:r(()=>[o(be,{activator:"parent",location:"bottom"},{default:r(()=>[...t[50]||(t[50]=[f("删除",-1)])]),_:1})]),_:1},8,["onClick"])])]),o(ue,{class:"align-start"},{default:r(()=>[o(B,{cols:"12",md:"4"},{default:r(()=>[o(wt,{modelValue:a.name,"onUpdate:modelValue":s=>a.name=s,items:l.availableSubjects,rules:[s=>!!s||"科目名称不能为空",s=>s&&s.trim().length>0||"科目名称不能为空白字符"],clearable:"",density:"comfortable","item-title":"name",label:"科目名称","no-data-text":"没有可用科目,请输入自定义名称","prepend-inner-icon":"mdi-book",variant:"outlined"},{"prepend-item":r(()=>[l.customSubjectInput?(w(),E(ke,{key:0,title:"自定义:"},{append:r(()=>[g("span",aa,F(l.customSubjectInput),1)]),_:1})):U("",!0),l.customSubjectInput?(w(),E(gt,{key:1})):U("",!0)]),_:1},8,["modelValue","onUpdate:modelValue","items","rules"])]),_:2},1024),o(B,{cols:"12",md:"3"},{default:r(()=>[o(Be,{modelValue:a.startDateMenu,"onUpdate:modelValue":s=>a.startDateMenu=s,"close-on-content-click":!1,"min-width":"auto","offset-y":"",transition:"scale-transition"},{activator:r(({props:s})=>[o(te,fe({modelValue:a.startFormatted,"onUpdate:modelValue":p=>a.startFormatted=p,rules:[p=>!!p||"开始时间不能为空",p=>u.validateTimeFormat(p,"开始时间"),()=>u.validateNoTimeOverlap(a,d)],density:"comfortable",label:"开始时间",placeholder:"2025/01/01 09:00","prepend-inner-icon":"mdi-clock-start"},{ref_for:!0},s,{variant:"outlined",onBlur:p=>u.updateStartDateTimeFromInput(d)}),{append:r(()=>[o(V,null,{default:r(()=>[...t[51]||(t[51]=[f("mdi-calendar-clock",-1)])]),_:1})]),_:1},16,["modelValue","onUpdate:modelValue","rules","onBlur"])]),default:r(()=>[o(q,{"min-width":"500"},{default:r(()=>[o(ee,{class:"text-center py-3 bg-primary-lighten-5"},{default:r(()=>[o(V,{class:"mr-2",color:"primary"},{default:r(()=>[...t[52]||(t[52]=[f("mdi-clock-start",-1)])]),_:1}),t[53]||(t[53]=f(" 选择开始时间 ",-1))]),_:1}),o(G,{class:"pa-0"},{default:r(()=>[o(ue,{"no-gutters":""},{default:r(()=>[o(B,{class:"border-e",cols:"6"},{default:r(()=>[o(Oe,{modelValue:a.startDate,"onUpdate:modelValue":[s=>a.startDate=s,s=>u.updateStartDateTime(d)],color:"primary",elevation:"0",locale:"zh-cn","show-adjacent-months":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(B,{cols:"6"},{default:r(()=>[o(Je,{modelValue:a.startTime,"onUpdate:modelValue":[s=>a.startTime=s,s=>u.updateStartDateTime(d)],color:"primary",elevation:"0",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),o(Te,null,{default:r(()=>[o(se),o(x,{color:"grey",variant:"text",onClick:s=>a.startDateMenu=!1},{default:r(()=>[...t[54]||(t[54]=[f(" 关闭 ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(B,{cols:"12",md:"3"},{default:r(()=>[o(Be,{modelValue:a.endDateMenu,"onUpdate:modelValue":s=>a.endDateMenu=s,"close-on-content-click":!1,"min-width":"auto","offset-y":"",transition:"scale-transition"},{activator:r(({props:s})=>[o(te,fe({modelValue:a.endFormatted,"onUpdate:modelValue":p=>a.endFormatted=p,rules:[p=>!!p||"结束时间不能为空",p=>u.validateTimeFormat(p,"结束时间"),()=>u.validateEndAfterStart(a),()=>u.validateNoTimeOverlap(a,d)],density:"comfortable",label:"结束时间",placeholder:"2025/01/01 11:00","prepend-inner-icon":"mdi-clock-end"},{ref_for:!0},s,{variant:"outlined",onBlur:p=>u.updateEndDateTimeFromInput(d)}),{append:r(()=>[o(V,null,{default:r(()=>[...t[55]||(t[55]=[f("mdi-calendar-clock",-1)])]),_:1})]),_:1},16,["modelValue","onUpdate:modelValue","rules","onBlur"])]),default:r(()=>[o(q,{"min-width":"500"},{default:r(()=>[o(ee,{class:"text-center py-3 bg-error-lighten-5"},{default:r(()=>[o(V,{class:"mr-2",color:"error"},{default:r(()=>[...t[56]||(t[56]=[f("mdi-clock-end",-1)])]),_:1}),t[57]||(t[57]=f(" 选择结束时间 ",-1))]),_:1}),o(G,{class:"pa-0"},{default:r(()=>[o(ue,{"no-gutters":""},{default:r(()=>[o(B,{class:"border-e",cols:"6"},{default:r(()=>[o(Oe,{modelValue:a.endDate,"onUpdate:modelValue":[s=>a.endDate=s,s=>u.updateEndDateTime(d)],color:"error",elevation:"0",locale:"zh-cn","show-adjacent-months":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(B,{cols:"6"},{default:r(()=>[o(Je,{modelValue:a.endTime,"onUpdate:modelValue":[s=>a.endTime=s,s=>u.updateEndDateTime(d)],color:"error",elevation:"0",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),o(Te,null,{default:r(()=>[o(se),o(x,{color:"grey",variant:"text",onClick:s=>a.endDateMenu=!1},{default:r(()=>[...t[58]||(t[58]=[f(" 关闭 ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),o(B,{cols:"12",md:"2"},{default:r(()=>[o(te,{modelValue:a.durationMinutes,"onUpdate:modelValue":s=>a.durationMinutes=s,rules:[s=>!!s||"时长不能为空",s=>!isNaN(s)||"时长必须是数字",s=>parseInt(s)>0||"时长必须大于0",s=>parseInt(s)<=1440||"时长不能超过1440分钟(24小时)"],type:"number",min:"1",max:"1440",density:"comfortable",label:"时长(分钟)",placeholder:"例如:120","prepend-inner-icon":"mdi-timer",variant:"outlined",hint:u.durationHint(a),"persistent-hint":"",onBlur:s=>u.updateDurationFromInput(d)},null,8,["modelValue","onUpdate:modelValue","rules","hint","onBlur"])]),_:2},1024),l.enableCustomAlertTime?(w(),E(B,{key:0,cols:"12",md:"2"},{default:r(()=>[o(te,{modelValue:a.alertTime,"onUpdate:modelValue":s=>a.alertTime=s,rules:[s=>!!s||"提醒时间不能为空",s=>!isNaN(s)||"提醒时间必须是数字",s=>parseInt(s)>=0||"提醒时间不能为负数",s=>parseInt(s)<=120||"提醒时间不能超过120分钟"],type:"number",min:"0",max:"120",density:"comfortable",label:"提醒时间(分钟)",placeholder:"例如:15","prepend-inner-icon":"mdi-bell-ring",variant:"outlined",hint:"考试结束前提醒","persistent-hint":""},null,8,["modelValue","onUpdate:modelValue","rules"])]),_:2},1024)):U("",!0)]),_:2},1024)])]),_:2},1024))),128))]),_:1})):(w(),R("div",na,[o(V,{class:"mb-4",color:"grey-lighten-2",size:"80"},{default:r(()=>[...t[59]||(t[59]=[f(" mdi-calendar-blank ",-1)])]),_:1}),t[61]||(t[61]=g("div",{class:"text-h5 text-grey-darken-1 mb-2"},"暂无考试科目安排",-1)),t[62]||(t[62]=g("div",{class:"text-body-1 text-grey mb-4"},' 点击上方"添加科目"按钮开始配置 ',-1)),o(x,{color:"success","prepend-icon":"mdi-plus",size:"large",variant:"elevated",onClick:u.addExamInfo},{default:r(()=>[...t[60]||(t[60]=[f(" 立即添加科目 ",-1)])]),_:1},8,["onClick"])]))]),_:1})]),_:1})])):U("",!0),o(vt,{modelValue:l.deleteDialog,"onUpdate:modelValue":t[9]||(t[9]=a=>l.deleteDialog=a),"max-width":"400"},{default:r(()=>[o(q,null,{default:r(()=>[o(ee,{class:"d-flex align-center"},{default:r(()=>[o(V,{class:"mr-2",color:"error"},{default:r(()=>[...t[63]||(t[63]=[f("mdi-delete-alert",-1)])]),_:1}),t[64]||(t[64]=f(" 确认删除配置 ",-1))]),_:1}),o(G,null,{default:r(()=>[t[65]||(t[65]=f(" 确定要删除配置 ",-1)),g("strong",null,F(l.localConfig.examName||`配置 ${i.configId}`),1),t[66]||(t[66]=f(" 吗? ",-1)),t[67]||(t[67]=g("br",null,null,-1)),t[68]||(t[68]=g("small",{class:"text-grey"},"此操作不可撤销,将会删除所有相关数据",-1))]),_:1}),o(Te,null,{default:r(()=>[o(se),o(x,{color:"grey",variant:"text",onClick:t[8]||(t[8]=a=>l.deleteDialog=!1)},{default:r(()=>[...t[69]||(t[69]=[f(" 取消 ",-1)])]),_:1}),o(x,{loading:l.deleting,color:"error",variant:"outlined",onClick:u.deleteConfig},{default:r(()=>[...t[70]||(t[70]=[f(" 删除 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}const Na=dt(_t,[["render",la],["__scopeId","data-v-415c7c7f"]]);export{Na as default}; diff --git a/assets/ExamScheduleCard-D_oQZ_gl.js b/assets/ExamScheduleCard-D_oQZ_gl.js deleted file mode 100644 index 3a68c6d..0000000 --- a/assets/ExamScheduleCard-D_oQZ_gl.js +++ /dev/null @@ -1 +0,0 @@ -import{u as y}from"./index-D3RRUIYd.js";import{X as o,Y as f,Z as e,j as a,a1 as r,k as n,S as i,N as _,_ as d,F as h,$ as V,a2 as S,a6 as b,a7 as k}from"./vendor-vue-H0jQBZ7T.js";import{_ as v,c as I,h as c,o as w,l as C,d as T,V as E,j as L,k as N,s as j,t as z,L as B,e as D}from"./index-_6IQhlPZ.js";import{V as A}from"./VAlert-D9G_9owC.js";import"./dataProvider-BwUtbSl1.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-BGVL0kta.js";import"./VChip-Veb3ShEh.js";import"./vendor-vuetify-ChAgIwn2.js";import"./VContainer-Bg8RevuO.js";import"./socketClient-Cb2FghxN.js";import"./vendor-socket-CyTcV1HU.js";import"./deviceEvents-BnDFIf8a.js";import"./VAppBarTitle-Cvegbk0-.js";import"./VRow-WkEz3xRr.js";import"./VTooltip-C2Bprg_f.js";const F={name:"ExamScheduleCard",props:{examId:{type:String,required:!0},contentStyle:{type:Object,default:()=>({})}},computed:{...k(y,["exams","loadingDetails"]),exam(){return this.exams[this.examId]},loading(){return this.loadingDetails[this.examId]}},mounted(){this.fetchExam(this.examId)},methods:{...b(y,["fetchExam"]),formatTime(m){if(!m)return"";try{const t=new Date(m),u=(t.getMonth()+1).toString().padStart(2,"0"),x=t.getDate().toString().padStart(2,"0"),p=t.getHours().toString().padStart(2,"0"),s=t.getMinutes().toString().padStart(2,"0");return`${u}-${x} ${p}:${s}`}catch{return m}}}},M={class:"text-truncate"},$={key:0,class:"d-flex justify-center align-center fill-height",style:{"min-height":"200px"}},q={class:"d-flex align-center mb-1"},H={class:"font-weight-medium"},O={class:"d-flex align-center"},P={class:"font-weight-medium"},X={key:2,class:"d-flex flex-column align-center justify-center fill-height text-grey mt-4"};function Y(m,t,u,x,p,s){return o(),f(D,{class:"fill-height d-flex flex-column rounded-xl",elevation:"2"},{default:e(()=>[a(I,{class:"d-flex align-center py-3 px-4 bg-primary text-white"},{default:e(()=>{var l;return[a(c,{class:"mr-2"},{default:e(()=>[...t[1]||(t[1]=[r("mdi-calendar-clock",-1)])]),_:1}),n("span",M,i(((l=s.exam)==null?void 0:l.examName)||"加载中..."),1),a(w),a(C,{icon:"mdi-close",variant:"text",density:"comfortable",onClick:t[0]||(t[0]=g=>m.$emit("close"))})]}),_:1}),a(T,{class:"flex-grow-1 pa-4 overflow-y-auto",style:_(u.contentStyle)},{default:e(()=>[s.loading?(o(),d("div",$,[a(E,{indeterminate:"",color:"primary"})])):s.exam?(o(),d(h,{key:1},[s.exam.message?(o(),f(A,{key:0,color:"info",variant:"tonal",class:"mb-4 text-body-1",border:"start",density:"compact"},{default:e(()=>[r(i(s.exam.message),1)]),_:1})):V("",!0),a(L,{density:"comfortable",class:"pa-0 bg-transparent"},{default:e(()=>[(o(!0),d(h,null,S(s.exam.examInfos,(l,g)=>(o(),f(N,{key:g,class:"px-0 mb-3"},{prepend:e(()=>[a(B,{color:"primary",variant:"tonal",size:"large",class:"mr-3 font-weight-bold elevation-1"},{default:e(()=>[r(i(l.name.charAt(0)),1)]),_:2},1024)]),default:e(()=>[a(j,{class:"font-weight-bold text-h6 mb-1"},{default:e(()=>[r(i(l.name),1)]),_:2},1024),a(z,{class:"text-body-1"},{default:e(()=>[n("div",q,[a(c,{size:"small",color:"success",class:"mr-2"},{default:e(()=>[...t[2]||(t[2]=[r("mdi-clock-start",-1)])]),_:1}),n("span",H,i(s.formatTime(l.start)),1)]),n("div",O,[a(c,{size:"small",color:"error",class:"mr-2"},{default:e(()=>[...t[3]||(t[3]=[r("mdi-clock-end",-1)])]),_:1}),n("span",P,i(s.formatTime(l.end)),1)])]),_:2},1024)]),_:2},1024))),128))]),_:1})],64)):(o(),d("div",X,[a(c,{size:"large",class:"mb-2"},{default:e(()=>[...t[4]||(t[4]=[r("mdi-alert-circle-outline",-1)])]),_:1}),t[5]||(t[5]=r(" 无法加载考试信息 ",-1))]))]),_:1},8,["style"])]),_:1})}const mt=v(F,[["render",Y],["__scopeId","data-v-52dc8ca5"]]);export{mt as default}; diff --git a/assets/ExamScheduleCard-DihA5J10.js b/assets/ExamScheduleCard-DihA5J10.js new file mode 100644 index 0000000..f1a2f55 --- /dev/null +++ b/assets/ExamScheduleCard-DihA5J10.js @@ -0,0 +1 @@ +import{u as y}from"./index-B89AxD6u.js";import{X as o,Y as f,Z as e,j as a,a1 as r,k as n,S as i,N as _,_ as d,F as h,$ as V,a2 as S,a6 as b,a7 as k}from"./vendor-vue-B2vxubPy.js";import{_ as v,c as I,f as c,r as w,i as C,d as T,V as E,l as N,n as z,o as B,p as D,M as L,e as j}from"./index-CFUCTEXJ.js";import{V as A}from"./VAlert-DO0N7oM6.js";import"./dataProvider-bUkzKSNt.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-CdH9Xda8.js";import"./soundList-D9U-Grcp.js";import"./VTabs-D8mV99Hb.js";import"./VTabsWindowItem-CU31Uty7.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./VChip-DR8Ljy6R.js";import"./VSwitch-DKh_Uq_M.js";import"./VLabel-CU-8PdVS.js";import"./VContainer-RtoBp6rB.js";import"./socketClient-CkosNYrb.js";import"./vendor-socket-CyTcV1HU.js";import"./deviceEvents-BfEN8wCe.js";import"./VAppBarTitle-vVO0I21U.js";import"./VRow-Dw4j2TKL.js";import"./VTooltip-CbK3h4lM.js";const M={name:"ExamScheduleCard",props:{examId:{type:String,required:!0},contentStyle:{type:Object,default:()=>({})}},computed:{...k(y,["exams","loadingDetails"]),exam(){return this.exams[this.examId]},loading(){return this.loadingDetails[this.examId]}},mounted(){this.fetchExam(this.examId)},methods:{...b(y,["fetchExam"]),formatTime(m){if(!m)return"";try{const t=new Date(m),u=(t.getMonth()+1).toString().padStart(2,"0"),p=t.getDate().toString().padStart(2,"0"),x=t.getHours().toString().padStart(2,"0"),s=t.getMinutes().toString().padStart(2,"0");return`${u}-${p} ${x}:${s}`}catch{return m}}}},F={class:"text-truncate"},$={key:0,class:"d-flex justify-center align-center fill-height",style:{"min-height":"200px"}},q={class:"d-flex align-center mb-1"},H={class:"font-weight-medium"},O={class:"d-flex align-center"},P={class:"font-weight-medium"},X={key:2,class:"d-flex flex-column align-center justify-center fill-height text-grey mt-4"};function Y(m,t,u,p,x,s){return o(),f(j,{class:"fill-height d-flex flex-column rounded-xl",elevation:"2"},{default:e(()=>[a(I,{class:"d-flex align-center py-3 px-4 bg-primary text-white"},{default:e(()=>{var l;return[a(c,{class:"mr-2"},{default:e(()=>[...t[1]||(t[1]=[r("mdi-calendar-clock",-1)])]),_:1}),n("span",F,i(((l=s.exam)==null?void 0:l.examName)||"加载中..."),1),a(w),a(C,{icon:"mdi-close",variant:"text",density:"comfortable",onClick:t[0]||(t[0]=g=>m.$emit("close"))})]}),_:1}),a(T,{class:"flex-grow-1 pa-4 overflow-y-auto",style:_(u.contentStyle)},{default:e(()=>[s.loading?(o(),d("div",$,[a(E,{indeterminate:"",color:"primary"})])):s.exam?(o(),d(h,{key:1},[s.exam.message?(o(),f(A,{key:0,color:"info",variant:"tonal",class:"mb-4 text-body-1",border:"start",density:"compact"},{default:e(()=>[r(i(s.exam.message),1)]),_:1})):V("",!0),a(N,{density:"comfortable",class:"pa-0 bg-transparent"},{default:e(()=>[(o(!0),d(h,null,S(s.exam.examInfos,(l,g)=>(o(),f(z,{key:g,class:"px-0 mb-3"},{prepend:e(()=>[a(L,{color:"primary",variant:"tonal",size:"large",class:"mr-3 font-weight-bold elevation-1"},{default:e(()=>[r(i(l.name.charAt(0)),1)]),_:2},1024)]),default:e(()=>[a(B,{class:"font-weight-bold text-h6 mb-1"},{default:e(()=>[r(i(l.name),1)]),_:2},1024),a(D,{class:"text-body-1"},{default:e(()=>[n("div",q,[a(c,{size:"small",color:"success",class:"mr-2"},{default:e(()=>[...t[2]||(t[2]=[r("mdi-clock-start",-1)])]),_:1}),n("span",H,i(s.formatTime(l.start)),1)]),n("div",O,[a(c,{size:"small",color:"error",class:"mr-2"},{default:e(()=>[...t[3]||(t[3]=[r("mdi-clock-end",-1)])]),_:1}),n("span",P,i(s.formatTime(l.end)),1)])]),_:2},1024)]),_:2},1024))),128))]),_:1})],64)):(o(),d("div",X,[a(c,{size:"large",class:"mb-2"},{default:e(()=>[...t[4]||(t[4]=[r("mdi-alert-circle-outline",-1)])]),_:1}),t[5]||(t[5]=r(" 无法加载考试信息 ",-1))]))]),_:1},8,["style"])]),_:1})}const ft=v(M,[["render",Y],["__scopeId","data-v-52dc8ca5"]]);export{ft as default}; diff --git a/assets/FloatingToolbar-Bt36S1fG.js b/assets/FloatingToolbar-Bt36S1fG.js new file mode 100644 index 0000000..09721ae --- /dev/null +++ b/assets/FloatingToolbar-Bt36S1fG.js @@ -0,0 +1 @@ +import{_ as v,e as m,x as b,i as n,al as r,j as y,az as g}from"./index-CFUCTEXJ.js";import{V as k}from"./VSheet-B8D7XEg5.js";import{V as x}from"./VDatePicker-BWfVQdXc.js";import{X as s,_ as T,j as t,Z as o,n as V,R as d,m as C,Y as u,$ as c,a1 as $}from"./vendor-vue-B2vxubPy.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./VBadge-C7i5WU2T.js";const B={name:"FloatingToolbar",props:{loading:{type:Boolean,default:!1},unreadCount:{type:Number,default:0},selectedDate:{type:[String,Date],required:!0},isToday:{type:Boolean,required:!0},copyToTodayLoading:{type:Boolean,default:!1}},data(){return{isExpanded:!1}},methods:{handleDateSelect(a){this.$emit("date-select",a)}}},z={class:"floating-toolbar-container"};function D(a,e,i,S,f,p){return s(),T("div",z,[t(y,null,{default:o(()=>[t(m,{class:V([{"toolbar-expanded":f.isExpanded},"floating-toolbar"]),elevation:"4",rounded:"xl"},{default:o(()=>[t(b,{class:"toolbar-buttons",variant:"text"},{default:o(()=>[d(t(n,{title:"查看昨天",class:"toolbar-btn",icon:"mdi-chevron-left",variant:"text",onClick:e[0]||(e[0]=l=>a.$emit("prev-day"))},null,512),[[r]]),d(t(n,{title:"缩小字体",class:"toolbar-btn",icon:"mdi-format-font-size-decrease",variant:"text",onClick:e[1]||(e[1]=l=>a.$emit("zoom","out"))},null,512),[[r]]),d(t(n,{title:"放大字体",class:"toolbar-btn",icon:"mdi-format-font-size-increase",variant:"text",onClick:e[2]||(e[2]=l=>a.$emit("zoom","up"))},null,512),[[r]]),t(k,{"close-on-content-click":!1,location:"top"},{activator:o(({props:l})=>[d(t(n,C({title:"选择日期",class:"toolbar-btn",icon:"mdi-calendar"},l,{variant:"text"}),null,16),[[r]])]),default:o(()=>[t(m,{border:"",class:"date-picker-card"},{default:o(()=>[t(x,{"model-value":i.selectedDate,color:"primary","onUpdate:modelValue":p.handleDateSelect},null,8,["model-value","onUpdate:modelValue"])]),_:1})]),_:1}),d(t(n,{loading:i.loading,title:"刷新数据",class:"toolbar-btn",icon:"mdi-refresh",variant:"text",onClick:e[3]||(e[3]=l=>a.$emit("refresh"))},null,8,["loading"]),[[r]]),i.isToday?c("",!0):d((s(),u(n,{key:0,title:"查看明天",class:"toolbar-btn",icon:"mdi-chevron-right",variant:"text",onClick:e[4]||(e[4]=l=>a.$emit("next-day"))},null,512)),[[r]])]),_:1})]),_:1},8,["class"])]),_:1}),t(g,null,{default:o(()=>[i.isToday?c("",!0):(s(),u(n,{key:0,loading:i.copyToTodayLoading,disabled:i.copyToTodayLoading,class:"side-action-btn",color:"primary",elevation:"4","prepend-icon":"mdi-content-copy",rounded:"xl",size:"large",text:"复制作业内容到今天",onClick:e[5]||(e[5]=l=>a.$emit("copy-to-today"))},{default:o(()=>[...e[6]||(e[6]=[$("复制到今天",-1)])]),_:1},8,["loading","disabled"]))]),_:1})])}const w=v(B,[["render",D],["__scopeId","data-v-7076d3aa"]]);export{w as default}; diff --git a/assets/FloatingToolbar-Hmj4Cwyb.js b/assets/FloatingToolbar-Hmj4Cwyb.js deleted file mode 100644 index 7b53072..0000000 --- a/assets/FloatingToolbar-Hmj4Cwyb.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as v,e as m,n as b,l as n,am as r,aw as y,ax as g}from"./index-_6IQhlPZ.js";import{V as k}from"./VSheet-U4CNWLuy.js";import{V as x}from"./VDatePicker-cLZU-Ed4.js";import{X as s,_ as T,j as t,Z as o,n as V,R as d,m as C,Y as u,$ as c,a1 as $}from"./vendor-vue-H0jQBZ7T.js";import"./vendor-vuetify-ChAgIwn2.js";import"./VBadge-VwKD9DDf.js";const B={name:"FloatingToolbar",props:{loading:{type:Boolean,default:!1},unreadCount:{type:Number,default:0},selectedDate:{type:[String,Date],required:!0},isToday:{type:Boolean,required:!0},copyToTodayLoading:{type:Boolean,default:!1}},data(){return{isExpanded:!1}},methods:{handleDateSelect(a){this.$emit("date-select",a)}}},D={class:"floating-toolbar-container"};function z(a,e,i,S,f,p){return s(),T("div",D,[t(y,null,{default:o(()=>[t(m,{class:V([{"toolbar-expanded":f.isExpanded},"floating-toolbar"]),elevation:"4",rounded:"xl"},{default:o(()=>[t(b,{class:"toolbar-buttons",variant:"text"},{default:o(()=>[d(t(n,{title:"查看昨天",class:"toolbar-btn",icon:"mdi-chevron-left",variant:"text",onClick:e[0]||(e[0]=l=>a.$emit("prev-day"))},null,512),[[r]]),d(t(n,{title:"缩小字体",class:"toolbar-btn",icon:"mdi-format-font-size-decrease",variant:"text",onClick:e[1]||(e[1]=l=>a.$emit("zoom","out"))},null,512),[[r]]),d(t(n,{title:"放大字体",class:"toolbar-btn",icon:"mdi-format-font-size-increase",variant:"text",onClick:e[2]||(e[2]=l=>a.$emit("zoom","up"))},null,512),[[r]]),t(k,{"close-on-content-click":!1,location:"top"},{activator:o(({props:l})=>[d(t(n,C({title:"选择日期",class:"toolbar-btn",icon:"mdi-calendar"},l,{variant:"text"}),null,16),[[r]])]),default:o(()=>[t(m,{border:"",class:"date-picker-card"},{default:o(()=>[t(x,{"model-value":i.selectedDate,color:"primary","onUpdate:modelValue":p.handleDateSelect},null,8,["model-value","onUpdate:modelValue"])]),_:1})]),_:1}),d(t(n,{loading:i.loading,title:"刷新数据",class:"toolbar-btn",icon:"mdi-refresh",variant:"text",onClick:e[3]||(e[3]=l=>a.$emit("refresh"))},null,8,["loading"]),[[r]]),i.isToday?c("",!0):d((s(),u(n,{key:0,title:"查看明天",class:"toolbar-btn",icon:"mdi-chevron-right",variant:"text",onClick:e[4]||(e[4]=l=>a.$emit("next-day"))},null,512)),[[r]])]),_:1})]),_:1},8,["class"])]),_:1}),t(g,null,{default:o(()=>[i.isToday?c("",!0):(s(),u(n,{key:0,loading:i.copyToTodayLoading,disabled:i.copyToTodayLoading,class:"side-action-btn",color:"primary",elevation:"4","prepend-icon":"mdi-content-copy",rounded:"xl",size:"large",text:"复制作业内容到今天",onClick:e[5]||(e[5]=l=>a.$emit("copy-to-today"))},{default:o(()=>[...e[6]||(e[6]=[$("复制到今天",-1)])]),_:1},8,["loading","disabled"]))]),_:1})])}const F=v(B,[["render",z],["__scopeId","data-v-7076d3aa"]]);export{F as default}; diff --git a/assets/HomeworkEditDialog-CzJk0Rhv.js b/assets/HomeworkEditDialog-Dv5JY-LA.js similarity index 71% rename from assets/HomeworkEditDialog-CzJk0Rhv.js rename to assets/HomeworkEditDialog-Dv5JY-LA.js index aa890fc..74370e8 100644 --- a/assets/HomeworkEditDialog-CzJk0Rhv.js +++ b/assets/HomeworkEditDialog-Dv5JY-LA.js @@ -1,9 +1,9 @@ -import{d as L}from"./dataProvider-BwUtbSl1.js";import{_ as V,e as w,c as D,o as B,l as C,J as T,d as P,p as R,g as _}from"./index-_6IQhlPZ.js";import{V as j}from"./VTextarea-CCCqy4pz.js";import{V as x}from"./VChip-Veb3ShEh.js";import{V as E}from"./VAlert-D9G_9owC.js";import{X as o,Y as y,Z as c,j as d,a1 as h,S as k,k as f,_ as u,F as v,a2 as S,$ as g}from"./vendor-vue-H0jQBZ7T.js";import{a0 as q}from"./vendor-vuetify-ChAgIwn2.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-BGVL0kta.js";import"./autofocus-BrMOVHY_.js";const A={name:"HomeworkEditDialog",props:{modelValue:{type:Boolean,required:!0},title:{type:String,required:!0},initialContent:{type:String,default:""},autoSave:{type:Boolean,default:!1},isEditingPastData:{type:Boolean,default:!1},currentDateString:{type:String,default:""}},emits:["update:modelValue","save"],setup(){const{mobile:n}=q();return{mobile:n}},data(){return{content:"",templateData:null,currentLine:"",currentLineStart:0,currentLineEnd:0,quickTexts:["课","题","例","变","T","P"]}},computed:{isMobile(){return _("display.forceDesktopMode")?!1:this.mobile},dialogVisible:{get(){return this.modelValue},set(n){this.$emit("update:modelValue",n)}},subject(){return this.title},hasTemplates(){var n,t;return!!((t=(n=this.templateData)==null?void 0:n.actions)!=null&&t.length||this.subjectBooks||this.commonBooks)},subjectBooks(){var n,t,s;return!this.subject||!((s=(t=(n=this.templateData)==null?void 0:n.subjects)==null?void 0:t[this.subject])!=null&&s.books)?null:this.templateData.subjects[this.subject].books},commonBooks(){var n,t;return(t=(n=this.templateData)==null?void 0:n.commonSubject)!=null&&t.books?this.templateData.commonSubject.books:null},showQuickTools(){return _("display.showQuickTools")},autoSavePromptText(){return _("edit.autoSavePromptText")},manualSavePromptText(){return _("edit.manualSavePromptText")}},watch:{async modelValue(n){if(n){this.content=this.initialContent;try{this.templateData=await L.loadData("classworks-config-homework-template")}catch(t){console.error("Failed to load homework templates:",t),this.templateData=null}this.$nextTick(()=>{this.$refs.inputRef&&(this.$refs.inputRef.focus(),this.updateCurrentLine())})}}},methods:{handleClose(){const n=this.content.trim();n!==this.initialContent.trim()&&this.$emit("save",n),this.dialogVisible=!1},updateCurrentLine(){const t=this.$refs.inputRef.$el.querySelector("textarea").selectionStart,s=this.content;let a=0;const i=s.split(` +import{d as L}from"./dataProvider-bUkzKSNt.js";import{_ as V,e as w,c as D,r as B,i as C,E as T,d as P,k as R,g as _}from"./index-CFUCTEXJ.js";import{V as j}from"./VTextarea-BxmmuONa.js";import{V as x}from"./VChip-DR8Ljy6R.js";import{V as E}from"./VAlert-DO0N7oM6.js";import{X as o,Y as y,Z as c,j as d,a1 as h,S as k,k as f,_ as u,F as v,a2 as S,$ as g}from"./vendor-vue-B2vxubPy.js";import{a0 as q}from"./vendor-vuetify-s-yw_Hr8.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-CdH9Xda8.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";const A={name:"HomeworkEditDialog",props:{modelValue:{type:Boolean,required:!0},title:{type:String,required:!0},initialContent:{type:String,default:""},autoSave:{type:Boolean,default:!1},isEditingPastData:{type:Boolean,default:!1},currentDateString:{type:String,default:""}},emits:["update:modelValue","save"],setup(){const{mobile:n}=q();return{mobile:n}},data(){return{content:"",templateData:null,currentLine:"",currentLineStart:0,currentLineEnd:0,quickTexts:["课","题","例","变","T","P"]}},computed:{isMobile(){return _("display.forceDesktopMode")?!1:this.mobile},dialogVisible:{get(){return this.modelValue},set(n){this.$emit("update:modelValue",n)}},subject(){return this.title},hasTemplates(){var n,t;return!!((t=(n=this.templateData)==null?void 0:n.actions)!=null&&t.length||this.subjectBooks||this.commonBooks)},subjectBooks(){var n,t,s;return!this.subject||!((s=(t=(n=this.templateData)==null?void 0:n.subjects)==null?void 0:t[this.subject])!=null&&s.books)?null:this.templateData.subjects[this.subject].books},commonBooks(){var n,t;return(t=(n=this.templateData)==null?void 0:n.commonSubject)!=null&&t.books?this.templateData.commonSubject.books:null},showQuickTools(){return _("display.showQuickTools")},autoSavePromptText(){return _("edit.autoSavePromptText")},manualSavePromptText(){return _("edit.manualSavePromptText")}},watch:{async modelValue(n){if(n){this.content=this.initialContent;try{this.templateData=await L.loadData("classworks-config-homework-template")}catch(t){console.error("Failed to load homework templates:",t),this.templateData=null}this.$nextTick(()=>{this.$refs.inputRef&&(this.$refs.inputRef.focus(),this.updateCurrentLine())})}}},methods:{handleClose(){const n=this.content.trim();n!==this.initialContent.trim()&&this.$emit("save",n),this.dialogVisible=!1},updateCurrentLine(){const t=this.$refs.inputRef.$el.querySelector("textarea").selectionStart,s=this.content;let a=0;const i=s.split(` `);for(let e=0;ea.includes(n));s!==-1&&(t.splice(s,1),this.content=t.join(` `))}else{const t=this.content.trim().length>0;this.content=(t?this.content.trim()+` `:"")+n}this.$nextTick(()=>{const t=this.$refs.inputRef.$el.querySelector("textarea");if(t.focus(),!this.isBookSelected(n)){const s=this.content.split(` `);let a=0;for(let i=0;i0?" ":"")+t+this.content.slice(a)}this.$nextTick(()=>{const s=this.$refs.inputRef.$el.querySelector("textarea");s.focus();const a=this.content.split(` `);let i=0;for(let e=0;ethis.currentLineStart));e++)i+=1;s.setSelectionRange(i,i),this.updateCurrentLine()})},insertTemplate(n){const t=this.$refs.inputRef.$el.querySelector("textarea"),s=t.selectionStart,a=t.selectionEnd,i=s>0&&this.content[s-1]!==" "&&this.content[s-1]!==` -`;this.content=this.content.slice(0,s)+(i?" ":"")+n+this.content.slice(a),this.$nextTick(()=>{t.focus();const e=s+n.length+(i?1:0);t.setSelectionRange(e,e),this.updateCurrentLine()})},insertAtCursor(n){if(!n)return;const t=this.$refs.inputRef.$el.querySelector("textarea"),s=t.selectionStart,a=t.selectionEnd;this.content=this.content.slice(0,s)+n+this.content.slice(a),this.$nextTick(()=>{t.focus();const i=s+n.length;t.setSelectionRange(i,i),this.updateCurrentLine()})},deleteLastChar(){const n=this.$refs.inputRef.$el.querySelector("textarea"),t=n.selectionStart,s=n.selectionEnd;t===s?t>0&&(this.content=this.content.slice(0,t-1)+this.content.slice(t),this.$nextTick(()=>{n.focus(),n.setSelectionRange(t-1,t-1),this.updateCurrentLine()})):(this.content=this.content.slice(0,t)+this.content.slice(s),this.$nextTick(()=>{n.focus(),n.setSelectionRange(t,t),this.updateCurrentLine()}))}}},z={class:"d-flex"},M={class:"flex-grow-1"},I={key:0,class:"mt-4"},N={key:0,class:"template-buttons"},F={key:0,class:"pages-container mt-2"},Q={key:0,class:"pages-container mt-2"},H={key:2,class:"button-group"},K={key:1,class:"text-center text-body-2 text-disabled mt-2"},U={key:0,class:"quick-tools ml-4",style:{"min-width":"180px"}},J={class:"numeric-keypad mb-4"},O={class:"keypad-row"},X={class:"keypad-row"},Y={class:"keypad-row"},Z={class:"keypad-row"},G={class:"keypad-row"},W={class:"d-flex flex-wrap gap-1"},$={class:"d-flex flex-column"},tt={class:"text-body-2"};function et(n,t,s,a,i,e){return o(),y(R,{modelValue:e.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=p=>e.dialogVisible=p),fullscreen:e.isMobile,"max-width":"900",width:"auto","onClick:outside":e.handleClose},{default:c(()=>[d(w,{border:""},{default:c(()=>[d(D,{class:"d-flex align-center"},{default:c(()=>[h(k(s.title)+" ",1),d(B),d(C,{icon:"mdi-close",variant:"text",onClick:e.handleClose},null,8,["onClick"])]),_:1}),d(T,null,{default:c(()=>[h(k(s.autoSave?e.autoSavePromptText:e.manualSavePromptText),1)]),_:1}),d(P,null,{default:c(()=>{var p;return[f("div",z,[f("div",M,[d(j,{ref:"inputRef",modelValue:i.content,"onUpdate:modelValue":t[0]||(t[0]=l=>i.content=l),"auto-grow":"",placeholder:"使用换行表示分条",rows:"5",width:e.isMobile?"100%":"480",onClick:e.updateCurrentLine,onKeyup:e.updateCurrentLine},null,8,["modelValue","width","onClick","onKeyup"]),i.templateData?(o(),u("div",I,[e.hasTemplates?(o(),u("div",N,[e.subjectBooks?(o(!0),u(v,{key:0},S(e.subjectBooks,(l,r)=>(o(),u("div",{key:r,class:"button-group"},[d(x,{color:e.isBookSelected(r)?"success":"default",variant:e.isBookSelected(r)?"elevated":"flat",class:"ma-1 book-chip",onClick:m=>e.handleBookClick(r)},{default:c(()=>[h(k(r),1)]),_:2},1032,["color","variant","onClick"]),e.isBookSelected(r)?(o(),u("div",F,[(o(!0),u(v,null,S(l,m=>(o(),y(x,{key:m,color:e.isPageSelected(r,m)?"info":"default",variant:e.isPageSelected(r,m)?"elevated":"flat",class:"ma-1",onClick:b=>e.handlePageClick(r,m)},{default:c(()=>[h(k(m),1)]),_:2},1032,["color","variant","onClick"]))),128))])):g("",!0)]))),128)):g("",!0),e.commonBooks?(o(!0),u(v,{key:1},S(e.commonBooks,(l,r)=>(o(),u("div",{key:r,class:"button-group"},[d(x,{color:e.isBookSelected(r)?"success":"default",variant:e.isBookSelected(r)?"elevated":"flat",class:"ma-1 book-chip",onClick:m=>e.handleBookClick(r)},{default:c(()=>[h(k(r),1)]),_:2},1032,["color","variant","onClick"]),e.isBookSelected(r)?(o(),u("div",Q,[(o(!0),u(v,null,S(l,m=>(o(),y(x,{key:m,color:e.isPageSelected(r,m)?"info":"default",variant:e.isPageSelected(r,m)?"elevated":"flat",class:"ma-1",onClick:b=>e.handlePageClick(r,m)},{default:c(()=>[h(k(m),1)]),_:2},1032,["color","variant","onClick"]))),128))])):g("",!0)]))),128)):g("",!0),(p=i.templateData.actions)!=null&&p.length?(o(),u("div",H,[(o(!0),u(v,null,S(i.templateData.actions,l=>(o(),y(x,{key:l,class:"ma-1",color:"primary",variant:"flat",onClick:r=>e.insertTemplate(l)},{default:c(()=>[h(k(l),1)]),_:2},1032,["onClick"]))),128))])):g("",!0)])):(o(),u("div",K," 暂无可用的模板 "))])):g("",!0)]),e.showQuickTools&&!e.isMobile?(o(),u("div",U,[f("div",J,[f("div",O,[(o(),u(v,null,S(3,l=>d(C,{key:l,class:"keypad-btn",size:"small",variant:"tonal",onClick:r=>e.insertAtCursor(String(l))},{default:c(()=>[h(k(l),1)]),_:2},1032,["onClick"])),64))]),f("div",X,[(o(),u(v,null,S(3,l=>d(C,{key:l,class:"keypad-btn",size:"small",variant:"tonal",onClick:r=>e.insertAtCursor(String(l+3))},{default:c(()=>[h(k(l+3),1)]),_:2},1032,["onClick"])),64))]),f("div",Y,[(o(),u(v,null,S(3,l=>d(C,{key:l,class:"keypad-btn",size:"small",variant:"tonal",onClick:r=>e.insertAtCursor(String(l+6))},{default:c(()=>[h(k(l+6),1)]),_:2},1032,["onClick"])),64))]),f("div",Z,[d(C,{class:"keypad-btn",size:"small",variant:"tonal",onClick:t[1]||(t[1]=l=>e.insertAtCursor("-"))},{default:c(()=>[...t[6]||(t[6]=[h(" - ",-1)])]),_:1}),d(C,{class:"keypad-btn",size:"small",variant:"tonal",onClick:t[2]||(t[2]=l=>e.insertAtCursor("0"))},{default:c(()=>[...t[7]||(t[7]=[h(" 0 ",-1)])]),_:1}),d(C,{class:"keypad-btn",color:"error",size:"small",variant:"tonal",onClick:e.deleteLastChar},{default:c(()=>[...t[8]||(t[8]=[h(" ← ",-1)])]),_:1},8,["onClick"])]),f("div",G,[d(C,{class:"keypad-btn space-btn",size:"small",variant:"tonal",onClick:t[3]||(t[3]=l=>e.insertAtCursor(" "))},{default:c(()=>[...t[9]||(t[9]=[h(" 空格 ",-1)])]),_:1}),d(C,{class:"keypad-btn space-btn",size:"small",variant:"tonal",onClick:t[4]||(t[4]=l=>e.insertAtCursor(` -`))},{default:c(()=>[...t[10]||(t[10]=[h(" 换行 ",-1)])]),_:1})])]),f("div",W,[(o(!0),u(v,null,S(i.quickTexts,l=>(o(),y(C,{key:l,size:"small",variant:"flat",onClick:r=>e.insertAtCursor(l)},{default:c(()=>[h(k(l),1)]),_:2},1032,["onClick"]))),128))])])):g("",!0)])]}),_:1}),s.isEditingPastData?(o(),y(E,{key:0,type:"warning",variant:"tonal",class:"mx-4 mb-4",border:"start","border-color":"warning",prominent:""},{prepend:c(()=>[...t[11]||(t[11]=[])]),default:c(()=>[f("div",$,[t[12]||(t[12]=f("div",{class:"text-h6 mb-1"},"你打算修改历史?",-1)),f("div",tt," 这是 "+k(new Date(s.currentDateString.slice(0,4),s.currentDateString.slice(4,6)-1,s.currentDateString.slice(6,8)).toLocaleDateString())+" 的作业 • 请谨慎操作,确保不会覆盖重要数据 ",1)])]),_:1})):g("",!0),t[13]||(t[13]=f("div",{class:"text-center text-body-2 text-disabled mb-5"}," 点击空白处完成编辑 ",-1))]),_:1})]),_:1},8,["modelValue","fullscreen","onClick:outside"])}const ht=V(A,[["render",et],["__scopeId","data-v-af72d8a9"]]);export{ht as default}; +`;this.content=this.content.slice(0,s)+(i?" ":"")+n+this.content.slice(a),this.$nextTick(()=>{t.focus();const e=s+n.length+(i?1:0);t.setSelectionRange(e,e),this.updateCurrentLine()})},insertAtCursor(n){if(!n)return;const t=this.$refs.inputRef.$el.querySelector("textarea"),s=t.selectionStart,a=t.selectionEnd;this.content=this.content.slice(0,s)+n+this.content.slice(a),this.$nextTick(()=>{t.focus();const i=s+n.length;t.setSelectionRange(i,i),this.updateCurrentLine()})},deleteLastChar(){const n=this.$refs.inputRef.$el.querySelector("textarea"),t=n.selectionStart,s=n.selectionEnd;t===s?t>0&&(this.content=this.content.slice(0,t-1)+this.content.slice(t),this.$nextTick(()=>{n.focus(),n.setSelectionRange(t-1,t-1),this.updateCurrentLine()})):(this.content=this.content.slice(0,t)+this.content.slice(s),this.$nextTick(()=>{n.focus(),n.setSelectionRange(t,t),this.updateCurrentLine()}))}}},z={class:"d-flex"},M={class:"flex-grow-1"},I={key:0,class:"mt-4"},N={key:0,class:"template-buttons"},F={key:0,class:"pages-container mt-2"},Q={key:0,class:"pages-container mt-2"},H={key:2,class:"button-group"},K={key:1,class:"text-center text-body-2 text-disabled mt-2"},U={key:0,class:"quick-tools ml-4",style:{"min-width":"180px"}},O={class:"numeric-keypad mb-4"},X={class:"keypad-row"},Y={class:"keypad-row"},Z={class:"keypad-row"},G={class:"keypad-row"},J={class:"keypad-row"},W={class:"d-flex flex-wrap gap-1"},$={class:"d-flex flex-column"},tt={class:"text-body-2"};function et(n,t,s,a,i,e){return o(),y(R,{modelValue:e.dialogVisible,"onUpdate:modelValue":t[5]||(t[5]=p=>e.dialogVisible=p),fullscreen:e.isMobile,"max-width":"900",width:"auto","onClick:outside":e.handleClose},{default:c(()=>[d(w,{border:""},{default:c(()=>[d(D,{class:"d-flex align-center"},{default:c(()=>[h(k(s.title)+" ",1),d(B),d(C,{icon:"mdi-close",variant:"text",onClick:e.handleClose},null,8,["onClick"])]),_:1}),d(T,null,{default:c(()=>[h(k(s.autoSave?e.autoSavePromptText:e.manualSavePromptText),1)]),_:1}),d(P,null,{default:c(()=>{var p;return[f("div",z,[f("div",M,[d(j,{ref:"inputRef",modelValue:i.content,"onUpdate:modelValue":t[0]||(t[0]=l=>i.content=l),"auto-grow":"",placeholder:"使用换行表示分条",rows:"5",width:e.isMobile?"100%":"480",onClick:e.updateCurrentLine,onKeyup:e.updateCurrentLine},null,8,["modelValue","width","onClick","onKeyup"]),i.templateData?(o(),u("div",I,[e.hasTemplates?(o(),u("div",N,[e.subjectBooks?(o(!0),u(v,{key:0},S(e.subjectBooks,(l,r)=>(o(),u("div",{key:r,class:"button-group"},[d(x,{color:e.isBookSelected(r)?"success":"default",variant:e.isBookSelected(r)?"elevated":"flat",class:"ma-1 book-chip",onClick:m=>e.handleBookClick(r)},{default:c(()=>[h(k(r),1)]),_:2},1032,["color","variant","onClick"]),e.isBookSelected(r)?(o(),u("div",F,[(o(!0),u(v,null,S(l,m=>(o(),y(x,{key:m,color:e.isPageSelected(r,m)?"info":"default",variant:e.isPageSelected(r,m)?"elevated":"flat",class:"ma-1",onClick:b=>e.handlePageClick(r,m)},{default:c(()=>[h(k(m),1)]),_:2},1032,["color","variant","onClick"]))),128))])):g("",!0)]))),128)):g("",!0),e.commonBooks?(o(!0),u(v,{key:1},S(e.commonBooks,(l,r)=>(o(),u("div",{key:r,class:"button-group"},[d(x,{color:e.isBookSelected(r)?"success":"default",variant:e.isBookSelected(r)?"elevated":"flat",class:"ma-1 book-chip",onClick:m=>e.handleBookClick(r)},{default:c(()=>[h(k(r),1)]),_:2},1032,["color","variant","onClick"]),e.isBookSelected(r)?(o(),u("div",Q,[(o(!0),u(v,null,S(l,m=>(o(),y(x,{key:m,color:e.isPageSelected(r,m)?"info":"default",variant:e.isPageSelected(r,m)?"elevated":"flat",class:"ma-1",onClick:b=>e.handlePageClick(r,m)},{default:c(()=>[h(k(m),1)]),_:2},1032,["color","variant","onClick"]))),128))])):g("",!0)]))),128)):g("",!0),(p=i.templateData.actions)!=null&&p.length?(o(),u("div",H,[(o(!0),u(v,null,S(i.templateData.actions,l=>(o(),y(x,{key:l,class:"ma-1",color:"primary",variant:"flat",onClick:r=>e.insertTemplate(l)},{default:c(()=>[h(k(l),1)]),_:2},1032,["onClick"]))),128))])):g("",!0)])):(o(),u("div",K," 暂无可用的模板 "))])):g("",!0)]),e.showQuickTools&&!e.isMobile?(o(),u("div",U,[f("div",O,[f("div",X,[(o(),u(v,null,S(3,l=>d(C,{key:l,class:"keypad-btn",size:"small",variant:"tonal",onClick:r=>e.insertAtCursor(String(l))},{default:c(()=>[h(k(l),1)]),_:2},1032,["onClick"])),64))]),f("div",Y,[(o(),u(v,null,S(3,l=>d(C,{key:l,class:"keypad-btn",size:"small",variant:"tonal",onClick:r=>e.insertAtCursor(String(l+3))},{default:c(()=>[h(k(l+3),1)]),_:2},1032,["onClick"])),64))]),f("div",Z,[(o(),u(v,null,S(3,l=>d(C,{key:l,class:"keypad-btn",size:"small",variant:"tonal",onClick:r=>e.insertAtCursor(String(l+6))},{default:c(()=>[h(k(l+6),1)]),_:2},1032,["onClick"])),64))]),f("div",G,[d(C,{class:"keypad-btn",size:"small",variant:"tonal",onClick:t[1]||(t[1]=l=>e.insertAtCursor("-"))},{default:c(()=>[...t[6]||(t[6]=[h(" - ",-1)])]),_:1}),d(C,{class:"keypad-btn",size:"small",variant:"tonal",onClick:t[2]||(t[2]=l=>e.insertAtCursor("0"))},{default:c(()=>[...t[7]||(t[7]=[h(" 0 ",-1)])]),_:1}),d(C,{class:"keypad-btn",color:"error",size:"small",variant:"tonal",onClick:e.deleteLastChar},{default:c(()=>[...t[8]||(t[8]=[h(" ← ",-1)])]),_:1},8,["onClick"])]),f("div",J,[d(C,{class:"keypad-btn space-btn",size:"small",variant:"tonal",onClick:t[3]||(t[3]=l=>e.insertAtCursor(" "))},{default:c(()=>[...t[9]||(t[9]=[h(" 空格 ",-1)])]),_:1}),d(C,{class:"keypad-btn space-btn",size:"small",variant:"tonal",onClick:t[4]||(t[4]=l=>e.insertAtCursor(` +`))},{default:c(()=>[...t[10]||(t[10]=[h(" 换行 ",-1)])]),_:1})])]),f("div",W,[(o(!0),u(v,null,S(i.quickTexts,l=>(o(),y(C,{key:l,size:"small",variant:"flat",onClick:r=>e.insertAtCursor(l)},{default:c(()=>[h(k(l),1)]),_:2},1032,["onClick"]))),128))])])):g("",!0)])]}),_:1}),s.isEditingPastData?(o(),y(E,{key:0,type:"warning",variant:"tonal",class:"mx-4 mb-4",border:"start","border-color":"warning",prominent:""},{prepend:c(()=>[...t[11]||(t[11]=[])]),default:c(()=>[f("div",$,[t[12]||(t[12]=f("div",{class:"text-h6 mb-1"},"你打算修改历史?",-1)),f("div",tt," 这是 "+k(new Date(s.currentDateString.slice(0,4),s.currentDateString.slice(4,6)-1,s.currentDateString.slice(6,8)).toLocaleDateString())+" 的作业 • 请谨慎操作,确保不会覆盖重要数据 ",1)])]),_:1})):g("",!0),t[13]||(t[13]=f("div",{class:"text-center text-body-2 text-disabled mb-5"}," 点击空白处完成编辑 ",-1))]),_:1})]),_:1},8,["modelValue","fullscreen","onClick:outside"])}const mt=V(A,[["render",et],["__scopeId","data-v-af72d8a9"]]);export{mt as default}; diff --git a/assets/InitServiceChooser-DBAmZLOu.js b/assets/InitServiceChooser-DBAmZLOu.js deleted file mode 100644 index 2f2ae0f..0000000 --- a/assets/InitServiceChooser-DBAmZLOu.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as ie,g as A,v as F,d as W,h as g,e as y,q as P,l as k,o as ee,c as be,B as ue,L as xe,N as M,p as Y}from"./index-_6IQhlPZ.js";import{a as Q}from"./dataProvider-BwUtbSl1.js";import{V as ne}from"./VTextField-CuXGbmmC.js";import{V as re}from"./VAlert-D9G_9owC.js";import{o as ge,X as f,Y as z,Z as s,j as l,k as t,a1 as a,S as T,$,b as x,R as O,V as L,u as G,_ as j,F as we,a2 as ye,e as N,D as Ce}from"./vendor-vue-H0jQBZ7T.js";import{V as Ve}from"./VTextarea-CCCqy4pz.js";import{V as ve}from"./VChip-Veb3ShEh.js";import{V as $e,a as me,b as ce,c as pe}from"./VExpansionPanels-rcXmB3Pp.js";import{V as ze,a as fe}from"./VRow-WkEz3xRr.js";import{v as Se}from"./vendor-utils-DDRLRfsI.js";import"./vendor-vuetify-ChAgIwn2.js";import"./serverRotation-BGVL0kta.js";import"./autofocus-BrMOVHY_.js";const De={class:"text-center mb-6"},Te={class:"text-body-2"},_e={class:"form-section"},Ie={__name:"DeviceAuthDialog",props:{showCancel:{type:Boolean,default:!1},preconfig:{type:Object,default:null}},emits:["success","cancel"],setup(K,{expose:h,emit:C}){const V=K,r=C,c=x({namespace:"",password:""}),n=x(!1),d=x("");ge(()=>V.preconfig,u=>{u&&(console.log("应用预配置数据:",u),c.value.namespace=u.namespace||"",c.value.password=u.password||"",u.autoExecute&&u.namespace?(console.log("检测到自动执行标志且有命名空间,自动执行认证"),setTimeout(()=>{p()},300)):u.namespace&&console.log("预配置数据已填入,等待手动认证"))},{immediate:!0,deep:!0});const p=async()=>{var u,i,v,D,R;if(!(!c.value.namespace||n.value)){d.value="",n.value=!0;try{const w=A("server.domain");if(!w)throw new Error("未配置服务器域名");const U=await Q.post(`${w}/apps/auth/token`,{namespace:c.value.namespace,password:c.value.password||void 0,appId:"d158067f53627d2b98babe8bffd2fd7d"});if(!U.data.success)throw new Error("设备验证失败");const E=U.data;F("server.kvToken",E.token),(u=E.device)!=null&&u.uuid&&F("device.uuid",E.device.uuid),r("success",E)}catch(w){const U=(i=w==null?void 0:w.response)==null?void 0:i.status;U===401||U===403?d.value="密码错误或无权限访问":U===404?d.value="设备不存在,请检查 namespace 是否正确":d.value=((R=(D=(v=w==null?void 0:w.response)==null?void 0:v.data)==null?void 0:D.error)==null?void 0:R.message)||(w==null?void 0:w.message)||"认证失败,请稍后重试"}finally{n.value=!1}}};return h({reset:()=>{c.value={namespace:"",password:""},d.value=""}}),(u,i)=>(f(),z(y,{class:"auth-card"},{default:s(()=>[l(W,{class:"pa-8"},{default:s(()=>[t("div",De,[l(g,{class:"mb-4",color:"success",size:"80"},{default:s(()=>[...i[4]||(i[4]=[a(" mdi-account-key ",-1)])]),_:1}),i[5]||(i[5]=t("h2",{class:"text-h4 mb-3"}," 设备认证 ",-1)),i[6]||(i[6]=t("p",{class:"text-body-1 text-medium-emphasis"}," 输入你在 Classworks KV 获取的认证信息 ",-1))]),l(y,{class:"pa-4 mb-6",color:"info",variant:"tonal"},{default:s(()=>[t("div",Te,[l(g,{class:"mr-2",size:"20"},{default:s(()=>[...i[7]||(i[7]=[a(" mdi-information ",-1)])]),_:1}),i[8]||(i[8]=a(" 对于已有UUID的用户,您应当使用UUID与您的密码登录。 ",-1))])]),_:1}),t("div",_e,[l(ne,{modelValue:c.value.namespace,"onUpdate:modelValue":i[0]||(i[0]=v=>c.value.namespace=v),class:"mb-4","hide-details":"auto",label:"命名空间","prepend-inner-icon":"mdi-identifier",variant:"outlined"},null,8,["modelValue"]),l(ne,{modelValue:c.value.password,"onUpdate:modelValue":i[1]||(i[1]=v=>c.value.password=v),label:"认证码","prepend-inner-icon":"mdi-lock-outline",type:"text",variant:"outlined"},null,8,["modelValue"]),d.value?(f(),z(re,{key:0,class:"mt-4",closable:"",type:"error",variant:"tonal","onClick:close":i[2]||(i[2]=v=>d.value="")},{default:s(()=>[a(T(d.value),1)]),_:1})):$("",!0)])]),_:1}),l(P,{class:"pa-6 pt-0"},{default:s(()=>[K.showCancel?(f(),z(k,{key:0,size:"large",variant:"text",onClick:i[3]||(i[3]=v=>u.$emit("cancel"))},{default:s(()=>[...i[9]||(i[9]=[a(" 取消 ",-1)])]),_:1})):$("",!0),l(ee),l(k,{disabled:!c.value.namespace||n.value,loading:n.value,class:"px-8",color:"primary",size:"x-large",variant:"elevated",onClick:p},{default:s(()=>[l(g,{size:"24",start:""},{default:s(()=>[...i[10]||(i[10]=[a(" mdi-login ",-1)])]),_:1}),i[11]||(i[11]=t("span",{class:"text-h6"},"认证并登录",-1))]),_:1},8,["disabled","loading"])]),_:1})]),_:1}))}},Ue=ie(Ie,[["__scopeId","data-v-9e8d02e4"]]),Ae={__name:"TokenInputDialog",props:{showCancel:{type:Boolean,default:!1}},emits:["success","cancel"],setup(K,{expose:h,emit:C}){const V=C,r=x(""),c=x(!1),n=x(""),d=async()=>{var p,u,i;if(!(!r.value||c.value)){n.value="",c.value=!0;try{const v=A("server.domain");if(!v)throw new Error("未配置服务器域名");await Q.get(`${v}/kv/_info`,{headers:{Accept:"application/json","x-app-token":r.value}}),F("server.kvToken",r.value),V("success")}catch(v){const D=(p=v==null?void 0:v.response)==null?void 0:p.status;D===401||D===403?n.value="Token 无效或无权限,请确认后重试":D===404?n.value="命名空间不存在或服务器未就绪":n.value=((i=(u=v==null?void 0:v.response)==null?void 0:u.data)==null?void 0:i.message)||(v==null?void 0:v.message)||"验证失败,请稍后重试"}finally{c.value=!1}}};return h({reset:()=>{r.value="",n.value=""}}),(p,u)=>(f(),z(y,null,{default:s(()=>[l(be,null,{default:s(()=>[...u[2]||(u[2]=[a("输入授权 Token",-1)])]),_:1}),l(W,null,{default:s(()=>[l(ne,{modelValue:r.value,"onUpdate:modelValue":u[0]||(u[0]=i=>r.value=i),clearable:"",density:"comfortable","hide-details":"auto",label:"KV 授权 Token",placeholder:"粘贴从授权页面获取的 Token",variant:"outlined"},null,8,["modelValue"]),n.value?(f(),z(re,{key:0,class:"mt-3",type:"error",variant:"tonal"},{default:s(()=>[a(T(n.value),1)]),_:1})):$("",!0)]),_:1}),l(P,null,{default:s(()=>[l(ee),K.showCancel?(f(),z(k,{key:0,variant:"text",onClick:u[1]||(u[1]=i=>p.$emit("cancel"))},{default:s(()=>[...u[3]||(u[3]=[a(" 取消 ",-1)])]),_:1})):$("",!0),l(k,{disabled:!r.value||c.value,loading:c.value,color:"primary",onClick:d},{default:s(()=>[...u[4]||(u[4]=[a(" 保存 Token ",-1)])]),_:1},8,["disabled","loading"])]),_:1})]),_:1}))}},Ke={__name:"AlternativeCodeDialog",props:{showCancel:{type:Boolean,default:!1}},emits:["submit","cancel"],setup(K,{expose:h,emit:C}){const V=C,r=x(""),c=()=>{r.value&&V("submit",r.value)};return h({reset:()=>{r.value=""}}),(n,d)=>(f(),z(y,null,{default:s(()=>[l(be,null,{default:s(()=>[...d[2]||(d[2]=[a("输入替代代码",-1)])]),_:1}),l(W,null,{default:s(()=>[l(Ve,{modelValue:r.value,"onUpdate:modelValue":d[0]||(d[0]=p=>r.value=p),density:"comfortable","hide-details":"auto",label:"替代代码",placeholder:"请输入替代代码",rows:"5",variant:"outlined"},null,8,["modelValue"]),l(re,{class:"mt-3",type:"info",variant:"tonal"},{default:s(()=>[...d[3]||(d[3]=[a(" 替代代码功能暂未实现,敬请期待 ",-1)])]),_:1})]),_:1}),l(P,null,{default:s(()=>[l(ee),K.showCancel?(f(),z(k,{key:0,variant:"text",onClick:d[1]||(d[1]=p=>n.$emit("cancel"))},{default:s(()=>[...d[4]||(d[4]=[a(" 取消 ",-1)])]),_:1})):$("",!0),l(k,{disabled:!r.value,color:"primary",onClick:c},{default:s(()=>[...d[5]||(d[5]=[a(" 提交 ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1}))}},he={class:"step-content"},Ee={class:"text-center mb-6"},Be={class:"step-content"},Ne={class:"relationship-diagram"},Re={class:"diagram-item"},Oe={class:"text-center"},Le={class:"diagram-description mt-3"},je={class:"diagram-connector"},Fe={class:"diagram-item"},Ge={class:"text-center"},Me={class:"diagram-description mt-3"},He={class:"step-content"},qe={class:"button-group"},Je={class:"d-flex flex-column align-center py-2"},Xe={class:"d-flex flex-column align-center py-2"},Ye={class:"step-content"},Ze={class:"text-center mb-6"},Qe={class:"step-content"},We={class:"text-center mb-6"},Pe={class:"d-flex flex-column flex-sm-row align-center"},et={class:"flex-grow-1"},tt={class:"text-h6 font-weight-bold"},st={class:"text-h5 mb-6"},lt={class:"text-subtitle-2"},at={class:"d-flex align-center"},ot={class:"d-flex align-center"},nt={class:"step-content"},it={class:"text-center mb-6"},rt={class:"d-flex align-center mb-3"},dt={class:"text-h6 font-weight-medium"},ut={key:0,class:"text-body-2 mb-2"},vt={class:"mb-2"},mt={class:"device-code"},ct={key:1,class:"text-body-2 text-error"},pt={class:"log-box"},ft={key:0,class:"text-caption text-medium-emphasis"},bt={class:"d-flex flex-wrap gap-2 mt-4"},Z=5,gt={__name:"FirstTimeGuide",emits:["close","success"],setup(K,{emit:h}){const C=h,V=A("server.authDomain"),r=x(1),c=x(""),n=x("idle"),d=x(""),p=x(null),u=x(null),i=x([]),v=x({1:!1,2:!1,3:!1,4:!1}),D=()=>{r.value{r.value>1&&r.value--},w=S=>{c.value=S,D()},U=()=>{C("close")},E=()=>{window.open(V,"_blank")},te=()=>{r.value=5},se=N(()=>Object.values(v.value).filter(Boolean).length/4*100),H=N(()=>n.value==="success"?"success":n.value==="error"?"error":"primary"),le=N(()=>n.value==="success"?"mdi-check-circle":n.value==="error"?"mdi-alert-circle":n.value==="registering"?"mdi-progress-clock":"mdi-rocket-launch"),ae=N(()=>n.value==="success"?"完成!设备已创建":n.value==="error"?"创建失败":n.value==="registering"?"正在执行…":"准备开始"),m=S=>{const e=new Date,_=String(e.getHours()).padStart(2,"0"),I=String(e.getMinutes()).padStart(2,"0"),X=String(e.getSeconds()).padStart(2,"0");i.value.push({time:`${_}:${I}:${X}`,message:S})},o=()=>"Classworks",b=async()=>{var S,e,_;if(n.value!=="registering"){n.value="registering",d.value="",i.value=[],v.value={1:!1,2:!1,3:!1,4:!1};try{m("正在生成设备信息…");const I=Se(),X=o(),de=A("server.domain");v.value[1]=!0,m("向服务器注册设备…");const ke=await Q.post(`${de}/devices`,{uuid:I,deviceName:X});v.value[2]=!0,p.value={uuid:I,deviceName:X,createdAt:new Date().toISOString(),registered:!0},localStorage.setItem("Classworks_progressive_device",JSON.stringify(p.value)),m("获取访问令牌…");try{const B=await Q.post(`${de}/apps/auth/token`,{namespace:I,password:"",appId:"d158067f53627d2b98babe8bffd2fd7d"});B.data&&B.data.token?(u.value=B.data,F("server.kvToken",B.data.token),(S=B.data.device)!=null&&S.uuid&&F("device.uuid",B.data.device.uuid),m("已获取 Token 并写入配置")):m("未返回 Token,您可以稍后在授权页完成配置")}catch(B){console.warn("自动获取 Token 失败:",B),m("自动获取 Token 失败,可在授权页手动完成")}v.value[3]=!0,m("完成!您可以应用令牌或前往授权页面继续配置"),v.value[4]=!0,n.value="success"}catch(I){console.error("设备注册失败:",I),d.value=((_=(e=I.response)==null?void 0:e.data)==null?void 0:_.message)||I.message||"网络连接失败",m("失败:"+d.value),n.value="error"}}},oe=()=>{n.value="idle",d.value="",i.value=[],v.value={1:!1,2:!1,3:!1,4:!1}},q=()=>{const S=p.value;if(!(S!=null&&S.uuid))return;const _=`${A("server.authDomain")}/?uuid=${encodeURIComponent(S.uuid)}&tolinktoaccount=true`;window.open(_,"_blank")},J=()=>{u.value&&C("success",u.value),C("close")};return(S,e)=>(f(),z(y,{class:"guide-card"},{default:s(()=>[l(ue,{"model-value":r.value/Z*100,color:"primary",height:"6"},null,8,["model-value"]),l(W,{class:"pa-8"},{default:s(()=>[O(t("div",he,[t("div",Ee,[l(g,{class:"mb-4",color:"primary",size:"80"},{default:s(()=>[...e[2]||(e[2]=[a(" mdi-hand-wave ",-1)])]),_:1}),e[3]||(e[3]=t("h2",{class:"text-h4 mb-3"}," 欢迎使用 Classworks ",-1)),e[4]||(e[4]=t("p",{class:"text-body-1 text-medium-emphasis"}," 适用于班级大屏的作业板小工具 ",-1))])],512),[[L,r.value===1]]),O(t("div",Be,[e[17]||(e[17]=t("h3",{class:"text-h5 mb-6 text-center"}," Classworks 和 Classworks KV 的关系 ",-1)),l(y,{class:"pa-6 mb-6",color:"primary",variant:"tonal"},{default:s(()=>[t("div",Ne,[t("div",Re,[l(y,{class:"pa-4",color:"blue-darken-1",elevation:"8"},{default:s(()=>[t("div",Oe,[l(g,{color:"white",size:"60"},{default:s(()=>[...e[5]||(e[5]=[a(" mdi-laptop ",-1)])]),_:1}),e[6]||(e[6]=t("h4",{class:"text-h6 text-white mt-2"}," Classworks ",-1)),e[7]||(e[7]=t("p",{class:"text-caption text-white mt-1"}," 作业板应用 ",-1))])]),_:1}),t("div",Le,[l(ve,{class:"mb-2",color:"blue",size:"small",variant:"flat"},{default:s(()=>[...e[8]||(e[8]=[a(" 前端应用 ",-1)])]),_:1}),e[9]||(e[9]=t("div",{class:"text-body-2"},[a(" • 显示作业内容"),t("br"),a(" • 管理班级信息"),t("br"),a(" • 提供用户界面 ")],-1))])]),t("div",je,[l(g,{color:"primary",size:"40"},{default:s(()=>[...e[10]||(e[10]=[a(" mdi-swap-horizontal ",-1)])]),_:1}),e[11]||(e[11]=t("div",{class:"text-caption font-weight-bold mt-2"}," 数据同步 ",-1))]),t("div",Fe,[l(y,{class:"pa-4",color:"green-darken-1",elevation:"8"},{default:s(()=>[t("div",Ge,[l(g,{color:"white",size:"60"},{default:s(()=>[...e[12]||(e[12]=[a(" mdi-cloud-sync ",-1)])]),_:1}),e[13]||(e[13]=t("h4",{class:"text-h6 text-white mt-2"}," Classworks KV ",-1)),e[14]||(e[14]=t("p",{class:"text-caption text-white mt-1"}," 云端数据库 ",-1))])]),_:1}),t("div",Me,[l(ve,{class:"mb-2",color:"green",size:"small",variant:"flat"},{default:s(()=>[...e[15]||(e[15]=[a(" 后端服务 ",-1)])]),_:1}),e[16]||(e[16]=t("div",{class:"text-body-2"},[a(" • 存储作业数据"),t("br"),a(" • 多设备同步"),t("br"),a(" • 权限管理 ")],-1))])])])]),_:1})],512),[[L,r.value===2]]),O(t("div",He,[e[25]||(e[25]=t("h3",{class:"text-h5 mb-6 text-center"}," 你需要在多个设备上查看作业吗? ",-1)),l(y,{class:"mb-6 pa-4",color:"info",variant:"tonal"},{default:s(()=>[...e[18]||(e[18]=[t("div",{class:"text-body-2"}," 比如:在家里电脑、手机上查看,或者多个教室设备共享数据 ",-1)])]),_:1}),t("div",qe,[l(k,{block:"",class:"mb-4 py-6",color:"primary",size:"x-large",variant:"elevated",onClick:e[0]||(e[0]=_=>w("cloud"))},{default:s(()=>[t("div",Je,[l(g,{class:"mb-2",size:"40"},{default:s(()=>[...e[19]||(e[19]=[a(" mdi-cloud-check ",-1)])]),_:1}),e[20]||(e[20]=t("span",{class:"text-h6"},"需要,使用云同步",-1)),e[21]||(e[21]=t("span",{class:"text-caption mt-1"},"多设备访问",-1))])]),_:1}),l(k,{block:"",class:"py-6",size:"x-large",variant:"outlined",onClick:e[1]||(e[1]=_=>w("local"))},{default:s(()=>[t("div",Xe,[l(g,{class:"mb-2",size:"40"},{default:s(()=>[...e[22]||(e[22]=[a(" mdi-laptop ",-1)])]),_:1}),e[23]||(e[23]=t("span",{class:"text-h6"},"不需要,只用这台设备",-1)),e[24]||(e[24]=t("span",{class:"text-caption mt-1"},"本地存储",-1))])]),_:1})])],512),[[L,r.value===3]]),O(t("div",Ye,[t("div",Ze,[l(g,{class:"mb-4",color:"success",size:"80"},{default:s(()=>[...e[26]||(e[26]=[a(" mdi-check-circle ",-1)])]),_:1}),e[28]||(e[28]=t("h3",{class:"text-h5 mb-4"}," 您可以使用本地模式 ",-1)),l(y,{class:"pa-4 text-left",variant:"tonal"},{default:s(()=>[...e[27]||(e[27]=[t("div",{class:"text-body-1 mb-2"}," 此数据将存储在您的浏览器中,如果您的浏览器不支持IndexedDB,可能会出现问题。如果您经常清除浏览器数据,请谨慎使用本地模式。 ",-1),t("div",{class:"text-body-1 mb-2"}," 在刚才地方点击使用本地模式的按钮使用。 ",-1)])]),_:1})])],512),[[L,r.value===4&&c.value==="local"]]),O(t("div",Qe,[t("div",We,[l(g,{class:"mb-4",color:"primary",size:"80"},{default:s(()=>[...e[29]||(e[29]=[a(" mdi-cloud-cog ",-1)])]),_:1}),e[30]||(e[30]=t("h3",{class:"text-h5 mb-4"}," 需要先设置云端账号 ",-1))]),l(y,{class:"pa-6 mb-6",variant:"tonal"},{default:s(()=>[t("div",Pe,[t("div",et,[e[32]||(e[32]=t("h4",{class:"text-h6 font-weight-bold mb-2"}," 自动注册设备 ",-1)),e[33]||(e[33]=t("p",{class:"text-body-2 mb-3 text-medium-emphasis"}," 通过引导式流程自动创建设备、获取令牌并完成初始化。适合首次体验或快速部署多终端。 ",-1)),l(k,{color:"primary","prepend-icon":"mdi-flash",size:"large",variant:"elevated",onClick:te},{default:s(()=>[...e[31]||(e[31]=[a(" 自动注册 ",-1)])]),_:1})])])]),_:1}),e[41]||(e[41]=t("div",{class:"mb-6"}," 也可以手动前往 Classworks KV 控制台获取认证信息: ",-1)),l(y,{color:G(V)=="https://kv.houlang.cloud"?"primary":"error",variant:G(V)=="https://kv.houlang.cloud"?"elevated":"outlined",class:"pa-6 mb-6",onClick:E},{default:s(()=>[l(g,{class:"mb-3",size:"48"},{default:s(()=>[...e[34]||(e[34]=[a(" mdi-open-in-new ",-1)])]),_:1}),t("h4",tt," 请访问 "+T(G(V)=="https://kv.houlang.cloud"?"Classworks KV":"自定义的 Classworks KV 实例 ")+" 控制台 ",1),t("div",st,T(G(V)),1),t("h6",lt,T(G(V)=="https://kv.houlang.cloud"?"此实例由 Classworks KV 官方提供":"此链接由您的实例、预配代码或管理员管理,当前可能不是 Classworks KV 官方的实例地址。"),1)]),_:1},8,["color","variant"]),l($e,{class:"mt-6",variant:"accordion"},{default:s(()=>[l(me,null,{default:s(()=>[l(ce,null,{default:s(()=>[t("div",at,[l(g,{class:"mr-3",color:"warning"},{default:s(()=>[...e[35]||(e[35]=[a(" mdi-help-circle ",-1)])]),_:1}),e[36]||(e[36]=t("span",{class:"text-subtitle-1 font-weight-medium"},"我以前已经使用过 Classworks KV?",-1))])]),_:1}),l(pe,null,{default:s(()=>[l(y,{class:"pa-4",color:"success",variant:"tonal"},{default:s(()=>[...e[37]||(e[37]=[t("div",{class:"text-body-2 mb-2"},[a(" 如果您之前已经使用过 Classworks KV,可以直接使用您的 "),t("strong",null,"UUID(命名空间)"),a(" 和 "),t("strong",null,"设置的密码"),a(" 进行认证。 ")],-1),t("div",{class:"text-body-2"},' 返回上一页,点击"已注册"按钮,输入您的认证信息即可登录。 ',-1)])]),_:1})]),_:1})]),_:1}),l(me,null,{default:s(()=>[l(ce,null,{default:s(()=>[t("div",ot,[l(g,{class:"mr-3",color:"info"},{default:s(()=>[...e[38]||(e[38]=[a(" mdi-help-circle ",-1)])]),_:1}),e[39]||(e[39]=t("span",{class:"text-subtitle-1 font-weight-medium"},"我如何配置不同类型的设备?",-1))])]),_:1}),l(pe,null,{default:s(()=>[l(y,{class:"pa-4",color:"info",variant:"tonal"},{default:s(()=>[...e[40]||(e[40]=[t("div",{class:"text-body-2 mb-2"},[a(" 不同的密码对应不同的设备类型,这将由 "),t("strong",null,"管理员管理"),a("。 ")],-1),t("div",{class:"text-body-2 mb-2"}," 例如: ",-1),t("ul",{class:"text-body-2 ml-4"},[t("li",{class:"mb-1"}," 班级大屏使用一个密码 "),t("li",{class:"mb-1"}," 教师设备使用另一个密码 "),t("li",null,"学生设备使用不同的密码")],-1),t("div",{class:"text-body-2 mt-3"}," 请联系您的管理员获取对应设备类型的密码。 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})],512),[[L,r.value===4&&c.value==="cloud"]]),O(t("div",nt,[t("div",it,[l(xe,{class:"mb-4",color:"primary",size:"80",variant:"tonal"},{default:s(()=>[l(g,{size:"48"},{default:s(()=>[...e[42]||(e[42]=[a(" mdi-rocket-launch ",-1)])]),_:1})]),_:1}),e[43]||(e[43]=t("h3",{class:"text-h5 font-weight-bold mb-2"}," 渐进式注册 ",-1)),e[44]||(e[44]=t("p",{class:"text-body-2 text-medium-emphasis"}," 您可以暂时不配置 Classworks KV ",-1))]),l(ue,{"model-value":se.value,class:"mb-6",color:"primary",height:"8",rounded:""},null,8,["model-value"]),l(ze,null,{default:s(()=>[l(fe,{cols:"12"},{default:s(()=>[l(y,{color:H.value,variant:"tonal"},{default:s(()=>[l(M,null,{default:s(()=>[t("div",rt,[l(g,{color:H.value,class:"mr-2",size:"32"},{default:s(()=>[a(T(le.value),1)]),_:1},8,["color"]),t("div",dt,T(ae.value),1)]),p.value?(f(),j("div",ut,[t("div",vt,[e[45]||(e[45]=t("strong",null,"设备名称:",-1)),a(T(p.value.deviceName),1)]),t("div",null,[e[46]||(e[46]=t("strong",null,"设备 UUID:",-1)),t("code",mt,T(p.value.uuid),1)])])):$("",!0),n.value==="error"?(f(),j("div",ct,T(d.value),1)):$("",!0)]),_:1})]),_:1},8,["color"])]),_:1}),l(fe,{cols:"12"},{default:s(()=>[l(y,{variant:"outlined"},{default:s(()=>[l(M,null,{default:s(()=>[e[47]||(e[47]=t("div",{class:"text-subtitle-2 font-weight-medium mb-3"}," 过程日志 ",-1)),t("div",pt,[(f(!0),j(we,null,ye(i.value,(_,I)=>(f(),j("div",{key:I,class:"text-caption log-line"},T(_.time)+" · "+T(_.message),1))),128)),i.value.length?$("",!0):(f(),j("div",ft," 等待开始… "))])]),_:1})]),_:1})]),_:1})]),_:1}),t("div",bt,[n.value==="idle"?(f(),z(k,{key:0,color:"primary","prepend-icon":"mdi-play",size:"large",onClick:b},{default:s(()=>[...e[48]||(e[48]=[a(" 开始创建 ",-1)])]),_:1})):$("",!0),n.value==="error"?(f(),z(k,{key:1,color:"error","prepend-icon":"mdi-refresh",variant:"outlined",onClick:oe},{default:s(()=>[...e[49]||(e[49]=[a(" 重试 ",-1)])]),_:1})):$("",!0),n.value==="registering"?(f(),z(k,{key:2,loading:!0,color:"primary","prepend-icon":"mdi-progress-clock",variant:"tonal"},{default:s(()=>[...e[50]||(e[50]=[a(" 正在执行… ",-1)])]),_:1})):$("",!0),n.value==="success"?(f(),z(k,{key:3,color:"success","prepend-icon":"mdi-check-circle",size:"large",variant:"elevated",onClick:J},{default:s(()=>[...e[51]||(e[51]=[a(" 应用令牌并关闭 ",-1)])]),_:1})):$("",!0),n.value==="success"?(f(),z(k,{key:4,color:"primary","prepend-icon":"mdi-open-in-new",size:"large",variant:"outlined",onClick:q},{default:s(()=>[...e[52]||(e[52]=[a(" 前往绑定账户 ",-1)])]),_:1})):$("",!0)])],512),[[L,r.value===5]])]),_:1}),l(P,{class:"pa-6 pt-0"},{default:s(()=>[r.value>1?(f(),z(k,{key:0,size:"large",variant:"text",onClick:R},{default:s(()=>[l(g,{start:""},{default:s(()=>[...e[53]||(e[53]=[a(" mdi-chevron-left ",-1)])]),_:1}),e[54]||(e[54]=a(" 上一步 ",-1))]),_:1})):$("",!0),l(ee),r.value[e[56]||(e[56]=a(" 下一步 ",-1)),l(g,{end:""},{default:s(()=>[...e[55]||(e[55]=[a(" mdi-chevron-right ",-1)])]),_:1})]),_:1},8,["disabled"])):$("",!0),r.value===Z||r.value===4?(f(),z(k,{key:2,color:"primary",size:"large",variant:"elevated",onClick:U},{default:s(()=>[...e[57]||(e[57]=[a(" 关闭 ",-1)])]),_:1})):$("",!0)]),_:1})]),_:1}))}},kt=ie(gt,[["__scopeId","data-v-817c6e0e"]]),xt={key:0,class:"init-overlay"},wt={class:"init-container"},yt={class:"main-card-row"},Ct={class:"card-horizontal-layout"},Vt={class:"card-icon-wrapper"},$t={class:"card-horizontal-layout"},zt={class:"card-icon-wrapper"},St={class:"card-horizontal-layout"},Dt={class:"card-icon-wrapper"},Tt={class:"options-buttons"},_t={__name:"InitServiceChooser",props:{preconfig:{type:Object,default:()=>({namespace:null,authCode:null,autoOpen:!1,autoExecute:!1})}},emits:["done"],setup(K,{emit:h}){const C=K,V=h,r=x(!1),c=x(!1),n=x(!1),d=x(!1),p=x(!1),u=x(null),i=N(()=>A("server.provider")),v=N(()=>i.value==="kv-server"||i.value==="classworkscloud"),D=N(()=>A("server.kvToken")),R=N(()=>{var m;return(m=C.preconfig)!=null&&m.namespace?{namespace:C.preconfig.namespace,password:C.preconfig.authCode||"",autoExecute:C.preconfig.autoExecute||!1}:null}),w=()=>{const m=window.location.pathname,o=m==="/"||m==="/index"||m==="/index.html",b=v.value&&(!D.value||D.value==="");r.value=o&&b};ge(()=>C.preconfig,m=>{m!=null&&m.autoOpen&&(m!=null&&m.namespace)&&r.value&&(console.log("检测到预配数据,自动打开设备认证对话框"),setTimeout(()=>{n.value=!0},500))},{immediate:!0,deep:!0}),Ce(()=>{w()});const U=()=>{const m=A("server.authDomain"),o="d158067f53627d2b98babe8bffd2fd7d",b=window.location.origin,oe=encodeURIComponent(`${b}/authorizecallback`),q=A("device.uuid")||"00000000-0000-4000-8000-000000000000";let J=`${m}/authorize?app_id=${o}&mode=callback&callback_url=${oe}&remark=Classworks 自动授权 来自${window.location.hostname} ${new Date().toLocaleString()}`;q!=="00000000-0000-4000-8000-000000000000"&&(J+=`&uuid=${encodeURIComponent(q)}`),window.location.href=J},E=m=>{c.value=!1,console.log("渐进式注册成功:",m),w(),V("done")},te=m=>{var o;n.value=!1,console.log("认证成功:",m),(o=C.preconfig)!=null&&o.namespace&&console.log(`预配数据认证成功: ${C.preconfig.namespace}`),w(),V("done")},se=()=>{d.value=!1,w(),V("done")},H=m=>{console.log("替代代码:",m),p.value=!1},le=()=>{F("server.provider","kv-local"),r.value=!1,window.location.reload(),V("done")},ae=()=>{window.open(A("server.authDomain"),"_blank")};return(m,o)=>r.value?(f(),j("div",xt,[t("div",wt,[o[22]||(o[22]=t("div",{class:"init-header"},[t("div",{class:"title"}," 欢迎使用 Classworks "),t("div",{class:"subtitle"}," 请选择你的使用方式 ")],-1)),t("div",yt,[l(y,{class:"main-service-card gradient-new clickable",elevation:"4",onClick:o[0]||(o[0]=b=>c.value=!0)},{default:s(()=>[l(M,null,{default:s(()=>[t("div",Ct,[t("div",Vt,[l(g,{color:"primary",size:"48"},{default:s(()=>[...o[12]||(o[12]=[a(" mdi-new-box ",-1)])]),_:1})]),o[13]||(o[13]=t("div",{class:"card-content"},[t("div",{class:"text-h6 font-weight-bold"}," 初次使用 "),t("div",{class:"text-body-2 text-medium-emphasis mt-1"}," 了解 Classworks KV 并开始使用 ")],-1))])]),_:1})]),_:1}),l(y,{class:"main-service-card gradient-registered clickable",elevation:"4",onClick:o[1]||(o[1]=b=>n.value=!0)},{default:s(()=>[l(M,null,{default:s(()=>[t("div",$t,[t("div",zt,[l(g,{color:"success",size:"48"},{default:s(()=>[...o[14]||(o[14]=[a(" mdi-account-check ",-1)])]),_:1})]),o[15]||(o[15]=t("div",{class:"card-content"},[t("div",{class:"text-h6 font-weight-bold"}," 已注册 "),t("div",{class:"text-body-2 text-medium-emphasis mt-1"}," 使用设备 Namespace 登录 ")],-1))])]),_:1})]),_:1}),l(y,{class:"main-service-card clickable",elevation:"4",onClick:ae},{default:s(()=>[l(M,null,{default:s(()=>[t("div",St,[t("div",Dt,[l(g,{color:"info",size:"48"},{default:s(()=>[...o[16]||(o[16]=[a(" mdi-database-cog ",-1)])]),_:1})]),o[17]||(o[17]=t("div",{class:"card-content"},[t("div",{class:"text-h6 font-weight-bold"}," Classworks KV "),t("div",{class:"text-body-2 text-medium-emphasis mt-1"}," 打开云端控制台管理数据 ")],-1))])]),_:1})]),_:1})]),t("div",Tt,[l(k,{"prepend-icon":"mdi-laptop",size:"small",variant:"tonal",onClick:le},{default:s(()=>[...o[18]||(o[18]=[a(" 使用本地模式 ",-1)])]),_:1}),l(k,{"prepend-icon":"mdi-flash",size:"small",variant:"tonal",onClick:U},{default:s(()=>[...o[19]||(o[19]=[a(" 授权码式授权(弃用) ",-1)])]),_:1}),l(k,{"prepend-icon":"mdi-key",size:"small",variant:"tonal",onClick:o[2]||(o[2]=b=>d.value=!0)},{default:s(()=>[...o[20]||(o[20]=[a(" 输入 Token ",-1)])]),_:1}),l(k,{"prepend-icon":"mdi-code-tags",size:"small",variant:"tonal",onClick:o[3]||(o[3]=b=>p.value=!0)},{default:s(()=>[...o[21]||(o[21]=[a(" 输入替代代码 ",-1)])]),_:1})]),o[23]||(o[23]=t("div",{class:"footer-hint"}," 完成授权后可使用作业同步、考试看板等在线功能。 ",-1))]),l(Y,{modelValue:c.value,"onUpdate:modelValue":o[5]||(o[5]=b=>c.value=b),"max-width":"600"},{default:s(()=>[l(kt,{onClose:o[4]||(o[4]=b=>c.value=!1),onSuccess:E})]),_:1},8,["modelValue"]),l(Y,{modelValue:n.value,"onUpdate:modelValue":o[7]||(o[7]=b=>n.value=b),"max-width":"500"},{default:s(()=>[l(Ue,{ref_key:"deviceAuthDialog",ref:u,preconfig:R.value,"show-cancel":!0,onCancel:o[6]||(o[6]=b=>n.value=!1),onSuccess:te},null,8,["preconfig"])]),_:1},8,["modelValue"]),l(Y,{modelValue:d.value,"onUpdate:modelValue":o[9]||(o[9]=b=>d.value=b),"max-width":"500"},{default:s(()=>[l(Ae,{"show-cancel":!0,onCancel:o[8]||(o[8]=b=>d.value=!1),onSuccess:se})]),_:1},8,["modelValue"]),l(Y,{modelValue:p.value,"onUpdate:modelValue":o[11]||(o[11]=b=>p.value=b),"max-width":"500"},{default:s(()=>[l(Ke,{"show-cancel":!0,onCancel:o[10]||(o[10]=b=>p.value=!1),onSubmit:H})]),_:1},8,["modelValue"])])):$("",!0)}},Gt=ie(_t,[["__scopeId","data-v-cbfbc6db"]]);export{Gt as default}; diff --git a/assets/InitServiceChooser-DtTLjkZp.js b/assets/InitServiceChooser-DtTLjkZp.js new file mode 100644 index 0000000..e95d8e6 --- /dev/null +++ b/assets/InitServiceChooser-DtTLjkZp.js @@ -0,0 +1 @@ +import{_ as ie,g as A,s as L,d as W,f as k,e as y,q as P,i as g,r as ee,c as be,h as ue,M as xe,O as M,k as Y}from"./index-CFUCTEXJ.js";import{a as Q}from"./dataProvider-bUkzKSNt.js";import{V as ne}from"./VTextField-ByBRYn99.js";import{V as re}from"./VAlert-DO0N7oM6.js";import{o as ke,X as f,Y as z,Z as s,j as l,k as t,a1 as a,S as T,$,b as x,R,V as j,u as G,_ as F,F as we,a2 as ye,e as N,D as Ce}from"./vendor-vue-B2vxubPy.js";import{V as Ve}from"./VTextarea-BxmmuONa.js";import{V as ve}from"./VChip-DR8Ljy6R.js";import{V as $e,a as me,b as ce,c as pe}from"./VExpansionPanels-qZkn9NEQ.js";import{V as ze,a as fe}from"./VRow-Dw4j2TKL.js";import{v as Se}from"./vendor-utils-DDRLRfsI.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./serverRotation-CdH9Xda8.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";const De={class:"text-center mb-6"},Te={class:"text-body-2"},_e={class:"form-section"},Ie={__name:"DeviceAuthDialog",props:{showCancel:{type:Boolean,default:!1},preconfig:{type:Object,default:null}},emits:["success","cancel"],setup(K,{expose:h,emit:C}){const V=K,r=C,c=x({namespace:"",password:""}),n=x(!1),d=x("");ke(()=>V.preconfig,u=>{u&&(console.log("应用预配置数据:",u),c.value.namespace=u.namespace||"",c.value.password=u.password||"",u.autoExecute&&u.namespace?(console.log("检测到自动执行标志且有命名空间,自动执行认证"),setTimeout(()=>{p()},300)):u.namespace&&console.log("预配置数据已填入,等待手动认证"))},{immediate:!0,deep:!0});const p=async()=>{var u,i,v,D,O;if(!(!c.value.namespace||n.value)){d.value="",n.value=!0;try{const w=A("server.domain");if(!w)throw new Error("未配置服务器域名");const U=await Q.post(`${w}/apps/auth/token`,{namespace:c.value.namespace,password:c.value.password||void 0,appId:"d158067f53627d2b98babe8bffd2fd7d"});if(!U.data.success)throw new Error("设备验证失败");const E=U.data;L("server.kvToken",E.token),(u=E.device)!=null&&u.uuid&&L("device.uuid",E.device.uuid),r("success",E)}catch(w){const U=(i=w==null?void 0:w.response)==null?void 0:i.status;U===401||U===403?d.value="密码错误或无权限访问":U===404?d.value="设备不存在,请检查 namespace 是否正确":d.value=((O=(D=(v=w==null?void 0:w.response)==null?void 0:v.data)==null?void 0:D.error)==null?void 0:O.message)||(w==null?void 0:w.message)||"认证失败,请稍后重试"}finally{n.value=!1}}};return h({reset:()=>{c.value={namespace:"",password:""},d.value=""}}),(u,i)=>(f(),z(y,{class:"auth-card"},{default:s(()=>[l(W,{class:"pa-8"},{default:s(()=>[t("div",De,[l(k,{class:"mb-4",color:"success",size:"80"},{default:s(()=>[...i[4]||(i[4]=[a(" mdi-account-key ",-1)])]),_:1}),i[5]||(i[5]=t("h2",{class:"text-h4 mb-3"}," 设备认证 ",-1)),i[6]||(i[6]=t("p",{class:"text-body-1 text-medium-emphasis"}," 输入你在 Classworks KV 获取的认证信息 ",-1))]),l(y,{class:"pa-4 mb-6",color:"info",variant:"tonal"},{default:s(()=>[t("div",Te,[l(k,{class:"mr-2",size:"20"},{default:s(()=>[...i[7]||(i[7]=[a(" mdi-information ",-1)])]),_:1}),i[8]||(i[8]=a(" 对于已有UUID的用户,您应当使用UUID与您的密码登录。 ",-1))])]),_:1}),t("div",_e,[l(ne,{modelValue:c.value.namespace,"onUpdate:modelValue":i[0]||(i[0]=v=>c.value.namespace=v),class:"mb-4","hide-details":"auto",label:"命名空间","prepend-inner-icon":"mdi-identifier",variant:"outlined"},null,8,["modelValue"]),l(ne,{modelValue:c.value.password,"onUpdate:modelValue":i[1]||(i[1]=v=>c.value.password=v),label:"认证码","prepend-inner-icon":"mdi-lock-outline",type:"text",variant:"outlined"},null,8,["modelValue"]),d.value?(f(),z(re,{key:0,class:"mt-4",closable:"",type:"error",variant:"tonal","onClick:close":i[2]||(i[2]=v=>d.value="")},{default:s(()=>[a(T(d.value),1)]),_:1})):$("",!0)])]),_:1}),l(P,{class:"pa-6 pt-0"},{default:s(()=>[K.showCancel?(f(),z(g,{key:0,size:"large",variant:"text",onClick:i[3]||(i[3]=v=>u.$emit("cancel"))},{default:s(()=>[...i[9]||(i[9]=[a(" 取消 ",-1)])]),_:1})):$("",!0),l(ee),l(g,{disabled:!c.value.namespace||n.value,loading:n.value,class:"px-8",color:"primary",size:"x-large",variant:"elevated",onClick:p},{default:s(()=>[l(k,{size:"24",start:""},{default:s(()=>[...i[10]||(i[10]=[a(" mdi-login ",-1)])]),_:1}),i[11]||(i[11]=t("span",{class:"text-h6"},"认证并登录",-1))]),_:1},8,["disabled","loading"])]),_:1})]),_:1}))}},Ue=ie(Ie,[["__scopeId","data-v-9e8d02e4"]]),Ae={__name:"TokenInputDialog",props:{showCancel:{type:Boolean,default:!1}},emits:["success","cancel"],setup(K,{expose:h,emit:C}){const V=C,r=x(""),c=x(!1),n=x(""),d=async()=>{var p,u,i;if(!(!r.value||c.value)){n.value="",c.value=!0;try{const v=A("server.domain");if(!v)throw new Error("未配置服务器域名");await Q.get(`${v}/kv/_info`,{headers:{Accept:"application/json","x-app-token":r.value}}),L("server.kvToken",r.value),V("success")}catch(v){const D=(p=v==null?void 0:v.response)==null?void 0:p.status;D===401||D===403?n.value="Token 无效或无权限,请确认后重试":D===404?n.value="命名空间不存在或服务器未就绪":n.value=((i=(u=v==null?void 0:v.response)==null?void 0:u.data)==null?void 0:i.message)||(v==null?void 0:v.message)||"验证失败,请稍后重试"}finally{c.value=!1}}};return h({reset:()=>{r.value="",n.value=""}}),(p,u)=>(f(),z(y,null,{default:s(()=>[l(be,null,{default:s(()=>[...u[2]||(u[2]=[a("输入授权 Token",-1)])]),_:1}),l(W,null,{default:s(()=>[l(ne,{modelValue:r.value,"onUpdate:modelValue":u[0]||(u[0]=i=>r.value=i),clearable:"",density:"comfortable","hide-details":"auto",label:"KV 授权 Token",placeholder:"粘贴从授权页面获取的 Token",variant:"outlined"},null,8,["modelValue"]),n.value?(f(),z(re,{key:0,class:"mt-3",type:"error",variant:"tonal"},{default:s(()=>[a(T(n.value),1)]),_:1})):$("",!0)]),_:1}),l(P,null,{default:s(()=>[l(ee),K.showCancel?(f(),z(g,{key:0,variant:"text",onClick:u[1]||(u[1]=i=>p.$emit("cancel"))},{default:s(()=>[...u[3]||(u[3]=[a(" 取消 ",-1)])]),_:1})):$("",!0),l(g,{disabled:!r.value||c.value,loading:c.value,color:"primary",onClick:d},{default:s(()=>[...u[4]||(u[4]=[a(" 保存 Token ",-1)])]),_:1},8,["disabled","loading"])]),_:1})]),_:1}))}},Ke={__name:"AlternativeCodeDialog",props:{showCancel:{type:Boolean,default:!1}},emits:["submit","cancel"],setup(K,{expose:h,emit:C}){const V=C,r=x(""),c=()=>{r.value&&V("submit",r.value)};return h({reset:()=>{r.value=""}}),(n,d)=>(f(),z(y,null,{default:s(()=>[l(be,null,{default:s(()=>[...d[2]||(d[2]=[a("输入替代代码",-1)])]),_:1}),l(W,null,{default:s(()=>[l(Ve,{modelValue:r.value,"onUpdate:modelValue":d[0]||(d[0]=p=>r.value=p),density:"comfortable","hide-details":"auto",label:"替代代码",placeholder:"请输入替代代码",rows:"5",variant:"outlined"},null,8,["modelValue"]),l(re,{class:"mt-3",type:"info",variant:"tonal"},{default:s(()=>[...d[3]||(d[3]=[a(" 替代代码功能暂未实现,敬请期待 ",-1)])]),_:1})]),_:1}),l(P,null,{default:s(()=>[l(ee),K.showCancel?(f(),z(g,{key:0,variant:"text",onClick:d[1]||(d[1]=p=>n.$emit("cancel"))},{default:s(()=>[...d[4]||(d[4]=[a(" 取消 ",-1)])]),_:1})):$("",!0),l(g,{disabled:!r.value,color:"primary",onClick:c},{default:s(()=>[...d[5]||(d[5]=[a(" 提交 ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1}))}},he={class:"step-content"},Ee={class:"text-center mb-6"},Be={class:"step-content"},Ne={class:"relationship-diagram"},Oe={class:"diagram-item"},Re={class:"text-center"},je={class:"diagram-description mt-3"},Fe={class:"diagram-connector"},Le={class:"diagram-item"},Ge={class:"text-center"},Me={class:"diagram-description mt-3"},He={class:"step-content"},qe={class:"button-group"},Je={class:"d-flex flex-column align-center py-2"},Xe={class:"d-flex flex-column align-center py-2"},Ye={class:"step-content"},Ze={class:"text-center mb-6"},Qe={class:"step-content"},We={class:"text-center mb-6"},Pe={class:"d-flex flex-column flex-sm-row align-center"},et={class:"flex-grow-1"},tt={class:"text-h6 font-weight-bold"},st={class:"text-h5 mb-6"},lt={class:"text-subtitle-2"},at={class:"d-flex align-center"},ot={class:"d-flex align-center"},nt={class:"step-content"},it={class:"text-center mb-6"},rt={class:"d-flex align-center mb-3"},dt={class:"text-h6 font-weight-medium"},ut={key:0,class:"text-body-2 mb-2"},vt={class:"mb-2"},mt={class:"device-code"},ct={key:1,class:"text-body-2 text-error"},pt={class:"log-box"},ft={key:0,class:"text-caption text-medium-emphasis"},bt={class:"d-flex flex-wrap gap-2 mt-4"},Z=5,kt={__name:"FirstTimeGuide",emits:["close","success"],setup(K,{emit:h}){const C=h,V=A("server.authDomain"),r=x(1),c=x(""),n=x("idle"),d=x(""),p=x(null),u=x(null),i=x([]),v=x({1:!1,2:!1,3:!1,4:!1}),D=()=>{r.value{r.value>1&&r.value--},w=S=>{c.value=S,D()},U=()=>{C("close")},E=()=>{window.open(V,"_blank")},te=()=>{r.value=5},se=N(()=>Object.values(v.value).filter(Boolean).length/4*100),H=N(()=>n.value==="success"?"success":n.value==="error"?"error":"primary"),le=N(()=>n.value==="success"?"mdi-check-circle":n.value==="error"?"mdi-alert-circle":n.value==="registering"?"mdi-progress-clock":"mdi-rocket-launch"),ae=N(()=>n.value==="success"?"完成!设备已创建":n.value==="error"?"创建失败":n.value==="registering"?"正在执行…":"准备开始"),m=S=>{const e=new Date,_=String(e.getHours()).padStart(2,"0"),I=String(e.getMinutes()).padStart(2,"0"),X=String(e.getSeconds()).padStart(2,"0");i.value.push({time:`${_}:${I}:${X}`,message:S})},o=()=>"Classworks",b=async()=>{var S,e,_;if(n.value!=="registering"){n.value="registering",d.value="",i.value=[],v.value={1:!1,2:!1,3:!1,4:!1};try{m("正在生成设备信息…");const I=Se(),X=o(),de=A("server.domain");v.value[1]=!0,m("向服务器注册设备…");const ge=await Q.post(`${de}/devices`,{uuid:I,deviceName:X});v.value[2]=!0,p.value={uuid:I,deviceName:X,createdAt:new Date().toISOString(),registered:!0},localStorage.setItem("Classworks_progressive_device",JSON.stringify(p.value)),m("获取访问令牌…");try{const B=await Q.post(`${de}/apps/auth/token`,{namespace:I,password:"",appId:"d158067f53627d2b98babe8bffd2fd7d"});B.data&&B.data.token?(u.value=B.data,L("server.kvToken",B.data.token),(S=B.data.device)!=null&&S.uuid&&L("device.uuid",B.data.device.uuid),m("已获取 Token 并写入配置")):m("未返回 Token,您可以稍后在授权页完成配置")}catch(B){console.warn("自动获取 Token 失败:",B),m("自动获取 Token 失败,可在授权页手动完成")}v.value[3]=!0,m("完成!您可以应用令牌或前往授权页面继续配置"),v.value[4]=!0,n.value="success"}catch(I){console.error("设备注册失败:",I),d.value=((_=(e=I.response)==null?void 0:e.data)==null?void 0:_.message)||I.message||"网络连接失败",m("失败:"+d.value),n.value="error"}}},oe=()=>{n.value="idle",d.value="",i.value=[],v.value={1:!1,2:!1,3:!1,4:!1}},q=()=>{const S=p.value;if(!(S!=null&&S.uuid))return;const _=`${A("server.authDomain")}/?uuid=${encodeURIComponent(S.uuid)}&tolinktoaccount=true`;window.open(_,"_blank")},J=()=>{u.value&&C("success",u.value),C("close")};return(S,e)=>(f(),z(y,{class:"guide-card"},{default:s(()=>[l(ue,{"model-value":r.value/Z*100,color:"primary",height:"6"},null,8,["model-value"]),l(W,{class:"pa-8"},{default:s(()=>[R(t("div",he,[t("div",Ee,[l(k,{class:"mb-4",color:"primary",size:"80"},{default:s(()=>[...e[2]||(e[2]=[a(" mdi-hand-wave ",-1)])]),_:1}),e[3]||(e[3]=t("h2",{class:"text-h4 mb-3"}," 欢迎使用 Classworks ",-1)),e[4]||(e[4]=t("p",{class:"text-body-1 text-medium-emphasis"}," 适用于班级大屏的作业板小工具 ",-1))])],512),[[j,r.value===1]]),R(t("div",Be,[e[17]||(e[17]=t("h3",{class:"text-h5 mb-6 text-center"}," Classworks 和 Classworks KV 的关系 ",-1)),l(y,{class:"pa-6 mb-6",color:"primary",variant:"tonal"},{default:s(()=>[t("div",Ne,[t("div",Oe,[l(y,{class:"pa-4",color:"blue-darken-1",elevation:"8"},{default:s(()=>[t("div",Re,[l(k,{color:"white",size:"60"},{default:s(()=>[...e[5]||(e[5]=[a(" mdi-laptop ",-1)])]),_:1}),e[6]||(e[6]=t("h4",{class:"text-h6 text-white mt-2"}," Classworks ",-1)),e[7]||(e[7]=t("p",{class:"text-caption text-white mt-1"}," 作业板应用 ",-1))])]),_:1}),t("div",je,[l(ve,{class:"mb-2",color:"blue",size:"small",variant:"flat"},{default:s(()=>[...e[8]||(e[8]=[a(" 前端应用 ",-1)])]),_:1}),e[9]||(e[9]=t("div",{class:"text-body-2"},[a(" • 显示作业内容"),t("br"),a(" • 管理班级信息"),t("br"),a(" • 提供用户界面 ")],-1))])]),t("div",Fe,[l(k,{color:"primary",size:"40"},{default:s(()=>[...e[10]||(e[10]=[a(" mdi-swap-horizontal ",-1)])]),_:1}),e[11]||(e[11]=t("div",{class:"text-caption font-weight-bold mt-2"}," 数据同步 ",-1))]),t("div",Le,[l(y,{class:"pa-4",color:"green-darken-1",elevation:"8"},{default:s(()=>[t("div",Ge,[l(k,{color:"white",size:"60"},{default:s(()=>[...e[12]||(e[12]=[a(" mdi-cloud-sync ",-1)])]),_:1}),e[13]||(e[13]=t("h4",{class:"text-h6 text-white mt-2"}," Classworks KV ",-1)),e[14]||(e[14]=t("p",{class:"text-caption text-white mt-1"}," 云端数据库 ",-1))])]),_:1}),t("div",Me,[l(ve,{class:"mb-2",color:"green",size:"small",variant:"flat"},{default:s(()=>[...e[15]||(e[15]=[a(" 后端服务 ",-1)])]),_:1}),e[16]||(e[16]=t("div",{class:"text-body-2"},[a(" • 存储作业数据"),t("br"),a(" • 多设备同步"),t("br"),a(" • 权限管理 ")],-1))])])])]),_:1})],512),[[j,r.value===2]]),R(t("div",He,[e[25]||(e[25]=t("h3",{class:"text-h5 mb-6 text-center"}," 你需要在多个设备上查看作业吗? ",-1)),l(y,{class:"mb-6 pa-4",color:"info",variant:"tonal"},{default:s(()=>[...e[18]||(e[18]=[t("div",{class:"text-body-2"}," 比如:在家里电脑、手机上查看,或者多个教室设备共享数据 ",-1)])]),_:1}),t("div",qe,[l(g,{block:"",class:"mb-4 py-6",color:"primary",size:"x-large",variant:"elevated",onClick:e[0]||(e[0]=_=>w("cloud"))},{default:s(()=>[t("div",Je,[l(k,{class:"mb-2",size:"40"},{default:s(()=>[...e[19]||(e[19]=[a(" mdi-cloud-check ",-1)])]),_:1}),e[20]||(e[20]=t("span",{class:"text-h6"},"需要,使用云同步",-1)),e[21]||(e[21]=t("span",{class:"text-caption mt-1"},"多设备访问",-1))])]),_:1}),l(g,{block:"",class:"py-6",size:"x-large",variant:"outlined",onClick:e[1]||(e[1]=_=>w("local"))},{default:s(()=>[t("div",Xe,[l(k,{class:"mb-2",size:"40"},{default:s(()=>[...e[22]||(e[22]=[a(" mdi-laptop ",-1)])]),_:1}),e[23]||(e[23]=t("span",{class:"text-h6"},"不需要,只用这台设备",-1)),e[24]||(e[24]=t("span",{class:"text-caption mt-1"},"本地存储",-1))])]),_:1})])],512),[[j,r.value===3]]),R(t("div",Ye,[t("div",Ze,[l(k,{class:"mb-4",color:"success",size:"80"},{default:s(()=>[...e[26]||(e[26]=[a(" mdi-check-circle ",-1)])]),_:1}),e[28]||(e[28]=t("h3",{class:"text-h5 mb-4"}," 您可以使用本地模式 ",-1)),l(y,{class:"pa-4 text-left",variant:"tonal"},{default:s(()=>[...e[27]||(e[27]=[t("div",{class:"text-body-1 mb-2"}," 此数据将存储在您的浏览器中,如果您的浏览器不支持IndexedDB,可能会出现问题。如果您经常清除浏览器数据,请谨慎使用本地模式。 ",-1),t("div",{class:"text-body-1 mb-2"}," 在刚才地方点击使用本地模式的按钮使用。 ",-1)])]),_:1})])],512),[[j,r.value===4&&c.value==="local"]]),R(t("div",Qe,[t("div",We,[l(k,{class:"mb-4",color:"primary",size:"80"},{default:s(()=>[...e[29]||(e[29]=[a(" mdi-cloud-cog ",-1)])]),_:1}),e[30]||(e[30]=t("h3",{class:"text-h5 mb-4"}," 需要先设置云端账号 ",-1))]),l(y,{class:"pa-6 mb-6",variant:"tonal"},{default:s(()=>[t("div",Pe,[t("div",et,[e[32]||(e[32]=t("h4",{class:"text-h6 font-weight-bold mb-2"}," 自动注册设备 ",-1)),e[33]||(e[33]=t("p",{class:"text-body-2 mb-3 text-medium-emphasis"}," 通过引导式流程自动创建设备、获取令牌并完成初始化。适合首次体验或快速部署多终端。 ",-1)),l(g,{color:"primary","prepend-icon":"mdi-flash",size:"large",variant:"elevated",onClick:te},{default:s(()=>[...e[31]||(e[31]=[a(" 自动注册 ",-1)])]),_:1})])])]),_:1}),e[41]||(e[41]=t("div",{class:"mb-6"}," 也可以手动前往 Classworks KV 控制台获取认证信息: ",-1)),l(y,{color:G(V)=="https://kv.houlang.cloud"?"primary":"error",variant:G(V)=="https://kv.houlang.cloud"?"elevated":"outlined",class:"pa-6 mb-6",onClick:E},{default:s(()=>[l(k,{class:"mb-3",size:"48"},{default:s(()=>[...e[34]||(e[34]=[a(" mdi-open-in-new ",-1)])]),_:1}),t("h4",tt," 请访问 "+T(G(V)=="https://kv.houlang.cloud"?"Classworks KV":"自定义的 Classworks KV 实例 ")+" 控制台 ",1),t("div",st,T(G(V)),1),t("h6",lt,T(G(V)=="https://kv.houlang.cloud"?"此实例由 Classworks KV 官方提供":"此链接由您的实例、预配代码或管理员管理,当前可能不是 Classworks KV 官方的实例地址。"),1)]),_:1},8,["color","variant"]),l($e,{class:"mt-6",variant:"accordion"},{default:s(()=>[l(me,null,{default:s(()=>[l(ce,null,{default:s(()=>[t("div",at,[l(k,{class:"mr-3",color:"warning"},{default:s(()=>[...e[35]||(e[35]=[a(" mdi-help-circle ",-1)])]),_:1}),e[36]||(e[36]=t("span",{class:"text-subtitle-1 font-weight-medium"},"我以前已经使用过 Classworks KV?",-1))])]),_:1}),l(pe,null,{default:s(()=>[l(y,{class:"pa-4",color:"success",variant:"tonal"},{default:s(()=>[...e[37]||(e[37]=[t("div",{class:"text-body-2 mb-2"},[a(" 如果您之前已经使用过 Classworks KV,可以直接使用您的 "),t("strong",null,"UUID(命名空间)"),a(" 和 "),t("strong",null,"设置的密码"),a(" 进行认证。 ")],-1),t("div",{class:"text-body-2"},' 返回上一页,点击"已注册"按钮,输入您的认证信息即可登录。 ',-1)])]),_:1})]),_:1})]),_:1}),l(me,null,{default:s(()=>[l(ce,null,{default:s(()=>[t("div",ot,[l(k,{class:"mr-3",color:"info"},{default:s(()=>[...e[38]||(e[38]=[a(" mdi-help-circle ",-1)])]),_:1}),e[39]||(e[39]=t("span",{class:"text-subtitle-1 font-weight-medium"},"我如何配置不同类型的设备?",-1))])]),_:1}),l(pe,null,{default:s(()=>[l(y,{class:"pa-4",color:"info",variant:"tonal"},{default:s(()=>[...e[40]||(e[40]=[t("div",{class:"text-body-2 mb-2"},[a(" 不同的密码对应不同的设备类型,这将由 "),t("strong",null,"管理员管理"),a("。 ")],-1),t("div",{class:"text-body-2 mb-2"}," 例如: ",-1),t("ul",{class:"text-body-2 ml-4"},[t("li",{class:"mb-1"}," 班级大屏使用一个密码 "),t("li",{class:"mb-1"}," 教师设备使用另一个密码 "),t("li",null,"学生设备使用不同的密码")],-1),t("div",{class:"text-body-2 mt-3"}," 请联系您的管理员获取对应设备类型的密码。 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})],512),[[j,r.value===4&&c.value==="cloud"]]),R(t("div",nt,[t("div",it,[l(xe,{class:"mb-4",color:"primary",size:"80",variant:"tonal"},{default:s(()=>[l(k,{size:"48"},{default:s(()=>[...e[42]||(e[42]=[a(" mdi-rocket-launch ",-1)])]),_:1})]),_:1}),e[43]||(e[43]=t("h3",{class:"text-h5 font-weight-bold mb-2"}," 渐进式注册 ",-1)),e[44]||(e[44]=t("p",{class:"text-body-2 text-medium-emphasis"}," 您可以暂时不配置 Classworks KV ",-1))]),l(ue,{"model-value":se.value,class:"mb-6",color:"primary",height:"8",rounded:""},null,8,["model-value"]),l(ze,null,{default:s(()=>[l(fe,{cols:"12"},{default:s(()=>[l(y,{color:H.value,variant:"tonal"},{default:s(()=>[l(M,null,{default:s(()=>[t("div",rt,[l(k,{color:H.value,class:"mr-2",size:"32"},{default:s(()=>[a(T(le.value),1)]),_:1},8,["color"]),t("div",dt,T(ae.value),1)]),p.value?(f(),F("div",ut,[t("div",vt,[e[45]||(e[45]=t("strong",null,"设备名称:",-1)),a(T(p.value.deviceName),1)]),t("div",null,[e[46]||(e[46]=t("strong",null,"设备 UUID:",-1)),t("code",mt,T(p.value.uuid),1)])])):$("",!0),n.value==="error"?(f(),F("div",ct,T(d.value),1)):$("",!0)]),_:1})]),_:1},8,["color"])]),_:1}),l(fe,{cols:"12"},{default:s(()=>[l(y,{variant:"outlined"},{default:s(()=>[l(M,null,{default:s(()=>[e[47]||(e[47]=t("div",{class:"text-subtitle-2 font-weight-medium mb-3"}," 过程日志 ",-1)),t("div",pt,[(f(!0),F(we,null,ye(i.value,(_,I)=>(f(),F("div",{key:I,class:"text-caption log-line"},T(_.time)+" · "+T(_.message),1))),128)),i.value.length?$("",!0):(f(),F("div",ft," 等待开始… "))])]),_:1})]),_:1})]),_:1})]),_:1}),t("div",bt,[n.value==="idle"?(f(),z(g,{key:0,color:"primary","prepend-icon":"mdi-play",size:"large",onClick:b},{default:s(()=>[...e[48]||(e[48]=[a(" 开始创建 ",-1)])]),_:1})):$("",!0),n.value==="error"?(f(),z(g,{key:1,color:"error","prepend-icon":"mdi-refresh",variant:"outlined",onClick:oe},{default:s(()=>[...e[49]||(e[49]=[a(" 重试 ",-1)])]),_:1})):$("",!0),n.value==="registering"?(f(),z(g,{key:2,loading:!0,color:"primary","prepend-icon":"mdi-progress-clock",variant:"tonal"},{default:s(()=>[...e[50]||(e[50]=[a(" 正在执行… ",-1)])]),_:1})):$("",!0),n.value==="success"?(f(),z(g,{key:3,color:"success","prepend-icon":"mdi-check-circle",size:"large",variant:"elevated",onClick:J},{default:s(()=>[...e[51]||(e[51]=[a(" 应用令牌并关闭 ",-1)])]),_:1})):$("",!0),n.value==="success"?(f(),z(g,{key:4,color:"primary","prepend-icon":"mdi-open-in-new",size:"large",variant:"outlined",onClick:q},{default:s(()=>[...e[52]||(e[52]=[a(" 前往绑定账户 ",-1)])]),_:1})):$("",!0)])],512),[[j,r.value===5]])]),_:1}),l(P,{class:"pa-6 pt-0"},{default:s(()=>[r.value>1?(f(),z(g,{key:0,size:"large",variant:"text",onClick:O},{default:s(()=>[l(k,{start:""},{default:s(()=>[...e[53]||(e[53]=[a(" mdi-chevron-left ",-1)])]),_:1}),e[54]||(e[54]=a(" 上一步 ",-1))]),_:1})):$("",!0),l(ee),r.value[e[56]||(e[56]=a(" 下一步 ",-1)),l(k,{end:""},{default:s(()=>[...e[55]||(e[55]=[a(" mdi-chevron-right ",-1)])]),_:1})]),_:1},8,["disabled"])):$("",!0),r.value===Z||r.value===4?(f(),z(g,{key:2,color:"primary",size:"large",variant:"elevated",onClick:U},{default:s(()=>[...e[57]||(e[57]=[a(" 关闭 ",-1)])]),_:1})):$("",!0)]),_:1})]),_:1}))}},gt=ie(kt,[["__scopeId","data-v-817c6e0e"]]),xt={key:0,class:"init-overlay"},wt={class:"init-container"},yt={class:"main-card-row"},Ct={class:"card-horizontal-layout"},Vt={class:"card-icon-wrapper"},$t={class:"card-horizontal-layout"},zt={class:"card-icon-wrapper"},St={class:"card-horizontal-layout"},Dt={class:"card-icon-wrapper"},Tt={class:"options-buttons"},_t={__name:"InitServiceChooser",props:{preconfig:{type:Object,default:()=>({namespace:null,authCode:null,autoOpen:!1,autoExecute:!1})}},emits:["done"],setup(K,{emit:h}){const C=K,V=h,r=x(!1),c=x(!1),n=x(!1),d=x(!1),p=x(!1),u=x(null),i=N(()=>A("server.provider")),v=N(()=>i.value==="kv-server"||i.value==="classworkscloud"),D=N(()=>A("server.kvToken")),O=N(()=>{var m;return(m=C.preconfig)!=null&&m.namespace?{namespace:C.preconfig.namespace,password:C.preconfig.authCode||"",autoExecute:C.preconfig.autoExecute||!1}:null}),w=()=>{const m=window.location.pathname,o=m==="/"||m==="/index"||m==="/index.html",b=v.value&&(!D.value||D.value==="");r.value=o&&b};ke(()=>C.preconfig,m=>{m!=null&&m.autoOpen&&(m!=null&&m.namespace)&&r.value&&(console.log("检测到预配数据,自动打开设备认证对话框"),setTimeout(()=>{n.value=!0},500))},{immediate:!0,deep:!0}),Ce(()=>{w()});const U=()=>{const m=A("server.authDomain"),o="d158067f53627d2b98babe8bffd2fd7d",b=window.location.origin,oe=encodeURIComponent(`${b}/authorizecallback`),q=A("device.uuid")||"00000000-0000-4000-8000-000000000000";let J=`${m}/authorize?app_id=${o}&mode=callback&callback_url=${oe}&remark=Classworks 自动授权 来自${window.location.hostname} ${new Date().toLocaleString()}`;q!=="00000000-0000-4000-8000-000000000000"&&(J+=`&uuid=${encodeURIComponent(q)}`),window.location.href=J},E=m=>{c.value=!1,console.log("渐进式注册成功:",m),w(),V("done")},te=m=>{var o;n.value=!1,console.log("认证成功:",m),(o=C.preconfig)!=null&&o.namespace&&console.log(`预配数据认证成功: ${C.preconfig.namespace}`),w(),V("done")},se=()=>{d.value=!1,w(),V("done")},H=m=>{console.log("替代代码:",m),p.value=!1},le=()=>{L("server.provider","kv-local"),r.value=!1,window.location.reload(),V("done")},ae=()=>{window.open(A("server.authDomain"),"_blank")};return(m,o)=>r.value?(f(),F("div",xt,[t("div",wt,[o[22]||(o[22]=t("div",{class:"init-header"},[t("div",{class:"title"}," 欢迎使用 Classworks "),t("div",{class:"subtitle"}," 请选择你的使用方式 ")],-1)),t("div",yt,[l(y,{class:"main-service-card gradient-new clickable",elevation:"4",onClick:o[0]||(o[0]=b=>c.value=!0)},{default:s(()=>[l(M,null,{default:s(()=>[t("div",Ct,[t("div",Vt,[l(k,{color:"primary",size:"48"},{default:s(()=>[...o[12]||(o[12]=[a(" mdi-new-box ",-1)])]),_:1})]),o[13]||(o[13]=t("div",{class:"card-content"},[t("div",{class:"text-h6 font-weight-bold"}," 初次使用 "),t("div",{class:"text-body-2 text-medium-emphasis mt-1"}," 了解 Classworks KV 并开始使用 ")],-1))])]),_:1})]),_:1}),l(y,{class:"main-service-card gradient-registered clickable",elevation:"4",onClick:o[1]||(o[1]=b=>n.value=!0)},{default:s(()=>[l(M,null,{default:s(()=>[t("div",$t,[t("div",zt,[l(k,{color:"success",size:"48"},{default:s(()=>[...o[14]||(o[14]=[a(" mdi-account-check ",-1)])]),_:1})]),o[15]||(o[15]=t("div",{class:"card-content"},[t("div",{class:"text-h6 font-weight-bold"}," 已注册 "),t("div",{class:"text-body-2 text-medium-emphasis mt-1"}," 使用设备 Namespace 登录 ")],-1))])]),_:1})]),_:1}),l(y,{class:"main-service-card clickable",elevation:"4",onClick:ae},{default:s(()=>[l(M,null,{default:s(()=>[t("div",St,[t("div",Dt,[l(k,{color:"info",size:"48"},{default:s(()=>[...o[16]||(o[16]=[a(" mdi-database-cog ",-1)])]),_:1})]),o[17]||(o[17]=t("div",{class:"card-content"},[t("div",{class:"text-h6 font-weight-bold"}," Classworks KV "),t("div",{class:"text-body-2 text-medium-emphasis mt-1"}," 打开云端控制台管理数据 ")],-1))])]),_:1})]),_:1})]),t("div",Tt,[l(g,{"prepend-icon":"mdi-laptop",size:"small",variant:"tonal",onClick:le},{default:s(()=>[...o[18]||(o[18]=[a(" 使用本地模式 ",-1)])]),_:1}),l(g,{"prepend-icon":"mdi-flash",size:"small",variant:"tonal",onClick:U},{default:s(()=>[...o[19]||(o[19]=[a(" 授权码式授权(弃用) ",-1)])]),_:1}),l(g,{"prepend-icon":"mdi-key",size:"small",variant:"tonal",onClick:o[2]||(o[2]=b=>d.value=!0)},{default:s(()=>[...o[20]||(o[20]=[a(" 输入 Token ",-1)])]),_:1}),l(g,{"prepend-icon":"mdi-code-tags",size:"small",variant:"tonal",onClick:o[3]||(o[3]=b=>p.value=!0)},{default:s(()=>[...o[21]||(o[21]=[a(" 输入替代代码 ",-1)])]),_:1})]),o[23]||(o[23]=t("div",{class:"footer-hint"}," 完成授权后可使用作业同步、考试看板等在线功能。 ",-1))]),l(Y,{modelValue:c.value,"onUpdate:modelValue":o[5]||(o[5]=b=>c.value=b),"max-width":"600"},{default:s(()=>[l(gt,{onClose:o[4]||(o[4]=b=>c.value=!1),onSuccess:E})]),_:1},8,["modelValue"]),l(Y,{modelValue:n.value,"onUpdate:modelValue":o[7]||(o[7]=b=>n.value=b),"max-width":"500"},{default:s(()=>[l(Ue,{ref_key:"deviceAuthDialog",ref:u,preconfig:O.value,"show-cancel":!0,onCancel:o[6]||(o[6]=b=>n.value=!1),onSuccess:te},null,8,["preconfig"])]),_:1},8,["modelValue"]),l(Y,{modelValue:d.value,"onUpdate:modelValue":o[9]||(o[9]=b=>d.value=b),"max-width":"500"},{default:s(()=>[l(Ae,{"show-cancel":!0,onCancel:o[8]||(o[8]=b=>d.value=!1),onSuccess:se})]),_:1},8,["modelValue"]),l(Y,{modelValue:p.value,"onUpdate:modelValue":o[11]||(o[11]=b=>p.value=b),"max-width":"500"},{default:s(()=>[l(Ke,{"show-cancel":!0,onCancel:o[10]||(o[10]=b=>p.value=!1),onSubmit:H})]),_:1},8,["modelValue"])])):$("",!0)}},Mt=ie(_t,[["__scopeId","data-v-cbfbc6db"]]);export{Mt as default}; diff --git a/assets/MessageLog-DNZPN4Qf.js b/assets/MessageLog-BB5IiJ1u.js similarity index 68% rename from assets/MessageLog-DNZPN4Qf.js rename to assets/MessageLog-BB5IiJ1u.js index d8950a7..284884a 100644 --- a/assets/MessageLog-DNZPN4Qf.js +++ b/assets/MessageLog-BB5IiJ1u.js @@ -1 +1 @@ -import{a5 as de,E as Q,a7 as me,as as fe,u as ge,H as he,at as ye,z as we,a8 as be,a9 as pe,R as ke,m as Se,au as Te,aa as Ve,ac as Ee,T as Me,ad as Pe,_ as _e,av as W,j as Ce,k as ee,s as te,t as Be,h as ae}from"./index-_6IQhlPZ.js";import{b as xe,c as Le}from"./VAppBarTitle-Cvegbk0-.js";import{D as se,o as R,A as re,s as x,e as V,w as De,q as Ie,I as He,k as _,j as E,m as ne,P as Re,F as ie,t as X,B as Ne,b as j,f as Ye,X as H,Y as O,Z as T,a1 as $,_ as Oe,a2 as $e,S as F,$ as A}from"./vendor-vue-H0jQBZ7T.js";import{s as ze,H as We,C as z,z as Xe,f as Fe,A as Ae,h as je,a0 as qe,n as Ze,ay as Ue,j as Ge,u as Je,aC as Ke,p as Qe,m as et,a5 as tt,az as at,av as nt,k as ot}from"./vendor-vuetify-ChAgIwn2.js";function lt(e){let{rootEl:n,isSticky:s,layoutItemStyles:k}=e;const t=x(!1),u=x(0),a=V(()=>{const w=typeof t.value=="boolean"?"top":t.value;return[s.value?{top:"auto",bottom:"auto",height:void 0}:void 0,t.value?{[w]:ze(u.value)}:{top:k.value.top}]});se(()=>{R(s,w=>{w?window.addEventListener("scroll",S,{passive:!0}):window.removeEventListener("scroll",S)},{immediate:!0})}),re(()=>{window.removeEventListener("scroll",S)});let h=0;function S(){const w=h>window.scrollY?"up":"down",v=n.value.getBoundingClientRect(),d=parseFloat(k.value.top??0),c=window.scrollY-Math.max(0,u.value-d),m=v.height+Math.max(u.value,d)-window.scrollY-window.innerHeight,y=parseFloat(getComputedStyle(n.value).getPropertyValue("--v-body-scroll-y"))||0;v.height0;s--){if(e[s].t===e[s-1].t)continue;const k=oe(n),t=(e[s].d-e[s-1].d)/(e[s].t-e[s-1].t);n+=(t-k)*Math.abs(t),s===e.length-1&&(n*=.5)}return oe(n)*1e3}function it(){const e={};function n(t){Array.from(t.changedTouches).forEach(u=>{(e[u.identifier]??(e[u.identifier]=new We(rt))).push([t.timeStamp,u])})}function s(t){Array.from(t.changedTouches).forEach(u=>{delete e[u.identifier]})}function k(t){var w;const u=(w=e[t])==null?void 0:w.values().reverse();if(!u)throw new Error(`No samples for touch id ${t}`);const a=u[0],h=[],S=[];for(const v of u){if(a[0]-v[0]>st)break;h.push({t:v[0],d:v[1].clientX}),S.push({t:v[0],d:v[1].clientY})}return{x:le(h),y:le(S),get direction(){const{x:v,y:d}=this,[c,m]=[Math.abs(v),Math.abs(d)];return c>m&&v>=0?"right":c>m&&v<=0?"left":m>c&&d>=0?"down":m>c&&d<=0?"up":ut()}}}return{addMovement:n,endTouch:s,getVelocity:k}}function ut(){throw new Error}function ct(e){let{el:n,isActive:s,isTemporary:k,width:t,touchless:u,position:a}=e;se(()=>{window.addEventListener("touchstart",M,{passive:!0}),window.addEventListener("touchmove",P,{passive:!1}),window.addEventListener("touchend",N,{passive:!0})}),re(()=>{window.removeEventListener("touchstart",M),window.removeEventListener("touchmove",P),window.removeEventListener("touchend",N)});const h=V(()=>["left","right"].includes(a.value)),{addMovement:S,endTouch:w,getVelocity:v}=it();let d=!1;const c=x(!1),m=x(0),y=x(0);let b;function L(o,l){return(a.value==="left"?o:a.value==="right"?document.documentElement.clientWidth-o:a.value==="top"?o:a.value==="bottom"?document.documentElement.clientHeight-o:B())-(l?t.value:0)}function D(o){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const r=a.value==="left"?(o-y.value)/t.value:a.value==="right"?(document.documentElement.clientWidth-o-y.value)/t.value:a.value==="top"?(o-y.value)/t.value:a.value==="bottom"?(document.documentElement.clientHeight-o-y.value)/t.value:B();return l?Xe(r):r}function M(o){if(u.value)return;const l=o.changedTouches[0].clientX,r=o.changedTouches[0].clientY,i=25,f=a.value==="left"?ldocument.documentElement.clientWidth-i:a.value==="top"?rdocument.documentElement.clientHeight-i:B(),g=s.value&&(a.value==="left"?ldocument.documentElement.clientWidth-t.value:a.value==="top"?rdocument.documentElement.clientHeight-t.value:B());(f||g||s.value&&k.value)&&(b=[l,r],y.value=L(h.value?l:r,s.value),m.value=D(h.value?l:r),d=y.value>-20&&y.value<80,w(o),S(o))}function P(o){const l=o.changedTouches[0].clientX,r=o.changedTouches[0].clientY;if(d){if(!o.cancelable){d=!1;return}const f=Math.abs(l-b[0]),g=Math.abs(r-b[1]);(h.value?f>g&&f>3:g>f&&g>3)?(c.value=!0,d=!1):(h.value?g:f)>3&&(d=!1)}if(!c.value)return;o.preventDefault(),S(o);const i=D(h.value?l:r,!1);m.value=Math.max(0,Math.min(1,i)),i>1?y.value=L(h.value?l:r,!0):i<0&&(y.value=L(h.value?l:r,!1))}function N(o){if(d=!1,!c.value)return;S(o),c.value=!1;const l=v(o.changedTouches[0].identifier),r=Math.abs(l.x),i=Math.abs(l.y);(h.value?r>i&&r>400:i>r&&i>3)?s.value=l.direction===({left:"right",right:"left",top:"down",bottom:"up"}[a.value]||B()):s.value=m.value>.5}const I=V(()=>c.value?{transform:a.value==="left"?`translateX(calc(-100% + ${m.value*t.value}px))`:a.value==="right"?`translateX(calc(100% - ${m.value*t.value}px))`:a.value==="top"?`translateY(calc(-100% + ${m.value*t.value}px))`:a.value==="bottom"?`translateY(calc(100% - ${m.value*t.value}px))`:B(),transition:"none"}:void 0);return z(c,()=>{var r,i;const o=((r=n.value)==null?void 0:r.style.transform)??null,l=((i=n.value)==null?void 0:i.style.transition)??null;De(()=>{var f,g,C,Y;(g=n.value)==null||g.style.setProperty("transform",((f=I.value)==null?void 0:f.transform)||"none"),(Y=n.value)==null||Y.style.setProperty("transition",((C=I.value)==null?void 0:C.transition)||null)}),Ie(()=>{var f,g;(f=n.value)==null||f.style.setProperty("transform",o),(g=n.value)==null||g.style.setProperty("transition",l)})}),{isDragging:c,dragProgress:m,dragStyles:I}}function B(){throw new Error}const vt=["start","end","left","right","top","bottom"],dt=Qe({color:String,disableResizeWatcher:Boolean,disableRouteWatcher:Boolean,expandOnHover:Boolean,floating:Boolean,modelValue:{type:Boolean,default:null},permanent:Boolean,rail:{type:Boolean,default:null},railWidth:{type:[Number,String],default:56},scrim:{type:[Boolean,String],default:!0},image:String,temporary:Boolean,persistent:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:e=>vt.includes(e)},sticky:Boolean,...Pe(),...ot(),...Me(),...nt({mobile:null}),...Ee(),...at(),...Ve(),...tt(Te(),["disableInitialFocus"]),...Se({tag:"nav"}),...et()},"VNavigationDrawer"),mt=Fe()({name:"VNavigationDrawer",props:dt(),emits:{"update:modelValue":e=>!0,"update:rail":e=>!0},setup(e,n){let{attrs:s,emit:k,slots:t}=n;const{isRtl:u}=Ae(),{themeClasses:a}=je(e),{borderClasses:h}=de(e),{backgroundColorClasses:S,backgroundColorStyles:w}=Q(()=>e.color),{elevationClasses:v}=pe(e),{displayClasses:d,mobile:c}=qe(e),{roundedClasses:m}=me(e),y=fe(),b=Ze(e,"modelValue",null,p=>!!p),{ssrBootStyles:L}=ge(),{scopeId:D}=he(),M=j(),P=x(!1),{runOpenDelay:N,runCloseDelay:I}=ke(e,p=>{P.value=p}),o=V(()=>e.rail&&e.expandOnHover&&P.value?Number(e.width):Number(e.rail?e.railWidth:e.width)),l=V(()=>Ke(e.location,u.value)),r=X(()=>e.persistent),i=V(()=>!e.permanent&&(c.value||e.temporary)),f=V(()=>e.sticky&&!i.value&&l.value!=="bottom");ye(e,{isActive:b,localTop:i,contentEl:M}),z(()=>e.expandOnHover&&e.rail!=null,()=>{R(P,p=>k("update:rail",!p))}),z(()=>!e.disableResizeWatcher,()=>{R(i,p=>!e.permanent&&He(()=>b.value=!p))}),z(()=>!e.disableRouteWatcher&&!!y,()=>{R(y.currentRoute,()=>i.value&&(b.value=!1))}),R(()=>e.permanent,p=>{p&&(b.value=!0)}),e.modelValue==null&&!i.value&&(b.value=e.permanent||!c.value);const{isDragging:g,dragProgress:C}=ct({el:M,isActive:b,isTemporary:i,width:o,touchless:X(()=>e.touchless),position:l}),Y=V(()=>{const p=i.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):o.value;return g.value?p*C.value:p}),{layoutItemStyles:q,layoutItemScrimStyles:ue}=Ue({id:e.name,order:V(()=>parseInt(e.order,10)),position:l,layoutSize:Y,elementSize:o,active:Ne(b),disableTransitions:X(()=>g.value),absolute:V(()=>e.absolute||f.value&&typeof Z.value!="string")}),{isStuck:Z,stickyStyles:ce}=lt({rootEl:M,isSticky:f,layoutItemStyles:q}),U=Q(()=>typeof e.scrim=="string"?e.scrim:null),ve=V(()=>({...g.value?{opacity:C.value*.2,transition:"none"}:void 0,...ue.value}));return Ge({VList:{bgColor:"transparent"}}),Je(()=>{const p=t.image||e.image;return _(ie,null,[E(e.tag,ne({ref:M,onMouseenter:N,onMouseleave:I,class:["v-navigation-drawer",`v-navigation-drawer--${l.value}`,{"v-navigation-drawer--expand-on-hover":e.expandOnHover,"v-navigation-drawer--floating":e.floating,"v-navigation-drawer--is-hovering":P.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":i.value,"v-navigation-drawer--persistent":r.value,"v-navigation-drawer--active":b.value,"v-navigation-drawer--sticky":f.value},a.value,S.value,h.value,d.value,v.value,m.value,e.class],style:[w.value,q.value,L.value,ce.value,e.style],inert:!b.value},D,s),{default:()=>{var G,J,K;return[p&&_("div",{key:"image",class:"v-navigation-drawer__img"},[t.image?E(be,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:e.image}}},t.image):E(we,{key:"image-img",alt:"",cover:!0,height:"inherit",src:e.image},null)]),t.prepend&&_("div",{class:"v-navigation-drawer__prepend"},[(G=t.prepend)==null?void 0:G.call(t)]),_("div",{class:"v-navigation-drawer__content"},[(J=t.default)==null?void 0:J.call(t)]),t.append&&_("div",{class:"v-navigation-drawer__append"},[(K=t.append)==null?void 0:K.call(t)])]}}),E(Re,{name:"fade-transition"},{default:()=>[i.value&&(g.value||b.value)&&!!e.scrim&&_("div",ne({class:["v-navigation-drawer__scrim",U.backgroundColorClasses.value],style:[ve.value,U.backgroundColorStyles.value],onClick:()=>{r.value||(b.value=!1)}},D),null)]})])}),{isStuck:Z}}}),ft=Ye({name:"MessageLog",setup(){const e=j(!1),n=j([]),s={success:"mdi-check-circle",error:"mdi-alert-circle",warning:"mdi-alert",info:"mdi-information"},k={success:"success",error:"error",warning:"warning",info:"primary"};return W.onLog(t=>{t&&(n.value=t)}),{drawer:e,messages:n,icons:s,colors:k,deleteMessage:t=>W.deleteMessage(t),clearMessages:()=>W.clearMessages()}}}),gt={class:"text-caption text-grey"};function ht(e,n,s,k,t,u){return e.drawer?(H(),O(mt,{key:0,modelValue:e.drawer,"onUpdate:modelValue":n[0]||(n[0]=a=>e.drawer=a),location:"right",temporary:"",width:"400"},{default:T(()=>[E(xe,{color:"primary"},{default:T(()=>[E(Le,null,{default:T(()=>[...n[1]||(n[1]=[$("消息记录",-1)])]),_:1})]),_:1}),E(Ce,null,{default:T(()=>[(H(!0),Oe(ie,null,$e(e.messages,a=>(H(),O(ee,{key:a.id,rounded:""},{prepend:T(()=>[E(ae,{color:e.colors[a.type],icon:e.icons[a.type],size:"20"},null,8,["color","icon"])]),default:T(()=>[E(te,null,{default:T(()=>[$(F(a.title),1)]),_:2},1024),a.content?(H(),O(Be,{key:0},{default:T(()=>[$(F(a.content),1)]),_:2},1024)):A("",!0),_("span",gt,F(new Date(a.timestamp).toLocaleTimeString()),1)]),_:2},1024))),128)),e.messages.length?A("",!0):(H(),O(ee,{key:0},{prepend:T(()=>[E(ae,{color:"grey",icon:"mdi-inbox"})]),default:T(()=>[E(te,{class:"text-grey"},{default:T(()=>[...n[2]||(n[2]=[$("暂无消息",-1)])]),_:1})]),_:1}))]),_:1})]),_:1},8,["modelValue"])):A("",!0)}const yt=_e(ft,[["render",ht]]),St=Object.freeze(Object.defineProperty({__proto__:null,default:yt},Symbol.toStringTag,{value:"Module"}));export{St as M,mt as V,yt as _}; +import{a6 as de,H as Q,a8 as me,av as fe,u as ge,K as he,aw as ye,B as we,a9 as be,aa as pe,T as ke,m as Se,ax as Te,ab as Ve,ad as Ee,U as Me,ae as Pe,_ as _e,ay as z,l as Be,n as ee,o as te,p as Ce,f as ae}from"./index-CFUCTEXJ.js";import{b as xe,c as De}from"./VAppBarTitle-vVO0I21U.js";import{D as se,o as R,A as re,s as x,e as V,w as Le,q as Ie,I as He,k as _,j as E,m as ne,P as Re,F as ie,t as X,B as Ne,b as j,f as Ye,X as H,Y as O,Z as T,a1 as $,_ as Oe,a2 as $e,S as F,$ as A}from"./vendor-vue-B2vxubPy.js";import{s as We,H as ze,C as W,z as Xe,f as Fe,A as Ae,h as je,a0 as qe,n as Ue,ay as Ze,j as Ke,u as Ge,aD as Je,p as Qe,m as et,a5 as tt,az as at,av as nt,k as ot}from"./vendor-vuetify-s-yw_Hr8.js";function lt(e){let{rootEl:n,isSticky:s,layoutItemStyles:k}=e;const t=x(!1),u=x(0),a=V(()=>{const w=typeof t.value=="boolean"?"top":t.value;return[s.value?{top:"auto",bottom:"auto",height:void 0}:void 0,t.value?{[w]:We(u.value)}:{top:k.value.top}]});se(()=>{R(s,w=>{w?window.addEventListener("scroll",S,{passive:!0}):window.removeEventListener("scroll",S)},{immediate:!0})}),re(()=>{window.removeEventListener("scroll",S)});let h=0;function S(){const w=h>window.scrollY?"up":"down",v=n.value.getBoundingClientRect(),d=parseFloat(k.value.top??0),c=window.scrollY-Math.max(0,u.value-d),m=v.height+Math.max(u.value,d)-window.scrollY-window.innerHeight,y=parseFloat(getComputedStyle(n.value).getPropertyValue("--v-body-scroll-y"))||0;v.height0;s--){if(e[s].t===e[s-1].t)continue;const k=oe(n),t=(e[s].d-e[s-1].d)/(e[s].t-e[s-1].t);n+=(t-k)*Math.abs(t),s===e.length-1&&(n*=.5)}return oe(n)*1e3}function it(){const e={};function n(t){Array.from(t.changedTouches).forEach(u=>{(e[u.identifier]??(e[u.identifier]=new ze(rt))).push([t.timeStamp,u])})}function s(t){Array.from(t.changedTouches).forEach(u=>{delete e[u.identifier]})}function k(t){var w;const u=(w=e[t])==null?void 0:w.values().reverse();if(!u)throw new Error(`No samples for touch id ${t}`);const a=u[0],h=[],S=[];for(const v of u){if(a[0]-v[0]>st)break;h.push({t:v[0],d:v[1].clientX}),S.push({t:v[0],d:v[1].clientY})}return{x:le(h),y:le(S),get direction(){const{x:v,y:d}=this,[c,m]=[Math.abs(v),Math.abs(d)];return c>m&&v>=0?"right":c>m&&v<=0?"left":m>c&&d>=0?"down":m>c&&d<=0?"up":ut()}}}return{addMovement:n,endTouch:s,getVelocity:k}}function ut(){throw new Error}function ct(e){let{el:n,isActive:s,isTemporary:k,width:t,touchless:u,position:a}=e;se(()=>{window.addEventListener("touchstart",M,{passive:!0}),window.addEventListener("touchmove",P,{passive:!1}),window.addEventListener("touchend",N,{passive:!0})}),re(()=>{window.removeEventListener("touchstart",M),window.removeEventListener("touchmove",P),window.removeEventListener("touchend",N)});const h=V(()=>["left","right"].includes(a.value)),{addMovement:S,endTouch:w,getVelocity:v}=it();let d=!1;const c=x(!1),m=x(0),y=x(0);let b;function D(o,l){return(a.value==="left"?o:a.value==="right"?document.documentElement.clientWidth-o:a.value==="top"?o:a.value==="bottom"?document.documentElement.clientHeight-o:C())-(l?t.value:0)}function L(o){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;const r=a.value==="left"?(o-y.value)/t.value:a.value==="right"?(document.documentElement.clientWidth-o-y.value)/t.value:a.value==="top"?(o-y.value)/t.value:a.value==="bottom"?(document.documentElement.clientHeight-o-y.value)/t.value:C();return l?Xe(r):r}function M(o){if(u.value)return;const l=o.changedTouches[0].clientX,r=o.changedTouches[0].clientY,i=25,f=a.value==="left"?ldocument.documentElement.clientWidth-i:a.value==="top"?rdocument.documentElement.clientHeight-i:C(),g=s.value&&(a.value==="left"?ldocument.documentElement.clientWidth-t.value:a.value==="top"?rdocument.documentElement.clientHeight-t.value:C());(f||g||s.value&&k.value)&&(b=[l,r],y.value=D(h.value?l:r,s.value),m.value=L(h.value?l:r),d=y.value>-20&&y.value<80,w(o),S(o))}function P(o){const l=o.changedTouches[0].clientX,r=o.changedTouches[0].clientY;if(d){if(!o.cancelable){d=!1;return}const f=Math.abs(l-b[0]),g=Math.abs(r-b[1]);(h.value?f>g&&f>3:g>f&&g>3)?(c.value=!0,d=!1):(h.value?g:f)>3&&(d=!1)}if(!c.value)return;o.preventDefault(),S(o);const i=L(h.value?l:r,!1);m.value=Math.max(0,Math.min(1,i)),i>1?y.value=D(h.value?l:r,!0):i<0&&(y.value=D(h.value?l:r,!1))}function N(o){if(d=!1,!c.value)return;S(o),c.value=!1;const l=v(o.changedTouches[0].identifier),r=Math.abs(l.x),i=Math.abs(l.y);(h.value?r>i&&r>400:i>r&&i>3)?s.value=l.direction===({left:"right",right:"left",top:"down",bottom:"up"}[a.value]||C()):s.value=m.value>.5}const I=V(()=>c.value?{transform:a.value==="left"?`translateX(calc(-100% + ${m.value*t.value}px))`:a.value==="right"?`translateX(calc(100% - ${m.value*t.value}px))`:a.value==="top"?`translateY(calc(-100% + ${m.value*t.value}px))`:a.value==="bottom"?`translateY(calc(100% - ${m.value*t.value}px))`:C(),transition:"none"}:void 0);return W(c,()=>{var r,i;const o=((r=n.value)==null?void 0:r.style.transform)??null,l=((i=n.value)==null?void 0:i.style.transition)??null;Le(()=>{var f,g,B,Y;(g=n.value)==null||g.style.setProperty("transform",((f=I.value)==null?void 0:f.transform)||"none"),(Y=n.value)==null||Y.style.setProperty("transition",((B=I.value)==null?void 0:B.transition)||null)}),Ie(()=>{var f,g;(f=n.value)==null||f.style.setProperty("transform",o),(g=n.value)==null||g.style.setProperty("transition",l)})}),{isDragging:c,dragProgress:m,dragStyles:I}}function C(){throw new Error}const vt=["start","end","left","right","top","bottom"],dt=Qe({color:String,disableResizeWatcher:Boolean,disableRouteWatcher:Boolean,expandOnHover:Boolean,floating:Boolean,modelValue:{type:Boolean,default:null},permanent:Boolean,rail:{type:Boolean,default:null},railWidth:{type:[Number,String],default:56},scrim:{type:[Boolean,String],default:!0},image:String,temporary:Boolean,persistent:Boolean,touchless:Boolean,width:{type:[Number,String],default:256},location:{type:String,default:"start",validator:e=>vt.includes(e)},sticky:Boolean,...Pe(),...ot(),...Me(),...nt({mobile:null}),...Ee(),...at(),...Ve(),...tt(Te(),["disableInitialFocus"]),...Se({tag:"nav"}),...et()},"VNavigationDrawer"),mt=Fe()({name:"VNavigationDrawer",props:dt(),emits:{"update:modelValue":e=>!0,"update:rail":e=>!0},setup(e,n){let{attrs:s,emit:k,slots:t}=n;const{isRtl:u}=Ae(),{themeClasses:a}=je(e),{borderClasses:h}=de(e),{backgroundColorClasses:S,backgroundColorStyles:w}=Q(()=>e.color),{elevationClasses:v}=pe(e),{displayClasses:d,mobile:c}=qe(e),{roundedClasses:m}=me(e),y=fe(),b=Ue(e,"modelValue",null,p=>!!p),{ssrBootStyles:D}=ge(),{scopeId:L}=he(),M=j(),P=x(!1),{runOpenDelay:N,runCloseDelay:I}=ke(e,p=>{P.value=p}),o=V(()=>e.rail&&e.expandOnHover&&P.value?Number(e.width):Number(e.rail?e.railWidth:e.width)),l=V(()=>Je(e.location,u.value)),r=X(()=>e.persistent),i=V(()=>!e.permanent&&(c.value||e.temporary)),f=V(()=>e.sticky&&!i.value&&l.value!=="bottom");ye(e,{isActive:b,localTop:i,contentEl:M}),W(()=>e.expandOnHover&&e.rail!=null,()=>{R(P,p=>k("update:rail",!p))}),W(()=>!e.disableResizeWatcher,()=>{R(i,p=>!e.permanent&&He(()=>b.value=!p))}),W(()=>!e.disableRouteWatcher&&!!y,()=>{R(y.currentRoute,()=>i.value&&(b.value=!1))}),R(()=>e.permanent,p=>{p&&(b.value=!0)}),e.modelValue==null&&!i.value&&(b.value=e.permanent||!c.value);const{isDragging:g,dragProgress:B}=ct({el:M,isActive:b,isTemporary:i,width:o,touchless:X(()=>e.touchless),position:l}),Y=V(()=>{const p=i.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):o.value;return g.value?p*B.value:p}),{layoutItemStyles:q,layoutItemScrimStyles:ue}=Ze({id:e.name,order:V(()=>parseInt(e.order,10)),position:l,layoutSize:Y,elementSize:o,active:Ne(b),disableTransitions:X(()=>g.value),absolute:V(()=>e.absolute||f.value&&typeof U.value!="string")}),{isStuck:U,stickyStyles:ce}=lt({rootEl:M,isSticky:f,layoutItemStyles:q}),Z=Q(()=>typeof e.scrim=="string"?e.scrim:null),ve=V(()=>({...g.value?{opacity:B.value*.2,transition:"none"}:void 0,...ue.value}));return Ke({VList:{bgColor:"transparent"}}),Ge(()=>{const p=t.image||e.image;return _(ie,null,[E(e.tag,ne({ref:M,onMouseenter:N,onMouseleave:I,class:["v-navigation-drawer",`v-navigation-drawer--${l.value}`,{"v-navigation-drawer--expand-on-hover":e.expandOnHover,"v-navigation-drawer--floating":e.floating,"v-navigation-drawer--is-hovering":P.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":i.value,"v-navigation-drawer--persistent":r.value,"v-navigation-drawer--active":b.value,"v-navigation-drawer--sticky":f.value},a.value,S.value,h.value,d.value,v.value,m.value,e.class],style:[w.value,q.value,D.value,ce.value,e.style],inert:!b.value},L,s),{default:()=>{var K,G,J;return[p&&_("div",{key:"image",class:"v-navigation-drawer__img"},[t.image?E(be,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{alt:"",cover:!0,height:"inherit",src:e.image}}},t.image):E(we,{key:"image-img",alt:"",cover:!0,height:"inherit",src:e.image},null)]),t.prepend&&_("div",{class:"v-navigation-drawer__prepend"},[(K=t.prepend)==null?void 0:K.call(t)]),_("div",{class:"v-navigation-drawer__content"},[(G=t.default)==null?void 0:G.call(t)]),t.append&&_("div",{class:"v-navigation-drawer__append"},[(J=t.append)==null?void 0:J.call(t)])]}}),E(Re,{name:"fade-transition"},{default:()=>[i.value&&(g.value||b.value)&&!!e.scrim&&_("div",ne({class:["v-navigation-drawer__scrim",Z.backgroundColorClasses.value],style:[ve.value,Z.backgroundColorStyles.value],onClick:()=>{r.value||(b.value=!1)}},L),null)]})])}),{isStuck:U}}}),ft=Ye({name:"MessageLog",setup(){const e=j(!1),n=j([]),s={success:"mdi-check-circle",error:"mdi-alert-circle",warning:"mdi-alert",info:"mdi-information"},k={success:"success",error:"error",warning:"warning",info:"primary"};return z.onLog(t=>{t&&(n.value=t)}),{drawer:e,messages:n,icons:s,colors:k,deleteMessage:t=>z.deleteMessage(t),clearMessages:()=>z.clearMessages()}}}),gt={class:"text-caption text-grey"};function ht(e,n,s,k,t,u){return e.drawer?(H(),O(mt,{key:0,modelValue:e.drawer,"onUpdate:modelValue":n[0]||(n[0]=a=>e.drawer=a),location:"right",temporary:"",width:"400"},{default:T(()=>[E(xe,{color:"primary"},{default:T(()=>[E(De,null,{default:T(()=>[...n[1]||(n[1]=[$("消息记录",-1)])]),_:1})]),_:1}),E(Be,null,{default:T(()=>[(H(!0),Oe(ie,null,$e(e.messages,a=>(H(),O(ee,{key:a.id,rounded:""},{prepend:T(()=>[E(ae,{color:e.colors[a.type],icon:e.icons[a.type],size:"20"},null,8,["color","icon"])]),default:T(()=>[E(te,null,{default:T(()=>[$(F(a.title),1)]),_:2},1024),a.content?(H(),O(Ce,{key:0},{default:T(()=>[$(F(a.content),1)]),_:2},1024)):A("",!0),_("span",gt,F(new Date(a.timestamp).toLocaleTimeString()),1)]),_:2},1024))),128)),e.messages.length?A("",!0):(H(),O(ee,{key:0},{prepend:T(()=>[E(ae,{color:"grey",icon:"mdi-inbox"})]),default:T(()=>[E(te,{class:"text-grey"},{default:T(()=>[...n[2]||(n[2]=[$("暂无消息",-1)])]),_:1})]),_:1}))]),_:1})]),_:1},8,["modelValue"])):A("",!0)}const yt=_e(ft,[["render",ht]]),St=Object.freeze(Object.defineProperty({__proto__:null,default:yt},Symbol.toStringTag,{value:"Module"}));export{St as M,mt as V,yt as _}; diff --git a/assets/PwaInstallCard-CTQnZjV3.js b/assets/PwaInstallCard-uU1hg_zK.js similarity index 83% rename from assets/PwaInstallCard-CTQnZjV3.js rename to assets/PwaInstallCard-uU1hg_zK.js index 4fc15d9..9ead11d 100644 --- a/assets/PwaInstallCard-CTQnZjV3.js +++ b/assets/PwaInstallCard-uU1hg_zK.js @@ -1 +1 @@ -import{D as K,A as O,X as f,Y as y,Z as e,k as _,j as t,a1 as l,_ as I,F as L,a2 as M,S as d,ad as Q,$ as ee,b as C,e as q,r as A}from"./vendor-vue-H0jQBZ7T.js";import{c as D,J as te,d as E,j as B,k as R,s as T,t as W,l as h,L as j,h as U,q as F,p as ae,e as X,o as se,g as ne,v as ie,aA as oe,aB as le}from"./index-_6IQhlPZ.js";import{V as re}from"./VChip-Veb3ShEh.js";import"./vendor-vuetify-ChAgIwn2.js";const de={class:"d-flex flex-no-wrap justify-space-between"},ue={class:"pe-4"},ce={class:"mb-3"},we={__name:"PwaInstallCard",setup(pe){const g=C(!1),o=C(!1),m=C(!1),r=A({title:"",message:"",links:[]}),$={pending:"待授权",granted:"已完成",denied:"已拒绝",unavailable:"不可用"},G={pending:"mdi-progress-clock",granted:"mdi-check-circle",denied:"mdi-close-circle",unavailable:"mdi-help-circle"},k={pending:"primary",granted:"success",denied:"error",unavailable:"surface-variant"},n=A({pwa:{label:"安装应用",description:"将网站安装为独立应用,便于快速启动",status:"pending"},notification:{label:"通知权限",description:"允许接收作业、考试等通知提醒",status:"pending"},storage:{label:"离线存储",description:"启用持久化存储以获得更稳健的离线体验",status:"pending"}}),b=q(()=>[{key:"pwa",...n.pwa},{key:"notification",...n.notification},{key:"storage",...n.storage}]),V=q(()=>b.value.some(a=>a.status==="pending")),H={pwa:[{text:"MDN - 安装 PWA 指南",desc:"检查浏览器是否支持并手动触发安装",href:"https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps/Guides/Installing"},{text:"Microsoft Edge - PWA 体验",desc:"Edge 浏览器安装与 UX 说明",href:"https://learn.microsoft.com/zh-cn/microsoft-edge/progressive-web-apps/ux"}],notification:[{text:"MDN - 通知权限与用法",desc:"浏览器通知权限的工作方式与调试",href:"https://developer.mozilla.org/zh-CN/docs/Web/API/notification"}],storage:[{text:"MDN - Storage 持久化说明",desc:"了解持久化存储的可用性与申请方式",href:"https://developer.mozilla.org/zh-CN/docs/Web/API/StorageManager/persist"}]};let v;const p=async()=>{var w;if(ne("pwa.hideInstallCard")){g.value=!1;return}if(window.matchMedia("(display-mode: standalone)").matches||window.navigator.standalone===!0?n.pwa.status="granted":(window.deferredPwaPrompt,n.pwa.status="pending"),typeof Notification>"u")n.notification.status="unavailable";else{const c=Notification.permission;n.notification.status=c==="granted"?"granted":c==="denied"?"denied":"pending"}if((w=navigator.storage)!=null&&w.persisted){const c=await navigator.storage.persisted();n.storage.status=c?"granted":"pending"}else n.storage.status="unavailable";const i=b.value.some(c=>c.status!=="granted");g.value=i},x=async()=>{const a=window.deferredPwaPrompt;if(!a){n.pwa.status="pending",u("pwa","浏览器没有提供安装提示,可按文档手动安装。");return}a.prompt();const{outcome:s}=await a.userChoice;n.pwa.status=s==="accepted"?"granted":"denied",s!=="accepted"&&u("pwa","如果未出现安装弹窗,或被拒绝,请按说明手动安装。"),window.deferredPwaPrompt=null},P=async()=>{if(typeof Notification>"u"){n.notification.status="unavailable",u("notification","当前环境不支持通知 API,可查看说明手动开启或更换浏览器。");return}const a=await oe();n.notification.status=a?"granted":"denied",a||u("notification","通知请求未被授予,请按说明检查浏览器或系统设置。")},N=async()=>{var s;if(!((s=navigator.storage)!=null&&s.persist)){n.storage.status="unavailable",u("storage","当前浏览器不支持持久化存储,可查看说明或更换浏览器。");return}const a=await le();n.storage.status=a?"granted":"denied",a||u("storage","未能启用持久化存储,可按说明检查浏览器或系统设置。")},J=async()=>{if(!(!V.value||o.value)){o.value=!0;try{await x(),await P(),await N()}finally{o.value=!1,await p()}}},Y=async a=>{if(!o.value){o.value=!0;try{a==="pwa"?await x():a==="notification"?await P():a==="storage"&&await N()}finally{o.value=!1,await p()}}},u=(a,s="")=>{a==="pwa"?r.title="如何安装为应用":a==="notification"?r.title="如何开启通知":r.title="如何启用离线存储",r.message=s||"查看以下步骤获取更多说明。",r.links=H[a]||[],m.value=!0},Z=()=>{ie("pwa.hideInstallCard",!0),g.value=!1},S=()=>{n.pwa.status!=="granted"&&(n.pwa.status="pending"),p()},z=()=>{p()};return K(()=>{p(),window.addEventListener("pwa-prompt-ready",S),v=window.matchMedia("(display-mode: standalone)"),v.addEventListener("change",z)}),O(()=>{window.removeEventListener("pwa-prompt-ready",S),v&&v.removeEventListener("change",z)}),(a,s)=>g.value?(f(),y(X,{key:0,class:"mb-4",color:"surface-variant",variant:"tonal"},{default:e(()=>[_("div",de,[_("div",ue,[t(D,{class:"text-h6"},{default:e(()=>[...s[2]||(s[2]=[l(" 安装应用与授权 ",-1)])]),_:1}),t(te,{class:"pb-1"},{default:e(()=>[...s[3]||(s[3]=[l(" 手动点选下方项目请求安装和权限,也可以直接关闭 ",-1)])]),_:1}),t(E,{class:"pt-0 pb-1"},{default:e(()=>[t(B,{density:"comfortable",lines:"two"},{default:e(()=>[(f(!0),I(L,null,M(b.value,i=>(f(),y(R,{key:i.key,disabled:o.value,onClick:()=>Y(i.key)},{prepend:e(()=>[t(j,{color:k[i.status],size:"32",variant:"tonal"},{default:e(()=>[t(U,{icon:G[i.status]},null,8,["icon"])]),_:2},1032,["color"])]),append:e(()=>[t(re,{color:k[i.status],size:"small",variant:"tonal",class:"me-2"},{default:e(()=>[l(d($[i.status]),1)]),_:2},1032,["color"]),t(h,{variant:"text",icon:"mdi-information",size:"small",disabled:o.value,onClick:Q(()=>u(i.key),["stop"])},null,8,["disabled","onClick"])]),default:e(()=>[t(T,null,{default:e(()=>[l(d(i.label),1)]),_:2},1024),t(W,null,{default:e(()=>[l(d(i.description),1)]),_:2},1024)]),_:2},1032,["disabled","onClick"]))),128))]),_:1})]),_:1}),t(F,null,{default:e(()=>[t(h,{class:"ms-2",variant:"outlined",size:"small",onClick:Z},{default:e(()=>[...s[4]||(s[4]=[l(" 关闭 ",-1)])]),_:1}),t(h,{class:"ms-2",variant:"elevated",color:"primary",size:"small","prepend-icon":o.value?"mdi-timer-sand":"mdi-shield-check",disabled:!V.value||o.value,onClick:J},{default:e(()=>[l(d(o.value?"处理中":"一次处理全部"),1)]),_:1},8,["prepend-icon","disabled"])]),_:1})]),t(j,{class:"ma-3",size:"100",rounded:"0"},{default:e(()=>[t(U,{icon:"mdi-monitor-cellphone",size:"80"})]),_:1})]),t(ae,{modelValue:m.value,"onUpdate:modelValue":s[1]||(s[1]=i=>m.value=i),"max-width":"520"},{default:e(()=>[t(X,null,{default:e(()=>[t(D,{class:"text-h6"},{default:e(()=>[l(d(r.title),1)]),_:1}),t(E,null,{default:e(()=>[_("p",ce,d(r.message),1),t(B,{density:"comfortable"},{default:e(()=>[(f(!0),I(L,null,M(r.links,(i,w)=>(f(),y(R,{key:w,href:i.href,target:"_blank",rel:"noopener"},{default:e(()=>[t(T,null,{default:e(()=>[l(d(i.text),1)]),_:2},1024),t(W,null,{default:e(()=>[l(d(i.desc),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1}),t(F,null,{default:e(()=>[t(se),t(h,{variant:"text",onClick:s[0]||(s[0]=i=>m.value=!1)},{default:e(()=>[...s[5]||(s[5]=[l("我知道了",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})):ee("",!0)}};export{we as default}; +import{D as K,A as O,X as f,Y as y,Z as e,k as _,j as t,a1 as l,_ as I,F as M,a2 as L,S as d,a8 as Q,$ as ee,b as C,e as q,r as A}from"./vendor-vue-B2vxubPy.js";import{c as D,E as te,d as E,l as B,n as R,o as T,p as W,i as h,M as U,f as j,q as F,k as ae,e as X,r as se,g as ne,s as ie,aC as oe,aD as le}from"./index-CFUCTEXJ.js";import{V as re}from"./VChip-DR8Ljy6R.js";import"./vendor-vuetify-s-yw_Hr8.js";const de={class:"d-flex flex-no-wrap justify-space-between"},ue={class:"pe-4"},ce={class:"mb-3"},we={__name:"PwaInstallCard",setup(pe){const g=C(!1),o=C(!1),m=C(!1),r=A({title:"",message:"",links:[]}),$={pending:"待授权",granted:"已完成",denied:"已拒绝",unavailable:"不可用"},G={pending:"mdi-progress-clock",granted:"mdi-check-circle",denied:"mdi-close-circle",unavailable:"mdi-help-circle"},k={pending:"primary",granted:"success",denied:"error",unavailable:"surface-variant"},n=A({pwa:{label:"安装应用",description:"将网站安装为独立应用,便于快速启动",status:"pending"},notification:{label:"通知权限",description:"允许接收作业、考试等通知提醒",status:"pending"},storage:{label:"离线存储",description:"启用持久化存储以获得更稳健的离线体验",status:"pending"}}),b=q(()=>[{key:"pwa",...n.pwa},{key:"notification",...n.notification},{key:"storage",...n.storage}]),V=q(()=>b.value.some(a=>a.status==="pending")),H={pwa:[{text:"MDN - 安装 PWA 指南",desc:"检查浏览器是否支持并手动触发安装",href:"https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps/Guides/Installing"},{text:"Microsoft Edge - PWA 体验",desc:"Edge 浏览器安装与 UX 说明",href:"https://learn.microsoft.com/zh-cn/microsoft-edge/progressive-web-apps/ux"}],notification:[{text:"MDN - 通知权限与用法",desc:"浏览器通知权限的工作方式与调试",href:"https://developer.mozilla.org/zh-CN/docs/Web/API/notification"}],storage:[{text:"MDN - Storage 持久化说明",desc:"了解持久化存储的可用性与申请方式",href:"https://developer.mozilla.org/zh-CN/docs/Web/API/StorageManager/persist"}]};let v;const p=async()=>{var w;if(ne("pwa.hideInstallCard")){g.value=!1;return}if(window.matchMedia("(display-mode: standalone)").matches||window.navigator.standalone===!0?n.pwa.status="granted":(window.deferredPwaPrompt,n.pwa.status="pending"),typeof Notification>"u")n.notification.status="unavailable";else{const c=Notification.permission;n.notification.status=c==="granted"?"granted":c==="denied"?"denied":"pending"}if((w=navigator.storage)!=null&&w.persisted){const c=await navigator.storage.persisted();n.storage.status=c?"granted":"pending"}else n.storage.status="unavailable";const i=b.value.some(c=>c.status!=="granted");g.value=i},x=async()=>{const a=window.deferredPwaPrompt;if(!a){n.pwa.status="pending",u("pwa","浏览器没有提供安装提示,可按文档手动安装。");return}a.prompt();const{outcome:s}=await a.userChoice;n.pwa.status=s==="accepted"?"granted":"denied",s!=="accepted"&&u("pwa","如果未出现安装弹窗,或被拒绝,请按说明手动安装。"),window.deferredPwaPrompt=null},P=async()=>{if(typeof Notification>"u"){n.notification.status="unavailable",u("notification","当前环境不支持通知 API,可查看说明手动开启或更换浏览器。");return}const a=await oe();n.notification.status=a?"granted":"denied",a||u("notification","通知请求未被授予,请按说明检查浏览器或系统设置。")},N=async()=>{var s;if(!((s=navigator.storage)!=null&&s.persist)){n.storage.status="unavailable",u("storage","当前浏览器不支持持久化存储,可查看说明或更换浏览器。");return}const a=await le();n.storage.status=a?"granted":"denied",a||u("storage","未能启用持久化存储,可按说明检查浏览器或系统设置。")},Y=async()=>{if(!(!V.value||o.value)){o.value=!0;try{await x(),await P(),await N()}finally{o.value=!1,await p()}}},Z=async a=>{if(!o.value){o.value=!0;try{a==="pwa"?await x():a==="notification"?await P():a==="storage"&&await N()}finally{o.value=!1,await p()}}},u=(a,s="")=>{a==="pwa"?r.title="如何安装为应用":a==="notification"?r.title="如何开启通知":r.title="如何启用离线存储",r.message=s||"查看以下步骤获取更多说明。",r.links=H[a]||[],m.value=!0},J=()=>{ie("pwa.hideInstallCard",!0),g.value=!1},S=()=>{n.pwa.status!=="granted"&&(n.pwa.status="pending"),p()},z=()=>{p()};return K(()=>{p(),window.addEventListener("pwa-prompt-ready",S),v=window.matchMedia("(display-mode: standalone)"),v.addEventListener("change",z)}),O(()=>{window.removeEventListener("pwa-prompt-ready",S),v&&v.removeEventListener("change",z)}),(a,s)=>g.value?(f(),y(X,{key:0,class:"mb-4",color:"surface-variant",variant:"tonal"},{default:e(()=>[_("div",de,[_("div",ue,[t(D,{class:"text-h6"},{default:e(()=>[...s[2]||(s[2]=[l(" 安装应用与授权 ",-1)])]),_:1}),t(te,{class:"pb-1"},{default:e(()=>[...s[3]||(s[3]=[l(" 手动点选下方项目请求安装和权限,也可以直接关闭 ",-1)])]),_:1}),t(E,{class:"pt-0 pb-1"},{default:e(()=>[t(B,{density:"comfortable",lines:"two"},{default:e(()=>[(f(!0),I(M,null,L(b.value,i=>(f(),y(R,{key:i.key,disabled:o.value,onClick:()=>Z(i.key)},{prepend:e(()=>[t(U,{color:k[i.status],size:"32",variant:"tonal"},{default:e(()=>[t(j,{icon:G[i.status]},null,8,["icon"])]),_:2},1032,["color"])]),append:e(()=>[t(re,{color:k[i.status],size:"small",variant:"tonal",class:"me-2"},{default:e(()=>[l(d($[i.status]),1)]),_:2},1032,["color"]),t(h,{variant:"text",icon:"mdi-information",size:"small",disabled:o.value,onClick:Q(()=>u(i.key),["stop"])},null,8,["disabled","onClick"])]),default:e(()=>[t(T,null,{default:e(()=>[l(d(i.label),1)]),_:2},1024),t(W,null,{default:e(()=>[l(d(i.description),1)]),_:2},1024)]),_:2},1032,["disabled","onClick"]))),128))]),_:1})]),_:1}),t(F,null,{default:e(()=>[t(h,{class:"ms-2",variant:"outlined",size:"small",onClick:J},{default:e(()=>[...s[4]||(s[4]=[l(" 关闭 ",-1)])]),_:1}),t(h,{class:"ms-2",variant:"elevated",color:"primary",size:"small","prepend-icon":o.value?"mdi-timer-sand":"mdi-shield-check",disabled:!V.value||o.value,onClick:Y},{default:e(()=>[l(d(o.value?"处理中":"一次处理全部"),1)]),_:1},8,["prepend-icon","disabled"])]),_:1})]),t(U,{class:"ma-3",size:"100",rounded:"0"},{default:e(()=>[t(j,{icon:"mdi-monitor-cellphone",size:"80"})]),_:1})]),t(ae,{modelValue:m.value,"onUpdate:modelValue":s[1]||(s[1]=i=>m.value=i),"max-width":"520"},{default:e(()=>[t(X,null,{default:e(()=>[t(D,{class:"text-h6"},{default:e(()=>[l(d(r.title),1)]),_:1}),t(E,null,{default:e(()=>[_("p",ce,d(r.message),1),t(B,{density:"comfortable"},{default:e(()=>[(f(!0),I(M,null,L(r.links,(i,w)=>(f(),y(R,{key:w,href:i.href,target:"_blank",rel:"noopener"},{default:e(()=>[t(T,null,{default:e(()=>[l(d(i.text),1)]),_:2},1024),t(W,null,{default:e(()=>[l(d(i.desc),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1}),t(F,null,{default:e(()=>[t(se),t(h,{variant:"text",onClick:s[0]||(s[0]=i=>m.value=!1)},{default:e(()=>[...s[5]||(s[5]=[l("我知道了",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})):ee("",!0)}};export{we as default}; diff --git a/assets/RandomPicker-BFIrnEvt.js b/assets/RandomPicker-BFIrnEvt.js new file mode 100644 index 0000000..cf01abe --- /dev/null +++ b/assets/RandomPicker-BFIrnEvt.js @@ -0,0 +1 @@ +import{_ as V,e as C,c as A,f as P,r as _,i as h,d as v,F as M,k as T,g as o,s as S}from"./index-CFUCTEXJ.js";import{X as r,Y as g,Z as l,j as s,a1 as u,k as a,S as c,_ as m,$ as x,F as b,m as L,U as w,a2 as F,n as E}from"./vendor-vue-B2vxubPy.js";import{V as N}from"./VTextField-ByBRYn99.js";import{V as I}from"./VTooltip-CbK3h4lM.js";import{V as y}from"./VChip-DR8Ljy6R.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";const z={name:"RandomPicker",props:{studentList:{type:Array,required:!0},attendance:{type:Object,required:!0,default:()=>({absent:[],late:[],exclude:[]})}},data(){return{dialog:!1,count:o("randomPicker.defaultCount"),isPickingStarted:!1,isAnimating:!1,pickedStudents:[],animationStudents:[],highlightedIndices:[],animationTimer:null,getSetting:o,tempFilters:{excludeAbsent:o("randomPicker.excludeAbsent"),excludeLate:o("randomPicker.excludeLate"),excludeExcluded:o("randomPicker.excludeExcluded")},pickerMode:o("randomPicker.mode"),minNumber:o("randomPicker.minNumber"),maxNumber:o("randomPicker.maxNumber")}},computed:{absentCount(){return this.attendance.absent?this.attendance.absent.length:0},lateCount(){return this.attendance.late?this.attendance.late.length:0},excludedCount(){return this.attendance.exclude?this.attendance.exclude.length:0},numberModeStudents(){if(this.pickerMode!=="number")return[];const i=[];for(let e=this.minNumber;e<=this.maxNumber;e++)i.push(e.toString().padStart(2,"0")+"号");return i},filteredStudents(){return this.pickerMode==="number"?this.numberModeStudents:!this.studentList||!this.studentList.length?[]:this.studentList.filter(i=>!(this.tempFilters.excludeAbsent&&this.attendance.absent.includes(i)||this.tempFilters.excludeLate&&this.attendance.late.includes(i)||this.tempFilters.excludeExcluded&&this.attendance.exclude.includes(i)))},availableStudents(){return this.filteredStudents},maxAllowedCount(){return Math.min(10,this.filteredStudents.length)},remainingStudents(){return this.filteredStudents.filter(i=>!this.pickedStudents.includes(i))}},watch:{dialog(i){i?(this.count=o("randomPicker.defaultCount"),this.isPickingStarted=!1,this.isAnimating=!1,this.pickedStudents=[],this.tempFilters={excludeAbsent:o("randomPicker.excludeAbsent"),excludeLate:o("randomPicker.excludeLate"),excludeExcluded:o("randomPicker.excludeExcluded")}):this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},tempFilters:{handler(){this.count>this.maxAllowedCount&&(this.count=Math.max(1,this.maxAllowedCount))},deep:!0},pickerMode:{handler(i){S("randomPicker.mode",i)}},minNumber:{handler(i){i>this.maxNumber&&(this.minNumber=this.maxNumber),i<1&&(this.minNumber=1),S("randomPicker.minNumber",this.minNumber)}},maxNumber:{handler(i){i100&&(this.maxNumber=100),S("randomPicker.maxNumber",this.maxNumber)}}},methods:{open(){this.dialog=!0},incrementCount(){this.count1&&this.count--},startPicking(){this.filteredStudents.length!==0&&(this.isPickingStarted=!0,o("randomPicker.animation")?this.startAnimation():this.finishPicking())},startAnimation(){this.isAnimating=!0,this.animationStudents=this.filteredStudents.map((i,e)=>({id:`student-${e}`,name:i})),this.animateHighlight()},animateHighlight(){let e=0;const k=50,p=()=>{this.highlightedIndices=[];const t=[];for(let n=0;n{this.finishPicking()},500)};p()},finishPicking(){this.isAnimating=!1;const i=[...this.filteredStudents].sort(()=>.5-Math.random());this.pickedStudents=i.slice(0,this.count)},resetPicker(){this.isPickingStarted=!1,this.isAnimating=!1,this.pickedStudents=[],this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},refreshSingleStudent(i){if(this.remainingStudents.length===0)return;const e=Math.floor(Math.random()*this.remainingStudents.length),k=this.remainingStudents[e];this.pickedStudents[i]=k;const p=document.querySelectorAll(".result-card");p[i]&&(p[i].classList.add("refresh-animation"),setTimeout(()=>{p[i].classList.remove("refresh-animation")},500))}}},j={class:"d-flex justify-center align-center counter-container"},B={class:"count-display mx-8"},U={class:"text-h2 font-weight-bold"},q={class:"mode-switch-container mt-6"},D={key:0,class:"number-range-container mt-4"},H={class:"d-flex justify-center align-center gap-4"},R={class:"mt-4"},G={key:1,class:"mt-4 text-error"},O={class:"mt-4 text-caption"},X={class:"pa-2"},Y={key:0},Z={key:1},J={key:2},K={key:1,class:"d-flex flex-wrap justify-center gap-2 mt-4"},Q={key:0,class:"animation-container"},W={class:"animation-wrapper"},$={key:1,class:"result-container"},ee={class:"mt-8 d-flex justify-center"};function te(i,e,k,p,t,d){return r(),g(T,{modelValue:t.dialog,"onUpdate:modelValue":e[8]||(e[8]=n=>t.dialog=n),"fullscreen-breakpoint":"sm","max-width":"600",persistent:""},{default:l(()=>[s(C,{border:"",class:"random-picker-card",rounded:"xl"},{default:l(()=>[s(A,{class:"text-h5 d-flex align-center"},{default:l(()=>[s(P,{class:"mr-2",icon:"mdi-account-question"}),e[9]||(e[9]=u(" 随机点名 ",-1)),s(_),s(h,{icon:"mdi-close",variant:"text",onClick:e[0]||(e[0]=n=>t.dialog=!1)})]),_:1}),t.isPickingStarted?(r(),g(v,{key:1,class:"text-center py-6"},{default:l(()=>[t.isAnimating?(r(),m("div",Q,[a("div",W,[s(w,{class:"shuffle-container",name:"shuffle",tag:"div"},{default:l(()=>[(r(!0),m(b,null,F(t.animationStudents,(n,f)=>(r(),m("div",{key:n.id,class:E([{highlighted:t.highlightedIndices.includes(f)},"student-item"])},c(n.name),3))),128))]),_:1})])])):(r(),m("div",$,[e[19]||(e[19]=a("div",{class:"text-h6 mb-4"},"抽取结果",-1)),(r(!0),m(b,null,F(t.pickedStudents,(n,f)=>(r(),g(C,{key:f,class:"mb-2 result-card",color:"primary",variant:"outlined"},{default:l(()=>[s(v,{class:"text-h4 text-center py-4 d-flex align-center justify-center"},{default:l(()=>[u(c(n)+" ",1),s(h,{disabled:d.remainingStudents.length===0,title:d.remainingStudents.length===0?"没有更多可用学生":"重新抽取此学生",class:"ml-2 refresh-btn",icon:"mdi-refresh",size:"small",variant:"text",onClick:ie=>d.refreshSingleStudent(f)},null,8,["disabled","title","onClick"])]),_:2},1024)]),_:2},1024))),128)),a("div",ee,[s(h,{class:"mx-2",color:"primary","prepend-icon":"mdi-refresh",size:"large",onClick:d.resetPicker},{default:l(()=>[...e[17]||(e[17]=[u(" 重新抽取 ",-1)])]),_:1},8,["onClick"]),s(h,{class:"mx-2",color:"grey",size:"large",variant:"outlined",onClick:e[7]||(e[7]=n=>t.dialog=!1)},{default:l(()=>[...e[18]||(e[18]=[u(" 关闭 ",-1)])]),_:1})])]))]),_:1})):(r(),g(v,{key:0,class:"text-center py-6"},{default:l(()=>[e[16]||(e[16]=a("div",{class:"text-h6 mb-4"},"请选择抽取人数",-1)),a("div",j,[s(h,{disabled:t.count<=1,class:"counter-btn",color:"primary",icon:"mdi-minus",size:"x-large",variant:"tonal",onClick:d.decrementCount},null,8,["disabled","onClick"]),a("div",B,[a("span",U,c(t.count),1),e[10]||(e[10]=a("span",{class:"text-subtitle-1 ml-2"},"人",-1))]),s(h,{disabled:t.count>=d.maxAllowedCount,class:"counter-btn",color:"primary",icon:"mdi-plus",size:"x-large",variant:"tonal",onClick:d.incrementCount},null,8,["disabled","onClick"])]),a("div",q,[s(M,{modelValue:t.pickerMode,"onUpdate:modelValue":e[1]||(e[1]=n=>t.pickerMode=n),class:"mode-toggle",color:"primary",mandatory:"",rounded:"pill"},{default:l(()=>[s(h,{"prepend-icon":"mdi-account",value:"name"},{default:l(()=>[...e[11]||(e[11]=[u("姓名模式",-1)])]),_:1}),s(h,{"prepend-icon":"mdi-numeric",value:"number"},{default:l(()=>[...e[12]||(e[12]=[u("学号模式",-1)])]),_:1})]),_:1},8,["modelValue"])]),t.pickerMode==="number"?(r(),m("div",D,[e[14]||(e[14]=a("div",{class:"text-subtitle-1 mb-2"},"学号范围设置",-1)),a("div",H,[s(N,{modelValue:t.minNumber,"onUpdate:modelValue":e[2]||(e[2]=n=>t.minNumber=n),modelModifiers:{number:!0},class:"number-input",density:"compact","hide-details":"",label:"最小值",max:"100",min:"1",type:"number"},null,8,["modelValue"]),e[13]||(e[13]=a("span",{class:"mx-2"},"至",-1)),s(N,{modelValue:t.maxNumber,"onUpdate:modelValue":e[3]||(e[3]=n=>t.maxNumber=n),modelModifiers:{number:!0},class:"number-input",density:"compact","hide-details":"",label:"最大值",max:"100",min:"1",type:"number"},null,8,["modelValue"])])])):x("",!0),a("div",R,[s(h,{disabled:d.filteredStudents.length===0,class:"start-btn",color:"primary","prepend-icon":"mdi-dice-multiple",size:"x-large",onClick:d.startPicking},{default:l(()=>[...e[15]||(e[15]=[u(" 开始抽取 ",-1)])]),_:1},8,["disabled","onClick"])]),d.filteredStudents.length===0?(r(),m("div",G,[t.pickerMode==="name"?(r(),m(b,{key:0},[u(" 没有可抽取的学生,请调整过滤选项 ")],64)):(r(),m(b,{key:1},[u(" 请设置有效的学号范围 ")],64))])):x("",!0),a("div",O,[u(" 当前可抽取学生: "+c(d.filteredStudents.length)+"人 ",1),t.pickerMode==="name"?(r(),g(I,{key:0,location:"bottom"},{activator:l(({props:n})=>[s(P,L({class:"ml-1",icon:"mdi-information-outline",size:"small"},n),null,16)]),default:l(()=>[a("div",X,[t.tempFilters.excludeAbsent?(r(),m("div",Y," • 已排除请假学生 ("+c(d.absentCount)+"人) ",1)):x("",!0),t.tempFilters.excludeLate?(r(),m("div",Z," • 已排除迟到学生 ("+c(d.lateCount)+"人) ",1)):x("",!0),t.tempFilters.excludeExcluded?(r(),m("div",J," • 已排除不参与学生 ("+c(d.excludedCount)+"人) ",1)):x("",!0)])]),_:1})):x("",!0),t.pickerMode==="name"?(r(),m("div",K,[s(y,{color:t.tempFilters.excludeLate?"warning":"default",variant:t.tempFilters.excludeLate?"elevated":"text",class:"filter-chip","prepend-icon":"mdi-clock-alert",onClick:e[4]||(e[4]=n=>t.tempFilters.excludeLate=!t.tempFilters.excludeLate)},{default:l(()=>[u(c(t.tempFilters.excludeLate?"排除":"包含")+"迟到学生 ",1)]),_:1},8,["color","variant"]),s(y,{color:t.tempFilters.excludeAbsent?"error":"default",variant:t.tempFilters.excludeAbsent?"elevated":"text",class:"filter-chip","prepend-icon":"mdi-account-off",onClick:e[5]||(e[5]=n=>t.tempFilters.excludeAbsent=!t.tempFilters.excludeAbsent)},{default:l(()=>[u(c(t.tempFilters.excludeAbsent?"排除":"包含")+"请假学生 ",1)]),_:1},8,["color","variant"]),s(y,{color:t.tempFilters.excludeExcluded?"grey":"default",variant:t.tempFilters.excludeExcluded?"elevated":"text",class:"filter-chip","prepend-icon":"mdi-account-cancel",onClick:e[6]||(e[6]=n=>t.tempFilters.excludeExcluded=!t.tempFilters.excludeExcluded)},{default:l(()=>[u(c(t.tempFilters.excludeExcluded?"排除":"包含")+"不参与学生 ",1)]),_:1},8,["color","variant"])])):x("",!0)])]),_:1}))]),_:1})]),_:1},8,["modelValue"])}const me=V(z,[["render",te],["__scopeId","data-v-85e7eea6"]]);export{me as default}; diff --git a/assets/RandomPicker-D4SIlUxw.js b/assets/RandomPicker-D4SIlUxw.js deleted file mode 100644 index e8a9c99..0000000 --- a/assets/RandomPicker-D4SIlUxw.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as F,e as C,c as A,h as P,o as _,l as h,d as v,K as M,p as T,g as o,v as S}from"./index-_6IQhlPZ.js";import{X as r,Y as g,Z as l,j as s,a1 as u,k as a,S as c,_ as m,$ as x,F as b,m as L,U as w,a2 as N,n as E}from"./vendor-vue-H0jQBZ7T.js";import{V}from"./VTextField-CuXGbmmC.js";import{V as I}from"./VTooltip-C2Bprg_f.js";import{V as y}from"./VChip-Veb3ShEh.js";import"./vendor-vuetify-ChAgIwn2.js";import"./autofocus-BrMOVHY_.js";const z={name:"RandomPicker",props:{studentList:{type:Array,required:!0},attendance:{type:Object,required:!0,default:()=>({absent:[],late:[],exclude:[]})}},data(){return{dialog:!1,count:o("randomPicker.defaultCount"),isPickingStarted:!1,isAnimating:!1,pickedStudents:[],animationStudents:[],highlightedIndices:[],animationTimer:null,getSetting:o,tempFilters:{excludeAbsent:o("randomPicker.excludeAbsent"),excludeLate:o("randomPicker.excludeLate"),excludeExcluded:o("randomPicker.excludeExcluded")},pickerMode:o("randomPicker.mode"),minNumber:o("randomPicker.minNumber"),maxNumber:o("randomPicker.maxNumber")}},computed:{absentCount(){return this.attendance.absent?this.attendance.absent.length:0},lateCount(){return this.attendance.late?this.attendance.late.length:0},excludedCount(){return this.attendance.exclude?this.attendance.exclude.length:0},numberModeStudents(){if(this.pickerMode!=="number")return[];const i=[];for(let e=this.minNumber;e<=this.maxNumber;e++)i.push(e.toString().padStart(2,"0")+"号");return i},filteredStudents(){return this.pickerMode==="number"?this.numberModeStudents:!this.studentList||!this.studentList.length?[]:this.studentList.filter(i=>!(this.tempFilters.excludeAbsent&&this.attendance.absent.includes(i)||this.tempFilters.excludeLate&&this.attendance.late.includes(i)||this.tempFilters.excludeExcluded&&this.attendance.exclude.includes(i)))},availableStudents(){return this.filteredStudents},maxAllowedCount(){return Math.min(10,this.filteredStudents.length)},remainingStudents(){return this.filteredStudents.filter(i=>!this.pickedStudents.includes(i))}},watch:{dialog(i){i?(this.count=o("randomPicker.defaultCount"),this.isPickingStarted=!1,this.isAnimating=!1,this.pickedStudents=[],this.tempFilters={excludeAbsent:o("randomPicker.excludeAbsent"),excludeLate:o("randomPicker.excludeLate"),excludeExcluded:o("randomPicker.excludeExcluded")}):this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},tempFilters:{handler(){this.count>this.maxAllowedCount&&(this.count=Math.max(1,this.maxAllowedCount))},deep:!0},pickerMode:{handler(i){S("randomPicker.mode",i)}},minNumber:{handler(i){i>this.maxNumber&&(this.minNumber=this.maxNumber),i<1&&(this.minNumber=1),S("randomPicker.minNumber",this.minNumber)}},maxNumber:{handler(i){i100&&(this.maxNumber=100),S("randomPicker.maxNumber",this.maxNumber)}}},methods:{open(){this.dialog=!0},incrementCount(){this.count1&&this.count--},startPicking(){this.filteredStudents.length!==0&&(this.isPickingStarted=!0,o("randomPicker.animation")?this.startAnimation():this.finishPicking())},startAnimation(){this.isAnimating=!0,this.animationStudents=this.filteredStudents.map((i,e)=>({id:`student-${e}`,name:i})),this.animateHighlight()},animateHighlight(){let e=0;const k=50,p=()=>{this.highlightedIndices=[];const t=[];for(let n=0;n{this.finishPicking()},500)};p()},finishPicking(){this.isAnimating=!1;const i=[...this.filteredStudents].sort(()=>.5-Math.random());this.pickedStudents=i.slice(0,this.count)},resetPicker(){this.isPickingStarted=!1,this.isAnimating=!1,this.pickedStudents=[],this.animationTimer&&(clearTimeout(this.animationTimer),this.animationTimer=null)},refreshSingleStudent(i){if(this.remainingStudents.length===0)return;const e=Math.floor(Math.random()*this.remainingStudents.length),k=this.remainingStudents[e];this.pickedStudents[i]=k;const p=document.querySelectorAll(".result-card");p[i]&&(p[i].classList.add("refresh-animation"),setTimeout(()=>{p[i].classList.remove("refresh-animation")},500))}}},j={class:"d-flex justify-center align-center counter-container"},B={class:"count-display mx-8"},U={class:"text-h2 font-weight-bold"},q={class:"mode-switch-container mt-6"},D={key:0,class:"number-range-container mt-4"},H={class:"d-flex justify-center align-center gap-4"},R={class:"mt-4"},G={key:1,class:"mt-4 text-error"},K={class:"mt-4 text-caption"},O={class:"pa-2"},X={key:0},Y={key:1},Z={key:2},J={key:1,class:"d-flex flex-wrap justify-center gap-2 mt-4"},Q={key:0,class:"animation-container"},W={class:"animation-wrapper"},$={key:1,class:"result-container"},ee={class:"mt-8 d-flex justify-center"};function te(i,e,k,p,t,d){return r(),g(T,{modelValue:t.dialog,"onUpdate:modelValue":e[8]||(e[8]=n=>t.dialog=n),"fullscreen-breakpoint":"sm","max-width":"600",persistent:""},{default:l(()=>[s(C,{border:"",class:"random-picker-card",rounded:"xl"},{default:l(()=>[s(A,{class:"text-h5 d-flex align-center"},{default:l(()=>[s(P,{class:"mr-2",icon:"mdi-account-question"}),e[9]||(e[9]=u(" 随机点名 ",-1)),s(_),s(h,{icon:"mdi-close",variant:"text",onClick:e[0]||(e[0]=n=>t.dialog=!1)})]),_:1}),t.isPickingStarted?(r(),g(v,{key:1,class:"text-center py-6"},{default:l(()=>[t.isAnimating?(r(),m("div",Q,[a("div",W,[s(w,{class:"shuffle-container",name:"shuffle",tag:"div"},{default:l(()=>[(r(!0),m(b,null,N(t.animationStudents,(n,f)=>(r(),m("div",{key:n.id,class:E([{highlighted:t.highlightedIndices.includes(f)},"student-item"])},c(n.name),3))),128))]),_:1})])])):(r(),m("div",$,[e[19]||(e[19]=a("div",{class:"text-h6 mb-4"},"抽取结果",-1)),(r(!0),m(b,null,N(t.pickedStudents,(n,f)=>(r(),g(C,{key:f,class:"mb-2 result-card",color:"primary",variant:"outlined"},{default:l(()=>[s(v,{class:"text-h4 text-center py-4 d-flex align-center justify-center"},{default:l(()=>[u(c(n)+" ",1),s(h,{disabled:d.remainingStudents.length===0,title:d.remainingStudents.length===0?"没有更多可用学生":"重新抽取此学生",class:"ml-2 refresh-btn",icon:"mdi-refresh",size:"small",variant:"text",onClick:ie=>d.refreshSingleStudent(f)},null,8,["disabled","title","onClick"])]),_:2},1024)]),_:2},1024))),128)),a("div",ee,[s(h,{class:"mx-2",color:"primary","prepend-icon":"mdi-refresh",size:"large",onClick:d.resetPicker},{default:l(()=>[...e[17]||(e[17]=[u(" 重新抽取 ",-1)])]),_:1},8,["onClick"]),s(h,{class:"mx-2",color:"grey",size:"large",variant:"outlined",onClick:e[7]||(e[7]=n=>t.dialog=!1)},{default:l(()=>[...e[18]||(e[18]=[u(" 关闭 ",-1)])]),_:1})])]))]),_:1})):(r(),g(v,{key:0,class:"text-center py-6"},{default:l(()=>[e[16]||(e[16]=a("div",{class:"text-h6 mb-4"},"请选择抽取人数",-1)),a("div",j,[s(h,{disabled:t.count<=1,class:"counter-btn",color:"primary",icon:"mdi-minus",size:"x-large",variant:"tonal",onClick:d.decrementCount},null,8,["disabled","onClick"]),a("div",B,[a("span",U,c(t.count),1),e[10]||(e[10]=a("span",{class:"text-subtitle-1 ml-2"},"人",-1))]),s(h,{disabled:t.count>=d.maxAllowedCount,class:"counter-btn",color:"primary",icon:"mdi-plus",size:"x-large",variant:"tonal",onClick:d.incrementCount},null,8,["disabled","onClick"])]),a("div",q,[s(M,{modelValue:t.pickerMode,"onUpdate:modelValue":e[1]||(e[1]=n=>t.pickerMode=n),class:"mode-toggle",color:"primary",mandatory:"",rounded:"pill"},{default:l(()=>[s(h,{"prepend-icon":"mdi-account",value:"name"},{default:l(()=>[...e[11]||(e[11]=[u("姓名模式",-1)])]),_:1}),s(h,{"prepend-icon":"mdi-numeric",value:"number"},{default:l(()=>[...e[12]||(e[12]=[u("学号模式",-1)])]),_:1})]),_:1},8,["modelValue"])]),t.pickerMode==="number"?(r(),m("div",D,[e[14]||(e[14]=a("div",{class:"text-subtitle-1 mb-2"},"学号范围设置",-1)),a("div",H,[s(V,{modelValue:t.minNumber,"onUpdate:modelValue":e[2]||(e[2]=n=>t.minNumber=n),modelModifiers:{number:!0},class:"number-input",density:"compact","hide-details":"",label:"最小值",max:"100",min:"1",type:"number"},null,8,["modelValue"]),e[13]||(e[13]=a("span",{class:"mx-2"},"至",-1)),s(V,{modelValue:t.maxNumber,"onUpdate:modelValue":e[3]||(e[3]=n=>t.maxNumber=n),modelModifiers:{number:!0},class:"number-input",density:"compact","hide-details":"",label:"最大值",max:"100",min:"1",type:"number"},null,8,["modelValue"])])])):x("",!0),a("div",R,[s(h,{disabled:d.filteredStudents.length===0,class:"start-btn",color:"primary","prepend-icon":"mdi-dice-multiple",size:"x-large",onClick:d.startPicking},{default:l(()=>[...e[15]||(e[15]=[u(" 开始抽取 ",-1)])]),_:1},8,["disabled","onClick"])]),d.filteredStudents.length===0?(r(),m("div",G,[t.pickerMode==="name"?(r(),m(b,{key:0},[u(" 没有可抽取的学生,请调整过滤选项 ")],64)):(r(),m(b,{key:1},[u(" 请设置有效的学号范围 ")],64))])):x("",!0),a("div",K,[u(" 当前可抽取学生: "+c(d.filteredStudents.length)+"人 ",1),t.pickerMode==="name"?(r(),g(I,{key:0,location:"bottom"},{activator:l(({props:n})=>[s(P,L({class:"ml-1",icon:"mdi-information-outline",size:"small"},n),null,16)]),default:l(()=>[a("div",O,[t.tempFilters.excludeAbsent?(r(),m("div",X," • 已排除请假学生 ("+c(d.absentCount)+"人) ",1)):x("",!0),t.tempFilters.excludeLate?(r(),m("div",Y," • 已排除迟到学生 ("+c(d.lateCount)+"人) ",1)):x("",!0),t.tempFilters.excludeExcluded?(r(),m("div",Z," • 已排除不参与学生 ("+c(d.excludedCount)+"人) ",1)):x("",!0)])]),_:1})):x("",!0),t.pickerMode==="name"?(r(),m("div",J,[s(y,{color:t.tempFilters.excludeLate?"warning":"default",variant:t.tempFilters.excludeLate?"elevated":"text",class:"filter-chip","prepend-icon":"mdi-clock-alert",onClick:e[4]||(e[4]=n=>t.tempFilters.excludeLate=!t.tempFilters.excludeLate)},{default:l(()=>[u(c(t.tempFilters.excludeLate?"排除":"包含")+"迟到学生 ",1)]),_:1},8,["color","variant"]),s(y,{color:t.tempFilters.excludeAbsent?"error":"default",variant:t.tempFilters.excludeAbsent?"elevated":"text",class:"filter-chip","prepend-icon":"mdi-account-off",onClick:e[5]||(e[5]=n=>t.tempFilters.excludeAbsent=!t.tempFilters.excludeAbsent)},{default:l(()=>[u(c(t.tempFilters.excludeAbsent?"排除":"包含")+"请假学生 ",1)]),_:1},8,["color","variant"]),s(y,{color:t.tempFilters.excludeExcluded?"grey":"default",variant:t.tempFilters.excludeExcluded?"elevated":"text",class:"filter-chip","prepend-icon":"mdi-account-cancel",onClick:e[6]||(e[6]=n=>t.tempFilters.excludeExcluded=!t.tempFilters.excludeExcluded)},{default:l(()=>[u(c(t.tempFilters.excludeExcluded?"排除":"包含")+"不参与学生 ",1)]),_:1},8,["color","variant"])])):x("",!0)])]),_:1}))]),_:1})]),_:1},8,["modelValue"])}const ue=F(z,[["render",te],["__scopeId","data-v-85e7eea6"]]);export{ue as default}; diff --git a/assets/StudentNameManager-CFOrSEro.js b/assets/StudentNameManager-CFOrSEro.js new file mode 100644 index 0000000..98eabc1 --- /dev/null +++ b/assets/StudentNameManager-CFOrSEro.js @@ -0,0 +1 @@ +import{_ as le,w as oe,e as ne,c as ue,d as re,q as ie,i as z,r as ve,k as de,g as $}from"./index-CFUCTEXJ.js";import{a as D,d as E}from"./dataProvider-bUkzKSNt.js";import{V as ce}from"./VAutocomplete-CrWVUMTj.js";import{V as me}from"./VTextField-ByBRYn99.js";import{V as pe}from"./VChip-DR8Ljy6R.js";import{V as fe}from"./VSwitch-DKh_Uq_M.js";import{V as ge}from"./VCombobox-B2hcOM7z.js";import{V as ke}from"./VAlert-DO0N7oM6.js";import{o as P,D as ye,X as p,_ as j,j as d,Z as f,a1 as _,S as B,F as U,k as I,$ as H,a2 as he,Y as R,ae as Ve,e as g,b as c}from"./vendor-vue-B2vxubPy.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-CdH9Xda8.js";import"./VLabel-CU-8PdVS.js";import"./VSelect-Fp4MUhJW.js";import"./autofocus-BAgnxQiD.js";import"./VSheet-B8D7XEg5.js";import"./VCheckboxBtn-DOw5vjpY.js";const Te={key:0,class:"mt-2 text-caption text-medium-emphasis"},be={class:"mt-2 mb-4"},we={class:"d-flex flex-wrap gap-2"},Ae={key:0,class:"ms-1 text-error"},Se={__name:"StudentNameManager",emits:["token-info-updated"],setup(Ne,{expose:q,emit:K}){const F=K,v=c(!1),k=c(""),y=c([]),T=c(""),m=c(!1),i=c(""),u=c(null),r=c([]),X=c(""),b=c(""),o=c({name:"",isHeadTeacher:!1,subjects:[]}),w=g(()=>{var e;return((e=u.value)==null?void 0:e.deviceType)==="student"}),C=g(()=>{var e;return((e=u.value)==null?void 0:e.deviceType)==="teacher"}),Y=g(()=>{var e;return((e=u.value)==null?void 0:e.isReadOnly)===!0}),Z=g(()=>{var e;return((e=u.value)==null?void 0:e.note)||"设置名称"}),G=g(()=>!!h.value),h=g(()=>$("server.kvToken")),L=g(()=>$("server.provider")),J=g(()=>L.value==="kv-server"||L.value==="classworkscloud"),Q=g(()=>w.value?"设置学生姓名":C.value?"设置教师姓名":"设置姓名"),W=g(()=>r.value),A=async()=>{var e;if(!(!J.value||!h.value))try{const a=$("server.domain");if(!a)return;const t=await D.get(`${a}/kv/_token`,{headers:{Authorization:`Bearer ${h.value}`}});if(u.value=t.data,u.value.deviceType==="student"){T.value=u.value.note||"";const s=(await D.get(`${a}/kv/classworks-list-main`,{headers:{Authorization:`Bearer ${h.value}`}})).data.value||[];if(y.value=Array.isArray(s)?s:[],y.value.length>0){const l=u.value.note||"",V=y.value.some(S=>S.name===l);(!l||!V)&&(v.value=!0,k.value="")}return}if(u.value.deviceType==="teacher"){b.value=u.value.note||"";try{const s=(await D.get(`${a}/kv/classworks-list-teacher`,{headers:{Authorization:`Bearer ${h.value}`}})).data.value||[];r.value=Array.isArray(s)?s:[]}catch(n){((e=n==null?void 0:n.response)==null?void 0:e.status)===404?(console.log("教师列表不存在,初始化为空"),r.value=[]):(console.error("加载教师列表失败:",n),r.value=[])}if(r.value.length>0){const n=u.value.note||"",s=r.value.some(l=>l.name===n);(!n||!s)&&(v.value=!0,X.value="")}return}}catch(a){console.error("检查学生姓名状态失败:",a)}},ee=async()=>{var e,a,t,n;if(!(!k.value||m.value)){i.value="",m.value=!0;try{const s=$("server.domain"),l=h.value;(await D.post(`${s}/apps/tokens/${l}/set-student-name`,{name:k.value})).data.success&&(T.value=k.value,v.value=!1,await A(),F("token-info-updated"))}catch(s){const l=(e=s==null?void 0:s.response)==null?void 0:e.status;l===400?i.value="该名称不在学生列表中,请选择正确的姓名":l===403?i.value="只有学生类型的 Token 可以设置姓名":l===404?i.value="设备未设置学生列表或 Token 不存在":i.value=((n=(t=(a=s==null?void 0:s.response)==null?void 0:a.data)==null?void 0:t.error)==null?void 0:n.message)||(s==null?void 0:s.message)||"设置失败,请稍后重试"}finally{m.value=!1}}},ae=async()=>{var e,a,t,n,s;if(!(!o.value.name||m.value)){i.value="",m.value=!0;try{const l=$("server.domain"),V=h.value,S={name:o.value.name.trim(),isHeadTeacher:!!o.value.isHeadTeacher,subjects:Array.isArray(o.value.subjects)?o.value.subjects.filter(x=>x&&String(x).trim()).map(x=>String(x).trim()):[]},O=r.value.findIndex(x=>x.name===S.name);O>=0?r.value[O]=S:r.value.push(S);const N=await E.saveData("classworks-list-teacher",r.value);if((N==null?void 0:N.success)===!1)throw new Error(((e=N==null?void 0:N.error)==null?void 0:e.message)||"保存列表失败");(await D.post(`${l}/apps/tokens/${V}/set-teacher-name`,{name:S.name})).data.success&&(b.value=S.name,v.value=!1,await A(),F("token-info-updated"))}catch(l){const V=(a=l==null?void 0:l.response)==null?void 0:a.status;V===400?i.value="该名称不在教师列表中,请选择正确的姓名":V===403?i.value="只有教师类型的 Token 可以设置姓名":V===404?i.value="设备未设置教师列表或 Token 不存在":i.value=((s=(n=(t=l==null?void 0:l.response)==null?void 0:t.data)==null?void 0:n.error)==null?void 0:s.message)||(l==null?void 0:l.message)||"设置失败,请稍后重试"}finally{m.value=!1}}},te=e=>{o.value.name=e.name,o.value.isHeadTeacher=e.isHeadTeacher||!1,o.value.subjects=Array.isArray(e.subjects)?[...e.subjects]:[]},se=()=>{v.value=!1},M=async()=>{if(console.log("StudentNameManager.openDialog called"),console.log("isStudentToken:",w.value),console.log("studentList.length:",y.value.length),console.log("currentStudentName:",T.value),w.value){const e=await E.loadData("classworks-list-main");y.value=Array.isArray(e==null?void 0:e.value)?e.value:Array.isArray(e)?e:[],y.value.length===0?(console.log("Student list is empty, trying to load..."),await A(),k.value=T.value,v.value=!0):(k.value=T.value,v.value=!0);return}if(C.value){try{const e=await E.loadData("classworks-list-teacher");r.value=Array.isArray(e==null?void 0:e.value)?e.value:Array.isArray(e)?e:[]}catch{console.log("教师列表不存在或加载失败,允许手动创建"),r.value=[]}if(o.value={name:b.value,isHeadTeacher:!1,subjects:[]},b.value){const e=r.value.find(a=>a.name===b.value);e&&(o.value.isHeadTeacher=e.isHeadTeacher||!1,o.value.subjects=Array.isArray(e.subjects)?[...e.subjects]:[])}v.value=!0,console.log("Dialog opened (teacher), showDialog:",v.value);return}console.log("Not a student/teacher token, cannot open dialog")};return P(h,()=>{A()}),oe(()=>{A()}),P(u,()=>{F("token-info-updated")},{deep:!0}),ye(()=>{A()}),q({checkStudentNameStatus:A,openDialog:M,currentStudentName:T,currentTeacherName:b,isStudentToken:w,isTeacherToken:C,isReadOnly:Y,displayName:Z,hasToken:G,tokenInfo:u}),(e,a)=>(p(),j(U,null,[d(de,{modelValue:v.value,"onUpdate:modelValue":a[4]||(a[4]=t=>v.value=t),"max-width":"720",persistent:""},{default:f(()=>[d(ne,null,{default:f(()=>[d(ue,null,{default:f(()=>[_(B(Q.value),1)]),_:1}),d(re,null,{default:f(()=>[w.value?(p(),j(U,{key:0},[a[5]||(a[5]=I("div",{class:"mb-2"}," 请从列表中选择您的姓名: ",-1)),d(ce,{modelValue:k.value,"onUpdate:modelValue":a[0]||(a[0]=t=>k.value=t),items:y.value,clearable:"","hide-details":"","item-title":"name","item-value":"name",label:"学生姓名",placeholder:"选择您的姓名"},null,8,["modelValue","items"]),y.value.length>0?(p(),j("div",Te," 共 "+B(y.value.length)+" 位学生 ",1)):H("",!0)],64)):C.value?(p(),j(U,{key:1},[d(me,{modelValue:o.value.name,"onUpdate:modelValue":a[1]||(a[1]=t=>o.value.name=t),label:"教师姓名",placeholder:"输入姓名或从下方建议中选择",clearable:""},null,8,["modelValue"]),I("div",be,[I("div",we,[(p(!0),j(U,null,he(W.value,t=>(p(),R(pe,{key:t.name,size:"small",onClick:n=>te(t)},{default:f(()=>[_(B(t.name)+" ",1),t.isHeadTeacher?(p(),j("span",Ae," 👨‍🏫 ")):H("",!0)]),_:2},1032,["onClick"]))),128))])]),d(fe,{modelValue:o.value.isHeadTeacher,"onUpdate:modelValue":a[2]||(a[2]=t=>o.value.isHeadTeacher=t),inset:"",color:"primary",label:o.value.isHeadTeacher?"班主任":"非班主任"},null,8,["modelValue","label"]),d(ge,{modelValue:o.value.subjects,"onUpdate:modelValue":a[3]||(a[3]=t=>o.value.subjects=t),multiple:"",chips:"",clearable:"",label:"任教科目",hint:"可直接输入并回车添加多个科目","persistent-hint":""},null,8,["modelValue"])],64)):H("",!0),i.value?(p(),R(ke,{key:2,class:"mt-3",type:"error",variant:"tonal"},{default:f(()=>[_(B(i.value),1)]),_:1})):H("",!0)]),_:1}),d(ie,null,{default:f(()=>[d(z,{variant:"text",onClick:se},{default:f(()=>[...a[6]||(a[6]=[_(" 稍后设置 ",-1)])]),_:1}),d(ve),w.value?(p(),R(z,{key:0,disabled:!k.value||m.value,loading:m.value,color:"primary",onClick:ee},{default:f(()=>[...a[7]||(a[7]=[_(" 确认 ",-1)])]),_:1},8,["disabled","loading"])):C.value?(p(),R(z,{key:1,disabled:!o.value.name||m.value,loading:m.value,color:"primary",onClick:ae},{default:f(()=>[...a[8]||(a[8]=[_(" 确认 ",-1)])]),_:1},8,["disabled","loading"])):H("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"]),Ve(e.$slots,"header-display",{isStudent:w.value,openDialog:M,studentName:T.value,teacherName:b.value},void 0)],64))}},qe=le(Se,[["__scopeId","data-v-cebbe710"]]);export{qe as default}; diff --git a/assets/StudentNameManager-CKU0cAHn.js b/assets/StudentNameManager-CKU0cAHn.js deleted file mode 100644 index 1f800af..0000000 --- a/assets/StudentNameManager-CKU0cAHn.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as le,w as oe,e as ne,c as ue,d as re,q as ie,l as z,o as ve,p as de,g as $}from"./index-_6IQhlPZ.js";import{a as D,d as E}from"./dataProvider-BwUtbSl1.js";import{V as ce}from"./VAutocomplete-lO4hforf.js";import{V as me}from"./VTextField-CuXGbmmC.js";import{V as pe}from"./VChip-Veb3ShEh.js";import{V as fe}from"./VSwitch-CdpUb5tZ.js";import{V as ge}from"./VCombobox-D6SxB9Ke.js";import{V as ke}from"./VAlert-D9G_9owC.js";import{o as P,D as ye,X as p,_ as j,j as d,Z as f,a1 as _,S as B,F as U,k as I,$ as H,a2 as he,Y as R,ae as Ve,e as g,b as c}from"./vendor-vue-H0jQBZ7T.js";import"./vendor-vuetify-ChAgIwn2.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-BGVL0kta.js";import"./autofocus-BrMOVHY_.js";import"./VSelect-ANRyd3L-.js";import"./VSheet-U4CNWLuy.js";import"./VCheckboxBtn-DCkgbmVP.js";const Te={key:0,class:"mt-2 text-caption text-medium-emphasis"},be={class:"mt-2 mb-4"},we={class:"d-flex flex-wrap gap-2"},Ae={key:0,class:"ms-1 text-error"},Se={__name:"StudentNameManager",emits:["token-info-updated"],setup(Ne,{expose:q,emit:K}){const F=K,v=c(!1),k=c(""),y=c([]),T=c(""),m=c(!1),i=c(""),u=c(null),r=c([]),X=c(""),b=c(""),o=c({name:"",isHeadTeacher:!1,subjects:[]}),w=g(()=>{var e;return((e=u.value)==null?void 0:e.deviceType)==="student"}),C=g(()=>{var e;return((e=u.value)==null?void 0:e.deviceType)==="teacher"}),Y=g(()=>{var e;return((e=u.value)==null?void 0:e.isReadOnly)===!0}),Z=g(()=>{var e;return((e=u.value)==null?void 0:e.note)||"设置名称"}),G=g(()=>!!h.value),h=g(()=>$("server.kvToken")),L=g(()=>$("server.provider")),J=g(()=>L.value==="kv-server"||L.value==="classworkscloud"),Q=g(()=>w.value?"设置学生姓名":C.value?"设置教师姓名":"设置姓名"),W=g(()=>r.value),A=async()=>{var e;if(!(!J.value||!h.value))try{const a=$("server.domain");if(!a)return;const t=await D.get(`${a}/kv/_token`,{headers:{Authorization:`Bearer ${h.value}`}});if(u.value=t.data,u.value.deviceType==="student"){T.value=u.value.note||"";const s=(await D.get(`${a}/kv/classworks-list-main`,{headers:{Authorization:`Bearer ${h.value}`}})).data.value||[];if(y.value=Array.isArray(s)?s:[],y.value.length>0){const l=u.value.note||"",V=y.value.some(S=>S.name===l);(!l||!V)&&(v.value=!0,k.value="")}return}if(u.value.deviceType==="teacher"){b.value=u.value.note||"";try{const s=(await D.get(`${a}/kv/classworks-list-teacher`,{headers:{Authorization:`Bearer ${h.value}`}})).data.value||[];r.value=Array.isArray(s)?s:[]}catch(n){((e=n==null?void 0:n.response)==null?void 0:e.status)===404?(console.log("教师列表不存在,初始化为空"),r.value=[]):(console.error("加载教师列表失败:",n),r.value=[])}if(r.value.length>0){const n=u.value.note||"",s=r.value.some(l=>l.name===n);(!n||!s)&&(v.value=!0,X.value="")}return}}catch(a){console.error("检查学生姓名状态失败:",a)}},ee=async()=>{var e,a,t,n;if(!(!k.value||m.value)){i.value="",m.value=!0;try{const s=$("server.domain"),l=h.value;(await D.post(`${s}/apps/tokens/${l}/set-student-name`,{name:k.value})).data.success&&(T.value=k.value,v.value=!1,await A(),F("token-info-updated"))}catch(s){const l=(e=s==null?void 0:s.response)==null?void 0:e.status;l===400?i.value="该名称不在学生列表中,请选择正确的姓名":l===403?i.value="只有学生类型的 Token 可以设置姓名":l===404?i.value="设备未设置学生列表或 Token 不存在":i.value=((n=(t=(a=s==null?void 0:s.response)==null?void 0:a.data)==null?void 0:t.error)==null?void 0:n.message)||(s==null?void 0:s.message)||"设置失败,请稍后重试"}finally{m.value=!1}}},ae=async()=>{var e,a,t,n,s;if(!(!o.value.name||m.value)){i.value="",m.value=!0;try{const l=$("server.domain"),V=h.value,S={name:o.value.name.trim(),isHeadTeacher:!!o.value.isHeadTeacher,subjects:Array.isArray(o.value.subjects)?o.value.subjects.filter(x=>x&&String(x).trim()).map(x=>String(x).trim()):[]},O=r.value.findIndex(x=>x.name===S.name);O>=0?r.value[O]=S:r.value.push(S);const N=await E.saveData("classworks-list-teacher",r.value);if((N==null?void 0:N.success)===!1)throw new Error(((e=N==null?void 0:N.error)==null?void 0:e.message)||"保存列表失败");(await D.post(`${l}/apps/tokens/${V}/set-teacher-name`,{name:S.name})).data.success&&(b.value=S.name,v.value=!1,await A(),F("token-info-updated"))}catch(l){const V=(a=l==null?void 0:l.response)==null?void 0:a.status;V===400?i.value="该名称不在教师列表中,请选择正确的姓名":V===403?i.value="只有教师类型的 Token 可以设置姓名":V===404?i.value="设备未设置教师列表或 Token 不存在":i.value=((s=(n=(t=l==null?void 0:l.response)==null?void 0:t.data)==null?void 0:n.error)==null?void 0:s.message)||(l==null?void 0:l.message)||"设置失败,请稍后重试"}finally{m.value=!1}}},te=e=>{o.value.name=e.name,o.value.isHeadTeacher=e.isHeadTeacher||!1,o.value.subjects=Array.isArray(e.subjects)?[...e.subjects]:[]},se=()=>{v.value=!1},M=async()=>{if(console.log("StudentNameManager.openDialog called"),console.log("isStudentToken:",w.value),console.log("studentList.length:",y.value.length),console.log("currentStudentName:",T.value),w.value){const e=await E.loadData("classworks-list-main");y.value=Array.isArray(e==null?void 0:e.value)?e.value:Array.isArray(e)?e:[],y.value.length===0?(console.log("Student list is empty, trying to load..."),await A(),k.value=T.value,v.value=!0):(k.value=T.value,v.value=!0);return}if(C.value){try{const e=await E.loadData("classworks-list-teacher");r.value=Array.isArray(e==null?void 0:e.value)?e.value:Array.isArray(e)?e:[]}catch{console.log("教师列表不存在或加载失败,允许手动创建"),r.value=[]}if(o.value={name:b.value,isHeadTeacher:!1,subjects:[]},b.value){const e=r.value.find(a=>a.name===b.value);e&&(o.value.isHeadTeacher=e.isHeadTeacher||!1,o.value.subjects=Array.isArray(e.subjects)?[...e.subjects]:[])}v.value=!0,console.log("Dialog opened (teacher), showDialog:",v.value);return}console.log("Not a student/teacher token, cannot open dialog")};return P(h,()=>{A()}),oe(()=>{A()}),P(u,()=>{F("token-info-updated")},{deep:!0}),ye(()=>{A()}),q({checkStudentNameStatus:A,openDialog:M,currentStudentName:T,currentTeacherName:b,isStudentToken:w,isTeacherToken:C,isReadOnly:Y,displayName:Z,hasToken:G,tokenInfo:u}),(e,a)=>(p(),j(U,null,[d(de,{modelValue:v.value,"onUpdate:modelValue":a[4]||(a[4]=t=>v.value=t),"max-width":"720",persistent:""},{default:f(()=>[d(ne,null,{default:f(()=>[d(ue,null,{default:f(()=>[_(B(Q.value),1)]),_:1}),d(re,null,{default:f(()=>[w.value?(p(),j(U,{key:0},[a[5]||(a[5]=I("div",{class:"mb-2"}," 请从列表中选择您的姓名: ",-1)),d(ce,{modelValue:k.value,"onUpdate:modelValue":a[0]||(a[0]=t=>k.value=t),items:y.value,clearable:"","hide-details":"","item-title":"name","item-value":"name",label:"学生姓名",placeholder:"选择您的姓名"},null,8,["modelValue","items"]),y.value.length>0?(p(),j("div",Te," 共 "+B(y.value.length)+" 位学生 ",1)):H("",!0)],64)):C.value?(p(),j(U,{key:1},[d(me,{modelValue:o.value.name,"onUpdate:modelValue":a[1]||(a[1]=t=>o.value.name=t),label:"教师姓名",placeholder:"输入姓名或从下方建议中选择",clearable:""},null,8,["modelValue"]),I("div",be,[I("div",we,[(p(!0),j(U,null,he(W.value,t=>(p(),R(pe,{key:t.name,size:"small",onClick:n=>te(t)},{default:f(()=>[_(B(t.name)+" ",1),t.isHeadTeacher?(p(),j("span",Ae," 👨‍🏫 ")):H("",!0)]),_:2},1032,["onClick"]))),128))])]),d(fe,{modelValue:o.value.isHeadTeacher,"onUpdate:modelValue":a[2]||(a[2]=t=>o.value.isHeadTeacher=t),inset:"",color:"primary",label:o.value.isHeadTeacher?"班主任":"非班主任"},null,8,["modelValue","label"]),d(ge,{modelValue:o.value.subjects,"onUpdate:modelValue":a[3]||(a[3]=t=>o.value.subjects=t),multiple:"",chips:"",clearable:"",label:"任教科目",hint:"可直接输入并回车添加多个科目","persistent-hint":""},null,8,["modelValue"])],64)):H("",!0),i.value?(p(),R(ke,{key:2,class:"mt-3",type:"error",variant:"tonal"},{default:f(()=>[_(B(i.value),1)]),_:1})):H("",!0)]),_:1}),d(ie,null,{default:f(()=>[d(z,{variant:"text",onClick:se},{default:f(()=>[...a[6]||(a[6]=[_(" 稍后设置 ",-1)])]),_:1}),d(ve),w.value?(p(),R(z,{key:0,disabled:!k.value||m.value,loading:m.value,color:"primary",onClick:ee},{default:f(()=>[...a[7]||(a[7]=[_(" 确认 ",-1)])]),_:1},8,["disabled","loading"])):C.value?(p(),R(z,{key:1,disabled:!o.value.name||m.value,loading:m.value,color:"primary",onClick:ae},{default:f(()=>[...a[8]||(a[8]=[_(" 确认 ",-1)])]),_:1},8,["disabled","loading"])):H("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"]),Ve(e.$slots,"header-display",{isStudent:w.value,openDialog:M,studentName:T.value,teacherName:b.value},void 0)],64))}},Pe=le(Se,[["__scopeId","data-v-cebbe710"]]);export{Pe as default}; diff --git a/assets/UrgentTestDialog-Dh8F1GGI.js b/assets/UrgentTestDialog-Dh8F1GGI.js new file mode 100644 index 0000000..7c99cbb --- /dev/null +++ b/assets/UrgentTestDialog-Dh8F1GGI.js @@ -0,0 +1 @@ +import{_ as O,a as L}from"./ChatWidget-C2TaIq_w.js";import{a as S}from"./socketClient-CkosNYrb.js";import{d as N}from"./dataProvider-bUkzKSNt.js";import{_ as W,e as h,f as I,r as V,i as v,d as y,q as w,c as T,l as j,n as q,k as b}from"./index-CFUCTEXJ.js";import{b as E,c as A}from"./VAppBarTitle-vVO0I21U.js";import{V as K}from"./VContainer-RtoBp6rB.js";import{V as F,a as x}from"./VRow-Dw4j2TKL.js";import{V as M}from"./VForm-zpXHQBRK.js";import{V as P}from"./VSwitch-DKh_Uq_M.js";import{V as R}from"./VCheckbox-iNdH9PmZ.js";import{V as z}from"./VTextarea-BxmmuONa.js";import{X as f,Y as D,Z as s,j as t,a1 as a,S as u,_,F as U,a2 as k,k as m}from"./vendor-vue-B2vxubPy.js";import"./soundList-D9U-Grcp.js";import"./VChip-DR8Ljy6R.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./deviceEvents-BfEN8wCe.js";import"./VBadge-C7i5WU2T.js";import"./VTooltip-CbK3h4lM.js";import"./VPagination-D-juuf4L.js";import"./vendor-socket-CyTcV1HU.js";import"./serverRotation-CdH9Xda8.js";import"./vendor-utils-DDRLRfsI.js";import"./VLabel-CU-8PdVS.js";import"./VCheckboxBtn-DOw5vjpY.js";import"./autofocus-BAgnxQiD.js";const X={name:"UrgentTestDialog",components:{ChatWidget:L,EventSender:O},props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{sending:!1,notificationForm:{isUrgent:!1,message:"",isPersistent:!1},sentMessages:[],receiptCleanup:[],persistentNotifications:[],editDialog:!1,editForm:{id:null,message:"",isUrgent:!1,resend:!1},savingEdit:!1,deleteConfirmDialog:!1,itemToDelete:null}},computed:{dialog:{get(){return this.modelValue},set(i){this.$emit("update:modelValue",i)}}},mounted(){this.setupEventListeners(),this.loadPersistentNotifications()},beforeUnmount(){this.cleanup()},methods:{generateNotificationId(){const i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let e="";for(let l=0;l<32;l++)e+=i.charAt(Math.floor(Math.random()*i.length));return e},async sendNotification(){if(this.notificationForm.message.trim()){this.sending=!0;try{const i=this.generateNotificationId(),e=this.notificationForm.message,l=this.notificationForm.isUrgent,c=this.notificationForm.isPersistent,o=await this.$refs.eventSender.sendNotification(e,l,[],{deviceName:"测试设备",deviceType:"system",isReadOnly:!1},i),r=(o==null?void 0:o.eventId)||`msg-${Date.now()}`;if(this.sentMessages.push({id:r,notificationId:i,message:e,isUrgent:l,timestamp:new Date().toISOString(),receipts:{displayed:[],read:[]}}),c)try{const p="notification-list",g=await N.loadData(p);let n=[];g&&Array.isArray(g)?n=g:g&&g.success!==!1&&Array.isArray(g.data)&&(n=g.data);const d={id:i,message:e,isUrgent:l,timestamp:new Date().toISOString()};n.unshift(d),await N.saveData(p,n),this.persistentNotifications=n,console.log("常驻通知已保存")}catch(p){console.error("保存常驻通知失败",p)}console.log("通知已发送,事件ID:",r,"通知ID:",i),this.resetForm()}catch(i){console.error("发送通知失败:",i)}finally{this.sending=!1}}},resetForm(){this.notificationForm={isUrgent:!1,message:"",isPersistent:!1}},close(){this.dialog=!1},setupEventListeners(){const i=S("notification-displayed",l=>{console.log("收到显示回执:",l),this.updateReceipt(l,"displayed")}),e=S("notification-read",l=>{console.log("收到已读回执:",l),this.updateReceipt(l,"read")});this.receiptCleanup.push(i,e)},updateReceipt(i,e){var r,p,g,n,d;const l=i.originalEventId,c=i.notificationId||((r=i.content)==null?void 0:r.notificationId);if(!l&&!c)return;const o=this.sentMessages.find(C=>C.id===l||C.notificationId===c);if(o){const C={senderId:i.senderId||"unknown-sender",deviceName:((p=i.senderInfo)==null?void 0:p.deviceName)||((g=i.deviceInfo)==null?void 0:g.deviceName)||"未知设备",deviceType:((n=i.senderInfo)==null?void 0:n.deviceType)||((d=i.deviceInfo)==null?void 0:d.deviceType)||"unknown",timestamp:new Date().toISOString()};o.receipts[e].find(B=>B.senderId===C.senderId)||(o.receipts[e].push(C),console.log(`更新${e}回执:`,o.id,C))}},cleanup(){this.receiptCleanup.forEach(i=>i()),this.receiptCleanup=[]},formatTime(i){return new Date(i).toLocaleString("zh-CN")},getReceiptStatus(i){return i.read.length>0?"已读":i.displayed.length>0?"已显示":"已发送"},getReceiptColor(i){return i.read.length>0?"success":i.displayed.length>0?"info":"grey"},formatDeviceTime(i){return new Date(i).toLocaleTimeString("zh-CN")},getMainCardColor(i){return i.read.length>0?"success":i.displayed.length>0?"info":"grey"},hasAnyReceipts(i){return i.read.length>0||i.displayed.length>0},getDisplayedOnlyDevices(i){const e=i.read.map(l=>l.senderId);return i.displayed.filter(l=>!e.includes(l.senderId))},openEditDialog(i){this.editForm={id:i.id,message:i.message,isUrgent:i.isUrgent||!1,resend:!1,timestamp:i.timestamp},this.editDialog=!0},async saveEdit(){var i,e;if(this.editForm.message.trim()){this.savingEdit=!0;try{const l=this.persistentNotifications.findIndex(c=>c.id===this.editForm.id);if(l!==-1){if(this.persistentNotifications[l]={...this.persistentNotifications[l],message:this.editForm.message,isUrgent:this.editForm.isUrgent,timestamp:new Date().toISOString()},await N.saveData("notification-list",this.persistentNotifications),this.editForm.resend){const c=this.editForm.id,o=this.editForm.message,r=this.editForm.isUrgent,p=await this.$refs.eventSender.sendNotification(o,r,[],{deviceName:"测试设备",deviceType:"system",isReadOnly:!1},c),g=(p==null?void 0:p.eventId)||`msg-${Date.now()}`;this.sentMessages.push({id:g,notificationId:c,message:o,isUrgent:r,timestamp:new Date().toISOString(),receipts:{displayed:[],read:[]}})}this.editDialog=!1,(i=this.$message)==null||i.success("已更新")}}catch(l){console.error("保存失败",l),(e=this.$message)==null||e.error("保存失败")}finally{this.savingEdit=!1}}},async loadPersistentNotifications(){try{const i=await N.loadData("notification-list");i&&Array.isArray(i)?this.persistentNotifications=i:i&&i.success!==!1&&Array.isArray(i.data)?this.persistentNotifications=i.data:this.persistentNotifications=[]}catch(i){console.error("加载常驻通知失败",i)}},async deleteNotification(i){if(confirm("确定要删除这个通知吗?"))try{this.sentMessages=this.sentMessages.filter(l=>l.id!==i),this.persistentNotifications=this.persistentNotifications.filter(l=>l.id!==i),console.log("通知已删除,通知ID:",i)}catch(l){console.error("删除通知失败:",l)}},deletePersistentNotification(i){this.itemToDelete=i,this.deleteConfirmDialog=!0},async executeDelete(){var e,l;if(!this.itemToDelete)return;const i=this.itemToDelete;this.deleteConfirmDialog=!1,this.itemToDelete=null;try{this.persistentNotifications=this.persistentNotifications.filter(o=>o.id!==i);const c=this.persistentNotifications.length>0?this.persistentNotifications:{};await N.saveData("notification-list",c),(e=this.$message)==null||e.success("已删除")}catch(c){console.error("删除失败",c),(l=this.$message)==null||l.error("删除失败")}}}},Y={key:0,class:"text-center text-grey py-4"},Z={key:0,class:"text-center text-grey py-8"},G={class:"d-flex align-center mb-2"},H={class:"font-weight-medium"},J={class:"text-caption font-weight-medium"},Q={class:"text-body-2 mb-3",style:{"max-height":"60px",overflow:"hidden"}},$={class:"text-caption"},ee={key:0},te={class:"align-center"},ie={class:"text-body-2 font-weight-medium"},se={class:"text-caption mt-1"},ne={class:"align-center"},oe={class:"text-body-2 font-weight-medium"},le={class:"text-caption text-grey"},re={class:"text-caption text-grey mt-1"},ae={key:1};function de(i,e,l,c,o,r){const p=L,g=O;return f(),D(b,{modelValue:r.dialog,"onUpdate:modelValue":e[11]||(e[11]=n=>r.dialog=n),fullscreen:"",transition:"dialog-bottom-transition",scrollable:""},{default:s(()=>[t(h,null,{default:s(()=>[t(E,{dark:"",flat:""},{default:s(()=>[t(A,null,{default:s(()=>[t(I,{class:"mr-2"},{default:s(()=>[...e[12]||(e[12]=[a(" mdi-chat ",-1)])]),_:1}),e[13]||(e[13]=a(" 发送通知 ",-1))]),_:1}),t(V),t(v,{icon:"mdi-close",onClick:r.close},null,8,["onClick"])]),_:1}),t(y,{class:"pa-0"},{default:s(()=>[t(K,null,{default:s(()=>[t(F,null,{default:s(()=>[t(x,{cols:"12"},{default:s(()=>[t(h,null,{default:s(()=>[t(y,null,{default:s(()=>[t(M,null,{default:s(()=>[t(F,null,{default:s(()=>[t(x,{cols:"12",md:"6"},{default:s(()=>[t(P,{modelValue:o.notificationForm.isUrgent,"onUpdate:modelValue":e[0]||(e[0]=n=>o.notificationForm.isUrgent=n),label:"强调通知",color:"red",inset:""},null,8,["modelValue"]),t(R,{modelValue:o.notificationForm.isPersistent,"onUpdate:modelValue":e[1]||(e[1]=n=>o.notificationForm.isPersistent=n),label:"常驻展示",color:"primary","hide-details":"",class:"mt-0"},null,8,["modelValue"])]),_:1}),t(x,{cols:"12"},{default:s(()=>[t(z,{modelValue:o.notificationForm.message,"onUpdate:modelValue":e[2]||(e[2]=n=>o.notificationForm.message=n),label:"通知内容",outlined:"",rows:"3",placeholder:"请输入强调通知的内容..."},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1}),t(w,{class:"px-6 pb-6"},{default:s(()=>[t(v,{color:o.notificationForm.isUrgent?"red":"blue",disabled:!o.notificationForm.message.trim(),loading:o.sending,size:"large",variant:"elevated",onClick:r.sendNotification},{default:s(()=>[t(I,{left:""},{default:s(()=>[a(u(o.notificationForm.isUrgent?"mdi-alert-circle":"mdi-information"),1)]),_:1}),a(" "+u(o.notificationForm.isUrgent?"发送强调通知":"发送通知"),1)]),_:1},8,["color","disabled","loading","onClick"]),t(V)]),_:1})]),_:1})]),_:1})]),_:1}),t(F,{class:"mt-4"},{default:s(()=>[t(x,{cols:"12"},{default:s(()=>[t(h,null,{default:s(()=>[t(T,null,{default:s(()=>[t(I,{class:"mr-2"},{default:s(()=>[...e[14]||(e[14]=[a("mdi-pin",-1)])]),_:1}),e[15]||(e[15]=a(" 常驻通知管理 ",-1))]),_:1}),t(y,null,{default:s(()=>[o.persistentNotifications.length===0?(f(),_("div",Y," 暂无常驻通知 ")):(f(),D(j,{key:1},{default:s(()=>[(f(!0),_(U,null,k(o.persistentNotifications,n=>(f(),D(q,{key:n.id,title:n.message,subtitle:r.formatTime(n.timestamp),lines:"two"},{prepend:s(()=>[t(I,{color:n.isUrgent?"error":"primary"},{default:s(()=>[a(u(n.isUrgent?"mdi-alert-circle":"mdi-information"),1)]),_:2},1032,["color"])]),append:s(()=>[t(v,{icon:"mdi-pencil",variant:"text",size:"small",onClick:d=>r.openEditDialog(n)},null,8,["onClick"]),t(v,{icon:"mdi-delete",variant:"text",color:"error",size:"small",onClick:d=>r.deletePersistentNotification(n.id)},null,8,["onClick"])]),_:2},1032,["title","subtitle"]))),128))]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1}),t(F,{class:"mt-4"},{default:s(()=>[t(x,{cols:"12"},{default:s(()=>[t(h,null,{default:s(()=>[t(T,null,{default:s(()=>[t(I,{class:"mr-2"},{default:s(()=>[...e[16]||(e[16]=[a(" mdi-history ",-1)])]),_:1}),e[17]||(e[17]=a(" 消息记录 ",-1)),t(V)]),_:1}),t(y,null,{default:s(()=>[o.sentMessages.length===0?(f(),_("div",Z,[t(I,{size:"64",color:"grey-lighten-2"},{default:s(()=>[...e[18]||(e[18]=[a(" mdi-message-outline ",-1)])]),_:1}),e[19]||(e[19]=m("div",{class:"mt-2"}," 暂无发送记录 ",-1))])):(f(),D(F,{key:1},{default:s(()=>[(f(!0),_(U,null,k(o.sentMessages.slice().reverse(),n=>(f(),D(x,{key:n.id,cols:"12",md:"6",lg:"4"},{default:s(()=>[t(h,{color:r.getMainCardColor(n.receipts),class:"mb-2"},{default:s(()=>[t(y,null,{default:s(()=>[m("div",G,[m("span",H,u(n.isUrgent?"强调通知":"通知"),1),t(V),m("span",J,u(r.getReceiptStatus(n.receipts)),1)]),m("div",Q,u(n.message),1),m("div",$,[m("div",null,"发送时间:"+u(r.formatTime(n.timestamp)),1),m("div",null,"事件ID:"+u(n.id),1),m("div",null,"通知ID:"+u(n.notificationId),1)])]),_:2},1024)]),_:2},1032,["color"]),r.hasAnyReceipts(n.receipts)?(f(),_("div",ee,[(f(!0),_(U,null,k(n.receipts.read,d=>(f(),D(h,{key:`${d.senderId}-read`,color:"success",class:"mb-1",size:"small"},{default:s(()=>[t(y,{class:"pa-2"},{default:s(()=>[m("div",te,[m("span",ie,u(d.deviceName),1),e[20]||(e[20]=m("br",null,null,-1)),a(" "+u(d.deviceType),1)]),m("div",se," 已读于 "+u(r.formatDeviceTime(d.timestamp)),1)]),_:2},1024)]),_:2},1024))),128)),(f(!0),_(U,null,k(r.getDisplayedOnlyDevices(n.receipts),d=>(f(),D(h,{key:`${d.senderId}-displayed`,color:"info-lighten-4",variant:"outlined",class:"mb-1",size:"small"},{default:s(()=>[t(y,{class:"pa-2"},{default:s(()=>[m("div",ne,[m("span",oe,u(d.deviceName),1),t(V),m("span",le,u(d.deviceType=="classroom"?"教室设备上的应用":d.deviceType),1)]),m("div",re," 已显示于 "+u(r.formatDeviceTime(d.timestamp)),1)]),_:2},1024)]),_:2},1024))),128))])):(f(),_("div",ae,[t(h,{color:"info-lighten-4",variant:"outlined",class:"mb-1",size:"small",title:"无设备在线"},{default:s(()=>[t(y,null,{default:s(()=>[...e[21]||(e[21]=[a(" 如果数秒后任然显示这个提示,则可能没有任何设备在线接收通知。 ",-1)])]),_:1})]),_:1})]))]),_:2},1024))),128))]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(p),t(g,{ref:"eventSender"},null,512),t(b,{modelValue:o.editDialog,"onUpdate:modelValue":e[8]||(e[8]=n=>o.editDialog=n),"max-width":"500",fullscreen:i.$vuetify.display.xs},{default:s(()=>[t(h,null,{default:s(()=>[t(E,{flat:"",density:"compact"},{default:s(()=>[t(A,null,{default:s(()=>[...e[22]||(e[22]=[a("编辑常驻通知",-1)])]),_:1}),t(V),t(v,{icon:"mdi-close",onClick:e[3]||(e[3]=n=>o.editDialog=!1)})]),_:1}),t(y,null,{default:s(()=>[t(M,null,{default:s(()=>[t(z,{modelValue:o.editForm.message,"onUpdate:modelValue":e[4]||(e[4]=n=>o.editForm.message=n),label:"通知内容",rows:"3","auto-grow":""},null,8,["modelValue"]),t(P,{modelValue:o.editForm.isUrgent,"onUpdate:modelValue":e[5]||(e[5]=n=>o.editForm.isUrgent=n),label:"强调通知",color:"error","hide-details":""},null,8,["modelValue"]),t(R,{modelValue:o.editForm.resend,"onUpdate:modelValue":e[6]||(e[6]=n=>o.editForm.resend=n),label:"保存并重新发送通知",hint:"勾选后将作为新通知发送给所有在线设备","persistent-hint":""},null,8,["modelValue"])]),_:1})]),_:1}),t(w,null,{default:s(()=>[t(V),t(v,{variant:"text",onClick:e[7]||(e[7]=n=>o.editDialog=!1)},{default:s(()=>[...e[23]||(e[23]=[a("取消",-1)])]),_:1}),t(v,{color:"primary",loading:o.savingEdit,onClick:r.saveEdit},{default:s(()=>[...e[24]||(e[24]=[a("保存",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue","fullscreen"]),t(b,{modelValue:o.deleteConfirmDialog,"onUpdate:modelValue":e[10]||(e[10]=n=>o.deleteConfirmDialog=n),"max-width":"400"},{default:s(()=>[t(h,null,{default:s(()=>[t(T,{class:"text-h5"},{default:s(()=>[...e[25]||(e[25]=[a("确认删除",-1)])]),_:1}),t(y,null,{default:s(()=>[...e[26]||(e[26]=[a("确定要删除这条常驻通知吗?此操作无法撤销。",-1)])]),_:1}),t(w,null,{default:s(()=>[t(V),t(v,{color:"grey-darken-1",variant:"text",onClick:e[9]||(e[9]=n=>o.deleteConfirmDialog=!1)},{default:s(()=>[...e[27]||(e[27]=[a("取消",-1)])]),_:1}),t(v,{color:"error",variant:"text",onClick:r.executeDelete},{default:s(()=>[...e[28]||(e[28]=[a("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])}const Pe=W(X,[["render",de],["__scopeId","data-v-c6850940"]]);export{Pe as default}; diff --git a/assets/UrgentTestDialog-DpliVwT_.js b/assets/UrgentTestDialog-DpliVwT_.js deleted file mode 100644 index e329592..0000000 --- a/assets/UrgentTestDialog-DpliVwT_.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as O,a as L}from"./ChatWidget-CC4arZYT.js";import{a as S}from"./socketClient-Cb2FghxN.js";import{d as N}from"./dataProvider-BwUtbSl1.js";import{_ as j,e as h,h as I,o as V,l as v,d as y,q as w,c as T,j as W,k as q,p as b}from"./index-_6IQhlPZ.js";import{b as E,c as A}from"./VAppBarTitle-Cvegbk0-.js";import{V as K}from"./VContainer-Bg8RevuO.js";import{V as F,a as x}from"./VRow-WkEz3xRr.js";import{V as M}from"./VForm-Cskwow1F.js";import{V as P}from"./VSwitch-CdpUb5tZ.js";import{V as R}from"./VCheckbox-DhU7h1Z3.js";import{V as z}from"./VTextarea-CCCqy4pz.js";import{X as f,Y as D,Z as s,j as t,a1 as a,S as u,_,F as U,a2 as k,k as m}from"./vendor-vue-H0jQBZ7T.js";import"./soundList-BZnE47k0.js";import"./VChip-Veb3ShEh.js";import"./vendor-vuetify-ChAgIwn2.js";import"./deviceEvents-BnDFIf8a.js";import"./VBadge-VwKD9DDf.js";import"./VTooltip-C2Bprg_f.js";import"./VPagination-BiSMksGW.js";import"./vendor-socket-CyTcV1HU.js";import"./serverRotation-BGVL0kta.js";import"./vendor-utils-DDRLRfsI.js";import"./autofocus-BrMOVHY_.js";import"./VCheckboxBtn-DCkgbmVP.js";const X={name:"UrgentTestDialog",components:{ChatWidget:L,EventSender:O},props:{modelValue:{type:Boolean,default:!1}},emits:["update:modelValue"],data(){return{sending:!1,notificationForm:{isUrgent:!1,message:"",isPersistent:!1},sentMessages:[],receiptCleanup:[],persistentNotifications:[],editDialog:!1,editForm:{id:null,message:"",isUrgent:!1,resend:!1},savingEdit:!1,deleteConfirmDialog:!1,itemToDelete:null}},computed:{dialog:{get(){return this.modelValue},set(i){this.$emit("update:modelValue",i)}}},mounted(){this.setupEventListeners(),this.loadPersistentNotifications()},beforeUnmount(){this.cleanup()},methods:{generateNotificationId(){const i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";let e="";for(let l=0;l<32;l++)e+=i.charAt(Math.floor(Math.random()*i.length));return e},async sendNotification(){if(this.notificationForm.message.trim()){this.sending=!0;try{const i=this.generateNotificationId(),e=this.notificationForm.message,l=this.notificationForm.isUrgent,c=this.notificationForm.isPersistent,o=await this.$refs.eventSender.sendNotification(e,l,[],{deviceName:"测试设备",deviceType:"system",isReadOnly:!1},i),r=(o==null?void 0:o.eventId)||`msg-${Date.now()}`;if(this.sentMessages.push({id:r,notificationId:i,message:e,isUrgent:l,timestamp:new Date().toISOString(),receipts:{displayed:[],read:[]}}),c)try{const p="notification-list",g=await N.loadData(p);let n=[];g&&Array.isArray(g)?n=g:g&&g.success!==!1&&Array.isArray(g.data)&&(n=g.data);const d={id:i,message:e,isUrgent:l,timestamp:new Date().toISOString()};n.unshift(d),await N.saveData(p,n),this.persistentNotifications=n,console.log("常驻通知已保存")}catch(p){console.error("保存常驻通知失败",p)}console.log("通知已发送,事件ID:",r,"通知ID:",i),this.resetForm()}catch(i){console.error("发送通知失败:",i)}finally{this.sending=!1}}},resetForm(){this.notificationForm={isUrgent:!1,message:"",isPersistent:!1}},close(){this.dialog=!1},setupEventListeners(){const i=S("notification-displayed",l=>{console.log("收到显示回执:",l),this.updateReceipt(l,"displayed")}),e=S("notification-read",l=>{console.log("收到已读回执:",l),this.updateReceipt(l,"read")});this.receiptCleanup.push(i,e)},updateReceipt(i,e){var r,p,g,n,d;const l=i.originalEventId,c=i.notificationId||((r=i.content)==null?void 0:r.notificationId);if(!l&&!c)return;const o=this.sentMessages.find(C=>C.id===l||C.notificationId===c);if(o){const C={senderId:i.senderId||"unknown-sender",deviceName:((p=i.senderInfo)==null?void 0:p.deviceName)||((g=i.deviceInfo)==null?void 0:g.deviceName)||"未知设备",deviceType:((n=i.senderInfo)==null?void 0:n.deviceType)||((d=i.deviceInfo)==null?void 0:d.deviceType)||"unknown",timestamp:new Date().toISOString()};o.receipts[e].find(B=>B.senderId===C.senderId)||(o.receipts[e].push(C),console.log(`更新${e}回执:`,o.id,C))}},cleanup(){this.receiptCleanup.forEach(i=>i()),this.receiptCleanup=[]},formatTime(i){return new Date(i).toLocaleString("zh-CN")},getReceiptStatus(i){return i.read.length>0?"已读":i.displayed.length>0?"已显示":"已发送"},getReceiptColor(i){return i.read.length>0?"success":i.displayed.length>0?"info":"grey"},formatDeviceTime(i){return new Date(i).toLocaleTimeString("zh-CN")},getMainCardColor(i){return i.read.length>0?"success":i.displayed.length>0?"info":"grey"},hasAnyReceipts(i){return i.read.length>0||i.displayed.length>0},getDisplayedOnlyDevices(i){const e=i.read.map(l=>l.senderId);return i.displayed.filter(l=>!e.includes(l.senderId))},openEditDialog(i){this.editForm={id:i.id,message:i.message,isUrgent:i.isUrgent||!1,resend:!1,timestamp:i.timestamp},this.editDialog=!0},async saveEdit(){var i,e;if(this.editForm.message.trim()){this.savingEdit=!0;try{const l=this.persistentNotifications.findIndex(c=>c.id===this.editForm.id);if(l!==-1){if(this.persistentNotifications[l]={...this.persistentNotifications[l],message:this.editForm.message,isUrgent:this.editForm.isUrgent,timestamp:new Date().toISOString()},await N.saveData("notification-list",this.persistentNotifications),this.editForm.resend){const c=this.editForm.id,o=this.editForm.message,r=this.editForm.isUrgent,p=await this.$refs.eventSender.sendNotification(o,r,[],{deviceName:"测试设备",deviceType:"system",isReadOnly:!1},c),g=(p==null?void 0:p.eventId)||`msg-${Date.now()}`;this.sentMessages.push({id:g,notificationId:c,message:o,isUrgent:r,timestamp:new Date().toISOString(),receipts:{displayed:[],read:[]}})}this.editDialog=!1,(i=this.$message)==null||i.success("已更新")}}catch(l){console.error("保存失败",l),(e=this.$message)==null||e.error("保存失败")}finally{this.savingEdit=!1}}},async loadPersistentNotifications(){try{const i=await N.loadData("notification-list");i&&Array.isArray(i)?this.persistentNotifications=i:i&&i.success!==!1&&Array.isArray(i.data)?this.persistentNotifications=i.data:this.persistentNotifications=[]}catch(i){console.error("加载常驻通知失败",i)}},async deleteNotification(i){if(confirm("确定要删除这个通知吗?"))try{this.sentMessages=this.sentMessages.filter(l=>l.id!==i),this.persistentNotifications=this.persistentNotifications.filter(l=>l.id!==i),console.log("通知已删除,通知ID:",i)}catch(l){console.error("删除通知失败:",l)}},deletePersistentNotification(i){this.itemToDelete=i,this.deleteConfirmDialog=!0},async executeDelete(){var e,l;if(!this.itemToDelete)return;const i=this.itemToDelete;this.deleteConfirmDialog=!1,this.itemToDelete=null;try{this.persistentNotifications=this.persistentNotifications.filter(o=>o.id!==i);const c=this.persistentNotifications.length>0?this.persistentNotifications:{};await N.saveData("notification-list",c),(e=this.$message)==null||e.success("已删除")}catch(c){console.error("删除失败",c),(l=this.$message)==null||l.error("删除失败")}}}},Y={key:0,class:"text-center text-grey py-4"},Z={key:0,class:"text-center text-grey py-8"},G={class:"d-flex align-center mb-2"},H={class:"font-weight-medium"},J={class:"text-caption font-weight-medium"},Q={class:"text-body-2 mb-3",style:{"max-height":"60px",overflow:"hidden"}},$={class:"text-caption"},ee={key:0},te={class:"align-center"},ie={class:"text-body-2 font-weight-medium"},se={class:"text-caption mt-1"},ne={class:"align-center"},oe={class:"text-body-2 font-weight-medium"},le={class:"text-caption text-grey"},re={class:"text-caption text-grey mt-1"},ae={key:1};function de(i,e,l,c,o,r){const p=L,g=O;return f(),D(b,{modelValue:r.dialog,"onUpdate:modelValue":e[11]||(e[11]=n=>r.dialog=n),fullscreen:"",transition:"dialog-bottom-transition",scrollable:""},{default:s(()=>[t(h,null,{default:s(()=>[t(E,{dark:"",flat:""},{default:s(()=>[t(A,null,{default:s(()=>[t(I,{class:"mr-2"},{default:s(()=>[...e[12]||(e[12]=[a(" mdi-chat ",-1)])]),_:1}),e[13]||(e[13]=a(" 发送通知 ",-1))]),_:1}),t(V),t(v,{icon:"mdi-close",onClick:r.close},null,8,["onClick"])]),_:1}),t(y,{class:"pa-0"},{default:s(()=>[t(K,null,{default:s(()=>[t(F,null,{default:s(()=>[t(x,{cols:"12"},{default:s(()=>[t(h,null,{default:s(()=>[t(y,null,{default:s(()=>[t(M,null,{default:s(()=>[t(F,null,{default:s(()=>[t(x,{cols:"12",md:"6"},{default:s(()=>[t(P,{modelValue:o.notificationForm.isUrgent,"onUpdate:modelValue":e[0]||(e[0]=n=>o.notificationForm.isUrgent=n),label:"强调通知",color:"red",inset:""},null,8,["modelValue"]),t(R,{modelValue:o.notificationForm.isPersistent,"onUpdate:modelValue":e[1]||(e[1]=n=>o.notificationForm.isPersistent=n),label:"常驻展示",color:"primary","hide-details":"",class:"mt-0"},null,8,["modelValue"])]),_:1}),t(x,{cols:"12"},{default:s(()=>[t(z,{modelValue:o.notificationForm.message,"onUpdate:modelValue":e[2]||(e[2]=n=>o.notificationForm.message=n),label:"通知内容",outlined:"",rows:"3",placeholder:"请输入强调通知的内容..."},null,8,["modelValue"])]),_:1})]),_:1})]),_:1})]),_:1}),t(w,{class:"px-6 pb-6"},{default:s(()=>[t(v,{color:o.notificationForm.isUrgent?"red":"blue",disabled:!o.notificationForm.message.trim(),loading:o.sending,size:"large",variant:"elevated",onClick:r.sendNotification},{default:s(()=>[t(I,{left:""},{default:s(()=>[a(u(o.notificationForm.isUrgent?"mdi-alert-circle":"mdi-information"),1)]),_:1}),a(" "+u(o.notificationForm.isUrgent?"发送强调通知":"发送通知"),1)]),_:1},8,["color","disabled","loading","onClick"]),t(V)]),_:1})]),_:1})]),_:1})]),_:1}),t(F,{class:"mt-4"},{default:s(()=>[t(x,{cols:"12"},{default:s(()=>[t(h,null,{default:s(()=>[t(T,null,{default:s(()=>[t(I,{class:"mr-2"},{default:s(()=>[...e[14]||(e[14]=[a("mdi-pin",-1)])]),_:1}),e[15]||(e[15]=a(" 常驻通知管理 ",-1))]),_:1}),t(y,null,{default:s(()=>[o.persistentNotifications.length===0?(f(),_("div",Y," 暂无常驻通知 ")):(f(),D(W,{key:1},{default:s(()=>[(f(!0),_(U,null,k(o.persistentNotifications,n=>(f(),D(q,{key:n.id,title:n.message,subtitle:r.formatTime(n.timestamp),lines:"two"},{prepend:s(()=>[t(I,{color:n.isUrgent?"error":"primary"},{default:s(()=>[a(u(n.isUrgent?"mdi-alert-circle":"mdi-information"),1)]),_:2},1032,["color"])]),append:s(()=>[t(v,{icon:"mdi-pencil",variant:"text",size:"small",onClick:d=>r.openEditDialog(n)},null,8,["onClick"]),t(v,{icon:"mdi-delete",variant:"text",color:"error",size:"small",onClick:d=>r.deletePersistentNotification(n.id)},null,8,["onClick"])]),_:2},1032,["title","subtitle"]))),128))]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1}),t(F,{class:"mt-4"},{default:s(()=>[t(x,{cols:"12"},{default:s(()=>[t(h,null,{default:s(()=>[t(T,null,{default:s(()=>[t(I,{class:"mr-2"},{default:s(()=>[...e[16]||(e[16]=[a(" mdi-history ",-1)])]),_:1}),e[17]||(e[17]=a(" 消息记录 ",-1)),t(V)]),_:1}),t(y,null,{default:s(()=>[o.sentMessages.length===0?(f(),_("div",Z,[t(I,{size:"64",color:"grey-lighten-2"},{default:s(()=>[...e[18]||(e[18]=[a(" mdi-message-outline ",-1)])]),_:1}),e[19]||(e[19]=m("div",{class:"mt-2"}," 暂无发送记录 ",-1))])):(f(),D(F,{key:1},{default:s(()=>[(f(!0),_(U,null,k(o.sentMessages.slice().reverse(),n=>(f(),D(x,{key:n.id,cols:"12",md:"6",lg:"4"},{default:s(()=>[t(h,{color:r.getMainCardColor(n.receipts),class:"mb-2"},{default:s(()=>[t(y,null,{default:s(()=>[m("div",G,[m("span",H,u(n.isUrgent?"强调通知":"通知"),1),t(V),m("span",J,u(r.getReceiptStatus(n.receipts)),1)]),m("div",Q,u(n.message),1),m("div",$,[m("div",null,"发送时间:"+u(r.formatTime(n.timestamp)),1),m("div",null,"事件ID:"+u(n.id),1),m("div",null,"通知ID:"+u(n.notificationId),1)])]),_:2},1024)]),_:2},1032,["color"]),r.hasAnyReceipts(n.receipts)?(f(),_("div",ee,[(f(!0),_(U,null,k(n.receipts.read,d=>(f(),D(h,{key:`${d.senderId}-read`,color:"success",class:"mb-1",size:"small"},{default:s(()=>[t(y,{class:"pa-2"},{default:s(()=>[m("div",te,[m("span",ie,u(d.deviceName),1),e[20]||(e[20]=m("br",null,null,-1)),a(" "+u(d.deviceType),1)]),m("div",se," 已读于 "+u(r.formatDeviceTime(d.timestamp)),1)]),_:2},1024)]),_:2},1024))),128)),(f(!0),_(U,null,k(r.getDisplayedOnlyDevices(n.receipts),d=>(f(),D(h,{key:`${d.senderId}-displayed`,color:"info-lighten-4",variant:"outlined",class:"mb-1",size:"small"},{default:s(()=>[t(y,{class:"pa-2"},{default:s(()=>[m("div",ne,[m("span",oe,u(d.deviceName),1),t(V),m("span",le,u(d.deviceType=="classroom"?"教室设备上的应用":d.deviceType),1)]),m("div",re," 已显示于 "+u(r.formatDeviceTime(d.timestamp)),1)]),_:2},1024)]),_:2},1024))),128))])):(f(),_("div",ae,[t(h,{color:"info-lighten-4",variant:"outlined",class:"mb-1",size:"small",title:"无设备在线"},{default:s(()=>[t(y,null,{default:s(()=>[...e[21]||(e[21]=[a(" 如果数秒后任然显示这个提示,则可能没有任何设备在线接收通知。 ",-1)])]),_:1})]),_:1})]))]),_:2},1024))),128))]),_:1}))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(p),t(g,{ref:"eventSender"},null,512),t(b,{modelValue:o.editDialog,"onUpdate:modelValue":e[8]||(e[8]=n=>o.editDialog=n),"max-width":"500",fullscreen:i.$vuetify.display.xs},{default:s(()=>[t(h,null,{default:s(()=>[t(E,{flat:"",density:"compact"},{default:s(()=>[t(A,null,{default:s(()=>[...e[22]||(e[22]=[a("编辑常驻通知",-1)])]),_:1}),t(V),t(v,{icon:"mdi-close",onClick:e[3]||(e[3]=n=>o.editDialog=!1)})]),_:1}),t(y,null,{default:s(()=>[t(M,null,{default:s(()=>[t(z,{modelValue:o.editForm.message,"onUpdate:modelValue":e[4]||(e[4]=n=>o.editForm.message=n),label:"通知内容",rows:"3","auto-grow":""},null,8,["modelValue"]),t(P,{modelValue:o.editForm.isUrgent,"onUpdate:modelValue":e[5]||(e[5]=n=>o.editForm.isUrgent=n),label:"强调通知",color:"error","hide-details":""},null,8,["modelValue"]),t(R,{modelValue:o.editForm.resend,"onUpdate:modelValue":e[6]||(e[6]=n=>o.editForm.resend=n),label:"保存并重新发送通知",hint:"勾选后将作为新通知发送给所有在线设备","persistent-hint":""},null,8,["modelValue"])]),_:1})]),_:1}),t(w,null,{default:s(()=>[t(V),t(v,{variant:"text",onClick:e[7]||(e[7]=n=>o.editDialog=!1)},{default:s(()=>[...e[23]||(e[23]=[a("取消",-1)])]),_:1}),t(v,{color:"primary",loading:o.savingEdit,onClick:r.saveEdit},{default:s(()=>[...e[24]||(e[24]=[a("保存",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue","fullscreen"]),t(b,{modelValue:o.deleteConfirmDialog,"onUpdate:modelValue":e[10]||(e[10]=n=>o.deleteConfirmDialog=n),"max-width":"400"},{default:s(()=>[t(h,null,{default:s(()=>[t(T,{class:"text-h5"},{default:s(()=>[...e[25]||(e[25]=[a("确认删除",-1)])]),_:1}),t(y,null,{default:s(()=>[...e[26]||(e[26]=[a("确定要删除这条常驻通知吗?此操作无法撤销。",-1)])]),_:1}),t(w,null,{default:s(()=>[t(V),t(v,{color:"grey-darken-1",variant:"text",onClick:e[9]||(e[9]=n=>o.deleteConfirmDialog=!1)},{default:s(()=>[...e[27]||(e[27]=[a("取消",-1)])]),_:1}),t(v,{color:"error",variant:"text",onClick:r.executeDelete},{default:s(()=>[...e[28]||(e[28]=[a("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["modelValue"])}const Me=j(X,[["render",de],["__scopeId","data-v-c6850940"]]);export{Me as default}; diff --git a/assets/VAlert-D9G_9owC.js b/assets/VAlert-DO0N7oM6.js similarity index 75% rename from assets/VAlert-D9G_9owC.js rename to assets/VAlert-DO0N7oM6.js index 0811123..27d40fc 100644 --- a/assets/VAlert-D9G_9owC.js +++ b/assets/VAlert-DO0N7oM6.js @@ -1 +1 @@ -import{aa as w,p as P,f as F,n as M,h as R,an as p,I as E,m as O,k as G}from"./vendor-vuetify-ChAgIwn2.js";import{af as q,G as H,a6 as J,ag as K,a7 as Q,D as U,ah as W,h as X,a8 as y,l as Y,b as Z,a9 as ee,ai as ae,m as te,aa as le,aj as ne,ab as oe,ac as se,a as ie,I as re}from"./index-_6IQhlPZ.js";import{e as ce,j as l,k as o,N as f,n as S,m as k,t as b}from"./vendor-vue-H0jQBZ7T.js";const ue=w("v-alert-title"),de=P({iconSize:[Number,String],iconSizes:{type:Array,default:()=>[["x-small",10],["small",16],["default",24],["large",28],["x-large",32]]}},"iconSize");function ve(e,s){return{iconSize:ce(()=>{const a=new Map(e.iconSizes),t=e.iconSize??s()??"default";return a.has(t)?a.get(t):t})}}const me=["success","info","warning","error"],ye=P({border:{type:[Boolean,String],validator:e=>typeof e=="boolean"||["top","end","bottom","start"].includes(e)},borderColor:String,closable:Boolean,closeIcon:{type:E,default:"$close"},closeLabel:{type:String,default:"$vuetify.close"},icon:{type:[Boolean,String,Function,Object],default:null},modelValue:{type:Boolean,default:!0},prominent:Boolean,title:String,text:String,type:{type:String,validator:e=>me.includes(e)},...G(),...re(),...ie(),...se(),...de(),...oe(),...ne(),...le(),...te(),...O(),...ae({variant:"flat"})},"VAlert"),be=F()({name:"VAlert",props:ye(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0},setup(e,s){let{emit:c,slots:a}=s;const t=M(e,"modelValue"),i=b(()=>{if(e.icon!==!1)return e.type?e.icon??`$${e.type}`:e.icon}),{iconSize:V}=ve(e,()=>e.prominent?44:void 0),{themeClasses:g}=R(e),{colorClasses:z,colorStyles:C,variantClasses:x}=q(()=>({color:e.color??e.type,variant:e.variant})),{densityClasses:_}=H(e),{dimensionStyles:h}=Z(e),{elevationClasses:I}=ee(e),{locationStyles:B}=J(e),{positionClasses:A}=K(e),{roundedClasses:T}=Q(e),{textColorClasses:D,textColorStyles:L}=U(()=>e.borderColor),{t:$}=p(),u=b(()=>({"aria-label":$(e.closeLabel),onClick(r){t.value=!1,c("click:close",r)}}));return()=>{const r=!!(a.prepend||i.value),N=!!(a.title||e.title),j=!!(a.close||e.closable),d={density:e.density,icon:i.value,size:e.iconSize||e.prominent?V.value:void 0};return t.value&&l(e.tag,{class:S(["v-alert",e.border&&{"v-alert--border":!!e.border,[`v-alert--border-${e.border===!0?"start":e.border}`]:!0},{"v-alert--prominent":e.prominent},g.value,z.value,_.value,I.value,A.value,T.value,x.value,e.class]),style:f([C.value,h.value,B.value,e.style]),role:"alert"},{default:()=>{var v,m;return[W(!1,"v-alert"),e.border&&o("div",{key:"border",class:S(["v-alert__border",D.value]),style:f(L.value)},null),r&&o("div",{key:"prepend",class:"v-alert__prepend"},[a.prepend?l(y,{key:"prepend-defaults",disabled:!i.value,defaults:{VIcon:{...d}}},a.prepend):l(X,k({key:"prepend-icon"},d),null)]),o("div",{class:"v-alert__content"},[N&&l(ue,{key:"title"},{default:()=>{var n;return[((n=a.title)==null?void 0:n.call(a))??e.title]}}),((v=a.text)==null?void 0:v.call(a))??e.text,(m=a.default)==null?void 0:m.call(a)]),a.append&&o("div",{key:"append",class:"v-alert__append"},[a.append()]),j&&o("div",{key:"close",class:"v-alert__close"},[a.close?l(y,{key:"close-defaults",defaults:{VBtn:{icon:e.closeIcon,size:"x-small",variant:"text"}}},{default:()=>{var n;return[(n=a.close)==null?void 0:n.call(a,{props:u.value})]}}):l(Y,k({key:"close-btn",icon:e.closeIcon,size:"x-small",variant:"text"},u.value),null)])]}})}}});export{be as V,ue as a}; +import{aa as w,p as P,f as F,n as M,h as R,an as p,I as E,m as O,k as G}from"./vendor-vuetify-s-yw_Hr8.js";import{ag as J,J as q,a7 as H,ah as K,a8 as Q,G as U,ai as W,f as X,a9 as y,i as Y,b as Z,aa as ee,aj as ae,m as te,ab as le,ak as ne,ac as oe,ad as se,a as ie,L as re}from"./index-CFUCTEXJ.js";import{e as ce,j as l,k as o,N as f,n as k,m as S,t as b}from"./vendor-vue-B2vxubPy.js";const ue=w("v-alert-title"),de=P({iconSize:[Number,String],iconSizes:{type:Array,default:()=>[["x-small",10],["small",16],["default",24],["large",28],["x-large",32]]}},"iconSize");function ve(e,s){return{iconSize:ce(()=>{const a=new Map(e.iconSizes),t=e.iconSize??s()??"default";return a.has(t)?a.get(t):t})}}const me=["success","info","warning","error"],ye=P({border:{type:[Boolean,String],validator:e=>typeof e=="boolean"||["top","end","bottom","start"].includes(e)},borderColor:String,closable:Boolean,closeIcon:{type:E,default:"$close"},closeLabel:{type:String,default:"$vuetify.close"},icon:{type:[Boolean,String,Function,Object],default:null},modelValue:{type:Boolean,default:!0},prominent:Boolean,title:String,text:String,type:{type:String,validator:e=>me.includes(e)},...G(),...re(),...ie(),...se(),...de(),...oe(),...ne(),...le(),...te(),...O(),...ae({variant:"flat"})},"VAlert"),be=F()({name:"VAlert",props:ye(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0},setup(e,s){let{emit:c,slots:a}=s;const t=M(e,"modelValue"),i=b(()=>{if(e.icon!==!1)return e.type?e.icon??`$${e.type}`:e.icon}),{iconSize:V}=ve(e,()=>e.prominent?44:void 0),{themeClasses:g}=R(e),{colorClasses:z,colorStyles:C,variantClasses:x}=J(()=>({color:e.color??e.type,variant:e.variant})),{densityClasses:_}=q(e),{dimensionStyles:h}=Z(e),{elevationClasses:I}=ee(e),{locationStyles:B}=H(e),{positionClasses:A}=K(e),{roundedClasses:T}=Q(e),{textColorClasses:L,textColorStyles:D}=U(()=>e.borderColor),{t:$}=p(),u=b(()=>({"aria-label":$(e.closeLabel),onClick(r){t.value=!1,c("click:close",r)}}));return()=>{const r=!!(a.prepend||i.value),N=!!(a.title||e.title),j=!!(a.close||e.closable),d={density:e.density,icon:i.value,size:e.iconSize||e.prominent?V.value:void 0};return t.value&&l(e.tag,{class:k(["v-alert",e.border&&{"v-alert--border":!!e.border,[`v-alert--border-${e.border===!0?"start":e.border}`]:!0},{"v-alert--prominent":e.prominent},g.value,z.value,_.value,I.value,A.value,T.value,x.value,e.class]),style:f([C.value,h.value,B.value,e.style]),role:"alert"},{default:()=>{var v,m;return[W(!1,"v-alert"),e.border&&o("div",{key:"border",class:k(["v-alert__border",L.value]),style:f(D.value)},null),r&&o("div",{key:"prepend",class:"v-alert__prepend"},[a.prepend?l(y,{key:"prepend-defaults",disabled:!i.value,defaults:{VIcon:{...d}}},a.prepend):l(X,S({key:"prepend-icon"},d),null)]),o("div",{class:"v-alert__content"},[N&&l(ue,{key:"title"},{default:()=>{var n;return[((n=a.title)==null?void 0:n.call(a))??e.title]}}),((v=a.text)==null?void 0:v.call(a))??e.text,(m=a.default)==null?void 0:m.call(a)]),a.append&&o("div",{key:"append",class:"v-alert__append"},[a.append()]),j&&o("div",{key:"close",class:"v-alert__close"},[a.close?l(y,{key:"close-defaults",defaults:{VBtn:{icon:e.closeIcon,size:"x-small",variant:"text"}}},{default:()=>{var n;return[(n=a.close)==null?void 0:n.call(a,{props:u.value})]}}):l(Y,S({key:"close-btn",icon:e.closeIcon,size:"x-small",variant:"text"},u.value),null)])]}})}}});export{be as V,ue as a}; diff --git a/assets/VAppBarTitle-Cvegbk0-.js b/assets/VAppBarTitle-vVO0I21U.js similarity index 79% rename from assets/VAppBarTitle-Cvegbk0-.js rename to assets/VAppBarTitle-vVO0I21U.js index 3f704fe..7a35ed2 100644 --- a/assets/VAppBarTitle-Cvegbk0-.js +++ b/assets/VAppBarTitle-vVO0I21U.js @@ -1 +1 @@ -import{m as U,E as K,a5 as Q,a6 as X,a7 as Z,z as ee,a8 as z,U as te,a9 as ae,aa as le,ab as oe,ac as ne,ad as se,u as ie}from"./index-_6IQhlPZ.js";import{f as I,u as N,p as _,k as M,h as re,A as ue,j as ce,s as E,m as ve,z as de,n as me,C as ge,ay as he,a5 as W,az as fe}from"./vendor-vuetify-ChAgIwn2.js";import{j as f,k as P,N as j,n as q,s as h,e as d,o as A,D as be,A as ye,b as F,w as Se,m as $,t as L}from"./vendor-vue-H0jQBZ7T.js";const J=_({text:String,...M(),...U()},"VToolbarTitle"),O=I()({name:"VToolbarTitle",props:J(),setup(e,b){let{slots:t}=b;return N(()=>{const u=!!(t.default||t.text||e.text);return f(e.tag,{class:q(["v-toolbar-title",e.class]),style:j(e.style)},{default:()=>{var n;return[u&&P("div",{class:"v-toolbar-title__placeholder"},[t.text?t.text():e.text,(n=t.default)==null?void 0:n.call(t)])]}})}),{}}}),Te=[null,"prominent","default","comfortable","compact"],Y=_({absolute:Boolean,collapse:Boolean,collapsePosition:{type:String,default:"start"},color:String,density:{type:String,default:"default",validator:e=>Te.includes(e)},extended:{type:Boolean,default:null},extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...se(),...M(),...ne(),...oe(),...le(),...U({tag:"header"}),...ve()},"VToolbar"),D=I()({name:"VToolbar",props:Y(),setup(e,b){var B;let{slots:t}=b;const{backgroundColorClasses:u,backgroundColorStyles:n}=K(()=>e.color),{borderClasses:o}=Q(e),{elevationClasses:m}=ae(e),{locationStyles:s}=X(e),{roundedClasses:c}=Z(e),{themeClasses:H}=re(e),{rtlClasses:k}=ue(),r=h(e.extended===null?!!((B=t.extension)!=null&&B.call(t)):e.extended),x=d(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),y=d(()=>r.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return ce({VBtn:{variant:"text"}}),N(()=>{var V;const v=!!(e.title||t.title),C=!!(t.image||e.image),p=(V=t.extension)==null?void 0:V.call(t);return r.value=e.extended===null?!!p:e.extended,f(e.tag,{class:q(["v-toolbar",`v-toolbar--collapse-${e.collapsePosition}`,{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},u.value,o.value,m.value,c.value,H.value,k.value,e.class]),style:j([n.value,s.value,e.style])},{default:()=>[C&&P("div",{key:"image",class:"v-toolbar__image"},[t.image?f(z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},t.image):f(ee,{key:"image-img",cover:!0,src:e.image},null)]),f(z,{defaults:{VTabs:{height:E(x.value)}}},{default:()=>{var w,S,l;return[P("div",{class:"v-toolbar__content",style:{height:E(x.value)}},[t.prepend&&P("div",{class:"v-toolbar__prepend"},[(w=t.prepend)==null?void 0:w.call(t)]),v&&f(O,{key:"title",text:e.title},{text:t.title}),(S=t.default)==null?void 0:S.call(t),t.append&&P("div",{class:"v-toolbar__append"},[(l=t.append)==null?void 0:l.call(t)])])]}}),f(z,{defaults:{VTabs:{height:E(y.value)}}},{default:()=>[f(te,null,{default:()=>[r.value&&P("div",{class:"v-toolbar__extension",style:{height:E(y.value)}},[p])]})]})]})}),{contentHeight:x,extensionHeight:y}}}),He=_({scrollTarget:{type:String},scrollThreshold:{type:[String,Number],default:300}},"scroll");function xe(e){let b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{canScroll:t,layoutSize:u}=b;let n=0,o=0;const m=F(null),s=h(0),c=h(0),H=h(0),k=h(!1),r=h(!1),x=h(!1),y=h(!1),B=h(!0),v=d(()=>Number(e.scrollThreshold)),C=d(()=>de((v.value-s.value)/v.value||0));function p(l){const a="window"in l?window.innerHeight:l.clientHeight,i="window"in l?document.documentElement.scrollHeight:l.scrollHeight;return{clientHeight:a,scrollHeight:i}}function V(){const l=m.value;if(!l)return;const{clientHeight:a,scrollHeight:i}=p(l),T=i-a,g=(u==null?void 0:u.value)||0,R=v.value+g;B.value=T>R}function w(){V()}function S(){const l=m.value;if(!l||t&&!t.value)return;n=s.value,s.value="window"in l?l.pageYOffset:l.scrollTop;const a=l instanceof Window?document.documentElement.scrollHeight:l.scrollHeight;o!==a&&(a>o&&V(),o=a),r.value=s.value=T-5;!r.value&&g&&s.value>=v.value&&B.value&&(y.value=!0);const R=Math.abs(s.value-n)>100,G=s.value<=5;(r.value&&n-s.value>1&&!g||R&&s.value{c.value=c.value||s.value}),A(k,()=>{c.value=0}),be(()=>{A(()=>e.scrollTarget,l=>{var i;const a=l?document.querySelector(l):window;a&&a!==m.value&&((i=m.value)==null||i.removeEventListener("scroll",S),m.value=a,m.value.addEventListener("scroll",S,{passive:!0}),Promise.resolve().then(()=>{V()}))},{immediate:!0}),window.addEventListener("resize",w,{passive:!0})}),ye(()=>{var l;(l=m.value)==null||l.removeEventListener("scroll",S),window.removeEventListener("resize",w)}),t&&A(t,S,{immediate:!0}),{scrollThreshold:v,currentScroll:s,currentThreshold:H,isScrollActive:k,scrollRatio:C,isScrollingUp:r,savedScroll:c,isAtBottom:x,reachedBottomWhileScrollingDown:y,hasEnoughScrollableSpace:B}}const Be=_({scrollBehavior:String,modelValue:{type:Boolean,default:!0},location:{type:String,default:"top",validator:e=>["top","bottom"].includes(e)},...W(Y(),["location"]),...fe(),...He(),height:{type:[Number,String],default:64}},"VAppBar"),Pe=I()({name:"VAppBar",props:Be(),emits:{"update:modelValue":e=>!0},setup(e,b){let{slots:t}=b;const u=F(),n=me(e,"modelValue"),o=d(()=>{var i;const a=new Set(((i=e.scrollBehavior)==null?void 0:i.split(" "))??[]);return{hide:a.has("hide"),fullyHide:a.has("fully-hide"),inverted:a.has("inverted"),collapse:a.has("collapse"),elevate:a.has("elevate"),fadeImage:a.has("fade-image")}}),m=d(()=>{const a=o.value;return a.hide||a.fullyHide||a.inverted||a.collapse||a.elevate||a.fadeImage||!n.value}),s=d(()=>{var T,g;const a=((T=u.value)==null?void 0:T.contentHeight)??0,i=((g=u.value)==null?void 0:g.extensionHeight)??0;return a+i}),{currentScroll:c,scrollThreshold:H,isScrollingUp:k,scrollRatio:r,isAtBottom:x,reachedBottomWhileScrollingDown:y,hasEnoughScrollableSpace:B}=xe(e,{canScroll:m,layoutSize:s}),v=L(()=>o.value.hide||o.value.fullyHide),C=d(()=>e.collapse||o.value.collapse&&(o.value.inverted?r.value>0:r.value===0)),p=d(()=>e.flat||o.value.fullyHide&&!n.value||o.value.elevate&&(o.value.inverted?c.value>0:c.value===0)),V=d(()=>o.value.fadeImage?o.value.inverted?1-r.value:r.value:void 0),w=d(()=>{var T,g;if(o.value.hide&&o.value.inverted)return 0;const a=((T=u.value)==null?void 0:T.contentHeight)??0,i=((g=u.value)==null?void 0:g.extensionHeight)??0;return v.value?c.value!!e.scrollBehavior,()=>{Se(()=>{if(!v.value){n.value=!0;return}if(o.value.inverted){n.value=c.value>H.value;return}if(!B.value){n.value=!0;return}if(y.value){n.value=!1;return}n.value=k.value&&!x.value||c.valueparseInt(e.order,10)),position:L(()=>e.location),layoutSize:w,elementSize:h(void 0),active:n,absolute:L(()=>e.absolute)});return N(()=>{const a=W(D.filterProps(e),["location"]);return f(D,$({ref:u,class:["v-app-bar",{"v-app-bar--bottom":e.location==="bottom"},e.class],style:[{...l.value,"--v-toolbar-image-opacity":V.value,height:void 0,...S.value},e.style]},a,{collapse:C.value,flat:p.value}),t)}),{}}}),Ce=I()({name:"VAppBarTitle",props:J(),setup(e,b){let{slots:t}=b;return N(()=>f(O,$(e,{class:"v-app-bar-title"}),t)),{}}});export{Ce as V,Pe as a,D as b,O as c}; +import{m as U,H as K,a6 as Q,a7 as X,a8 as Z,B as ee,a9 as z,W as te,aa as ae,ab as le,ac as oe,ad as ne,ae as se,u as ie}from"./index-CFUCTEXJ.js";import{f as I,u as N,p as _,k as M,h as re,A as ue,j as ce,s as E,m as ve,z as de,n as me,C as ge,ay as he,a5 as W,az as fe}from"./vendor-vuetify-s-yw_Hr8.js";import{j as f,k as P,N as j,n as q,s as h,e as d,o as A,D as be,A as ye,b as F,w as Se,m as $,t as L}from"./vendor-vue-B2vxubPy.js";const J=_({text:String,...M(),...U()},"VToolbarTitle"),O=I()({name:"VToolbarTitle",props:J(),setup(e,b){let{slots:t}=b;return N(()=>{const u=!!(t.default||t.text||e.text);return f(e.tag,{class:q(["v-toolbar-title",e.class]),style:j(e.style)},{default:()=>{var n;return[u&&P("div",{class:"v-toolbar-title__placeholder"},[t.text?t.text():e.text,(n=t.default)==null?void 0:n.call(t)])]}})}),{}}}),He=[null,"prominent","default","comfortable","compact"],Y=_({absolute:Boolean,collapse:Boolean,collapsePosition:{type:String,default:"start"},color:String,density:{type:String,default:"default",validator:e=>He.includes(e)},extended:{type:Boolean,default:null},extensionHeight:{type:[Number,String],default:48},flat:Boolean,floating:Boolean,height:{type:[Number,String],default:64},image:String,title:String,...se(),...M(),...ne(),...oe(),...le(),...U({tag:"header"}),...ve()},"VToolbar"),D=I()({name:"VToolbar",props:Y(),setup(e,b){var B;let{slots:t}=b;const{backgroundColorClasses:u,backgroundColorStyles:n}=K(()=>e.color),{borderClasses:o}=Q(e),{elevationClasses:m}=ae(e),{locationStyles:s}=X(e),{roundedClasses:c}=Z(e),{themeClasses:T}=re(e),{rtlClasses:k}=ue(),r=h(e.extended===null?!!((B=t.extension)!=null&&B.call(t)):e.extended),x=d(()=>parseInt(Number(e.height)+(e.density==="prominent"?Number(e.height):0)-(e.density==="comfortable"?8:0)-(e.density==="compact"?16:0),10)),y=d(()=>r.value?parseInt(Number(e.extensionHeight)+(e.density==="prominent"?Number(e.extensionHeight):0)-(e.density==="comfortable"?4:0)-(e.density==="compact"?8:0),10):0);return ce({VBtn:{variant:"text"}}),N(()=>{var V;const v=!!(e.title||t.title),C=!!(t.image||e.image),p=(V=t.extension)==null?void 0:V.call(t);return r.value=e.extended===null?!!p:e.extended,f(e.tag,{class:q(["v-toolbar",`v-toolbar--collapse-${e.collapsePosition}`,{"v-toolbar--absolute":e.absolute,"v-toolbar--collapse":e.collapse,"v-toolbar--flat":e.flat,"v-toolbar--floating":e.floating,[`v-toolbar--density-${e.density}`]:!0},u.value,o.value,m.value,c.value,T.value,k.value,e.class]),style:j([n.value,s.value,e.style])},{default:()=>[C&&P("div",{key:"image",class:"v-toolbar__image"},[t.image?f(z,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},t.image):f(ee,{key:"image-img",cover:!0,src:e.image},null)]),f(z,{defaults:{VTabs:{height:E(x.value)}}},{default:()=>{var w,S,l;return[P("div",{class:"v-toolbar__content",style:{height:E(x.value)}},[t.prepend&&P("div",{class:"v-toolbar__prepend"},[(w=t.prepend)==null?void 0:w.call(t)]),v&&f(O,{key:"title",text:e.title},{text:t.title}),(S=t.default)==null?void 0:S.call(t),t.append&&P("div",{class:"v-toolbar__append"},[(l=t.append)==null?void 0:l.call(t)])])]}}),f(z,{defaults:{VTabs:{height:E(y.value)}}},{default:()=>[f(te,null,{default:()=>[r.value&&P("div",{class:"v-toolbar__extension",style:{height:E(y.value)}},[p])]})]})]})}),{contentHeight:x,extensionHeight:y}}}),Te=_({scrollTarget:{type:String},scrollThreshold:{type:[String,Number],default:300}},"scroll");function xe(e){let b=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{canScroll:t,layoutSize:u}=b;let n=0,o=0;const m=F(null),s=h(0),c=h(0),T=h(0),k=h(!1),r=h(!1),x=h(!1),y=h(!1),B=h(!0),v=d(()=>Number(e.scrollThreshold)),C=d(()=>de((v.value-s.value)/v.value||0));function p(l){const a="window"in l?window.innerHeight:l.clientHeight,i="window"in l?document.documentElement.scrollHeight:l.scrollHeight;return{clientHeight:a,scrollHeight:i}}function V(){const l=m.value;if(!l)return;const{clientHeight:a,scrollHeight:i}=p(l),H=i-a,g=(u==null?void 0:u.value)||0,R=v.value+g;B.value=H>R}function w(){V()}function S(){const l=m.value;if(!l||t&&!t.value)return;n=s.value,s.value="window"in l?l.pageYOffset:l.scrollTop;const a=l instanceof Window?document.documentElement.scrollHeight:l.scrollHeight;o!==a&&(a>o&&V(),o=a),r.value=s.value=H-5;!r.value&&g&&s.value>=v.value&&B.value&&(y.value=!0);const R=Math.abs(s.value-n)>100,G=s.value<=5;(r.value&&n-s.value>1&&!g||R&&s.value{c.value=c.value||s.value}),A(k,()=>{c.value=0}),be(()=>{A(()=>e.scrollTarget,l=>{var i;const a=l?document.querySelector(l):window;a&&a!==m.value&&((i=m.value)==null||i.removeEventListener("scroll",S),m.value=a,m.value.addEventListener("scroll",S,{passive:!0}),Promise.resolve().then(()=>{V()}))},{immediate:!0}),window.addEventListener("resize",w,{passive:!0})}),ye(()=>{var l;(l=m.value)==null||l.removeEventListener("scroll",S),window.removeEventListener("resize",w)}),t&&A(t,S,{immediate:!0}),{scrollThreshold:v,currentScroll:s,currentThreshold:T,isScrollActive:k,scrollRatio:C,isScrollingUp:r,savedScroll:c,isAtBottom:x,reachedBottomWhileScrollingDown:y,hasEnoughScrollableSpace:B}}const Be=_({scrollBehavior:String,modelValue:{type:Boolean,default:!0},location:{type:String,default:"top",validator:e=>["top","bottom"].includes(e)},...W(Y(),["location"]),...fe(),...Te(),height:{type:[Number,String],default:64}},"VAppBar"),Pe=I()({name:"VAppBar",props:Be(),emits:{"update:modelValue":e=>!0},setup(e,b){let{slots:t}=b;const u=F(),n=me(e,"modelValue"),o=d(()=>{var i;const a=new Set(((i=e.scrollBehavior)==null?void 0:i.split(" "))??[]);return{hide:a.has("hide"),fullyHide:a.has("fully-hide"),inverted:a.has("inverted"),collapse:a.has("collapse"),elevate:a.has("elevate"),fadeImage:a.has("fade-image")}}),m=d(()=>{const a=o.value;return a.hide||a.fullyHide||a.inverted||a.collapse||a.elevate||a.fadeImage||!n.value}),s=d(()=>{var H,g;const a=((H=u.value)==null?void 0:H.contentHeight)??0,i=((g=u.value)==null?void 0:g.extensionHeight)??0;return a+i}),{currentScroll:c,scrollThreshold:T,isScrollingUp:k,scrollRatio:r,isAtBottom:x,reachedBottomWhileScrollingDown:y,hasEnoughScrollableSpace:B}=xe(e,{canScroll:m,layoutSize:s}),v=L(()=>o.value.hide||o.value.fullyHide),C=d(()=>e.collapse||o.value.collapse&&(o.value.inverted?r.value>0:r.value===0)),p=d(()=>e.flat||o.value.fullyHide&&!n.value||o.value.elevate&&(o.value.inverted?c.value>0:c.value===0)),V=d(()=>o.value.fadeImage?o.value.inverted?1-r.value:r.value:void 0),w=d(()=>{var H,g;if(o.value.hide&&o.value.inverted)return 0;const a=((H=u.value)==null?void 0:H.contentHeight)??0,i=((g=u.value)==null?void 0:g.extensionHeight)??0;return v.value?c.value!!e.scrollBehavior,()=>{Se(()=>{if(!v.value){n.value=!0;return}if(o.value.inverted){n.value=c.value>T.value;return}if(!B.value){n.value=!0;return}if(y.value){n.value=!1;return}n.value=k.value&&!x.value||c.valueparseInt(e.order,10)),position:L(()=>e.location),layoutSize:w,elementSize:h(void 0),active:n,absolute:L(()=>e.absolute)});return N(()=>{const a=W(D.filterProps(e),["location"]);return f(D,$({ref:u,class:["v-app-bar",{"v-app-bar--bottom":e.location==="bottom"},e.class],style:[{...l.value,"--v-toolbar-image-opacity":V.value,height:void 0,...S.value},e.style]},a,{collapse:C.value,flat:p.value}),t)}),{}}}),Ce=I()({name:"VAppBarTitle",props:J(),setup(e,b){let{slots:t}=b;return N(()=>f(O,$(e,{class:"v-app-bar-title"}),t)),{}}});export{Ce as V,Pe as a,D as b,O as c}; diff --git a/assets/VAutocomplete-CrWVUMTj.js b/assets/VAutocomplete-CrWVUMTj.js new file mode 100644 index 0000000..2881da3 --- /dev/null +++ b/assets/VAutocomplete-CrWVUMTj.js @@ -0,0 +1 @@ +import{b as Ne,c as Ke}from"./VLabel-CU-8PdVS.js";import{u as Oe,a as ze,c as Ue,h as $e,d as Ge,e as qe,m as He,b as je}from"./VSelect-Fp4MUhJW.js";import{V as ae,m as We}from"./VTextField-ByBRYn99.js";import{aA as Xe,G as Je,f as te,l as Qe,n as ue,v as Ye,X as Ze,M as el,a9 as ll,D as al}from"./index-CFUCTEXJ.js";import{f as tl,an as ul,n as j,w as nl,E as ol,u as il,aE as sl,aF as rl,aG as ne,o as cl,_ as oe,p as vl,a5 as dl}from"./vendor-vuetify-s-yw_Hr8.js";import{V as fl,a as ml}from"./VSheet-B8D7XEg5.js";import{V as pl}from"./VCheckboxBtn-DOw5vjpY.js";import{V as ie}from"./VChip-DR8Ljy6R.js";import{o as K,I as se,j as f,k as x,F as W,m as S,N as hl,n as gl,a1 as yl,s as A,e as w,b as P,t as Vl}from"./vendor-vue-B2vxubPy.js";const kl=vl({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:Boolean,search:String,...He({filterKeys:["title"]}),...qe(),...dl(We({modelValue:null,role:"combobox"}),["validationValue","dirty"])},"VAutocomplete"),Al=tl()({name:"VAutocomplete",props:kl(),emits:{"update:focused":l=>!0,"update:search":l=>!0,"update:modelValue":l=>!0,"update:menu":l=>!0},setup(l,re){let{slots:t}=re;const{t:ce}=ul(),p=P(),y=A(!1),g=A(!0),O=A(!1),z=P(),U=P(),s=A(-1),R=A(null),{items:$,transformIn:ve,transformOut:de}=Xe(l),{textColorClasses:fe,textColorStyles:me}=Je(()=>{var e;return(e=p.value)==null?void 0:e.color}),{InputIcon:pe}=Ne(l),r=j(l,"search",""),n=j(l,"modelValue",[],e=>ve(e===null?[null]:nl(e)),e=>{const a=de(e);return l.multiple?a:a[0]??null}),he=w(()=>typeof l.counterValue=="function"?l.counterValue(n.value):typeof l.counterValue=="number"?l.counterValue:n.value.length),D=Ke(l),{filteredItems:_,getMatches:ge}=Oe(l,$,()=>R.value??(g.value?"":r.value)),V=w(()=>l.hideSelected&&R.value===null?_.value.filter(e=>!n.value.some(a=>a.value===e.value)):_.value),X=Vl(()=>l.closableChips&&!D.isReadonly.value&&!D.isDisabled.value),L=w(()=>!!(l.chips||t.chip)),M=w(()=>L.value||!!t.selection),ye=w(()=>n.value.map(e=>e.props.value)),E=w(()=>V.value.find(e=>e.type==="item"&&!e.props.disabled)),G=w(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&r.value===((a=E.value)==null?void 0:a.title))&&V.value.length>0&&!g.value&&!O.value}),B=w(()=>l.hideNoData&&!V.value.length||D.isReadonly.value||D.isDisabled.value),q=j(l,"menu"),v=w({get:()=>q.value,set:e=>{var a;q.value&&!e&&((a=z.value)!=null&&a.ΨopenChildren.size)||e&&B.value||(q.value=e)}}),{menuId:Ve,ariaExpanded:ke,ariaControls:be}=ze(l,v),T=P(),J=P(),Q=P(),Ce=Ge(T,p),{onTabKeydown:Se}=je({groups:[{type:"element",contentRef:J},{type:"list",contentRef:T,displayItemsCount:()=>V.value.length},{type:"element",contentRef:Q}],onLeave:()=>{var e;v.value=!1,(e=p.value)==null||e.focus()}});function we(e){l.openOnClear&&(v.value=!0),r.value=""}function Ie(){B.value||(v.value=!0)}function xe(e){B.value||(y.value&&(e.preventDefault(),e.stopPropagation()),v.value=!v.value)}function Fe(e){var a,u;e.key==="Tab"&&Se(e),(a=T.value)!=null&&a.$el.contains(e.target)&&(ne(e)||e.key==="Backspace")&&((u=p.value)==null||u.focus())}function Re(e){var k,d,I,o,m;if(D.isReadonly.value)return;const a=(k=p.value)==null?void 0:k.selectionStart,u=n.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(e.key)&&e.preventDefault(),["Enter","ArrowDown"].includes(e.key)&&(v.value=!0),["Escape"].includes(e.key)&&(v.value=!1),G.value&&["Enter","Tab"].includes(e.key)&&E.value&&!n.value.some(c=>{let{value:C}=c;return C===E.value.value})&&F(E.value),e.key==="ArrowDown"&&G.value&&((d=T.value)==null||d.focus("next")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&M.value&&n.value.length>0&&!r.value)return F(n.value[0],!1);if(~s.value){e.preventDefault();const c=s.value;F(n.value[s.value],!1),s.value=c>=u-1?u-2:c}else e.key==="Backspace"&&!r.value&&(s.value=u-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(s.value<0&&a&&a>0)return;const c=s.value>-1?s.value-1:u-1;if(n.value[c])s.value=c;else{const C=((I=r.value)==null?void 0:I.length)??null;s.value=-1,(o=p.value)==null||o.setSelectionRange(C,C)}}else if(e.key==="ArrowRight"){if(s.value<0)return;const c=s.value+1;n.value[c]?s.value=c:(s.value=-1,(m=p.value)==null||m.setSelectionRange(0,0))}else~s.value&&ne(e)&&(s.value=-1)}function De(e){if(oe(p.value,":autofill")||oe(p.value,":-webkit-autofill")){const a=$.value.find(u=>u.title===e.target.value);a&&F(a)}}function Ae(){var e;l.eager&&((e=U.value)==null||e.calculateVisibleItems())}function Pe(){var e;y.value&&(g.value=!0,(e=p.value)==null||e.focus()),R.value=null}function Me(e){y.value=!0,setTimeout(()=>{O.value=!0})}function Ee(e){O.value=!1}function Te(e){(e==null||e===""&&!l.multiple&&!M.value)&&(n.value=[])}function _e(e){var u;const a=(u=z.value)==null?void 0:u.contentEl;a!=null&&a.contains(e.relatedTarget)&&(y.value=!0)}const H=A(!1);function F(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!e||e.props.disabled))if(l.multiple){const u=n.value.findIndex(d=>(l.valueComparator||cl)(d.value,e.value)),k=a??!~u;if(~u){const d=k?[...n.value,e]:[...n.value];d.splice(u,1),n.value=d}else k&&(n.value=[...n.value,e]);l.clearOnSelect&&(r.value="")}else{const u=a!==!1;n.value=u?[e]:[],R.value=g.value?"":r.value??"",r.value=u&&!M.value?e.title:"",se(()=>{v.value=!1,g.value=!0})}}return K(y,(e,a)=>{var u;e!==a&&(e?(H.value=!0,r.value=l.multiple||M.value?"":String(((u=n.value.at(-1))==null?void 0:u.props.title)??""),g.value=!0,se(()=>H.value=!1)):(!l.multiple&&r.value==null&&(n.value=[]),v.value=!1,!g.value&&r.value&&(R.value=r.value),r.value="",s.value=-1))}),K(r,e=>{!y.value||H.value||(e&&(v.value=!0),g.value=!e)}),K(v,e=>{if(!l.hideSelected&&e&&n.value.length&&g.value){const a=V.value.findIndex(u=>n.value.some(k=>u.value===k.value));ol&&window.requestAnimationFrame(()=>{var u;a>=0&&((u=U.value)==null||u.scrollToIndex(a))})}e&&(R.value=null)}),K($,(e,a)=>{v.value||y.value&&!a.length&&e.length&&(v.value=!0)}),il(()=>{const e=!!(!l.hideNoData||V.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),a=n.value.length>0,u=ae.filterProps(l),k={search:r,filteredItems:_.value};return f(ae,S({ref:p},u,{modelValue:r.value,"onUpdate:modelValue":[d=>r.value=d,Te],focused:y.value,"onUpdate:focused":d=>y.value=d,validationValue:n.externalValue,counterValue:he.value,dirty:a,onChange:De,class:["v-autocomplete",`v-autocomplete--${l.multiple?"multiple":"single"}`,{"v-autocomplete--active-menu":v.value,"v-autocomplete--chips":!!l.chips,"v-autocomplete--selection-slot":!!M.value,"v-autocomplete--selecting-index":s.value>-1},l.class],style:l.style,readonly:D.isReadonly.value,placeholder:a?void 0:l.placeholder,"onClick:clear":we,"onMousedown:control":Ie,onKeydown:Re,onBlur:_e,"aria-expanded":ke.value,"aria-controls":be.value}),{...t,default:d=>{let{id:I}=d;return x(W,null,[f(fl,S({id:Ve.value,ref:z,modelValue:v.value,"onUpdate:modelValue":o=>v.value=o,activator:"parent",contentClass:"v-autocomplete__content",disabled:B.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:Ae,onAfterLeave:Pe},l.menuProps),{default:()=>[f(ml,{onFocusin:Me,onKeydown:Fe},{default:()=>[t["menu-header"]&&x("header",{ref:J},[t["menu-header"](k)]),e&&f(Qe,S({key:"autocomplete-list",ref:T,filterable:!0,selected:ye.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:o=>o.preventDefault(),onFocusout:Ee,tabindex:"-1",selectable:!!V.value.length,"aria-live":"polite","aria-labelledby":`${I.value}-label`,"aria-multiselectable":l.multiple,color:l.itemColor??l.color},Ce,l.listProps),{default:()=>{var o,m,c;return[(o=t["prepend-item"])==null?void 0:o.call(t),!V.value.length&&!l.hideNoData&&(((m=t["no-data"])==null?void 0:m.call(t))??f(ue,{key:"no-data",title:ce(l.noDataText)},null)),f(Ue,{ref:U,renderless:!0,items:V.value,itemKey:"value"},{default:C=>{var Z,ee,le;let{item:i,index:b,itemRef:h}=C;const Y=S(i.props,{ref:h,key:i.value,active:G.value&&i===E.value?!0:void 0,onClick:()=>F(i,null),"aria-posinset":b+1,"aria-setsize":V.value.length});return i.type==="divider"?((Z=t.divider)==null?void 0:Z.call(t,{props:i.raw,index:b}))??f(Ye,S(i.props,{key:`divider-${b}`}),null):i.type==="subheader"?((ee=t.subheader)==null?void 0:ee.call(t,{props:i.raw,index:b}))??f(Ze,S(i.props,{key:`subheader-${b}`}),null):((le=t.item)==null?void 0:le.call(t,{item:i,index:b,props:Y}))??f(ue,S(Y,{role:"option"}),{prepend:N=>{let{isSelected:Le}=N;return x(W,null,[l.multiple&&!l.hideSelected?f(pl,{key:i.value,modelValue:Le,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:Be=>Be.preventDefault()},null):void 0,i.props.prependAvatar&&f(el,{image:i.props.prependAvatar},null),i.props.prependIcon&&f(te,{icon:i.props.prependIcon},null)])},title:()=>{var N;return g.value?i.title:$e("v-autocomplete",i.title,(N=ge(i))==null?void 0:N.title)}})}}),(c=t["append-item"])==null?void 0:c.call(t)]}}),t["menu-footer"]&&x("footer",{ref:Q},[t["menu-footer"](k)])]})]}),n.value.map((o,m)=>{function c(h){h.stopPropagation(),h.preventDefault(),F(o,!1)}const C=S(ie.filterProps(o.props),{"onClick:close":c,onKeydown(h){h.key!=="Enter"&&h.key!==" "||(h.preventDefault(),h.stopPropagation(),c(h))},onMousedown(h){h.preventDefault(),h.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),i=L.value?!!t.chip:!!t.selection,b=i?rl(L.value?t.chip({item:o,index:m,props:C}):t.selection({item:o,index:m})):void 0;if(!(i&&!b))return x("div",{key:o.value,class:gl(["v-autocomplete__selection",m===s.value&&["v-autocomplete__selection--selected",fe.value]]),style:hl(m===s.value?me.value:{})},[L.value?t.chip?f(ll,{key:"chip-defaults",defaults:{VChip:{closable:X.value,size:"small",text:o.title}}},{default:()=>[b]}):f(ie,S({key:"chip",closable:X.value,size:"small",text:o.title,disabled:o.props.disabled},C),null):b??x("span",{class:"v-autocomplete__selection-text"},[o.title,l.multiple&&m!0,"update:search":l=>!0,"update:modelValue":l=>!0,"update:menu":l=>!0},setup(l,re){let{slots:t}=re;const{t:ce}=ul(),p=P(),y=A(!1),g=A(!0),O=A(!1),z=P(),U=P(),s=A(-1),D=A(null),{items:$,transformIn:ve,transformOut:de}=Je(l),{textColorClasses:fe,textColorStyles:me}=Qe(()=>{var e;return(e=p.value)==null?void 0:e.color}),{InputIcon:pe}=Ne(l),r=W(l,"search",""),n=W(l,"modelValue",[],e=>ve(e===null?[null]:nl(e)),e=>{const a=de(e);return l.multiple?a:a[0]??null}),he=w(()=>typeof l.counterValue=="function"?l.counterValue(n.value):typeof l.counterValue=="number"?l.counterValue:n.value.length),R=Ke(l),{filteredItems:L,getMatches:ge}=Oe(l,$,()=>D.value??(g.value?"":r.value)),V=w(()=>l.hideSelected&&D.value===null?L.value.filter(e=>!n.value.some(a=>a.value===e.value)):L.value),J=Vl(()=>l.closableChips&&!R.isReadonly.value&&!R.isDisabled.value),_=w(()=>!!(l.chips||t.chip)),E=w(()=>_.value||!!t.selection),ye=w(()=>n.value.map(e=>e.props.value)),M=w(()=>V.value.find(e=>e.type==="item"&&!e.props.disabled)),j=w(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&r.value===((a=M.value)==null?void 0:a.title))&&V.value.length>0&&!g.value&&!O.value}),B=w(()=>l.hideNoData&&!V.value.length||R.isReadonly.value||R.isDisabled.value),q=W(l,"menu"),v=w({get:()=>q.value,set:e=>{var a;q.value&&!e&&((a=z.value)!=null&&a.ΨopenChildren.size)||e&&B.value||(q.value=e)}}),{menuId:Ve,ariaExpanded:ke,ariaControls:be}=ze(l,v),T=P(),Q=P(),X=P(),Ce=je(T,p),{onTabKeydown:Se}=We({groups:[{type:"element",contentRef:Q},{type:"list",contentRef:T,displayItemsCount:()=>V.value.length},{type:"element",contentRef:X}],onLeave:()=>{var e;v.value=!1,(e=p.value)==null||e.focus()}});function we(e){l.openOnClear&&(v.value=!0),r.value=""}function Ie(){B.value||(v.value=!0)}function xe(e){B.value||(y.value&&(e.preventDefault(),e.stopPropagation()),v.value=!v.value)}function Fe(e){var a,u;e.key==="Tab"&&Se(e),(a=T.value)!=null&&a.$el.contains(e.target)&&(ne(e)||e.key==="Backspace")&&((u=p.value)==null||u.focus())}function De(e){var k,d,I,o,m;if(R.isReadonly.value)return;const a=(k=p.value)==null?void 0:k.selectionStart,u=n.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(e.key)&&e.preventDefault(),["Enter","ArrowDown"].includes(e.key)&&(v.value=!0),["Escape"].includes(e.key)&&(v.value=!1),j.value&&["Enter","Tab"].includes(e.key)&&M.value&&!n.value.some(c=>{let{value:C}=c;return C===M.value.value})&&F(M.value),e.key==="ArrowDown"&&j.value&&((d=T.value)==null||d.focus("next")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&E.value&&n.value.length>0&&!r.value)return F(n.value[0],!1);if(~s.value){e.preventDefault();const c=s.value;F(n.value[s.value],!1),s.value=c>=u-1?u-2:c}else e.key==="Backspace"&&!r.value&&(s.value=u-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(s.value<0&&a&&a>0)return;const c=s.value>-1?s.value-1:u-1;if(n.value[c])s.value=c;else{const C=((I=r.value)==null?void 0:I.length)??null;s.value=-1,(o=p.value)==null||o.setSelectionRange(C,C)}}else if(e.key==="ArrowRight"){if(s.value<0)return;const c=s.value+1;n.value[c]?s.value=c:(s.value=-1,(m=p.value)==null||m.setSelectionRange(0,0))}else~s.value&&ne(e)&&(s.value=-1)}function Re(e){if(oe(p.value,":autofill")||oe(p.value,":-webkit-autofill")){const a=$.value.find(u=>u.title===e.target.value);a&&F(a)}}function Ae(){var e;l.eager&&((e=U.value)==null||e.calculateVisibleItems())}function Pe(){var e;y.value&&(g.value=!0,(e=p.value)==null||e.focus()),D.value=null}function Ee(e){y.value=!0,setTimeout(()=>{O.value=!0})}function Me(e){O.value=!1}function Te(e){(e==null||e===""&&!l.multiple&&!E.value)&&(n.value=[])}function Le(e){var u;const a=(u=z.value)==null?void 0:u.contentEl;a!=null&&a.contains(e.relatedTarget)&&(y.value=!0)}const H=A(!1);function F(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;if(!(!e||e.props.disabled))if(l.multiple){const u=n.value.findIndex(d=>(l.valueComparator||cl)(d.value,e.value)),k=a??!~u;if(~u){const d=k?[...n.value,e]:[...n.value];d.splice(u,1),n.value=d}else k&&(n.value=[...n.value,e]);l.clearOnSelect&&(r.value="")}else{const u=a!==!1;n.value=u?[e]:[],D.value=g.value?"":r.value??"",r.value=u&&!E.value?e.title:"",se(()=>{v.value=!1,g.value=!0})}}return K(y,(e,a)=>{var u;e!==a&&(e?(H.value=!0,r.value=l.multiple||E.value?"":String(((u=n.value.at(-1))==null?void 0:u.props.title)??""),g.value=!0,se(()=>H.value=!1)):(!l.multiple&&r.value==null&&(n.value=[]),v.value=!1,!g.value&&r.value&&(D.value=r.value),r.value="",s.value=-1))}),K(r,e=>{!y.value||H.value||(e&&(v.value=!0),g.value=!e)}),K(v,e=>{if(!l.hideSelected&&e&&n.value.length&&g.value){const a=V.value.findIndex(u=>n.value.some(k=>u.value===k.value));ol&&window.requestAnimationFrame(()=>{var u;a>=0&&((u=U.value)==null||u.scrollToIndex(a))})}e&&(D.value=null)}),K($,(e,a)=>{v.value||y.value&&!a.length&&e.length&&(v.value=!0)}),il(()=>{const e=!!(!l.hideNoData||V.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),a=n.value.length>0,u=ae.filterProps(l),k={search:r,filteredItems:L.value};return f(ae,S({ref:p},u,{modelValue:r.value,"onUpdate:modelValue":[d=>r.value=d,Te],focused:y.value,"onUpdate:focused":d=>y.value=d,validationValue:n.externalValue,counterValue:he.value,dirty:a,onChange:Re,class:["v-autocomplete",`v-autocomplete--${l.multiple?"multiple":"single"}`,{"v-autocomplete--active-menu":v.value,"v-autocomplete--chips":!!l.chips,"v-autocomplete--selection-slot":!!E.value,"v-autocomplete--selecting-index":s.value>-1},l.class],style:l.style,readonly:R.isReadonly.value,placeholder:a?void 0:l.placeholder,"onClick:clear":we,"onMousedown:control":Ie,onKeydown:De,onBlur:Le,"aria-expanded":ke.value,"aria-controls":be.value}),{...t,default:d=>{let{id:I}=d;return x(G,null,[f(fl,S({id:Ve.value,ref:z,modelValue:v.value,"onUpdate:modelValue":o=>v.value=o,activator:"parent",contentClass:"v-autocomplete__content",disabled:B.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:Ae,onAfterLeave:Pe},l.menuProps),{default:()=>[f(ml,{onFocusin:Ee,onKeydown:Fe},{default:()=>[t["menu-header"]&&x("header",{ref:Q},[t["menu-header"](k)]),e&&f(Xe,S({key:"autocomplete-list",ref:T,filterable:!0,selected:ye.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:o=>o.preventDefault(),onFocusout:Me,tabindex:"-1",selectable:!!V.value.length,"aria-live":"polite","aria-labelledby":`${I.value}-label`,"aria-multiselectable":l.multiple,color:l.itemColor??l.color},Ce,l.listProps),{default:()=>{var o,m,c;return[(o=t["prepend-item"])==null?void 0:o.call(t),!V.value.length&&!l.hideNoData&&(((m=t["no-data"])==null?void 0:m.call(t))??f(ue,{key:"no-data",title:ce(l.noDataText)},null)),f(Ue,{ref:U,renderless:!0,items:V.value,itemKey:"value"},{default:C=>{var Z,ee,le;let{item:i,index:b,itemRef:h}=C;const Y=S(i.props,{ref:h,key:i.value,active:j.value&&i===M.value?!0:void 0,onClick:()=>F(i,null),"aria-posinset":b+1,"aria-setsize":V.value.length});return i.type==="divider"?((Z=t.divider)==null?void 0:Z.call(t,{props:i.raw,index:b}))??f(Ye,S(i.props,{key:`divider-${b}`}),null):i.type==="subheader"?((ee=t.subheader)==null?void 0:ee.call(t,{props:i.raw,index:b}))??f(Ze,S(i.props,{key:`subheader-${b}`}),null):((le=t.item)==null?void 0:le.call(t,{item:i,index:b,props:Y}))??f(ue,S(Y,{role:"option"}),{prepend:N=>{let{isSelected:_e}=N;return x(G,null,[l.multiple&&!l.hideSelected?f(pl,{key:i.value,modelValue:_e,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:Be=>Be.preventDefault()},null):void 0,i.props.prependAvatar&&f(el,{image:i.props.prependAvatar},null),i.props.prependIcon&&f(te,{icon:i.props.prependIcon},null)])},title:()=>{var N;return g.value?i.title:$e("v-autocomplete",i.title,(N=ge(i))==null?void 0:N.title)}})}}),(c=t["append-item"])==null?void 0:c.call(t)]}}),t["menu-footer"]&&x("footer",{ref:X},[t["menu-footer"](k)])]})]}),n.value.map((o,m)=>{function c(h){h.stopPropagation(),h.preventDefault(),F(o,!1)}const C=S(ie.filterProps(o.props),{"onClick:close":c,onKeydown(h){h.key!=="Enter"&&h.key!==" "||(h.preventDefault(),h.stopPropagation(),c(h))},onMousedown(h){h.preventDefault(),h.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),i=_.value?!!t.chip:!!t.selection,b=i?rl(_.value?t.chip({item:o,index:m,props:C}):t.selection({item:o,index:m})):void 0;if(!(i&&!b))return x("div",{key:o.value,class:gl(["v-autocomplete__selection",m===s.value&&["v-autocomplete__selection--selected",fe.value]]),style:hl(m===s.value?me.value:{})},[_.value?t.chip?f(ll,{key:"chip-defaults",defaults:{VChip:{closable:J.value,size:"small",text:o.title}}},{default:()=>[b]}):f(ie,S({key:"chip",closable:J.value,size:"small",text:o.title,disabled:o.props.disabled},C),null):b??x("span",{class:"v-autocomplete__selection-text"},[o.title,l.multiple&&me.color),{roundedClasses:b}=h(e),{t:g}=$(),{textColorClasses:f,textColorStyles:v}=x(()=>e.textColor),{themeClasses:k}=j(),{locationStyles:C}=T(e,!0,a=>(e.floating?e.dot?2:4:e.dot?8:12)+(["top","bottom"].includes(a)?Number(e.offsetY??0):["left","right"].includes(a)?Number(e.offsetX??0):0)),{dimensionStyles:y}=_(e);return F(()=>{const a=Number(e.content),n=!e.max||isNaN(a)?e.content:a<=Number(e.max)?a:`${e.max}+`,[N,S]=G(t.attrs,["aria-atomic","aria-label","aria-live","role","title"]);return o(e.tag,d({class:["v-badge",{"v-badge--bordered":e.bordered,"v-badge--dot":e.dot,"v-badge--floating":e.floating,"v-badge--inline":e.inline},e.class]},S,{style:e.style}),{default:()=>{var s,l;return[u("div",{class:"v-badge__wrapper"},[(l=(s=t.slots).default)==null?void 0:l.call(s),o(R,{transition:e.transition},{default:()=>{var i,r;return[V(u("span",d({class:["v-badge__badge",k.value,c.value,b.value,f.value],style:[m.value,v.value,y.value,e.inline?{}:C.value],"aria-atomic":"true","aria-label":g(e.label,a),"aria-live":"polite",role:"status"},N),[e.dot?void 0:t.slots.badge?(r=(i=t.slots).badge)==null?void 0:r.call(i):e.icon?o(L,{icon:e.icon},null):n]),[[B,e.modelValue]])]}})])]}})}),{}}});export{O as V}; diff --git a/assets/VBadge-VwKD9DDf.js b/assets/VBadge-VwKD9DDf.js deleted file mode 100644 index 834a0cd..0000000 --- a/assets/VBadge-VwKD9DDf.js +++ /dev/null @@ -1 +0,0 @@ -import{j as o,k as d,R as V,V as B,m as u}from"./vendor-vue-H0jQBZ7T.js";import{E as h,a7 as P,D as x,a6 as T,a2 as D,h as R,b as _,a as w,aD as I,m as L,aa as A,ab as X}from"./index-_6IQhlPZ.js";import{f as Y,an as $,t as j,u as E,aK as F,p as K,I as M,m as W,k as q}from"./vendor-vuetify-ChAgIwn2.js";const z=K({bordered:Boolean,color:String,content:[Number,String],dot:Boolean,floating:Boolean,icon:M,inline:Boolean,label:{type:String,default:"$vuetify.badge"},max:[Number,String],modelValue:{type:Boolean,default:!0},offsetX:[Number,String],offsetY:[Number,String],textColor:String,...q(),...X({location:"top end"}),...A(),...L(),...W(),...I({transition:"scale-rotate-transition"}),...w()},"VBadge"),O=Y()({name:"VBadge",inheritAttrs:!1,props:z(),setup(e,t){const{backgroundColorClasses:c,backgroundColorStyles:m}=h(()=>e.color),{roundedClasses:b}=P(e),{t:g}=$(),{textColorClasses:f,textColorStyles:v}=x(()=>e.textColor),{themeClasses:k}=j(),{locationStyles:C}=T(e,!0,a=>(e.floating?e.dot?2:4:e.dot?8:12)+(["top","bottom"].includes(a)?Number(e.offsetY??0):["left","right"].includes(a)?Number(e.offsetX??0):0)),{dimensionStyles:y}=_(e);return E(()=>{const a=Number(e.content),n=!e.max||isNaN(a)?e.content:a<=Number(e.max)?a:`${e.max}+`,[N,S]=F(t.attrs,["aria-atomic","aria-label","aria-live","role","title"]);return o(e.tag,u({class:["v-badge",{"v-badge--bordered":e.bordered,"v-badge--dot":e.dot,"v-badge--floating":e.floating,"v-badge--inline":e.inline},e.class]},S,{style:e.style}),{default:()=>{var s,l;return[d("div",{class:"v-badge__wrapper"},[(l=(s=t.slots).default)==null?void 0:l.call(s),o(D,{transition:e.transition},{default:()=>{var i,r;return[V(d("span",u({class:["v-badge__badge",k.value,c.value,b.value,f.value],style:[m.value,v.value,y.value,e.inline?{}:C.value],"aria-atomic":"true","aria-label":g(e.label,a),"aria-live":"polite",role:"status"},N),[e.dot?void 0:t.slots.badge?(r=(i=t.slots).badge)==null?void 0:r.call(i):e.icon?o(R,{icon:e.icon},null):n]),[[B,e.modelValue]])]}})])]}})}),{}}});export{O as V}; diff --git a/assets/VCheckbox-DhU7h1Z3.js b/assets/VCheckbox-DhU7h1Z3.js deleted file mode 100644 index a23cb4f..0000000 --- a/assets/VCheckbox-DhU7h1Z3.js +++ /dev/null @@ -1 +0,0 @@ -import{V as r,m as F}from"./VCheckboxBtn-DCkgbmVP.js";import{u as R,V as l,c as g}from"./autofocus-BrMOVHY_.js";import{C as B}from"./index-_6IQhlPZ.js";import{f as U,n as j,u as w,ao as D,p as E,a5 as u}from"./vendor-vuetify-ChAgIwn2.js";import{E as M,j as c,m as d,b as N}from"./vendor-vue-H0jQBZ7T.js";const $=E({...u(g(),["direction"]),...u(F(),["inline"])},"VCheckbox"),K=U()({name:"VCheckbox",inheritAttrs:!1,props:$(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,n){let{attrs:i,slots:a}=n;const o=j(e,"modelValue"),{isFocused:m,focus:f,blur:V}=R(e),t=N(),p=M();return w(()=>{const[b,k]=D(i),v=l.filterProps(e),x=r.filterProps(e);return c(l,d({ref:t,class:["v-checkbox",e.class]},b,v,{modelValue:o.value,"onUpdate:modelValue":s=>o.value=s,id:e.id||`checkbox-${p}`,focused:m.value,style:e.style}),{...a,default:s=>{let{id:h,messagesId:P,isDisabled:C,isReadonly:y,isValid:I}=s;return c(r,d(x,{id:h.value,"aria-describedby":P.value,disabled:C.value,readonly:y.value},k,{error:I.value===!1,modelValue:o.value,"onUpdate:modelValue":A=>o.value=A,onFocus:f,onBlur:V}),a)}})}),B({},t)}});export{K as V}; diff --git a/assets/VCheckbox-iNdH9PmZ.js b/assets/VCheckbox-iNdH9PmZ.js new file mode 100644 index 0000000..114f552 --- /dev/null +++ b/assets/VCheckbox-iNdH9PmZ.js @@ -0,0 +1 @@ +import{V as r,m as F}from"./VCheckboxBtn-DOw5vjpY.js";import{u as R,V as l,m as g}from"./VLabel-CU-8PdVS.js";import{D as B}from"./index-CFUCTEXJ.js";import{f as D,n as U,u as j,ao as w,p as E,a5 as u}from"./vendor-vuetify-s-yw_Hr8.js";import{E as M,j as d,m as c,b as N}from"./vendor-vue-B2vxubPy.js";const $=E({...u(g(),["direction"]),...u(F(),["inline"])},"VCheckbox"),K=D()({name:"VCheckbox",inheritAttrs:!1,props:$(),emits:{"update:modelValue":e=>!0,"update:focused":e=>!0},setup(e,n){let{attrs:i,slots:a}=n;const o=U(e,"modelValue"),{isFocused:m,focus:f,blur:V}=R(e),t=N(),p=M();return j(()=>{const[b,k]=w(i),v=l.filterProps(e),x=r.filterProps(e);return d(l,c({ref:t,class:["v-checkbox",e.class]},b,v,{modelValue:o.value,"onUpdate:modelValue":s=>o.value=s,id:e.id||`checkbox-${p}`,focused:m.value,style:e.style}),{...a,default:s=>{let{id:h,messagesId:P,isDisabled:C,isReadonly:y,isValid:I}=s;return d(r,c(x,{id:h.value,"aria-describedby":P.value,disabled:C.value,readonly:y.value},k,{error:I.value===!1,modelValue:o.value,"onUpdate:modelValue":A=>o.value=A,onFocus:f,onBlur:V}),a)}})}),B({},t)}});export{K as V}; diff --git a/assets/VCheckboxBtn-DCkgbmVP.js b/assets/VCheckboxBtn-DOw5vjpY.js similarity index 80% rename from assets/VCheckboxBtn-DCkgbmVP.js rename to assets/VCheckboxBtn-DOw5vjpY.js index 2c89e94..8329146 100644 --- a/assets/VCheckboxBtn-DCkgbmVP.js +++ b/assets/VCheckboxBtn-DOw5vjpY.js @@ -1 +1 @@ -import{a,m as f}from"./VSwitch-CdpUb5tZ.js";import{f as I,n as c,u as V,a5 as v,p as k,I as x}from"./vendor-vuetify-ChAgIwn2.js";import{j as h,m as b,t as l}from"./vendor-vue-H0jQBZ7T.js";const C=k({indeterminate:Boolean,indeterminateIcon:{type:x,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=I()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(o){t.value&&(t.value=!1)}const m=l(()=>t.value?e.indeterminateIcon:e.falseIcon),i=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return V(()=>{const o=v(a.filterProps(e),["modelValue"]);return h(a,b(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:m.value,trueIcon:i.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m}; +import{a,m as f}from"./VSwitch-DKh_Uq_M.js";import{f as I,n as c,u as V,a5 as v,p as k,I as x}from"./vendor-vuetify-s-yw_Hr8.js";import{j as h,m as b,t as l}from"./vendor-vue-B2vxubPy.js";const C=k({indeterminate:Boolean,indeterminateIcon:{type:x,default:"$checkboxIndeterminate"},...f({falseIcon:"$checkboxOff",trueIcon:"$checkboxOn"})},"VCheckboxBtn"),B=I()({name:"VCheckboxBtn",props:C(),emits:{"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,r){let{slots:s}=r;const t=c(e,"indeterminate"),n=c(e,"modelValue");function u(o){t.value&&(t.value=!1)}const m=l(()=>t.value?e.indeterminateIcon:e.falseIcon),i=l(()=>t.value?e.indeterminateIcon:e.trueIcon);return V(()=>{const o=v(a.filterProps(e),["modelValue"]);return h(a,b(o,{modelValue:n.value,"onUpdate:modelValue":[d=>n.value=d,u],class:["v-checkbox-btn",e.class],style:e.style,type:"checkbox",falseIcon:m.value,trueIcon:i.value,"aria-checked":t.value?"mixed":void 0}),s)}),{}}});export{B as V,C as m}; diff --git a/assets/VChip-DR8Ljy6R.js b/assets/VChip-DR8Ljy6R.js new file mode 100644 index 0000000..c4d1903 --- /dev/null +++ b/assets/VChip-DR8Ljy6R.js @@ -0,0 +1 @@ +import{o as me,j as h,k,n as W,N as Pe,e as S,s as F,m as ee,t as z,R as se,V as we,F as ie,S as Ee}from"./vendor-vue-B2vxubPy.js";import{a0 as pe,an as oe,f as R,ao as ke,m as le,aj as ge,al as ce,a6 as Re,J as _e,a8 as Te,ap as Be,a1 as re,aq as Fe,ag as Oe,ai as De,ar as Ge,a9 as H,M as ue,aa as Le,as as Me,at as We,ab as He,a5 as $e,ad as Ne,L as qe,ae as je}from"./index-CFUCTEXJ.js";import{f as te,A as Ke,a0 as Ue,y as de,aC as Je,E as ve,u as be,$ as Qe,p as ae,I as _,av as Xe,k as ne,h as Se,j as Ye,o as Ze,m as Ce,an as el,n as ll,ag as fe}from"./vendor-vuetify-s-yw_Hr8.js";function tl(e){let{selectedElement:s,containerElement:n,isRtl:r,isHorizontal:i}=e;const m=O(i,n),c=xe(i,r,n),p=O(i,s),y=Ve(i,s),g=p*.4;return c>y?y-g:c+mtypeof e=="boolean"||["always","desktop","mobile","never"].includes(e)},...ne(),...Xe({mobile:null}),...le(),...ke({selectedClass:"v-slide-group-item--active"})},"VSlideGroup"),ye=te()({name:"VSlideGroup",props:Ae(),emits:{"update:modelValue":e=>!0},setup(e,s){let{slots:n}=s;const{isRtl:r}=Ke(),{displayClasses:i,mobile:m}=Ue(e),c=pe(e,e.symbol),p=F(!1),y=F(0),g=F(0),I=F(0),v=S(()=>e.direction==="horizontal"),{resizeRef:d,contentRect:a}=de(),{resizeRef:u,contentRect:b}=de(),D=Je(),C=S(()=>({container:d.el,duration:200,easing:"easeOutQuart"})),$=S(()=>c.selected.value.length?c.items.value.findIndex(t=>t.id===c.selected.value[0]):-1),N=S(()=>c.selected.value.length?c.items.value.findIndex(t=>t.id===c.selected.value[c.selected.value.length-1]):-1);if(ve){let t=-1;me(()=>[c.selected.value,a.value,b.value,v.value],()=>{cancelAnimationFrame(t),t=requestAnimationFrame(()=>{if(a.value&&b.value){const l=v.value?"width":"height";g.value=a.value[l],I.value=b.value[l],p.value=g.value+1=0&&u.el){const l=u.el.children[N.value];G(l,e.centerActive)}})})}const P=F(!1);function G(t,l){let o=0;l?o=al({containerElement:d.el,isHorizontal:v.value,selectedElement:t}):o=tl({containerElement:d.el,isHorizontal:v.value,isRtl:r.value,selectedElement:t}),T(o)}function T(t){if(!ve||!d.el)return;const l=O(v.value,d.el),o=xe(v.value,r.value,d.el);if(!(he(v.value,d.el)<=l||Math.abs(t-o)<16)){if(v.value&&r.value&&d.el){const{scrollWidth:Y,offsetWidth:Z}=d.el;t=Y-Z-t}v.value?D.horizontal(t,C.value):D(t,C.value)}}function q(t){const{scrollTop:l,scrollLeft:o}=t.target;y.value=v.value?o:l}function f(t){if(P.value=!0,!(!p.value||!u.el)){for(const l of t.composedPath())for(const o of u.el.children)if(o===l){G(o);return}}}function A(t){P.value=!1}let x=!1;function j(t){var l;!x&&!P.value&&!(t.relatedTarget&&((l=u.el)!=null&&l.contains(t.relatedTarget)))&&V(),x=!1}function B(){x=!0}function L(t){if(!u.el)return;function l(o){t.preventDefault(),V(o)}v.value?t.key==="ArrowRight"?l(r.value?"prev":"next"):t.key==="ArrowLeft"&&l(r.value?"next":"prev"):t.key==="ArrowDown"?l("next"):t.key==="ArrowUp"&&l("prev"),t.key==="Home"?l("first"):t.key==="End"&&l("last")}function w(t,l){if(!t)return;let o=t;do o=o==null?void 0:o[l==="next"?"nextElementSibling":"previousElementSibling"];while(o!=null&&o.hasAttribute("disabled"));return o}function V(t){if(!u.el)return;let l;if(!t)l=Qe(u.el)[0];else if(t==="next"){if(l=w(u.el.querySelector(":focus"),t),!l)return V("first")}else if(t==="prev"){if(l=w(u.el.querySelector(":focus"),t),!l)return V("last")}else t==="first"?(l=u.el.firstElementChild,l!=null&&l.hasAttribute("disabled")&&(l=w(l,"next"))):t==="last"&&(l=u.el.lastElementChild,l!=null&&l.hasAttribute("disabled")&&(l=w(l,"prev")));l&&l.focus({preventScroll:!0})}function E(t){const l=v.value&&r.value?-1:1,o=(t==="prev"?-l:l)*g.value;let X=y.value+o;if(v.value&&r.value&&d.el){const{scrollWidth:Y,offsetWidth:Z}=d.el;X+=Y-Z}T(X)}const K=S(()=>({next:c.next,prev:c.prev,select:c.select,isSelected:c.isSelected})),M=S(()=>p.value||Math.abs(y.value)>0),U=S(()=>{switch(e.showArrows){case"never":return!1;case"always":return!0;case"desktop":return!m.value;case!0:return M.value;case"mobile":return m.value||M.value;default:return!m.value&&M.value}}),J=S(()=>Math.abs(y.value)>1),Q=S(()=>{if(!d.value||!M.value)return!1;const t=he(v.value,d.el),l=nl(v.value,d.el);return t-l-Math.abs(y.value)>1});return be(()=>h(e.tag,{class:W(["v-slide-group",{"v-slide-group--vertical":!v.value,"v-slide-group--has-affixes":U.value,"v-slide-group--is-overflowing":p.value},i.value,e.class]),style:Pe(e.style),tabindex:P.value||c.selected.value.length?-1:0,onFocus:j},{default:()=>{var t,l,o;return[U.value&&k("div",{key:"prev",class:W(["v-slide-group__prev",{"v-slide-group__prev--disabled":!J.value}]),onMousedown:B,onClick:()=>J.value&&E("prev")},[((t=n.prev)==null?void 0:t.call(n,K.value))??h(oe,null,{default:()=>[h(R,{icon:r.value?e.nextIcon:e.prevIcon},null)]})]),k("div",{key:"container",ref:d,class:W(["v-slide-group__container",e.contentClass]),onScroll:q},[k("div",{ref:u,class:"v-slide-group__content",onFocusin:f,onFocusout:A,onKeydown:L},[(l=n.default)==null?void 0:l.call(n,K.value)])]),U.value&&k("div",{key:"next",class:W(["v-slide-group__next",{"v-slide-group__next--disabled":!Q.value}]),onMousedown:B,onClick:()=>Q.value&&E("next")},[((o=n.next)==null?void 0:o.call(n,K.value))??h(oe,null,{default:()=>[h(R,{icon:r.value?e.prevIcon:e.nextIcon},null)]})])]}})),{selected:c.selected,scrollTo:E,scrollOffset:y,focus:V,hasPrev:J,hasNext:Q}}}),ze=Symbol.for("vuetify:v-chip-group"),sl=ae({baseColor:String,column:Boolean,filter:Boolean,valueComparator:{type:Function,default:Ze},...Ae({scrollToActive:!1}),...ne(),...ke({selectedClass:"v-chip--selected"}),...le(),...Ce(),...ge({variant:"tonal"})},"VChipGroup"),ul=te()({name:"VChipGroup",props:sl(),emits:{"update:modelValue":e=>!0},setup(e,s){let{slots:n}=s;const{themeClasses:r}=Se(e),{isSelected:i,select:m,next:c,prev:p,selected:y}=pe(e,ze);return Ye({VChip:{baseColor:z(()=>e.baseColor),color:z(()=>e.color),disabled:z(()=>e.disabled),filter:z(()=>e.filter),variant:z(()=>e.variant)}}),be(()=>{const g=ye.filterProps(e);return h(ye,ee(g,{class:["v-chip-group",{"v-chip-group--column":e.column},r.value,e.class],style:e.style}),{default:()=>{var I;return[(I=n.default)==null?void 0:I.call(n,{isSelected:i,select:m,next:c,prev:p,selected:y.value})]}})}),{}}}),il=ae({activeClass:String,appendAvatar:String,appendIcon:_,baseColor:String,closable:Boolean,closeIcon:{type:_,default:"$delete"},closeLabel:{type:String,default:"$vuetify.close"},draggable:Boolean,filter:Boolean,filterIcon:{type:_,default:"$complete"},label:Boolean,link:{type:Boolean,default:void 0},pill:Boolean,prependAvatar:String,prependIcon:_,ripple:{type:[Boolean,Object],default:!0},text:{type:[String,Number,Boolean],default:void 0},modelValue:{type:Boolean,default:!0},onClick:fe(),onClickOnce:fe(),...je(),...ne(),...qe(),...Ne(),...$e(),...He(),...We(),...Me(),...le({tag:"span"}),...Ce(),...ge({variant:"tonal"})},"VChip"),dl=te()({name:"VChip",directives:{vRipple:ce},props:il(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0,"group:selected":e=>!0,click:e=>!0},setup(e,s){let{attrs:n,emit:r,slots:i}=s;const{t:m}=el(),{borderClasses:c}=Re(e),{densityClasses:p}=_e(e),{elevationClasses:y}=Le(e),{roundedClasses:g}=Te(e),{sizeClasses:I}=Be(e),{themeClasses:v}=Se(e),d=ll(e,"modelValue"),a=re(e,ze,!1),u=re(e,Ie,!1),b=Fe(e,n),D=z(()=>e.link!==!1&&b.isLink.value),C=S(()=>!e.disabled&&e.link!==!1&&(!!a||e.link||b.isClickable.value)),$=z(()=>({"aria-label":m(e.closeLabel),disabled:e.disabled,onClick(f){f.preventDefault(),f.stopPropagation(),d.value=!1,r("click:close",f)}}));me(d,f=>{f?(a==null||a.register(),u==null||u.register()):(a==null||a.unregister(),u==null||u.unregister())});const{colorClasses:N,colorStyles:P,variantClasses:G}=Oe(()=>({color:!a||a.isSelected.value?e.color??e.baseColor:e.baseColor,variant:e.variant}));function T(f){var A,x;r("click",f),C.value&&((x=(A=b.navigate).value)==null||x.call(A,f),a==null||a.toggle())}function q(f){(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),T(f))}return()=>{var V;const f=b.isLink.value?"a":e.tag,A=!!(e.appendIcon||e.appendAvatar),x=!!(A||i.append),j=!!(i.close||e.closable),B=!!(i.filter||e.filter)&&a,L=!!(e.prependIcon||e.prependAvatar),w=!!(L||i.prepend);return d.value&&se(h(f,ee(b.linkProps,{class:["v-chip",{"v-chip--disabled":e.disabled,"v-chip--label":e.label,"v-chip--link":C.value,"v-chip--filter":B,"v-chip--pill":e.pill,[`${e.activeClass}`]:e.activeClass&&((V=b.isActive)==null?void 0:V.value)},v.value,c.value,N.value,p.value,y.value,g.value,I.value,G.value,a==null?void 0:a.selectedClass.value,e.class],style:[P.value,e.style],disabled:e.disabled||void 0,draggable:e.draggable,tabindex:C.value?0:void 0,onClick:T,onKeydown:C.value&&!D.value&&q}),{default:()=>{var E;return[De(C.value,"v-chip"),B&&h(Ge,{key:"filter"},{default:()=>[se(k("div",{class:"v-chip__filter"},[i.filter?h(H,{key:"filter-defaults",disabled:!e.filterIcon,defaults:{VIcon:{icon:e.filterIcon}}},i.filter):h(R,{key:"filter-icon",icon:e.filterIcon},null)]),[[we,a.isSelected.value]])]}),w&&k("div",{key:"prepend",class:"v-chip__prepend"},[i.prepend?h(H,{key:"prepend-defaults",disabled:!L,defaults:{VAvatar:{image:e.prependAvatar,start:!0},VIcon:{icon:e.prependIcon,start:!0}}},i.prepend):k(ie,null,[e.prependIcon&&h(R,{key:"prepend-icon",icon:e.prependIcon,start:!0},null),e.prependAvatar&&h(ue,{key:"prepend-avatar",image:e.prependAvatar,start:!0},null)])]),k("div",{class:"v-chip__content","data-no-activator":""},[((E=i.default)==null?void 0:E.call(i,{isSelected:a==null?void 0:a.isSelected.value,selectedClass:a==null?void 0:a.selectedClass.value,select:a==null?void 0:a.select,toggle:a==null?void 0:a.toggle,value:a==null?void 0:a.value.value,disabled:e.disabled}))??Ee(e.text)]),x&&k("div",{key:"append",class:"v-chip__append"},[i.append?h(H,{key:"append-defaults",disabled:!A,defaults:{VAvatar:{end:!0,image:e.appendAvatar},VIcon:{end:!0,icon:e.appendIcon}}},i.append):k(ie,null,[e.appendIcon&&h(R,{key:"append-icon",end:!0,icon:e.appendIcon},null),e.appendAvatar&&h(ue,{key:"append-avatar",end:!0,image:e.appendAvatar},null)])]),j&&k("button",ee({key:"close",class:"v-chip__close",type:"button","data-testid":"close-chip"},$.value),[i.close?h(H,{key:"close-defaults",defaults:{VIcon:{icon:e.closeIcon,size:"x-small"}}},i.close):h(R,{key:"close-icon",icon:e.closeIcon,size:"x-small"},null)])]}}),[[ce,C.value&&e.ripple,null]])}}});export{dl as V,ul as a,ye as b,Ae as m}; diff --git a/assets/VChip-Dmz_1Lnv.css b/assets/VChip-Dmz_1Lnv.css deleted file mode 100644 index f579b73..0000000 --- a/assets/VChip-Dmz_1Lnv.css +++ /dev/null @@ -1 +0,0 @@ -.v-chip{align-items:center;display:inline-flex;font-weight:400;max-width:100%;min-width:0;overflow:hidden;position:relative;text-decoration:none;white-space:nowrap;vertical-align:middle}.v-chip .v-icon{--v-icon-size-multiplier: .8571428571}.v-chip.v-chip--size-x-small{--v-chip-size: .625rem;--v-chip-height: 20px;font-size:.625rem;padding:0 8px}.v-chip.v-chip--size-x-small .v-avatar{--v-avatar-height: 14px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar{--v-avatar-height: 20px}.v-chip.v-chip--size-x-small .v-avatar--start{margin-inline-start:-5.6px;margin-inline-end:4px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--start{margin-inline-start:-8px}.v-chip.v-chip--size-x-small .v-avatar--end{margin-inline-start:4px;margin-inline-end:-5.6px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--end{margin-inline-end:-8px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--end+.v-chip__close{margin-inline-start:12px}.v-chip.v-chip--size-x-small .v-icon--start,.v-chip.v-chip--size-x-small .v-chip__filter{margin-inline-start:-4px;margin-inline-end:4px}.v-chip.v-chip--size-x-small .v-icon--end,.v-chip.v-chip--size-x-small .v-chip__close{margin-inline-start:4px;margin-inline-end:-4px}.v-chip.v-chip--size-x-small .v-icon--end+.v-chip__close,.v-chip.v-chip--size-x-small .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-x-small .v-chip__append+.v-chip__close{margin-inline-start:8px}.v-chip.v-chip--size-small{--v-chip-size: .75rem;--v-chip-height: 26px;font-size:.75rem;padding:0 10px}.v-chip.v-chip--size-small .v-avatar{--v-avatar-height: 20px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar{--v-avatar-height: 26px}.v-chip.v-chip--size-small .v-avatar--start{margin-inline-start:-7px;margin-inline-end:5px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--start{margin-inline-start:-10px}.v-chip.v-chip--size-small .v-avatar--end{margin-inline-start:5px;margin-inline-end:-7px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--end{margin-inline-end:-10px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--end+.v-chip__close{margin-inline-start:15px}.v-chip.v-chip--size-small .v-icon--start,.v-chip.v-chip--size-small .v-chip__filter{margin-inline-start:-5px;margin-inline-end:5px}.v-chip.v-chip--size-small .v-icon--end,.v-chip.v-chip--size-small .v-chip__close{margin-inline-start:5px;margin-inline-end:-5px}.v-chip.v-chip--size-small .v-icon--end+.v-chip__close,.v-chip.v-chip--size-small .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-small .v-chip__append+.v-chip__close{margin-inline-start:10px}.v-chip.v-chip--size-default{--v-chip-size: .875rem;--v-chip-height: 32px;font-size:.875rem;padding:0 12px}.v-chip.v-chip--size-default .v-avatar{--v-avatar-height: 26px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar{--v-avatar-height: 32px}.v-chip.v-chip--size-default .v-avatar--start{margin-inline-start:-8.4px;margin-inline-end:6px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--start{margin-inline-start:-12px}.v-chip.v-chip--size-default .v-avatar--end{margin-inline-start:6px;margin-inline-end:-8.4px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--end{margin-inline-end:-12px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--end+.v-chip__close{margin-inline-start:18px}.v-chip.v-chip--size-default .v-icon--start,.v-chip.v-chip--size-default .v-chip__filter{margin-inline-start:-6px;margin-inline-end:6px}.v-chip.v-chip--size-default .v-icon--end,.v-chip.v-chip--size-default .v-chip__close{margin-inline-start:6px;margin-inline-end:-6px}.v-chip.v-chip--size-default .v-icon--end+.v-chip__close,.v-chip.v-chip--size-default .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-default .v-chip__append+.v-chip__close{margin-inline-start:12px}.v-chip.v-chip--size-large{--v-chip-size: 1rem;--v-chip-height: 38px;font-size:1rem;padding:0 14px}.v-chip.v-chip--size-large .v-avatar{--v-avatar-height: 32px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar{--v-avatar-height: 38px}.v-chip.v-chip--size-large .v-avatar--start{margin-inline-start:-9.8px;margin-inline-end:7px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--start{margin-inline-start:-14px}.v-chip.v-chip--size-large .v-avatar--end{margin-inline-start:7px;margin-inline-end:-9.8px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--end{margin-inline-end:-14px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--end+.v-chip__close{margin-inline-start:21px}.v-chip.v-chip--size-large .v-icon--start,.v-chip.v-chip--size-large .v-chip__filter{margin-inline-start:-7px;margin-inline-end:7px}.v-chip.v-chip--size-large .v-icon--end,.v-chip.v-chip--size-large .v-chip__close{margin-inline-start:7px;margin-inline-end:-7px}.v-chip.v-chip--size-large .v-icon--end+.v-chip__close,.v-chip.v-chip--size-large .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-large .v-chip__append+.v-chip__close{margin-inline-start:14px}.v-chip.v-chip--size-x-large{--v-chip-size: 1.125rem;--v-chip-height: 44px;font-size:1.125rem;padding:0 17px}.v-chip.v-chip--size-x-large .v-avatar{--v-avatar-height: 38px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar{--v-avatar-height: 44px}.v-chip.v-chip--size-x-large .v-avatar--start{margin-inline-start:-11.9px;margin-inline-end:8.5px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--start{margin-inline-start:-17px}.v-chip.v-chip--size-x-large .v-avatar--end{margin-inline-start:8.5px;margin-inline-end:-11.9px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--end{margin-inline-end:-17px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--end+.v-chip__close{margin-inline-start:25.5px}.v-chip.v-chip--size-x-large .v-icon--start,.v-chip.v-chip--size-x-large .v-chip__filter{margin-inline-start:-8.5px;margin-inline-end:8.5px}.v-chip.v-chip--size-x-large .v-icon--end,.v-chip.v-chip--size-x-large .v-chip__close{margin-inline-start:8.5px;margin-inline-end:-8.5px}.v-chip.v-chip--size-x-large .v-icon--end+.v-chip__close,.v-chip.v-chip--size-x-large .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-x-large .v-chip__append+.v-chip__close{margin-inline-start:17px}.v-chip.v-chip--density-default{height:calc(var(--v-chip-height) + 0px)}.v-chip.v-chip--density-comfortable{height:calc(var(--v-chip-height) + -4px)}.v-chip.v-chip--density-compact{height:calc(var(--v-chip-height) + -8px)}.v-chip{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-chip:hover>.v-chip__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-chip:focus-visible>.v-chip__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-chip:focus>.v-chip__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-chip--active>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]>.v-chip__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-chip--active:hover>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:hover>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-chip--active:focus-visible>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-chip--active:focus>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:focus>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-chip{border-radius:9999px}.v-chip--variant-plain,.v-chip--variant-outlined,.v-chip--variant-text,.v-chip--variant-tonal{background:transparent;color:inherit}.v-chip--variant-plain{opacity:.62}.v-chip--variant-plain:focus,.v-chip--variant-plain:hover{opacity:1}.v-chip--variant-plain .v-chip__overlay{display:none}.v-chip--variant-elevated,.v-chip--variant-flat{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-chip--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-chip--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-chip--variant-outlined{border:thin solid currentColor}.v-chip--variant-text .v-chip__overlay{background:currentColor}.v-chip--variant-tonal .v-chip__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-chip .v-chip__underlay{position:absolute}.v-chip--border{border-width:thin}.v-chip--link{cursor:pointer}.v-chip--link,.v-chip--filter{-webkit-user-select:none;user-select:none}.v-chip__content{align-items:center;display:inline-flex}.v-autocomplete__selection .v-chip__content,.v-combobox__selection .v-chip__content,.v-select__selection .v-chip__content{overflow:hidden}.v-chip__filter,.v-chip__prepend,.v-chip__append,.v-chip__close{align-items:center;display:inline-flex}.v-chip__close{cursor:pointer;flex:0 1 auto;font-size:18px;max-height:18px;max-width:18px;-webkit-user-select:none;user-select:none}.v-chip__close .v-icon{font-size:inherit}.v-chip__filter{transition:.15s cubic-bezier(.4,0,.2,1)}.v-chip__overlay{background-color:currentColor;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-chip__overlay{position:absolute;top:0;left:0;width:100%;height:100%}.v-chip--disabled{opacity:.3;pointer-events:none;-webkit-user-select:none;user-select:none}.v-chip--label{border-radius:4px}@media (forced-colors: active){.v-chip:not(.v-chip--variant-text,.v-chip--variant-plain){border:thin solid}}.v-chip-group{display:flex;max-width:100%;min-width:0;overflow-x:auto;padding:4px 0}.v-chip-group .v-chip{margin:4px 8px 4px 0}@media (forced-colors: active){.v-chip-group .v-chip{background-color:buttonface!important;color:buttontext!important}.v-chip-group .v-chip:hover{color:highlight!important}}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled) .v-chip__overlay{opacity:var(--v-activated-opacity)}@media (forced-colors: active){.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled){color:highlight!important;forced-color-adjust:preserve-parent-color}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled):focus-visible{outline-offset:2px}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled).v-chip--variant-elevated,.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled).v-chip--variant-flat{background-color:highlight!important;color:highlighttext!important}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled).v-chip--variant-outlined,.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled).v-chip--variant-tonal{border-width:medium}}.v-chip-group--column .v-slide-group__content{white-space:normal;flex-wrap:wrap;max-width:100%}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-slide-group{display:flex;overflow:hidden}.v-slide-group__next,.v-slide-group__prev{align-items:center;display:flex;flex:0 1 52px;justify-content:center;min-width:52px;cursor:pointer}.v-slide-group__next--disabled,.v-slide-group__prev--disabled{pointer-events:none;opacity:var(--v-disabled-opacity)}.v-slide-group__content{display:flex;flex:1 0 auto;position:relative;transition:.2s all cubic-bezier(.4,0,.2,1);white-space:nowrap}.v-slide-group__content>*{white-space:initial}.v-slide-group__container{contain:content;display:flex;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;scrollbar-color:rgba(0,0,0,0)}.v-slide-group__container::-webkit-scrollbar{display:none}.v-slide-group--vertical{max-height:inherit}.v-slide-group--vertical,.v-slide-group--vertical .v-slide-group__container,.v-slide-group--vertical .v-slide-group__content{flex-direction:column}.v-slide-group--vertical .v-slide-group__container{overflow-x:hidden;overflow-y:auto} diff --git a/assets/VChip-Veb3ShEh.js b/assets/VChip-Veb3ShEh.js deleted file mode 100644 index 749e00f..0000000 --- a/assets/VChip-Veb3ShEh.js +++ /dev/null @@ -1 +0,0 @@ -import{o as ye,j as h,k,n as M,N as Pe,e as S,s as F,m as ee,t as z,R as se,V as we,F as ie,S as Ee}from"./vendor-vue-H0jQBZ7T.js";import{$ as pe,ak as oe,h as R,al as ke,m as le,ai as ge,am as ce,a5 as Re,G as _e,a7 as Te,an as Be,a0 as re,ao as Fe,af as Oe,ah as Ge,ap as De,a8 as H,L as ue,a9 as Le,aq as We,ar as Me,aa as He,a4 as $e,ac as Ne,I as qe,ad as Ke}from"./index-_6IQhlPZ.js";import{f as te,A as je,a0 as Ue,y as de,aB as Qe,E as ve,u as be,$ as Xe,p as ae,I as _,av as Je,k as ne,h as Se,j as Ye,o as Ze,m as Ce,an as el,n as ll,ag as fe}from"./vendor-vuetify-ChAgIwn2.js";function tl(e){let{selectedElement:s,containerElement:n,isRtl:r,isHorizontal:i}=e;const y=O(i,n),c=xe(i,r,n),p=O(i,s),m=Ie(i,s),g=p*.4;return c>m?m-g:c+ytypeof e=="boolean"||["always","desktop","mobile","never"].includes(e)},...ne(),...Je({mobile:null}),...le(),...ke({selectedClass:"v-slide-group-item--active"})},"VSlideGroup"),me=te()({name:"VSlideGroup",props:Ae(),emits:{"update:modelValue":e=>!0},setup(e,s){let{slots:n}=s;const{isRtl:r}=je(),{displayClasses:i,mobile:y}=Ue(e),c=pe(e,e.symbol),p=F(!1),m=F(0),g=F(0),V=F(0),v=S(()=>e.direction==="horizontal"),{resizeRef:d,contentRect:a}=de(),{resizeRef:u,contentRect:b}=de(),G=Qe(),C=S(()=>({container:d.el,duration:200,easing:"easeOutQuart"})),$=S(()=>c.selected.value.length?c.items.value.findIndex(t=>t.id===c.selected.value[0]):-1),N=S(()=>c.selected.value.length?c.items.value.findIndex(t=>t.id===c.selected.value[c.selected.value.length-1]):-1);if(ve){let t=-1;ye(()=>[c.selected.value,a.value,b.value,v.value],()=>{cancelAnimationFrame(t),t=requestAnimationFrame(()=>{if(a.value&&b.value){const l=v.value?"width":"height";g.value=a.value[l],V.value=b.value[l],p.value=g.value+1=0&&u.el){const l=u.el.children[N.value];D(l,e.centerActive)}})})}const P=F(!1);function D(t,l){let o=0;l?o=al({containerElement:d.el,isHorizontal:v.value,selectedElement:t}):o=tl({containerElement:d.el,isHorizontal:v.value,isRtl:r.value,selectedElement:t}),T(o)}function T(t){if(!ve||!d.el)return;const l=O(v.value,d.el),o=xe(v.value,r.value,d.el);if(!(he(v.value,d.el)<=l||Math.abs(t-o)<16)){if(v.value&&r.value&&d.el){const{scrollWidth:Y,offsetWidth:Z}=d.el;t=Y-Z-t}v.value?G.horizontal(t,C.value):G(t,C.value)}}function q(t){const{scrollTop:l,scrollLeft:o}=t.target;m.value=v.value?o:l}function f(t){if(P.value=!0,!(!p.value||!u.el)){for(const l of t.composedPath())for(const o of u.el.children)if(o===l){D(o);return}}}function A(t){P.value=!1}let x=!1;function K(t){var l;!x&&!P.value&&!(t.relatedTarget&&((l=u.el)!=null&&l.contains(t.relatedTarget)))&&I(),x=!1}function B(){x=!0}function L(t){if(!u.el)return;function l(o){t.preventDefault(),I(o)}v.value?t.key==="ArrowRight"?l(r.value?"prev":"next"):t.key==="ArrowLeft"&&l(r.value?"next":"prev"):t.key==="ArrowDown"?l("next"):t.key==="ArrowUp"&&l("prev"),t.key==="Home"?l("first"):t.key==="End"&&l("last")}function w(t,l){if(!t)return;let o=t;do o=o==null?void 0:o[l==="next"?"nextElementSibling":"previousElementSibling"];while(o!=null&&o.hasAttribute("disabled"));return o}function I(t){if(!u.el)return;let l;if(!t)l=Xe(u.el)[0];else if(t==="next"){if(l=w(u.el.querySelector(":focus"),t),!l)return I("first")}else if(t==="prev"){if(l=w(u.el.querySelector(":focus"),t),!l)return I("last")}else t==="first"?(l=u.el.firstElementChild,l!=null&&l.hasAttribute("disabled")&&(l=w(l,"next"))):t==="last"&&(l=u.el.lastElementChild,l!=null&&l.hasAttribute("disabled")&&(l=w(l,"prev")));l&&l.focus({preventScroll:!0})}function E(t){const l=v.value&&r.value?-1:1,o=(t==="prev"?-l:l)*g.value;let J=m.value+o;if(v.value&&r.value&&d.el){const{scrollWidth:Y,offsetWidth:Z}=d.el;J+=Y-Z}T(J)}const j=S(()=>({next:c.next,prev:c.prev,select:c.select,isSelected:c.isSelected})),W=S(()=>p.value||Math.abs(m.value)>0),U=S(()=>{switch(e.showArrows){case"never":return!1;case"always":return!0;case"desktop":return!y.value;case!0:return W.value;case"mobile":return y.value||W.value;default:return!y.value&&W.value}}),Q=S(()=>Math.abs(m.value)>1),X=S(()=>{if(!d.value||!W.value)return!1;const t=he(v.value,d.el),l=nl(v.value,d.el);return t-l-Math.abs(m.value)>1});return be(()=>h(e.tag,{class:M(["v-slide-group",{"v-slide-group--vertical":!v.value,"v-slide-group--has-affixes":U.value,"v-slide-group--is-overflowing":p.value},i.value,e.class]),style:Pe(e.style),tabindex:P.value||c.selected.value.length?-1:0,onFocus:K},{default:()=>{var t,l,o;return[U.value&&k("div",{key:"prev",class:M(["v-slide-group__prev",{"v-slide-group__prev--disabled":!Q.value}]),onMousedown:B,onClick:()=>Q.value&&E("prev")},[((t=n.prev)==null?void 0:t.call(n,j.value))??h(oe,null,{default:()=>[h(R,{icon:r.value?e.nextIcon:e.prevIcon},null)]})]),k("div",{key:"container",ref:d,class:M(["v-slide-group__container",e.contentClass]),onScroll:q},[k("div",{ref:u,class:"v-slide-group__content",onFocusin:f,onFocusout:A,onKeydown:L},[(l=n.default)==null?void 0:l.call(n,j.value)])]),U.value&&k("div",{key:"next",class:M(["v-slide-group__next",{"v-slide-group__next--disabled":!X.value}]),onMousedown:B,onClick:()=>X.value&&E("next")},[((o=n.next)==null?void 0:o.call(n,j.value))??h(oe,null,{default:()=>[h(R,{icon:r.value?e.prevIcon:e.nextIcon},null)]})])]}})),{selected:c.selected,scrollTo:E,scrollOffset:m,focus:I,hasPrev:Q,hasNext:X}}}),ze=Symbol.for("vuetify:v-chip-group"),sl=ae({baseColor:String,column:Boolean,filter:Boolean,valueComparator:{type:Function,default:Ze},...Ae({scrollToActive:!1}),...ne(),...ke({selectedClass:"v-chip--selected"}),...le(),...Ce(),...ge({variant:"tonal"})},"VChipGroup"),ul=te()({name:"VChipGroup",props:sl(),emits:{"update:modelValue":e=>!0},setup(e,s){let{slots:n}=s;const{themeClasses:r}=Se(e),{isSelected:i,select:y,next:c,prev:p,selected:m}=pe(e,ze);return Ye({VChip:{baseColor:z(()=>e.baseColor),color:z(()=>e.color),disabled:z(()=>e.disabled),filter:z(()=>e.filter),variant:z(()=>e.variant)}}),be(()=>{const g=me.filterProps(e);return h(me,ee(g,{class:["v-chip-group",{"v-chip-group--column":e.column},r.value,e.class],style:e.style}),{default:()=>{var V;return[(V=n.default)==null?void 0:V.call(n,{isSelected:i,select:y,next:c,prev:p,selected:m.value})]}})}),{}}}),il=ae({activeClass:String,appendAvatar:String,appendIcon:_,baseColor:String,closable:Boolean,closeIcon:{type:_,default:"$delete"},closeLabel:{type:String,default:"$vuetify.close"},draggable:Boolean,filter:Boolean,filterIcon:{type:_,default:"$complete"},label:Boolean,link:{type:Boolean,default:void 0},pill:Boolean,prependAvatar:String,prependIcon:_,ripple:{type:[Boolean,Object],default:!0},text:{type:[String,Number,Boolean],default:void 0},modelValue:{type:Boolean,default:!0},onClick:fe(),onClickOnce:fe(),...Ke(),...ne(),...qe(),...Ne(),...$e(),...He(),...Me(),...We(),...le({tag:"span"}),...Ce(),...ge({variant:"tonal"})},"VChip"),dl=te()({name:"VChip",directives:{vRipple:ce},props:il(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0,"group:selected":e=>!0,click:e=>!0},setup(e,s){let{attrs:n,emit:r,slots:i}=s;const{t:y}=el(),{borderClasses:c}=Re(e),{densityClasses:p}=_e(e),{elevationClasses:m}=Le(e),{roundedClasses:g}=Te(e),{sizeClasses:V}=Be(e),{themeClasses:v}=Se(e),d=ll(e,"modelValue"),a=re(e,ze,!1),u=re(e,Ve,!1),b=Fe(e,n),G=z(()=>e.link!==!1&&b.isLink.value),C=S(()=>!e.disabled&&e.link!==!1&&(!!a||e.link||b.isClickable.value)),$=z(()=>({"aria-label":y(e.closeLabel),disabled:e.disabled,onClick(f){f.preventDefault(),f.stopPropagation(),d.value=!1,r("click:close",f)}}));ye(d,f=>{f?(a==null||a.register(),u==null||u.register()):(a==null||a.unregister(),u==null||u.unregister())});const{colorClasses:N,colorStyles:P,variantClasses:D}=Oe(()=>({color:!a||a.isSelected.value?e.color??e.baseColor:e.baseColor,variant:e.variant}));function T(f){var A,x;r("click",f),C.value&&((x=(A=b.navigate).value)==null||x.call(A,f),a==null||a.toggle())}function q(f){(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),T(f))}return()=>{var I;const f=b.isLink.value?"a":e.tag,A=!!(e.appendIcon||e.appendAvatar),x=!!(A||i.append),K=!!(i.close||e.closable),B=!!(i.filter||e.filter)&&a,L=!!(e.prependIcon||e.prependAvatar),w=!!(L||i.prepend);return d.value&&se(h(f,ee(b.linkProps,{class:["v-chip",{"v-chip--disabled":e.disabled,"v-chip--label":e.label,"v-chip--link":C.value,"v-chip--filter":B,"v-chip--pill":e.pill,[`${e.activeClass}`]:e.activeClass&&((I=b.isActive)==null?void 0:I.value)},v.value,c.value,N.value,p.value,m.value,g.value,V.value,D.value,a==null?void 0:a.selectedClass.value,e.class],style:[P.value,e.style],disabled:e.disabled||void 0,draggable:e.draggable,tabindex:C.value?0:void 0,onClick:T,onKeydown:C.value&&!G.value&&q}),{default:()=>{var E;return[Ge(C.value,"v-chip"),B&&h(De,{key:"filter"},{default:()=>[se(k("div",{class:"v-chip__filter"},[i.filter?h(H,{key:"filter-defaults",disabled:!e.filterIcon,defaults:{VIcon:{icon:e.filterIcon}}},i.filter):h(R,{key:"filter-icon",icon:e.filterIcon},null)]),[[we,a.isSelected.value]])]}),w&&k("div",{key:"prepend",class:"v-chip__prepend"},[i.prepend?h(H,{key:"prepend-defaults",disabled:!L,defaults:{VAvatar:{image:e.prependAvatar,start:!0},VIcon:{icon:e.prependIcon,start:!0}}},i.prepend):k(ie,null,[e.prependIcon&&h(R,{key:"prepend-icon",icon:e.prependIcon,start:!0},null),e.prependAvatar&&h(ue,{key:"prepend-avatar",image:e.prependAvatar,start:!0},null)])]),k("div",{class:"v-chip__content","data-no-activator":""},[((E=i.default)==null?void 0:E.call(i,{isSelected:a==null?void 0:a.isSelected.value,selectedClass:a==null?void 0:a.selectedClass.value,select:a==null?void 0:a.select,toggle:a==null?void 0:a.toggle,value:a==null?void 0:a.value.value,disabled:e.disabled}))??Ee(e.text)]),x&&k("div",{key:"append",class:"v-chip__append"},[i.append?h(H,{key:"append-defaults",disabled:!A,defaults:{VAvatar:{end:!0,image:e.appendAvatar},VIcon:{end:!0,icon:e.appendIcon}}},i.append):k(ie,null,[e.appendIcon&&h(R,{key:"append-icon",end:!0,icon:e.appendIcon},null),e.appendAvatar&&h(ue,{key:"append-avatar",end:!0,image:e.appendAvatar},null)])]),K&&k("button",ee({key:"close",class:"v-chip__close",type:"button","data-testid":"close-chip"},$.value),[i.close?h(H,{key:"close-defaults",defaults:{VIcon:{icon:e.closeIcon,size:"x-small"}}},i.close):h(R,{key:"close-icon",icon:e.closeIcon,size:"x-small"},null)])]}}),[[ce,C.value&&e.ripple,null]])}}});export{dl as V,me as a,ul as b,Ae as m}; diff --git a/assets/VChip-q3Zvvte-.css b/assets/VChip-q3Zvvte-.css new file mode 100644 index 0000000..8c9d1d9 --- /dev/null +++ b/assets/VChip-q3Zvvte-.css @@ -0,0 +1 @@ +.v-slide-group{display:flex;overflow:hidden}.v-slide-group__next,.v-slide-group__prev{align-items:center;display:flex;flex:0 1 52px;justify-content:center;min-width:52px;cursor:pointer}.v-slide-group__next--disabled,.v-slide-group__prev--disabled{pointer-events:none;opacity:var(--v-disabled-opacity)}.v-slide-group__content{display:flex;flex:1 0 auto;position:relative;transition:.2s all cubic-bezier(.4,0,.2,1);white-space:nowrap}.v-slide-group__content>*{white-space:initial}.v-slide-group__container{contain:content;display:flex;flex:1 1 auto;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;scrollbar-color:rgba(0,0,0,0)}.v-slide-group__container::-webkit-scrollbar{display:none}.v-slide-group--vertical{max-height:inherit}.v-slide-group--vertical,.v-slide-group--vertical .v-slide-group__container,.v-slide-group--vertical .v-slide-group__content{flex-direction:column}.v-slide-group--vertical .v-slide-group__container{overflow-x:hidden;overflow-y:auto}.v-chip{align-items:center;display:inline-flex;font-weight:400;max-width:100%;min-width:0;overflow:hidden;position:relative;text-decoration:none;white-space:nowrap;vertical-align:middle}.v-chip .v-icon{--v-icon-size-multiplier: .8571428571}.v-chip.v-chip--size-x-small{--v-chip-size: .625rem;--v-chip-height: 20px;font-size:.625rem;padding:0 8px}.v-chip.v-chip--size-x-small .v-avatar{--v-avatar-height: 14px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar{--v-avatar-height: 20px}.v-chip.v-chip--size-x-small .v-avatar--start{margin-inline-start:-5.6px;margin-inline-end:4px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--start{margin-inline-start:-8px}.v-chip.v-chip--size-x-small .v-avatar--end{margin-inline-start:4px;margin-inline-end:-5.6px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--end{margin-inline-end:-8px}.v-chip--pill.v-chip.v-chip--size-x-small .v-avatar--end+.v-chip__close{margin-inline-start:12px}.v-chip.v-chip--size-x-small .v-icon--start,.v-chip.v-chip--size-x-small .v-chip__filter{margin-inline-start:-4px;margin-inline-end:4px}.v-chip.v-chip--size-x-small .v-icon--end,.v-chip.v-chip--size-x-small .v-chip__close{margin-inline-start:4px;margin-inline-end:-4px}.v-chip.v-chip--size-x-small .v-icon--end+.v-chip__close,.v-chip.v-chip--size-x-small .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-x-small .v-chip__append+.v-chip__close{margin-inline-start:8px}.v-chip.v-chip--size-small{--v-chip-size: .75rem;--v-chip-height: 26px;font-size:.75rem;padding:0 10px}.v-chip.v-chip--size-small .v-avatar{--v-avatar-height: 20px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar{--v-avatar-height: 26px}.v-chip.v-chip--size-small .v-avatar--start{margin-inline-start:-7px;margin-inline-end:5px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--start{margin-inline-start:-10px}.v-chip.v-chip--size-small .v-avatar--end{margin-inline-start:5px;margin-inline-end:-7px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--end{margin-inline-end:-10px}.v-chip--pill.v-chip.v-chip--size-small .v-avatar--end+.v-chip__close{margin-inline-start:15px}.v-chip.v-chip--size-small .v-icon--start,.v-chip.v-chip--size-small .v-chip__filter{margin-inline-start:-5px;margin-inline-end:5px}.v-chip.v-chip--size-small .v-icon--end,.v-chip.v-chip--size-small .v-chip__close{margin-inline-start:5px;margin-inline-end:-5px}.v-chip.v-chip--size-small .v-icon--end+.v-chip__close,.v-chip.v-chip--size-small .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-small .v-chip__append+.v-chip__close{margin-inline-start:10px}.v-chip.v-chip--size-default{--v-chip-size: .875rem;--v-chip-height: 32px;font-size:.875rem;padding:0 12px}.v-chip.v-chip--size-default .v-avatar{--v-avatar-height: 26px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar{--v-avatar-height: 32px}.v-chip.v-chip--size-default .v-avatar--start{margin-inline-start:-8.4px;margin-inline-end:6px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--start{margin-inline-start:-12px}.v-chip.v-chip--size-default .v-avatar--end{margin-inline-start:6px;margin-inline-end:-8.4px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--end{margin-inline-end:-12px}.v-chip--pill.v-chip.v-chip--size-default .v-avatar--end+.v-chip__close{margin-inline-start:18px}.v-chip.v-chip--size-default .v-icon--start,.v-chip.v-chip--size-default .v-chip__filter{margin-inline-start:-6px;margin-inline-end:6px}.v-chip.v-chip--size-default .v-icon--end,.v-chip.v-chip--size-default .v-chip__close{margin-inline-start:6px;margin-inline-end:-6px}.v-chip.v-chip--size-default .v-icon--end+.v-chip__close,.v-chip.v-chip--size-default .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-default .v-chip__append+.v-chip__close{margin-inline-start:12px}.v-chip.v-chip--size-large{--v-chip-size: 1rem;--v-chip-height: 38px;font-size:1rem;padding:0 14px}.v-chip.v-chip--size-large .v-avatar{--v-avatar-height: 32px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar{--v-avatar-height: 38px}.v-chip.v-chip--size-large .v-avatar--start{margin-inline-start:-9.8px;margin-inline-end:7px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--start{margin-inline-start:-14px}.v-chip.v-chip--size-large .v-avatar--end{margin-inline-start:7px;margin-inline-end:-9.8px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--end{margin-inline-end:-14px}.v-chip--pill.v-chip.v-chip--size-large .v-avatar--end+.v-chip__close{margin-inline-start:21px}.v-chip.v-chip--size-large .v-icon--start,.v-chip.v-chip--size-large .v-chip__filter{margin-inline-start:-7px;margin-inline-end:7px}.v-chip.v-chip--size-large .v-icon--end,.v-chip.v-chip--size-large .v-chip__close{margin-inline-start:7px;margin-inline-end:-7px}.v-chip.v-chip--size-large .v-icon--end+.v-chip__close,.v-chip.v-chip--size-large .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-large .v-chip__append+.v-chip__close{margin-inline-start:14px}.v-chip.v-chip--size-x-large{--v-chip-size: 1.125rem;--v-chip-height: 44px;font-size:1.125rem;padding:0 17px}.v-chip.v-chip--size-x-large .v-avatar{--v-avatar-height: 38px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar{--v-avatar-height: 44px}.v-chip.v-chip--size-x-large .v-avatar--start{margin-inline-start:-11.9px;margin-inline-end:8.5px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--start{margin-inline-start:-17px}.v-chip.v-chip--size-x-large .v-avatar--end{margin-inline-start:8.5px;margin-inline-end:-11.9px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--end{margin-inline-end:-17px}.v-chip--pill.v-chip.v-chip--size-x-large .v-avatar--end+.v-chip__close{margin-inline-start:25.5px}.v-chip.v-chip--size-x-large .v-icon--start,.v-chip.v-chip--size-x-large .v-chip__filter{margin-inline-start:-8.5px;margin-inline-end:8.5px}.v-chip.v-chip--size-x-large .v-icon--end,.v-chip.v-chip--size-x-large .v-chip__close{margin-inline-start:8.5px;margin-inline-end:-8.5px}.v-chip.v-chip--size-x-large .v-icon--end+.v-chip__close,.v-chip.v-chip--size-x-large .v-avatar--end+.v-chip__close,.v-chip.v-chip--size-x-large .v-chip__append+.v-chip__close{margin-inline-start:17px}.v-chip.v-chip--density-default{height:calc(var(--v-chip-height) + 0px)}.v-chip.v-chip--density-comfortable{height:calc(var(--v-chip-height) + -4px)}.v-chip.v-chip--density-compact{height:calc(var(--v-chip-height) + -8px)}.v-chip{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-chip:hover>.v-chip__overlay{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-chip:focus-visible>.v-chip__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-chip:focus>.v-chip__overlay{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}}.v-chip--active>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]>.v-chip__overlay{opacity:calc(var(--v-activated-opacity) * var(--v-theme-overlay-multiplier))}.v-chip--active:hover>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:hover>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}.v-chip--active:focus-visible>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:focus-visible>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}@supports not selector(:focus-visible){.v-chip--active:focus>.v-chip__overlay,.v-chip[aria-haspopup=menu][aria-expanded=true]:focus>.v-chip__overlay{opacity:calc((var(--v-activated-opacity) + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}}.v-chip{border-radius:9999px}.v-chip--variant-plain,.v-chip--variant-outlined,.v-chip--variant-text,.v-chip--variant-tonal{background:transparent;color:inherit}.v-chip--variant-plain{opacity:.62}.v-chip--variant-plain:focus,.v-chip--variant-plain:hover{opacity:1}.v-chip--variant-plain .v-chip__overlay{display:none}.v-chip--variant-elevated,.v-chip--variant-flat{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-chip--variant-elevated{box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 3px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-chip--variant-flat{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-chip--variant-outlined{border:thin solid currentColor}.v-chip--variant-text .v-chip__overlay{background:currentColor}.v-chip--variant-tonal .v-chip__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;top:0;right:0;bottom:0;left:0;pointer-events:none}.v-chip .v-chip__underlay{position:absolute}.v-chip--border{border-width:thin}.v-chip--link{cursor:pointer}.v-chip--link,.v-chip--filter{-webkit-user-select:none;user-select:none}.v-chip__content{align-items:center;display:inline-flex}.v-autocomplete__selection .v-chip__content,.v-combobox__selection .v-chip__content,.v-select__selection .v-chip__content{overflow:hidden}.v-chip__filter,.v-chip__prepend,.v-chip__append,.v-chip__close{align-items:center;display:inline-flex}.v-chip__close{cursor:pointer;flex:0 1 auto;font-size:18px;max-height:18px;max-width:18px;-webkit-user-select:none;user-select:none}.v-chip__close .v-icon{font-size:inherit}.v-chip__filter{transition:.15s cubic-bezier(.4,0,.2,1)}.v-chip__overlay{background-color:currentColor;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .2s ease-in-out}.v-chip__overlay{position:absolute;top:0;left:0;width:100%;height:100%}.v-chip--disabled{opacity:.3;pointer-events:none;-webkit-user-select:none;user-select:none}.v-chip--label{border-radius:4px}@media (forced-colors: active){.v-chip:not(.v-chip--variant-text,.v-chip--variant-plain){border:thin solid}}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-chip-group{display:flex;max-width:100%;min-width:0;overflow-x:auto;padding:4px 0}.v-chip-group .v-chip{margin:4px 8px 4px 0}@media (forced-colors: active){.v-chip-group .v-chip{background-color:buttonface!important;color:buttontext!important}.v-chip-group .v-chip:hover{color:highlight!important}}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled) .v-chip__overlay{opacity:var(--v-activated-opacity)}@media (forced-colors: active){.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled){color:highlight!important;forced-color-adjust:preserve-parent-color}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled):focus-visible{outline-offset:2px}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled).v-chip--variant-elevated,.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled).v-chip--variant-flat{background-color:highlight!important;color:highlighttext!important}.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled).v-chip--variant-outlined,.v-chip-group .v-chip.v-chip--selected:not(.v-chip--disabled).v-chip--variant-tonal{border-width:medium}}.v-chip-group--column .v-slide-group__content{white-space:normal;flex-wrap:wrap;max-width:100%} diff --git a/assets/VCombobox-B2hcOM7z.js b/assets/VCombobox-B2hcOM7z.js new file mode 100644 index 0000000..2890442 --- /dev/null +++ b/assets/VCombobox-B2hcOM7z.js @@ -0,0 +1,2 @@ +import{b as Ue,c as je}from"./VLabel-CU-8PdVS.js";import{u as Ge,a as He,b as qe,c as We,h as Xe,d as Je,e as Qe,m as Ye}from"./VSelect-Fp4MUhJW.js";import{V as ie,m as Ze}from"./VTextField-ByBRYn99.js";import{aA as el,G as ll,aB as B,f as se,l as al,n as re,v as tl,X as nl,M as ul,a9 as ol,D as il}from"./index-CFUCTEXJ.js";import{f as sl,an as rl,n as ce,w as cl,o as ve,E as vl,u as dl,aE as fl,aF as ml,aG as de,aH as hl,p as bl,a5 as pl,aI as gl}from"./vendor-vuetify-s-yw_Hr8.js";import{V as yl,a as xl}from"./VSheet-B8D7XEg5.js";import{V as Vl}from"./VCheckboxBtn-DOw5vjpY.js";import{V as fe}from"./VChip-DR8Ljy6R.js";import{s as P,o as _,j as f,k as F,F as X,m as S,N as kl,n as Cl,a1 as wl,e as w,I as N,b as A,t as Il}from"./vendor-vue-B2vxubPy.js";const Dl=bl({alwaysFilter:Boolean,autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...Ye({filterKeys:["title"]}),...Qe({hideNoData:!0,returnObject:!0}),...pl(Ze({modelValue:null,role:"combobox"}),["validationValue","dirty"])},"VCombobox"),_l=sl()({name:"VCombobox",props:Dl(),emits:{"update:focused":l=>!0,"update:modelValue":l=>!0,"update:search":l=>!0,"update:menu":l=>!0},setup(l,me){var ae;let{emit:he,slots:t}=me;const{t:be}=rl(),p=A(),g=P(!1),I=P(!0),G=P(!1),H=A(),L=A(),i=P(-1);let K=!1;const{items:J,transformIn:pe,transformOut:ge}=el(l),{textColorClasses:ye,textColorStyles:xe}=ll(()=>{var e;return(e=p.value)==null?void 0:e.color}),{InputIcon:Ve}=Ue(l),u=ce(l,"modelValue",[],e=>pe(cl(e)),e=>{const a=ge(e);return l.multiple?a:a[0]??null}),R=je(l),Q=Il(()=>l.closableChips&&!R.isReadonly.value&&!R.isDisabled.value),O=w(()=>!!(l.chips||t.chip)),D=w(()=>O.value||!!t.selection),y=P(!l.multiple&&!D.value?((ae=u.value[0])==null?void 0:ae.title)??"":""),M=P(null),d=w({get:()=>y.value,set:async e=>{var a;if(y.value=e??"",e===null||e===""&&!l.multiple&&!D.value?u.value=[]:!l.multiple&&!D.value&&(u.value=[B(l,e)],N(()=>{var n;return(n=L.value)==null?void 0:n.scrollToIndex(0)})),e&&l.multiple&&((a=l.delimiters)!=null&&a.length)){const n=ee(e);n.length>1&&(le(n),y.value="")}e||(i.value=-1),I.value=!e}}),ke=w(()=>typeof l.counterValue=="function"?l.counterValue(u.value):typeof l.counterValue=="number"?l.counterValue:l.multiple?u.value.length:d.value.length),{filteredItems:z,getMatches:Ce}=Ge(l,J,()=>M.value??(l.alwaysFilter||!I.value?d.value:"")),x=w(()=>l.hideSelected&&M.value===null?z.value.filter(e=>!u.value.some(a=>a.value===e.value)):z.value),$=w(()=>l.hideNoData&&!x.value.length||R.isReadonly.value||R.isDisabled.value),q=ce(l,"menu"),c=w({get:()=>q.value,set:e=>{var a;q.value&&!e&&((a=H.value)!=null&&a.ΨopenChildren.size)||e&&$.value||(q.value=e)}}),{menuId:we,ariaExpanded:Ie,ariaControls:De}=He(l,c);_(y,e=>{K?N(()=>K=!1):g.value&&!c.value&&(c.value=!0),he("update:search",e)}),_(u,e=>{var a;!l.multiple&&!D.value&&(y.value=((a=e[0])==null?void 0:a.title)??"")});const Se=w(()=>u.value.map(e=>e.value)),T=w(()=>x.value.find(e=>e.type==="item"&&!e.props.disabled)),W=w(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&d.value===((a=T.value)==null?void 0:a.title))&&x.value.length>0&&!I.value&&!G.value}),E=A(),Y=A(),Z=A(),Fe=Je(E,p),{onTabKeydown:Re}=qe({groups:[{type:"element",contentRef:Y},{type:"list",contentRef:E,displayItemsCount:()=>x.value.length},{type:"element",contentRef:Z}],onLeave:()=>{var e;c.value=!1,(e=p.value)==null||e.focus()}});function Pe(e){K=!0,N(()=>K=!1),l.openOnClear&&(c.value=!0)}function Ae(){$.value||(c.value=!0)}function Me(e){$.value||(g.value&&(e.preventDefault(),e.stopPropagation()),c.value=!c.value)}function Te(e){var a,n;e.key==="Tab"&&Re(e),(a=E.value)!=null&&a.$el.contains(e.target)&&(de(e)||e.key==="Backspace")&&((n=p.value)==null||n.focus())}function Ee(e){var v,m,h,o;if(hl(e)||R.isReadonly.value)return;const a=(v=p.value)==null?void 0:v.selectionStart,n=u.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(e.key)&&e.preventDefault(),["Enter","ArrowDown"].includes(e.key)&&(c.value=!0),["Escape"].includes(e.key)&&(c.value=!1),W.value&&["Enter","Tab"].includes(e.key)&&T.value&&!u.value.some(s=>{let{value:k}=s;return k===T.value.value})&&V(T.value),e.key==="ArrowDown"&&W.value&&((m=E.value)==null||m.focus("next")),e.key==="Enter"&&d.value&&(V(B(l,d.value),!0,!0),D.value&&(y.value="")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&D.value&&u.value.length>0&&!d.value)return V(u.value[0],!1);if(~i.value){e.preventDefault();const s=i.value;V(u.value[i.value],!1),i.value=s>=n-1?n-2:s}else e.key==="Backspace"&&!d.value&&(i.value=n-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(i.value<0&&a&&a>0)return;const s=i.value>-1?i.value-1:n-1;u.value[s]?i.value=s:(i.value=-1,(h=p.value)==null||h.setSelectionRange(d.value.length,d.value.length))}else if(e.key==="ArrowRight"){if(i.value<0)return;const s=i.value+1;u.value[s]?i.value=s:(i.value=-1,(o=p.value)==null||o.setSelectionRange(0,0))}else~i.value&&de(e)&&(i.value=-1)}function Be(e){var v;const a=((v=e==null?void 0:e.clipboardData)==null?void 0:v.getData("Text"))??"",n=ee(a);n.length>1&&l.multiple&&(e.preventDefault(),le(n))}function _e(){var e;l.eager&&((e=L.value)==null||e.calculateVisibleItems())}function Ne(){var e;g.value&&((e=p.value)==null||e.focus()),I.value=!0,M.value=null}function V(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(!(!e||e.props.disabled))if(l.multiple){const v=u.value.findIndex(h=>(l.valueComparator||ve)(h.value,e.value)),m=a??!~v;if(~v){const h=m?[...u.value,e]:[...u.value];h.splice(v,1),u.value=h}else m&&(u.value=[...u.value,e]);l.clearOnSelect&&(d.value="")}else{const v=a!==!1;u.value=v?[e]:[],(!I.value||l.alwaysFilter)&&y.value&&(M.value=y.value),y.value=v&&!D.value?e.title:"",N(()=>{c.value=n,I.value=!0})}}function ee(e){const n=[` +`,...l.delimiters??[]].map(gl).join("|");return e.split(new RegExp(`(?:${n})+`))}async function le(e){for(let a of e)a=a.trim(),a&&(V(B(l,a)),await N())}function Le(e){g.value=!0,setTimeout(()=>{G.value=!0})}function Ke(e){G.value=!1}function Oe(e){var n;const a=(n=H.value)==null?void 0:n.contentEl;a!=null&&a.contains(e.relatedTarget)&&(g.value=!0)}return _(g,(e,a)=>{if(!(e||e===a)&&(i.value=-1,c.value=!1,d.value)){if(l.multiple){V(B(l,d.value));return}if(!D.value)return;u.value.some(n=>{let{title:v}=n;return v===d.value})?y.value="":V(B(l,d.value))}}),_(c,e=>{if(!l.hideSelected&&e&&u.value.length&&I.value){const a=x.value.findIndex(n=>u.value.some(v=>(l.valueComparator||ve)(v.value,n.value)));vl&&window.requestAnimationFrame(()=>{var n;a>=0&&((n=L.value)==null||n.scrollToIndex(a))})}e&&(M.value=null)}),_(J,(e,a)=>{c.value||g.value&&!a.length&&e.length&&(c.value=!0)}),dl(()=>{const e=!!(!l.hideNoData||x.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),a=u.value.length>0,n=ie.filterProps(l),v={search:d,filteredItems:z.value};return f(ie,S({ref:p},n,{modelValue:d.value,"onUpdate:modelValue":m=>d.value=m,focused:g.value,"onUpdate:focused":m=>g.value=m,validationValue:u.externalValue,counterValue:ke.value,dirty:a,class:["v-combobox",{"v-combobox--active-menu":c.value,"v-combobox--chips":!!l.chips,"v-combobox--selection-slot":!!D.value,"v-combobox--selecting-index":i.value>-1,[`v-combobox--${l.multiple?"multiple":"single"}`]:!0},l.class],style:l.style,readonly:R.isReadonly.value,placeholder:a?void 0:l.placeholder,"onClick:clear":Pe,"onMousedown:control":Ae,onKeydown:Ee,onPaste:Be,onBlur:Oe,"aria-expanded":Ie.value,"aria-controls":De.value}),{...t,default:m=>{let{id:h}=m;return F(X,null,[f(yl,S({id:we.value,ref:H,modelValue:c.value,"onUpdate:modelValue":o=>c.value=o,activator:"parent",contentClass:"v-combobox__content",disabled:$.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:_e,onAfterLeave:Ne},l.menuProps),{default:()=>[f(xl,{onFocusin:Le,onKeydown:Te},{default:()=>[t["menu-header"]&&F("header",{ref:Y},[t["menu-header"](v)]),e&&f(al,S({key:"combobox-list",ref:E,filterable:!0,selected:Se.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:o=>o.preventDefault(),selectable:!!x.value.length,onFocusout:Ke,tabindex:"-1","aria-live":"polite","aria-labelledby":`${h.value}-label`,"aria-multiselectable":l.multiple,color:l.itemColor??l.color},Fe,l.listProps),{default:()=>{var o,s,k;return[(o=t["prepend-item"])==null?void 0:o.call(t),!x.value.length&&!l.hideNoData&&(((s=t["no-data"])==null?void 0:s.call(t))??f(re,{key:"no-data",title:be(l.noDataText)},null)),f(We,{ref:L,renderless:!0,items:x.value,itemKey:"value"},{default:U=>{var ne,ue,oe;let{item:r,index:C,itemRef:b}=U;const te=S(r.props,{ref:b,key:r.value,active:W.value&&r===T.value?!0:void 0,onClick:()=>V(r,null),"aria-posinset":C+1,"aria-setsize":x.value.length});return r.type==="divider"?((ne=t.divider)==null?void 0:ne.call(t,{props:r.raw,index:C}))??f(tl,S(r.props,{key:`divider-${C}`}),null):r.type==="subheader"?((ue=t.subheader)==null?void 0:ue.call(t,{props:r.raw,index:C}))??f(nl,S(r.props,{key:`subheader-${C}`}),null):((oe=t.item)==null?void 0:oe.call(t,{item:r,index:C,props:te}))??f(re,S(te,{role:"option"}),{prepend:j=>{let{isSelected:ze}=j;return F(X,null,[l.multiple&&!l.hideSelected?f(Vl,{key:r.value,modelValue:ze,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:$e=>$e.preventDefault()},null):void 0,r.props.prependAvatar&&f(ul,{image:r.props.prependAvatar},null),r.props.prependIcon&&f(se,{icon:r.props.prependIcon},null)])},title:()=>{var j;return I.value?r.title:Xe("v-combobox",r.title,(j=Ce(r))==null?void 0:j.title)}})}}),(k=t["append-item"])==null?void 0:k.call(t)]}}),t["menu-footer"]&&F("footer",{ref:Z},[t["menu-footer"](v)])]})]}),u.value.map((o,s)=>{function k(b){b.stopPropagation(),b.preventDefault(),V(o,!1)}const U=S(fe.filterProps(o.props),{"onClick:close":k,onKeydown(b){b.key!=="Enter"&&b.key!==" "||(b.preventDefault(),b.stopPropagation(),k(b))},onMousedown(b){b.preventDefault(),b.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),r=O.value?!!t.chip:!!t.selection,C=r?ml(O.value?t.chip({item:o,index:s,props:U}):t.selection({item:o,index:s})):void 0;if(!(r&&!C))return F("div",{key:o.value,class:Cl(["v-combobox__selection",s===i.value&&["v-combobox__selection--selected",ye.value]]),style:kl(s===i.value?xe.value:{})},[O.value?t.chip?f(ol,{key:"chip-defaults",defaults:{VChip:{closable:Q.value,size:"small",text:o.title}}},{default:()=>[C]}):f(fe,S({key:"chip",closable:Q.value,size:"small",text:o.title,disabled:o.props.disabled},U),null):C??F("span",{class:"v-combobox__selection-text"},[o.title,l.multiple&&s!0,"update:modelValue":l=>!0,"update:search":l=>!0,"update:menu":l=>!0},setup(l,me){var ae;let{emit:he,slots:t}=me;const{t:be}=rl(),p=A(),g=P(!1),I=P(!0),H=P(!1),q=A(),N=A(),i=P(-1);let K=!1;const{items:Q,transformIn:pe,transformOut:ge}=el(l),{textColorClasses:ye,textColorStyles:xe}=ll(()=>{var e;return(e=p.value)==null?void 0:e.color}),{InputIcon:Ve}=Ue(l),u=ce(l,"modelValue",[],e=>pe(cl(e)),e=>{const a=ge(e);return l.multiple?a:a[0]??null}),R=je(l),X=Il(()=>l.closableChips&&!R.isReadonly.value&&!R.isDisabled.value),O=w(()=>!!(l.chips||t.chip)),D=w(()=>O.value||!!t.selection),y=P(!l.multiple&&!D.value?((ae=u.value[0])==null?void 0:ae.title)??"":""),T=P(null),d=w({get:()=>y.value,set:async e=>{var a;if(y.value=e??"",e===null||e===""&&!l.multiple&&!D.value?u.value=[]:!l.multiple&&!D.value&&(u.value=[B(l,e)],L(()=>{var n;return(n=N.value)==null?void 0:n.scrollToIndex(0)})),e&&l.multiple&&((a=l.delimiters)!=null&&a.length)){const n=ee(e);n.length>1&&(le(n),y.value="")}e||(i.value=-1),I.value=!e}}),ke=w(()=>typeof l.counterValue=="function"?l.counterValue(u.value):typeof l.counterValue=="number"?l.counterValue:l.multiple?u.value.length:d.value.length),{filteredItems:z,getMatches:Ce}=He(l,Q,()=>T.value??(l.alwaysFilter||!I.value?d.value:"")),x=w(()=>l.hideSelected&&T.value===null?z.value.filter(e=>!u.value.some(a=>a.value===e.value)):z.value),$=w(()=>l.hideNoData&&!x.value.length||R.isReadonly.value||R.isDisabled.value),G=ce(l,"menu"),c=w({get:()=>G.value,set:e=>{var a;G.value&&!e&&((a=q.value)!=null&&a.ΨopenChildren.size)||e&&$.value||(G.value=e)}}),{menuId:we,ariaExpanded:Ie,ariaControls:De}=qe(l,c);_(y,e=>{K?L(()=>K=!1):g.value&&!c.value&&(c.value=!0),he("update:search",e)}),_(u,e=>{var a;!l.multiple&&!D.value&&(y.value=((a=e[0])==null?void 0:a.title)??"")});const Se=w(()=>u.value.map(e=>e.value)),E=w(()=>x.value.find(e=>e.type==="item"&&!e.props.disabled)),W=w(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&d.value===((a=E.value)==null?void 0:a.title))&&x.value.length>0&&!I.value&&!H.value}),M=A(),Y=A(),Z=A(),Fe=Qe(M,p),{onTabKeydown:Re}=Ge({groups:[{type:"element",contentRef:Y},{type:"list",contentRef:M,displayItemsCount:()=>x.value.length},{type:"element",contentRef:Z}],onLeave:()=>{var e;c.value=!1,(e=p.value)==null||e.focus()}});function Pe(e){K=!0,L(()=>K=!1),l.openOnClear&&(c.value=!0)}function Ae(){$.value||(c.value=!0)}function Te(e){$.value||(g.value&&(e.preventDefault(),e.stopPropagation()),c.value=!c.value)}function Ee(e){var a,n;e.key==="Tab"&&Re(e),(a=M.value)!=null&&a.$el.contains(e.target)&&(de(e)||e.key==="Backspace")&&((n=p.value)==null||n.focus())}function Me(e){var v,m,h,o;if(hl(e)||R.isReadonly.value)return;const a=(v=p.value)==null?void 0:v.selectionStart,n=u.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(e.key)&&e.preventDefault(),["Enter","ArrowDown"].includes(e.key)&&(c.value=!0),["Escape"].includes(e.key)&&(c.value=!1),W.value&&["Enter","Tab"].includes(e.key)&&E.value&&!u.value.some(s=>{let{value:k}=s;return k===E.value.value})&&V(E.value),e.key==="ArrowDown"&&W.value&&((m=M.value)==null||m.focus("next")),e.key==="Enter"&&d.value&&(V(B(l,d.value),!0,!0),D.value&&(y.value="")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&D.value&&u.value.length>0&&!d.value)return V(u.value[0],!1);if(~i.value){e.preventDefault();const s=i.value;V(u.value[i.value],!1),i.value=s>=n-1?n-2:s}else e.key==="Backspace"&&!d.value&&(i.value=n-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(i.value<0&&a&&a>0)return;const s=i.value>-1?i.value-1:n-1;u.value[s]?i.value=s:(i.value=-1,(h=p.value)==null||h.setSelectionRange(d.value.length,d.value.length))}else if(e.key==="ArrowRight"){if(i.value<0)return;const s=i.value+1;u.value[s]?i.value=s:(i.value=-1,(o=p.value)==null||o.setSelectionRange(0,0))}else~i.value&&de(e)&&(i.value=-1)}function Be(e){var v;const a=((v=e==null?void 0:e.clipboardData)==null?void 0:v.getData("Text"))??"",n=ee(a);n.length>1&&l.multiple&&(e.preventDefault(),le(n))}function _e(){var e;l.eager&&((e=N.value)==null||e.calculateVisibleItems())}function Le(){var e;g.value&&((e=p.value)==null||e.focus()),I.value=!0,T.value=null}function V(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(!(!e||e.props.disabled))if(l.multiple){const v=u.value.findIndex(h=>(l.valueComparator||ve)(h.value,e.value)),m=a??!~v;if(~v){const h=m?[...u.value,e]:[...u.value];h.splice(v,1),u.value=h}else m&&(u.value=[...u.value,e]);l.clearOnSelect&&(d.value="")}else{const v=a!==!1;u.value=v?[e]:[],(!I.value||l.alwaysFilter)&&y.value&&(T.value=y.value),y.value=v&&!D.value?e.title:"",L(()=>{c.value=n,I.value=!0})}}function ee(e){const n=[` -`,...l.delimiters??[]].map(gl).join("|");return e.split(new RegExp(`(?:${n})+`))}async function le(e){for(let a of e)a=a.trim(),a&&(V(B(l,a)),await L())}function Ne(e){g.value=!0,setTimeout(()=>{H.value=!0})}function Ke(e){H.value=!1}function Oe(e){var n;const a=(n=q.value)==null?void 0:n.contentEl;a!=null&&a.contains(e.relatedTarget)&&(g.value=!0)}return _(g,(e,a)=>{if(!(e||e===a)&&(i.value=-1,c.value=!1,d.value)){if(l.multiple){V(B(l,d.value));return}if(!D.value)return;u.value.some(n=>{let{title:v}=n;return v===d.value})?y.value="":V(B(l,d.value))}}),_(c,e=>{if(!l.hideSelected&&e&&u.value.length&&I.value){const a=x.value.findIndex(n=>u.value.some(v=>(l.valueComparator||ve)(v.value,n.value)));vl&&window.requestAnimationFrame(()=>{var n;a>=0&&((n=N.value)==null||n.scrollToIndex(a))})}e&&(T.value=null)}),_(Q,(e,a)=>{c.value||g.value&&!a.length&&e.length&&(c.value=!0)}),dl(()=>{const e=!!(!l.hideNoData||x.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),a=u.value.length>0,n=ie.filterProps(l),v={search:d,filteredItems:z.value};return f(ie,S({ref:p},n,{modelValue:d.value,"onUpdate:modelValue":m=>d.value=m,focused:g.value,"onUpdate:focused":m=>g.value=m,validationValue:u.externalValue,counterValue:ke.value,dirty:a,class:["v-combobox",{"v-combobox--active-menu":c.value,"v-combobox--chips":!!l.chips,"v-combobox--selection-slot":!!D.value,"v-combobox--selecting-index":i.value>-1,[`v-combobox--${l.multiple?"multiple":"single"}`]:!0},l.class],style:l.style,readonly:R.isReadonly.value,placeholder:a?void 0:l.placeholder,"onClick:clear":Pe,"onMousedown:control":Ae,onKeydown:Me,onPaste:Be,onBlur:Oe,"aria-expanded":Ie.value,"aria-controls":De.value}),{...t,default:m=>{let{id:h}=m;return F(J,null,[f(yl,S({id:we.value,ref:q,modelValue:c.value,"onUpdate:modelValue":o=>c.value=o,activator:"parent",contentClass:"v-combobox__content",disabled:$.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:_e,onAfterLeave:Le},l.menuProps),{default:()=>[f(xl,{onFocusin:Ne,onKeydown:Ee},{default:()=>[t["menu-header"]&&F("header",{ref:Y},[t["menu-header"](v)]),e&&f(al,S({key:"combobox-list",ref:M,filterable:!0,selected:Se.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:o=>o.preventDefault(),selectable:!!x.value.length,onFocusout:Ke,tabindex:"-1","aria-live":"polite","aria-labelledby":`${h.value}-label`,"aria-multiselectable":l.multiple,color:l.itemColor??l.color},Fe,l.listProps),{default:()=>{var o,s,k;return[(o=t["prepend-item"])==null?void 0:o.call(t),!x.value.length&&!l.hideNoData&&(((s=t["no-data"])==null?void 0:s.call(t))??f(re,{key:"no-data",title:be(l.noDataText)},null)),f(We,{ref:N,renderless:!0,items:x.value,itemKey:"value"},{default:U=>{var ne,ue,oe;let{item:r,index:C,itemRef:b}=U;const te=S(r.props,{ref:b,key:r.value,active:W.value&&r===E.value?!0:void 0,onClick:()=>V(r,null),"aria-posinset":C+1,"aria-setsize":x.value.length});return r.type==="divider"?((ne=t.divider)==null?void 0:ne.call(t,{props:r.raw,index:C}))??f(tl,S(r.props,{key:`divider-${C}`}),null):r.type==="subheader"?((ue=t.subheader)==null?void 0:ue.call(t,{props:r.raw,index:C}))??f(nl,S(r.props,{key:`subheader-${C}`}),null):((oe=t.item)==null?void 0:oe.call(t,{item:r,index:C,props:te}))??f(re,S(te,{role:"option"}),{prepend:j=>{let{isSelected:ze}=j;return F(J,null,[l.multiple&&!l.hideSelected?f(Vl,{key:r.value,modelValue:ze,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:$e=>$e.preventDefault()},null):void 0,r.props.prependAvatar&&f(ul,{image:r.props.prependAvatar},null),r.props.prependIcon&&f(se,{icon:r.props.prependIcon},null)])},title:()=>{var j;return I.value?r.title:Je("v-combobox",r.title,(j=Ce(r))==null?void 0:j.title)}})}}),(k=t["append-item"])==null?void 0:k.call(t)]}}),t["menu-footer"]&&F("footer",{ref:Z},[t["menu-footer"](v)])]})]}),u.value.map((o,s)=>{function k(b){b.stopPropagation(),b.preventDefault(),V(o,!1)}const U=S(fe.filterProps(o.props),{"onClick:close":k,onKeydown(b){b.key!=="Enter"&&b.key!==" "||(b.preventDefault(),b.stopPropagation(),k(b))},onMousedown(b){b.preventDefault(),b.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),r=O.value?!!t.chip:!!t.selection,C=r?ml(O.value?t.chip({item:o,index:s,props:U}):t.selection({item:o,index:s})):void 0;if(!(r&&!C))return F("div",{key:o.value,class:Cl(["v-combobox__selection",s===i.value&&["v-combobox__selection--selected",ye.value]]),style:kl(s===i.value?xe.value:{})},[O.value?t.chip?f(ol,{key:"chip-defaults",defaults:{VChip:{closable:X.value,size:"small",text:o.title}}},{default:()=>[C]}):f(fe,S({key:"chip",closable:X.value,size:"small",text:o.title,disabled:o.props.disabled},U),null):C??F("span",{class:"v-combobox__selection-text"},[o.title,l.multiple&&sp(e.tag,{class:d(["v-container",{"v-container--fluid":e.fluid},n.value,e.class]),style:C([o.value,e.style])},a)),{}}});export{P as V}; +import{f as t,A as r,u as l,p as i,k as m}from"./vendor-vuetify-s-yw_Hr8.js";import{b as u,m as c,a as f}from"./index-CFUCTEXJ.js";import{j as p,N as C,n as d}from"./vendor-vue-B2vxubPy.js";const y=i({fluid:{type:Boolean,default:!1},...m(),...f(),...c()},"VContainer"),P=t()({name:"VContainer",props:y(),setup(e,s){let{slots:a}=s;const{rtlClasses:n}=r(),{dimensionStyles:o}=u(e);return l(()=>p(e.tag,{class:d(["v-container",{"v-container--fluid":e.fluid},n.value,e.class]),style:C([o.value,e.style])},a)),{}}});export{P as V}; diff --git a/assets/VDataTable-B9bubX3K.js b/assets/VDataTable-B9bubX3K.js new file mode 100644 index 0000000..3bc56b6 --- /dev/null +++ b/assets/VDataTable-B9bubX3K.js @@ -0,0 +1 @@ +import{n as q,p as _,l as Ge,z as be,f as Y,an as ce,u as te,a5 as Pe,I as $,ar as vt,s as R,as as yt,w as X,ah as ht,o as He,at as ue,au as ne,F as bt,a0 as we,av as ke,ag as pe,aj as xe,aw as Be,ai as re,j as pt}from"./vendor-vuetify-s-yw_Hr8.js";import{l as j,e as I,d as Z,o as Ie,p as J,k as S,j as w,m as H,n as ie,w as xt,a as St,b as U,s as Pt,t as N,F as Q,N as wt,I as kt,a1 as Oe,x as oe,a8 as se,S as It,y as Dt}from"./vendor-vue-B2vxubPy.js";import{V as Ee}from"./VPagination-D-juuf4L.js";import{V as Le,u as Tt,m as Vt}from"./VSelect-Fp4MUhJW.js";import{Y as Ct,H as Ft,Z as Bt,f as _e,$ as Ot,L as De,i as je,v as Et}from"./index-CFUCTEXJ.js";import{V as _t}from"./VChip-DR8Ljy6R.js";import{V as de}from"./VCheckboxBtn-DOw5vjpY.js";import{b as Ae,m as At}from"./VTabsWindowItem-CU31Uty7.js";const Nt=_({page:{type:[Number,String],default:1},itemsPerPage:{type:[Number,String],default:10},pageBy:{type:String,default:"any"}},"DataTable-paginate"),Me=Symbol.for("vuetify:data-table-pagination");function Rt(e){const a=q(e,"page",void 0,t=>Number(t??1)),l=q(e,"itemsPerPage",void 0,t=>Number(t??10));return{page:a,itemsPerPage:l}}function $t(e){const{page:a,itemsPerPage:l,itemsLength:t}=e,n=I(()=>l.value===-1?0:l.value*(a.value-1)),r=I(()=>l.value===-1?t.value:Math.min(t.value,n.value+l.value)),o=I(()=>l.value===-1||t.value===0?1:Math.ceil(t.value/l.value));Ie([a,o],()=>{a.value>o.value&&(a.value=o.value)});function i(f){l.value=f,a.value=1}function u(){a.value=be(a.value+1,1,o.value)}function c(){a.value=be(a.value-1,1,o.value)}function g(f){a.value=be(f,1,o.value)}const v={page:a,itemsPerPage:l,startIndex:n,stopIndex:r,pageCount:o,itemsLength:t,nextPage:u,prevPage:c,setPage:g,setItemsPerPage:i};return J(Me,v),v}function Gt(){const e=Z(Me);if(!e)throw new Error("Missing pagination!");return e}function Ht(e){const a=Ge("usePaginatedItems"),{items:l,startIndex:t,stopIndex:n,itemsPerPage:r}=e,o=I(()=>r.value<=0?j(l):j(l).slice(t.value,n.value));return Ie(o,i=>{a.emit("update:currentItems",i)},{immediate:!0}),{paginatedItems:o}}function Lt(e){const{sortedItems:a,paginate:l,group:t}=e,n=j(e.pageBy);if(n==="item"){const{paginatedItems:r,pageCount:o,setItemsPerPage:i}=l(a),{flatItems:u}=t(r);return{pageCount:o,setItemsPerPage:i,paginatedItems:u}}if(n==="group"){const{flatItems:r,groups:o}=t(a),{paginatedItems:i,pageCount:u,setItemsPerPage:c}=l(o),g=I(()=>{if(!i.value.length)return[];const v=i.value.at(0).id,f=i.value.at(-1).id,p=r.value.findIndex(d=>d.type==="group"&&d.id===v),y=r.value.findIndex(d=>d.type==="group"&&d.id===f),h=r.value.findIndex((d,b)=>b>y&&d.type==="group"&&d.depth===0);return r.value.slice(p,h===-1?void 0:h)});return{pageCount:u,setItemsPerPage:c,paginatedItems:g}}if(n==="any"){const{flatItems:r}=t(a),{paginatedItems:o,pageCount:i,setItemsPerPage:u}=l(r);return{pageCount:i,setItemsPerPage:u,paginatedItems:o}}throw new Error(`Unrecognized pagination target ${n}`)}const We=_({color:String,prevIcon:{type:$,default:"$prev"},nextIcon:{type:$,default:"$next"},firstIcon:{type:$,default:"$first"},lastIcon:{type:$,default:"$last"},itemsPerPageText:{type:String,default:"$vuetify.dataFooter.itemsPerPageText"},pageText:{type:String,default:"$vuetify.dataFooter.pageText"},firstPageLabel:{type:String,default:"$vuetify.dataFooter.firstPage"},prevPageLabel:{type:String,default:"$vuetify.dataFooter.prevPage"},nextPageLabel:{type:String,default:"$vuetify.dataFooter.nextPage"},lastPageLabel:{type:String,default:"$vuetify.dataFooter.lastPage"},itemsPerPageOptions:{type:Array,default:()=>[{value:10,title:"10"},{value:25,title:"25"},{value:50,title:"50"},{value:100,title:"100"},{value:-1,title:"$vuetify.dataFooter.itemsPerPageAll"}]},showCurrentPage:Boolean},"VDataTableFooter"),Ne=Y()({name:"VDataTableFooter",props:We(),setup(e,a){let{slots:l}=a;const{t}=ce(),{page:n,pageCount:r,startIndex:o,stopIndex:i,itemsLength:u,itemsPerPage:c,setItemsPerPage:g}=Gt(),v=I(()=>e.itemsPerPageOptions.map(f=>typeof f=="number"?{value:f,title:f===-1?t("$vuetify.dataFooter.itemsPerPageAll"):String(f)}:{...f,title:isNaN(Number(f.title))?t(f.title):f.title}));return te(()=>{var p;const f=Ee.filterProps(e);return S("div",{class:"v-data-table-footer"},[(p=l.prepend)==null?void 0:p.call(l),S("div",{class:"v-data-table-footer__items-per-page"},[S("span",null,[t(e.itemsPerPageText)]),w(Le,{items:v.value,itemColor:e.color,modelValue:c.value,"onUpdate:modelValue":y=>g(Number(y)),density:"compact",variant:"outlined","aria-label":t(e.itemsPerPageText),hideDetails:!0},null)]),S("div",{class:"v-data-table-footer__info"},[S("div",null,[t(e.pageText,u.value?o.value+1:0,i.value,u.value)])]),S("div",{class:"v-data-table-footer__pagination"},[w(Ee,H({modelValue:n.value,"onUpdate:modelValue":y=>n.value=y,density:"comfortable",firstAriaLabel:e.firstPageLabel,lastAriaLabel:e.lastPageLabel,length:r.value,nextAriaLabel:e.nextPageLabel,previousAriaLabel:e.prevPageLabel,rounded:!0,showFirstLastPage:!0,totalVisible:e.showCurrentPage?1:0,variant:"plain"},Pe(f,["color"])),null)])])}),{}}}),ee=vt({align:{type:String,default:"start"},fixed:{type:[Boolean,String],default:!1},fixedOffset:[Number,String],fixedEndOffset:[Number,String],height:[Number,String],lastFixed:Boolean,firstFixedEnd:Boolean,noPadding:Boolean,indent:[Number,String],empty:Boolean,tag:String,width:[Number,String],maxWidth:[Number,String],nowrap:Boolean},(e,a)=>{let{slots:l}=a;const t=e.tag??"td",n=typeof e.fixed=="string"?e.fixed:e.fixed?"start":"none";return w(t,{class:ie(["v-data-table__td",{"v-data-table-column--fixed":n==="start","v-data-table-column--fixed-end":n==="end","v-data-table-column--last-fixed":e.lastFixed,"v-data-table-column--first-fixed-end":e.firstFixedEnd,"v-data-table-column--no-padding":e.noPadding,"v-data-table-column--nowrap":e.nowrap,"v-data-table-column--empty":e.empty},`v-data-table-column--align-${e.align}`]),style:{height:R(e.height),width:R(e.width),maxWidth:R(e.maxWidth),left:n==="start"?R(e.fixedOffset||null):void 0,right:n==="end"?R(e.fixedEndOffset||null):void 0,paddingInlineStart:e.indent?R(e.indent):void 0}},{default:()=>{var r;return[(r=l.default)==null?void 0:r.call(l)]}})}),jt=_({headers:Array},"DataTable-header"),Ke=Symbol.for("vuetify:data-table-headers"),ze={title:"",sortable:!1},Mt={...ze,width:48};function Wt(){const a=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).map(l=>({element:l,priority:0}));return{enqueue:(l,t)=>{let n=!1;for(let r=0;rt){a.splice(r,0,{element:l,priority:t}),n=!0;break}n||a.push({element:l,priority:t})},size:()=>a.length,count:()=>{let l=0;if(!a.length)return 0;const t=Math.floor(a[0].priority);for(let n=0;na.shift()}}function Se(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];if(!e.children)a.push(e);else for(const l of e.children)Se(l,a);return a}function Ue(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Set;for(const l of e)l.key&&a.add(l.key),l.children&&Ue(l.children,a);return a}function Kt(e){if(e.key){if(e.key==="data-table-group")return ze;if(["data-table-expand","data-table-select"].includes(e.key))return Mt}}function Te(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.children?Math.max(a,...e.children.map(l=>Te(l,a+1))):a}function zt(e){let a=!1;function l(r,o){let i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"none";if(r)if(i!=="none"&&(r.fixed=i),r.fixed===!0&&(r.fixed="start"),r.fixed===o)if(r.children)if(o==="start")for(let u=r.children.length-1;u>=0;u--)l(r.children[u],o,o);else for(let u=0;u=0;u--)l(r.children[u],o);else for(let u=0;u=0;r--)l(e[r],"start");for(let r=0;r=0;r--)n=Qe(e[r],n)}function qe(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!e)return a;if(e.children){e.fixedOffset=a;for(const l of e.children)a=qe(l,a)}else e.fixed&&e.fixed!=="end"&&(e.fixedOffset=a,a+=parseFloat(e.width||"0")||0);return a}function Qe(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!e)return a;if(e.children){e.fixedEndOffset=a;for(const l of e.children)a=Qe(l,a)}else e.fixed==="end"&&(e.fixedEndOffset=a,a+=parseFloat(e.width||"0")||0);return a}function Ut(e,a){const l=[];let t=0;const n=Wt(e);for(;n.size()>0;){let o=n.count();const i=[];let u=1;for(;o>0;){const{element:c,priority:g}=n.dequeue(),v=a-t-Te(c);if(i.push({...c,rowspan:v??1,colspan:c.children?Se(c).length:1}),c.children)for(const f of c.children){const p=g%1+u/Math.pow(10,t+2);n.enqueue(f,t+v+p)}u+=1,o-=1}t+=1,l.push(i)}return{columns:e.map(o=>Se(o)).flat(),headers:l}}function Ye(e){const a=[];for(const l of e){const t={...Kt(l),...l},n=t.key??(typeof t.value=="string"?t.value:null),r=t.value??n??null,o={...t,key:n,value:r,sortable:t.sortable??(t.key!=null||!!t.sort),children:t.children?Ye(t.children):void 0};a.push(o)}return a}function qt(e,a){const l=U([]),t=U([]),n=U({}),r=U({}),o=U({});xt(()=>{var h,d,b;const c=(e.headers||Object.keys(e.items[0]??{}).map(s=>({key:s,title:St(s)}))).slice(),g=Ue(c);(h=a==null?void 0:a.groupBy)!=null&&h.value.length&&!g.has("data-table-group")&&c.unshift({key:"data-table-group",title:"Group"}),(d=a==null?void 0:a.showSelect)!=null&&d.value&&!g.has("data-table-select")&&c.unshift({key:"data-table-select"}),(b=a==null?void 0:a.showExpand)!=null&&b.value&&!g.has("data-table-expand")&&c.push({key:"data-table-expand"});const v=Ye(c);zt(v);const f=Math.max(...v.map(s=>Te(s)))+1,p=Ut(v,f);l.value=p.headers,t.value=p.columns;const y=p.headers.flat(1);for(const s of y)s.key&&(s.sortable&&(s.sort&&(n.value[s.key]=s.sort),s.sortRaw&&(r.value[s.key]=s.sortRaw)),s.filter&&(o.value[s.key]=s.filter))});const i={headers:l,columns:t,sortFunctions:n,sortRawFunctions:r,filterFunctions:o};return J(Ke,i),i}function fe(){const e=Z(Ke);if(!e)throw new Error("Missing headers!");return e}const Qt={showSelectAll:!1,allSelected:()=>[],select:e=>{var t;let{items:a,value:l}=e;return new Set(l?[(t=a[0])==null?void 0:t.value]:[])},selectAll:e=>{let{selected:a}=e;return a}},Ze={showSelectAll:!0,allSelected:e=>{let{currentPage:a}=e;return a},select:e=>{let{items:a,value:l,selected:t}=e;for(const n of a)l?t.add(n.value):t.delete(n.value);return t},selectAll:e=>{let{value:a,currentPage:l,selected:t}=e;return Ze.select({items:l,value:a,selected:t})}},Yt={showSelectAll:!0,allSelected:e=>{let{allItems:a}=e;return a},select:e=>{let{items:a,value:l,selected:t}=e;for(const n of a)l?t.add(n.value):t.delete(n.value);return t},selectAll:e=>{let{value:a,allItems:l}=e;return new Set(a?l.map(t=>t.value):[])}},Zt=_({showSelect:Boolean,selectStrategy:{type:[String,Object],default:"page"},modelValue:{type:Array,default:()=>[]},valueComparator:Function},"DataTable-select"),Je=Symbol.for("vuetify:data-table-selection");function Jt(e,a){let{allItems:l,currentPage:t}=a;const n=q(e,"modelValue",e.modelValue,s=>{const x=e.valueComparator;return x?new Set(X(s).map(D=>{var P;return((P=l.value.find(F=>x(D,F.value)))==null?void 0:P.value)??D})):new Set(X(s).map(D=>{var P,F;return ht(D)?((P=l.value.find(V=>D===V.value))==null?void 0:P.value)??D:((F=l.value.find(V=>He(D,V.value)))==null?void 0:F.value)??D}))},s=>[...s.values()]),r=I(()=>l.value.filter(s=>s.selectable)),o=I(()=>j(t).filter(s=>s.selectable)),i=I(()=>{if(typeof e.selectStrategy=="object")return e.selectStrategy;switch(e.selectStrategy){case"single":return Qt;case"all":return Yt;case"page":default:return Ze}}),u=Pt(null);function c(s){return X(s).every(x=>n.value.has(x.value))}function g(s){return X(s).some(x=>n.value.has(x.value))}function v(s,x){const D=i.value.select({items:s,value:x,selected:new Set(n.value)});n.value=D}function f(s,x,D){const P=[],F=j(t);if(x=x??F.findIndex(V=>V.value===s.value),e.selectStrategy!=="single"&&(D!=null&&D.shiftKey)&&u.value!==null){const[V,W]=[u.value,x].sort((k,m)=>k-m);P.push(...F.slice(V,W+1).filter(k=>k.selectable))}else P.push(s),u.value=x;v(P,!c([s]))}function p(s){const x=i.value.selectAll({value:s,allItems:r.value,currentPage:o.value,selected:new Set(n.value)});n.value=x}const y=I(()=>n.value.size>0),h=I(()=>{const s=i.value.allSelected({allItems:r.value,currentPage:o.value});return!!s.length&&c(s)}),d=N(()=>i.value.showSelectAll),b={toggleSelect:f,select:v,selectAll:p,isSelected:c,isSomeSelected:g,someSelected:y,allSelected:h,showSelectAll:d,lastSelectedIndex:u,selectStrategy:i};return J(Je,b),b}function ge(){const e=Z(Je);if(!e)throw new Error("Missing selection!");return e}const Xt=_({initialSortOrder:{type:String,default:"asc",validator:e=>!e||["asc","desc"].includes(e)},sortBy:{type:Array,default:()=>[]},customKeySort:Object,multiSort:{type:[Boolean,Object],default:!1},mustSort:Boolean},"DataTable-sort"),Xe=Symbol.for("vuetify:data-table-sort");function ea(e){const a=N(()=>e.initialSortOrder),l=q(e,"sortBy"),t=N(()=>e.mustSort),n=N(()=>e.multiSort);return{initialSortOrder:a,sortBy:l,multiSort:n,mustSort:t}}function ta(e,a){if(!bt(e))return{active:!!e};const{key:l,mode:t,modifier:n}=e,r=n==="alt"&&(a==null?void 0:a.altKey)||n==="shift"&&(a==null?void 0:a.shiftKey);return{active:!l||(a==null?void 0:a.ctrlKey)||(a==null?void 0:a.metaKey)||!1,mode:r?t==="append"?"prepend":"append":t}}function aa(e){const{initialSortOrder:a,sortBy:l,mustSort:t,multiSort:n,page:r}=e,o=function(c,g){let v=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(c.key==null)return;let f=l.value.map(d=>({...d}))??[];const p=f.find(d=>d.key===c.key),y=a.value,h=a.value==="desc"?"asc":"desc";if(p)p.order===h?v||t.value&&f.length===1?p.order=a.value:f=f.filter(d=>d.key!==c.key):p.order=h;else{const{active:d,mode:b}=ta(n.value,g);d?b==="prepend"?f.unshift({key:c.key,order:y}):f.push({key:c.key,order:y}):f=[{key:c.key,order:y}]}l.value=f,r&&(r.value=1)};function i(c){return!!l.value.find(g=>g.key===c.key)}const u={sortBy:l,toggleSort:o,isSorted:i};return J(Xe,u),u}function et(){const e=Z(Xe);if(!e)throw new Error("Missing sort!");return e}function la(e,a,l,t){const n=ce();return{sortedItems:I(()=>{var o,i;return l.value.length?na(a.value,l.value,n.current.value,{transform:t==null?void 0:t.transform,sortFunctions:{...e.customKeySort,...(o=t==null?void 0:t.sortFunctions)==null?void 0:o.value},sortRawFunctions:(i=t==null?void 0:t.sortRawFunctions)==null?void 0:i.value}):a.value})}}function na(e,a,l,t){const n=new Intl.Collator(l,{sensitivity:"accent",usage:"sort"});return e.map(o=>[o,t!=null&&t.transform?t.transform(o):o]).sort((o,i)=>{var u,c;for(let g=0;gs!=null?s.toString().toLocaleLowerCase():s),y!==h))return ne(y)&&ne(h)?0:ne(y)?-1:ne(h)?1:!isNaN(y)&&!isNaN(h)?Number(y)-Number(h):n.compare(y,h)}return 0}).map(o=>{let[i]=o;return i})}const tt=_({color:String,disableSort:Boolean,fixedHeader:Boolean,multiSort:Boolean,initialSortOrder:String,sortIcon:{type:$},sortAscIcon:{type:$,default:"$sortAsc"},sortDescIcon:{type:$,default:"$sortDesc"},headerProps:{type:Object},sticky:Boolean,...De(),...ke(),...Ot()},"VDataTableHeaders"),Re=Y()({name:"VDataTableHeaders",props:tt(),setup(e,a){let{slots:l}=a;const{t}=ce(),{toggleSort:n,sortBy:r,isSorted:o}=et(),{someSelected:i,allSelected:u,selectAll:c,showSelectAll:g}=ge(),{columns:v,headers:f}=fe(),{loaderClasses:p}=Ct(e);function y(k,m){if(!(e.sticky||e.fixedHeader)&&!k.fixed)return;const E=typeof k.fixed=="string"?k.fixed:k.fixed?"start":"none";return{position:"sticky",left:E==="start"?R(k.fixedOffset):void 0,right:E==="end"?R(k.fixedEndOffset):void 0,top:e.sticky||e.fixedHeader?`calc(var(--v-table-header-height) * ${m})`:void 0}}function h(k,m){k.key==="Enter"&&!e.disableSort&&n(m,k)}function d(k){const m=r.value.find(E=>E.key===k.key);switch(m==null?void 0:m.order){case"asc":return e.sortAscIcon;case"desc":return e.sortDescIcon;default:return e.sortIcon||(e.initialSortOrder==="asc"?e.sortAscIcon:e.sortDescIcon)}}const{backgroundColorClasses:b,backgroundColorStyles:s}=Ft(()=>e.color),{displayClasses:x,mobile:D}=we(e),P=I(()=>({headers:f.value,columns:v.value,toggleSort:n,isSorted:o,sortBy:r.value,someSelected:i.value,allSelected:u.value,selectAll:c,getSortIcon:d})),F=I(()=>["v-data-table__th",{"v-data-table__th--sticky":e.sticky||e.fixedHeader},x.value,p.value]),V=k=>{let{column:m,x:E,y:T}=k;const B=m.key==="data-table-select"||m.key==="data-table-expand",O=m.key==="data-table-group"&&m.width===0&&!m.title,L=H(e.headerProps??{},m.headerProps??{});return w(ee,H({tag:"th",align:m.align,class:[{"v-data-table__th--sortable":m.sortable&&!e.disableSort,"v-data-table__th--sorted":o(m),"v-data-table__th--fixed":m.fixed},...F.value],style:{width:R(m.width),minWidth:R(m.minWidth),maxWidth:R(m.maxWidth),...y(m,T)},colspan:m.colspan,rowspan:m.rowspan,fixed:m.fixed,nowrap:m.nowrap,lastFixed:m.lastFixed,firstFixedEnd:m.firstFixedEnd,noPadding:B,empty:O,tabindex:m.sortable?0:void 0,onClick:m.sortable?C=>n(m,C):void 0,onKeydown:m.sortable?C=>h(C,m):void 0},L),{default:()=>{var z;const C=`header.${m.key}`,M={column:m,selectAll:c,isSorted:o,toggleSort:n,sortBy:r.value,someSelected:i.value,allSelected:u.value,getSortIcon:d};return l[C]?l[C](M):O?"":m.key==="data-table-select"?((z=l["header.data-table-select"])==null?void 0:z.call(l,M))??(g.value&&w(de,{color:e.color,density:e.density,modelValue:u.value,indeterminate:i.value&&!u.value,"onUpdate:modelValue":c},null)):S("div",{class:"v-data-table-header__content"},[S("span",null,[m.title]),m.sortable&&!e.disableSort&&w(_e,{key:"icon",class:"v-data-table-header__sort-icon",icon:d(m)},null),e.multiSort&&o(m)&&S("div",{key:"badge",class:ie(["v-data-table-header__sort-badge",...b.value]),style:wt(s.value)},[r.value.findIndex(me=>me.key===m.key)+1])])}})},W=()=>{const k=I(()=>v.value.filter(T=>(T==null?void 0:T.sortable)&&!e.disableSort)),m=v.value.find(T=>T.key==="data-table-select"),E=I({get:()=>k.value.filter(T=>{let{key:B}=T;return r.value.some(O=>O.key===B)}),set:T=>{const B=X(T),O=r.value.map(C=>C.key);B.filter(C=>{let{key:M}=C;return!O.includes(M)}).forEach(C=>n(C)),kt(()=>r.value=r.value.filter(C=>{let{key:M}=C;return B.some(z=>z.key===M)}))}});return w(ee,H({tag:"th",class:[...F.value],colspan:f.value.length+1},e.headerProps),{default:()=>[S("div",{class:"v-data-table-header__content"},[w(Le,{modelValue:E.value,"onUpdate:modelValue":T=>E.value=T,chips:!0,color:e.color,class:"v-data-table__td-sort-select",clearable:!0,density:"default",items:k.value,label:t("$vuetify.dataTable.sortBy"),multiple:e.multiSort,variant:"underlined",returnObject:!0,"onClick:clear":()=>r.value=[]},{append:m?()=>w(de,{color:e.color,density:"compact",modelValue:u.value,indeterminate:i.value&&!u.value,"onUpdate:modelValue":()=>c(!u.value)},null):void 0,chip:T=>{let{item:B}=T;return w(_t,{onClick:B.raw.sortable?()=>n(B.raw,void 0,!0):void 0,onMousedown:O=>{O.preventDefault(),O.stopPropagation()}},{default:()=>[B.title,w(_e,{class:ie(["v-data-table__td-sort-icon",o(B.raw)&&"v-data-table__td-sort-icon-active"]),icon:d(B.raw),size:"small"},null)]})}})])]})};te(()=>D.value?S("tr",null,[w(W,null,null)]):S(Q,null,[l.headers?l.headers(P.value):f.value.map((k,m)=>S("tr",null,[k.map((E,T)=>w(V,{column:E,x:T,y:m},null))])),e.loading&&S("tr",{class:"v-data-table-progress"},[S("th",{colspan:v.value.length},[w(Bt,{name:"v-data-table-progress",absolute:!0,active:!0,color:typeof e.loading=="boolean"||e.loading==="true"?e.color:e.loading,indeterminate:!0},{default:l.loader})])])]))}}),ra=_({groupBy:{type:Array,default:()=>[]}},"DataTable-group"),at=Symbol.for("vuetify:data-table-group");function oa(e){return{groupBy:q(e,"groupBy")}}function sa(e){const{disableSort:a,groupBy:l,sortBy:t}=e,n=U(new Set),r=I(()=>l.value.map(g=>({...g,order:g.order??!1})).concat(a!=null&&a.value?[]:t.value));function o(g){return n.value.has(g.id)}function i(g){const v=new Set(n.value);o(g)?v.delete(g.id):v.add(g.id),n.value=v}function u(g){function v(f){const p=[];for(const y of f.items)"type"in y&&y.type==="group"?p.push(...v(y)):p.push(y);return[...new Set(p)]}return v({items:g})}const c={sortByWithGroups:r,toggleGroup:i,opened:n,groupBy:l,extractRows:u,isGroupOpen:o};return J(at,c),c}function lt(){const e=Z(at);if(!e)throw new Error("Missing group!");return e}function ua(e,a){if(!e.length)return[];const l=new Map;for(const t of e){const n=ue(t.raw,a);l.has(n)||l.set(n,[]),l.get(n).push(t)}return l}function nt(e,a){let l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,t=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"root";if(!a.length)return[];const n=ua(e,a[0]),r=[],o=a.slice(1);return n.forEach((i,u)=>{const c=a[0],g=`${t}_${c}_${u}`;r.push({depth:l,id:g,key:c,value:u,items:o.length?nt(i,o,l+1,g):i,type:"group"})}),r}function rt(e,a,l){const t=[];for(const n of e)"type"in n&&n.type==="group"?(n.value!=null&&t.push(n),(a.has(n.id)||n.value==null)&&(t.push(...rt(n.items,a,l)),l&&t.push({...n,type:"group-summary"}))):t.push(n);return t}function ia(e,a,l,t){const n=I(()=>a.value.length?nt(j(e),a.value.map(o=>o.key)):[]),r=I(()=>a.value.length?rt(n.value,l.value,j(t)):j(e));return{groups:n,flatItems:r}}const ot=_({item:{type:Object,required:!0},groupCollapseIcon:{type:$,default:"$tableGroupCollapse"},groupExpandIcon:{type:$,default:"$tableGroupExpand"},...De()},"VDataTableGroupHeaderRow"),da=Y()({name:"VDataTableGroupHeaderRow",props:ot(),setup(e,a){let{slots:l}=a;const{isGroupOpen:t,toggleGroup:n,extractRows:r}=lt(),{isSelected:o,isSomeSelected:i,select:u}=ge(),{columns:c}=fe(),g=I(()=>r([e.item])),v=N(()=>c.value.length-(c.value.some(f=>f.key==="data-table-select")?1:0));return()=>S("tr",{class:"v-data-table-group-header-row",style:{"--v-data-table-group-header-row-depth":e.item.depth}},[c.value.map(f=>{var p,y;if(f.key==="data-table-group"){const h=t(e.item)?e.groupCollapseIcon:e.groupExpandIcon,d=()=>n(e.item);return((p=l["data-table-group"])==null?void 0:p.call(l,{item:e.item,count:g.value.length,props:{icon:h,onClick:d}}))??w(ee,{class:"v-data-table-group-header-row__column",colspan:v.value},{default:()=>[w(je,{size:"small",variant:"text",icon:h,onClick:d},null),S("span",null,[e.item.value]),S("span",null,[Oe("("),g.value.length,Oe(")")])]})}else if(f.key==="data-table-select"){const h=g.value.filter(x=>x.selectable),d=h.length>0&&o(h),b=i(h)&&!d,s=x=>u(h,x);return((y=l["data-table-select"])==null?void 0:y.call(l,{props:{modelValue:d,indeterminate:b,"onUpdate:modelValue":s}}))??w(ee,{class:"v-data-table__td--select-row",noPadding:!0},{default:()=>[w(de,{density:e.density,disabled:h.length===0,modelValue:d,indeterminate:b,"onUpdate:modelValue":s},null)]})}return""})])}}),ca=_({expandOnClick:Boolean,showExpand:Boolean,expanded:{type:Array,default:()=>[]}},"DataTable-expand"),st=Symbol.for("vuetify:datatable:expanded");function fa(e){const a=N(()=>e.expandOnClick),l=q(e,"expanded",e.expanded,i=>new Set(i),i=>[...i.values()]);function t(i,u){const c=new Set(l.value),g=oe(i.value);if(u)c.add(g);else{const v=[...l.value].find(f=>oe(f)===g);c.delete(v)}l.value=c}function n(i){const u=oe(i.value);return[...l.value].some(c=>oe(c)===u)}function r(i){t(i,!n(i))}const o={expand:t,expanded:l,expandOnClick:a,isExpanded:n,toggleExpand:r};return J(st,o),o}function ut(){const e=Z(st);if(!e)throw new Error("foo");return e}const it=_({color:String,index:Number,item:Object,cellProps:[Object,Function],collapseIcon:{type:$,default:"$collapse"},expandIcon:{type:$,default:"$expand"},onClick:pe(),onContextmenu:pe(),onDblclick:pe(),...De(),...ke()},"VDataTableRow"),ga=Y()({name:"VDataTableRow",props:it(),setup(e,a){let{slots:l}=a;const{displayClasses:t,mobile:n}=we(e,"v-data-table__tr"),{isSelected:r,toggleSelect:o,someSelected:i,allSelected:u,selectAll:c}=ge(),{isExpanded:g,toggleExpand:v}=ut(),{toggleSort:f,sortBy:p,isSorted:y}=et(),{columns:h}=fe();te(()=>S("tr",{class:ie(["v-data-table__tr",{"v-data-table__tr--clickable":!!(e.onClick||e.onContextmenu||e.onDblclick)},t.value]),onClick:e.onClick,onContextmenu:e.onContextmenu,onDblclick:e.onDblclick},[e.item&&h.value.map((d,b)=>{const s=e.item,x=`item.${d.key}`,D=`header.${d.key}`,P={index:e.index,item:s.raw,internalItem:s,value:ue(s.columns,d.key),column:d,isSelected:r,toggleSelect:o,isExpanded:g,toggleExpand:v},F={column:d,selectAll:c,isSorted:y,toggleSort:f,sortBy:p.value,someSelected:i.value,allSelected:u.value,getSortIcon:()=>""},V=typeof e.cellProps=="function"?e.cellProps({index:P.index,item:P.item,internalItem:P.internalItem,value:P.value,column:d}):e.cellProps,W=typeof d.cellProps=="function"?d.cellProps({index:P.index,item:P.item,internalItem:P.internalItem,value:P.value}):d.cellProps,k=d.key==="data-table-select"||d.key==="data-table-expand",m=d.key==="data-table-group"&&d.width===0&&!d.title;return w(ee,H({align:d.align,indent:d.indent,class:{"v-data-table__td--expanded-row":d.key==="data-table-expand","v-data-table__td--select-row":d.key==="data-table-select"},fixed:d.fixed,fixedOffset:d.fixedOffset,fixedEndOffset:d.fixedEndOffset,lastFixed:d.lastFixed,firstFixedEnd:d.firstFixedEnd,maxWidth:n.value?void 0:d.maxWidth,noPadding:k,empty:m,nowrap:d.nowrap,width:n.value?void 0:d.width},V,W),{default:()=>{var T,B,O,L;if(d.key==="data-table-select")return((T=l["item.data-table-select"])==null?void 0:T.call(l,{...P,props:{color:e.color,disabled:!s.selectable,modelValue:r([s]),onClick:se(()=>o(s),["stop"])}}))??w(de,{color:e.color,disabled:!s.selectable,density:e.density,modelValue:r([s]),onClick:se(C=>o(s,e.index,C),["stop"])},null);if(d.key==="data-table-expand")return((B=l["item.data-table-expand"])==null?void 0:B.call(l,{...P,props:{icon:g(s)?e.collapseIcon:e.expandIcon,size:"small",variant:"text",onClick:se(()=>v(s),["stop"])}}))??w(je,{icon:g(s)?e.collapseIcon:e.expandIcon,size:"small",variant:"text",onClick:se(()=>v(s),["stop"])},null);if(l[x]&&!n.value)return l[x](P);const E=It(P.value);return n.value?S(Q,null,[S("div",{class:"v-data-table__td-title"},[((O=l[D])==null?void 0:O.call(l,F))??d.title]),S("div",{class:"v-data-table__td-value"},[((L=l[x])==null?void 0:L.call(l,P))??E])]):E}})})]))}}),dt=_({color:String,loading:[Boolean,String],loadingText:{type:String,default:"$vuetify.dataIterator.loadingText"},hideNoData:Boolean,items:{type:Array,default:()=>[]},noDataText:{type:String,default:"$vuetify.noDataText"},rowProps:[Object,Function],cellProps:[Object,Function],...xe(it(),["collapseIcon","expandIcon","density"]),...xe(ot(),["groupCollapseIcon","groupExpandIcon","density"]),...ke()},"VDataTableRows"),$e=Y()({name:"VDataTableRows",inheritAttrs:!1,props:dt(),setup(e,a){let{attrs:l,slots:t}=a;const{columns:n}=fe(),{expandOnClick:r,toggleExpand:o,isExpanded:i}=ut(),{isSelected:u,toggleSelect:c}=ge(),{toggleGroup:g,isGroupOpen:v}=lt(),{t:f}=ce(),{mobile:p}=we(e);return te(()=>{var h,d;const y=xe(e,["groupCollapseIcon","groupExpandIcon","density"]);return e.loading&&(!e.items.length||t.loading)?S("tr",{class:"v-data-table-rows-loading",key:"loading"},[S("td",{colspan:n.value.length},[((h=t.loading)==null?void 0:h.call(t))??f(e.loadingText)])]):!e.loading&&!e.items.length&&!e.hideNoData?S("tr",{class:"v-data-table-rows-no-data",key:"no-data"},[S("td",{colspan:n.value.length},[((d=t["no-data"])==null?void 0:d.call(t))??f(e.noDataText)])]):S(Q,null,[e.items.map((b,s)=>{var P,F;if(b.type==="group"){const V={index:s,item:b,columns:n.value,isExpanded:i,toggleExpand:o,isSelected:u,toggleSelect:c,toggleGroup:g,isGroupOpen:v};return t["group-header"]?t["group-header"](V):w(da,H({key:`group-header_${b.id}`,item:b},Be(l,":groupHeader",()=>V),y),t)}if(b.type==="group-summary"){const V={index:s,item:b,columns:n.value,toggleGroup:g};return((P=t["group-summary"])==null?void 0:P.call(t,V))??""}const x={index:b.virtualIndex??s,item:b.raw,internalItem:b,columns:n.value,isExpanded:i,toggleExpand:o,isSelected:u,toggleSelect:c},D={...x,props:H({key:`item_${b.key??b.index}`,onClick:r.value?()=>{o(b)}:void 0,index:s,item:b,color:e.color,cellProps:e.cellProps,collapseIcon:e.collapseIcon,expandIcon:e.expandIcon,density:e.density,mobile:p.value},Be(l,":row",()=>x),typeof e.rowProps=="function"?e.rowProps({item:x.item,index:x.index,internalItem:x.internalItem}):e.rowProps)};return S(Q,{key:D.props.key},[t.item?t.item(D):w(ga,D.props,t),i(b)&&((F=t["expanded-row"])==null?void 0:F.call(t,x))])})])}),{}}}),ma=_({items:{type:Array,default:()=>[]},itemValue:{type:[String,Array,Function],default:"id"},itemSelectable:{type:[String,Array,Function],default:null},rowProps:[Object,Function],cellProps:[Object,Function],returnObject:Boolean},"DataTable-items");function va(e,a,l,t){const n=e.returnObject?a:re(a,e.itemValue),r=re(a,e.itemSelectable,!0),o=t.reduce((i,u)=>(u.key!=null&&(i[u.key]=re(a,u.value)),i),{});return{type:"item",key:e.returnObject?re(a,e.itemValue):n,index:l,value:n,selectable:r,columns:o,raw:a}}function ya(e,a,l){return a.map((t,n)=>va(e,t,n,l))}function ha(e,a){return{items:I(()=>ya(e,e.items,a.value))}}function ba(e){let{page:a,itemsPerPage:l,sortBy:t,groupBy:n,search:r}=e;const o=Ge("VDataTable"),i=()=>({page:a.value,itemsPerPage:l.value,sortBy:t.value,groupBy:n.value,search:r.value});let u=null;Ie(i,c=>{He(u,c)||(u&&u.search!==c.search&&(a.value=1),o.emit("update:options",c),u=c)},{deep:!0,immediate:!0})}const pa=_({...dt(),hideDefaultBody:Boolean,hideDefaultFooter:Boolean,hideDefaultHeader:Boolean,width:[String,Number],search:String,...ca(),...ra(),...jt(),...ma(),...Zt(),...Xt(),...Pe(tt(),["multiSort","initialSortOrder"]),...At()},"DataTable"),xa=_({...Nt(),...pa(),...Vt(),...We()},"VDataTable"),Ca=Y()({name:"VDataTable",props:xa(),emits:{"update:modelValue":e=>!0,"update:page":e=>!0,"update:itemsPerPage":e=>!0,"update:sortBy":e=>!0,"update:options":e=>!0,"update:groupBy":e=>!0,"update:expanded":e=>!0,"update:currentItems":e=>!0},setup(e,a){let{attrs:l,slots:t}=a;const{groupBy:n}=oa(e),{initialSortOrder:r,sortBy:o,multiSort:i,mustSort:u}=ea(e),{page:c,itemsPerPage:g}=Rt(e),{disableSort:v}=Dt(e),{columns:f,headers:p,sortFunctions:y,sortRawFunctions:h,filterFunctions:d}=qt(e,{groupBy:n,showSelect:N(()=>e.showSelect),showExpand:N(()=>e.showExpand)}),{items:b}=ha(e,f),s=N(()=>e.search),{filteredItems:x}=Tt(e,b,s,{transform:A=>A.columns,customKeyFilter:d}),{toggleSort:D}=aa({initialSortOrder:r,sortBy:o,multiSort:i,mustSort:u,page:c}),{sortByWithGroups:P,opened:F,extractRows:V,isGroupOpen:W,toggleGroup:k}=sa({groupBy:n,sortBy:o,disableSort:v}),{sortedItems:m}=la(e,x,P,{transform:A=>({...A.raw,...A.columns}),sortFunctions:y,sortRawFunctions:h}),E=I(()=>e.pageBy==="auto"?e.groupBy.length?"group":"item":e.pageBy),{pageCount:T,setItemsPerPage:B,paginatedItems:O}=Lt({pageBy:E,sortedItems:m,paginate:A=>{const ve=I(()=>j(A).length),{startIndex:ye,stopIndex:he,pageCount:K,setItemsPerPage:ae}=$t({page:c,itemsPerPage:g,itemsLength:ve}),{paginatedItems:le}=Ht({items:A,startIndex:ye,stopIndex:he,itemsPerPage:g});return{paginatedItems:le,pageCount:K,setItemsPerPage:ae}},group:A=>ia(A,n,F,()=>!!t["group-summary"])}),L=I(()=>V(O.value)),{isSelected:C,select:M,selectAll:z,toggleSelect:me,someSelected:ct,allSelected:ft}=Jt(e,{allItems:b,currentPage:L}),{isExpanded:gt,toggleExpand:mt}=fa(e);ba({page:c,itemsPerPage:g,sortBy:o,groupBy:n,search:s}),pt({VDataTableRows:{hideNoData:N(()=>e.hideNoData),noDataText:N(()=>e.noDataText),loading:N(()=>e.loading),loadingText:N(()=>e.loadingText)}});const G=I(()=>({page:c.value,itemsPerPage:g.value,sortBy:o.value,pageCount:T.value,toggleSort:D,setItemsPerPage:B,someSelected:ct.value,allSelected:ft.value,isSelected:C,select:M,selectAll:z,toggleSelect:me,isExpanded:gt,toggleExpand:mt,isGroupOpen:W,toggleGroup:k,items:L.value.map(A=>A.raw),internalItems:L.value,groupedItems:O.value,columns:f.value,headers:p.value}));return te(()=>{const A=Ne.filterProps(e),ve=Re.filterProps(Pe(e,["multiSort"])),ye=$e.filterProps(e),he=Ae.filterProps(e);return w(Ae,H({class:["v-data-table",{"v-data-table--show-select":e.showSelect,"v-data-table--loading":e.loading},e.class],style:e.style},he,{fixedHeader:e.fixedHeader||e.sticky}),{top:()=>{var K;return(K=t.top)==null?void 0:K.call(t,G.value)},default:()=>{var K,ae,le,Ve,Ce,Fe;return t.default?t.default(G.value):S(Q,null,[(K=t.colgroup)==null?void 0:K.call(t,G.value),!e.hideDefaultHeader&&S("thead",{key:"thead"},[w(Re,H(ve,{multiSort:!!e.multiSort}),t)]),(ae=t.thead)==null?void 0:ae.call(t,G.value),!e.hideDefaultBody&&S("tbody",null,[(le=t["body.prepend"])==null?void 0:le.call(t,G.value),t.body?t.body(G.value):w($e,H(l,ye,{items:O.value}),t),(Ve=t["body.append"])==null?void 0:Ve.call(t,G.value)]),(Ce=t.tbody)==null?void 0:Ce.call(t,G.value),(Fe=t.tfoot)==null?void 0:Fe.call(t,G.value)])},bottom:()=>t.bottom?t.bottom(G.value):!e.hideDefaultFooter&&S(Q,null,[w(Et,null,null),w(Ne,A,{prepend:t["footer.prepend"]})])})}),{}}});export{Ca as V}; diff --git a/assets/VDataTable-Cl7qiDOP.css b/assets/VDataTable-Cl7qiDOP.css new file mode 100644 index 0000000..17cf436 --- /dev/null +++ b/assets/VDataTable-Cl7qiDOP.css @@ -0,0 +1 @@ +.v-data-table{width:100%}.v-data-table__table{width:100%;border-collapse:separate;border-spacing:0}.v-data-table__tr--focus{border:1px dotted black}.v-data-table__tr--clickable{cursor:pointer}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--align-end,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--align-end,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--align-end,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--align-end{text-align:end}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--align-end .v-data-table-header__content,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--align-end .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--align-end .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--align-end .v-data-table-header__content{flex-direction:row-reverse}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--align-center,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--align-center,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--align-center,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--align-center{text-align:center}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--align-center .v-data-table-header__content,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--align-center .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--align-center .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--align-center .v-data-table-header__content{justify-content:center}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--no-padding,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--no-padding,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--no-padding,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--no-padding{padding:0 8px}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--empty,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--empty,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--empty,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--empty{padding:0}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--nowrap,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--nowrap,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--nowrap,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--nowrap{text-overflow:ellipsis;text-wrap:nowrap;overflow:hidden}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--nowrap .v-data-table-header__content,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--nowrap .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--nowrap .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--nowrap .v-data-table-header__content{display:contents}.v-data-table .v-table__wrapper>table>thead>tr>th,.v-data-table .v-table__wrapper>table tbody>tr>th{align-items:center}.v-data-table .v-table__wrapper>table>thead>tr>th.v-data-table__th--fixed,.v-data-table .v-table__wrapper>table tbody>tr>th.v-data-table__th--fixed{position:sticky}.v-data-table .v-table__wrapper>table>thead>tr>th.v-data-table__th--sortable:hover,.v-data-table .v-table__wrapper>table>thead>tr>th.v-data-table__th--sortable:focus,.v-data-table .v-table__wrapper>table tbody>tr>th.v-data-table__th--sortable:hover,.v-data-table .v-table__wrapper>table tbody>tr>th.v-data-table__th--sortable:focus{cursor:pointer;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-data-table .v-table__wrapper>table>thead>tr>th:not(.v-data-table__th--sorted) .v-data-table-header__sort-icon,.v-data-table .v-table__wrapper>table tbody>tr>th:not(.v-data-table__th--sorted) .v-data-table-header__sort-icon{opacity:0}.v-data-table .v-table__wrapper>table>thead>tr>th:not(.v-data-table__th--sorted):hover .v-data-table-header__sort-icon,.v-data-table .v-table__wrapper>table>thead>tr>th:not(.v-data-table__th--sorted):focus-visible .v-data-table-header__sort-icon,.v-data-table .v-table__wrapper>table tbody>tr>th:not(.v-data-table__th--sorted):hover .v-data-table-header__sort-icon,.v-data-table .v-table__wrapper>table tbody>tr>th:not(.v-data-table__th--sorted):focus-visible .v-data-table-header__sort-icon{opacity:.5}.v-data-table .v-table__wrapper>table>thead>tr.v-data-table__tr--mobile>td,.v-data-table .v-table__wrapper>table tbody>tr.v-data-table__tr--mobile>td{height:fit-content}.v-data-table-column--fixed,.v-data-table-column--fixed-end,.v-data-table__th--sticky{background-color:rgb(var(--v-theme-surface));background-image:inherit;position:sticky!important;left:0;z-index:1}.v-data-table-column--fixed-end{left:unset;right:0}.v-data-table-column--last-fixed{border-right:1px solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-data-table-column--first-fixed-end{border-left:1px solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-data-table.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th.v-data-table-column--fixed,.v-data-table.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th.v-data-table-column--fixed-end{z-index:2}.v-data-table-group-header-row td{background:rgba(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface))}.v-data-table-group-header-row td>span{padding-left:5px}.v-data-table--loading:not(.v-table--fixed-header)>.v-table__wrapper>table>thead>tr>.v-data-table__td:not(.v-data-table-column--fixed),.v-data-table--loading:not(.v-table--fixed-header)>.v-table__wrapper>table>thead>tr>.v-data-table__td:not(.v-data-table-column--fixed-end),.v-data-table--loading:not(.v-table--fixed-footer)>.v-table__wrapper>table>tfoot>tr>.v-data-table__td:not(.v-data-table-column--fixed),.v-data-table--loading:not(.v-table--fixed-footer)>.v-table__wrapper>table>tfoot>tr>.v-data-table__td:not(.v-data-table-column--fixed-end),.v-data-table--loading>.v-table__wrapper>table>tbody>tr>.v-data-table__td:not(.v-data-table-column--fixed),.v-data-table--loading>.v-table__wrapper>table>tbody>tr>.v-data-table__td:not(.v-data-table-column--fixed-end){opacity:var(--v-disabled-opacity)}.v-data-table-group-header-row__column{padding-inline-start:calc(var(--v-data-table-group-header-row-depth) * 16px)!important}.v-data-table-header__content{display:flex;align-items:center}.v-data-table-header__sort-icon{margin-inline:0px}.v-data-table-header__sort-badge{display:inline-flex;justify-content:center;align-items:center;font-size:.875rem;padding:4px;border-radius:50%;background:rgba(var(--v-border-color),var(--v-border-opacity));min-width:20px;min-height:20px;width:20px;height:20px}.v-data-table-progress>th{border:none!important;height:auto!important;padding:0!important}.v-data-table-progress__loader{position:relative}.v-data-table-rows-loading,.v-data-table-rows-no-data{text-align:center}.v-data-table__tr--mobile>.v-data-table__td--expanded-row{grid-template-columns:auto;justify-content:center}.v-data-table__tr--mobile>.v-data-table__td--select-row{grid-template-columns:0;justify-content:end}.v-data-table__tr--mobile>td{align-items:center;column-gap:4px;display:grid;grid-template-columns:repeat(2,1fr);min-height:var(--v-table-row-height)}.v-data-table__tr--mobile>td:not(:last-child){border-bottom:0!important}.v-data-table__td-title{font-weight:500;text-align:start}.v-data-table__td-value{text-align:end}.v-data-table__td-sort-icon{color:rgba(var(--v-theme-on-surface),var(--v-disabled-opacity))}.v-data-table__td-sort-icon-active{color:rgba(var(--v-theme-on-surface))}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-data-table-footer{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding:8px 4px}.v-data-table-footer__items-per-page{align-items:center;display:flex;justify-content:center}.v-data-table-footer__items-per-page>span{padding-inline-end:8px}.v-data-table-footer__items-per-page>.v-select{width:90px}.v-data-table-footer__info{display:flex;justify-content:flex-end;min-width:116px;padding:0 16px}.v-data-table-footer__paginationz{align-items:center;display:flex;margin-inline-start:16px}.v-data-table-footer__page{padding:0 8px} diff --git a/assets/VDatePicker-cLZU-Ed4.js b/assets/VDatePicker-BWfVQdXc.js similarity index 93% rename from assets/VDatePicker-cLZU-Ed4.js rename to assets/VDatePicker-BWfVQdXc.js index fc6aa09..5f1d887 100644 --- a/assets/VDatePicker-cLZU-Ed4.js +++ b/assets/VDatePicker-BWfVQdXc.js @@ -1,2 +1,2 @@ -import{f as U,an as re,u as p,s as ne,p as R,I as ae,ag as We,aQ as X,n as W,w as j,a5 as E,aR as $e,aJ as ge,X as de,aa as Re,A as Fe,aS as Le}from"./vendor-vuetify-ChAgIwn2.js";import{l as I,o as se,a8 as le,E as be,a2 as De,aC as ue,ak as He}from"./index-_6IQhlPZ.js";import{j as g,k as b,F as G,n as Q,e as P,N as we,o as xe,a1 as je,s as Z,b as Ee,t as H,w as Me,m as N,R as Ue}from"./vendor-vue-H0jQBZ7T.js";import{V as pe}from"./VBadge-VwKD9DDf.js";import{a as ce,m as ze}from"./VSheet-U4CNWLuy.js";const Pe=R({active:{type:[String,Array],default:void 0},controlHeight:[Number,String],controlVariant:{type:String,default:"docked"},noMonthPicker:Boolean,disabled:{type:[Boolean,String,Array],default:null},nextIcon:{type:ae,default:"$next"},prevIcon:{type:ae,default:"$prev"},modeIcon:{type:ae,default:"$subgroup"},text:String,monthText:String,yearText:String,viewMode:{type:String,default:"month"}},"VDatePickerControls"),ve=U()({name:"VDatePickerControls",props:Pe(),emits:{"click:year":()=>!0,"click:month":()=>!0,"click:prev":()=>!0,"click:next":()=>!0,"click:prev-year":()=>!0,"click:next-year":()=>!0},setup(e,a){let{emit:c,slots:l}=a;const{t}=re(),v=P(()=>Array.isArray(e.disabled)?e.disabled.includes("text"):!!e.disabled),k=P(()=>Array.isArray(e.disabled)?e.disabled.includes("mode"):!!e.disabled),s=P(()=>Array.isArray(e.disabled)?e.disabled.includes("prev-month"):!!e.disabled),o=P(()=>Array.isArray(e.disabled)?e.disabled.includes("next-month"):!!e.disabled),D=P(()=>Array.isArray(e.disabled)?e.disabled.includes("prev-year"):!!e.disabled),f=P(()=>Array.isArray(e.disabled)?e.disabled.includes("next-year"):!!e.disabled);function x(){c("click:prev")}function u(){c("click:next")}function M(){c("click:prev-year")}function V(){c("click:next-year")}function n(){c("click:year")}function y(){c("click:month")}return p(()=>{const i={VBtn:{density:"comfortable",variant:"text"}},C=g(I,{"data-testid":"prev-month",disabled:s.value,icon:e.prevIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.previousMonth"),onClick:x},null),T=g(I,{"data-testid":"next-month",disabled:o.value,icon:e.nextIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.nextMonth"),onClick:u},null),_=g(I,{"data-testid":"prev-year",disabled:D.value,icon:e.prevIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.previousYear"),onClick:M},null),F=g(I,{"data-testid":"next-year",disabled:f.value,icon:e.nextIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.nextYear"),onClick:V},null),m=g(I,{class:"v-date-picker-controls__only-month-btn","data-testid":"month-btn",density:"default",disabled:v.value,text:e.monthText,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectMonth"),onClick:y},null),r=g(I,{class:"v-date-picker-controls__only-year-btn","data-testid":"year-btn",density:"default",disabled:k.value,text:e.yearText,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null),w=g(I,{class:"v-date-picker-controls__year-btn","data-testid":"year-btn",density:"default",disabled:k.value,text:e.text,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null),A=b(G,null,[g(I,{class:"v-date-picker-controls__month-btn","data-testid":"month-btn",height:"36",disabled:v.value,text:e.text,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectMonth"),onClick:y},null),g(I,{class:"v-date-picker-controls__mode-btn","data-testid":"year-btn",disabled:k.value,icon:e.modeIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null)]),O={viewMode:e.viewMode,disabled:Array.isArray(e.disabled)?e.disabled:[],monthYearText:e.text??"",monthText:e.monthText??"",yearText:e.yearText??"",openMonths:y,openYears:n,prevMonth:x,nextMonth:u,prevYear:M,nextYear:V},z=b(G,null,[e.noMonthPicker?w:A,g(se,null,null),b("div",{class:"v-date-picker-controls__month"},[C,T])]),ee=b(G,null,[b("div",{class:"v-date-picker-controls__month"},[C,m,T]),g(se,null,null),b("div",{class:"v-date-picker-controls__year"},[_,r,F])]);return g(le,{defaults:i},{default:()=>{var te;return[b("div",{class:Q(["v-date-picker-controls",`v-date-picker-controls--variant-${e.controlVariant}`]),style:{"--v-date-picker-controls-height":ne(e.controlHeight)}},[((te=l.default)==null?void 0:te.call(l,O))??b(G,null,[e.controlVariant==="modal"&&z,e.controlVariant==="docked"&&ee])])]}})}),{}}}),Je=R({appendIcon:ae,color:String,header:String,transition:String,onClick:We()},"VDatePickerHeader"),fe=U()({name:"VDatePickerHeader",props:Je(),emits:{click:()=>!0,"click:append":()=>!0},setup(e,a){let{emit:c,slots:l}=a;const{backgroundColorClasses:t,backgroundColorStyles:v}=be(()=>e.color);function k(){c("click")}function s(){c("click:append")}return p(()=>{const o=!!(l.default||e.header),D=!!(l.append||e.appendIcon);return b("div",{class:Q(["v-date-picker-header",{"v-date-picker-header--clickable":!!e.onClick},t.value]),style:we(v.value),onClick:k},[l.prepend&&b("div",{key:"prepend",class:"v-date-picker-header__prepend"},[l.prepend()]),o&&g(De,{key:"content",name:e.transition},{default:()=>{var f;return[b("div",{key:e.header,class:"v-date-picker-header__content"},[((f=l.default)==null?void 0:f.call(l))??e.header])]}}),D&&b("div",{class:"v-date-picker-header__append"},[l.append?g(le,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VBtn:{icon:e.appendIcon,variant:"text"}}},{default:()=>{var f;return[(f=l.append)==null?void 0:f.call(l)]}}):g(I,{key:"append-btn",icon:e.appendIcon,variant:"text",onClick:s},null)])])}),{}}}),Ke=R({allowedDates:[Array,Function],disabled:{type:Boolean,default:null},displayValue:null,modelValue:Array,month:[Number,String],max:null,min:null,showAdjacentMonths:Boolean,year:[Number,String],weekdays:{type:Array,default:()=>[0,1,2,3,4,5,6]},weeksInMonth:{type:String,default:"dynamic"},firstDayOfWeek:{type:[Number,String],default:void 0},firstDayOfYear:{type:[Number,String],default:void 0},weekdayFormat:String},"calendar");function Qe(e){const a=X(),c=W(e,"modelValue",[],n=>j(n).map(y=>a.date(y))),l=P(()=>e.displayValue?a.date(e.displayValue):c.value.length>0?a.date(c.value[0]):e.min?a.date(e.min):Array.isArray(e.allowedDates)?a.date(e.allowedDates[0]):a.date()),t=W(e,"year",void 0,n=>{const y=n!=null?Number(n):a.getYear(l.value);return a.startOfYear(a.setYear(a.date(),y))},n=>a.getYear(n)),v=W(e,"month",void 0,n=>{const y=n!=null?Number(n):a.getMonth(l.value),i=a.setYear(a.startOfMonth(a.date()),a.getYear(t.value));return a.setMonth(i,y)},n=>a.getMonth(n)),k=P(()=>{const n=a.toJsDate(a.startOfWeek(a.date(),e.firstDayOfWeek)).getDay();return a.getWeekdays(e.firstDayOfWeek,e.weekdayFormat).filter((y,i)=>e.weekdays.includes((i+n)%7))}),s=P(()=>{const n=a.getWeekArray(v.value,e.firstDayOfWeek),y=n.flat(),i=6*7;if(e.weeksInMonth==="static"&&y.lengthe.weekdays.includes(a.toJsDate(i).getDay())).map((i,C)=>{const T=a.toISO(i),_=!a.isSameMonth(i,v.value),F=a.isSameDay(i,a.startOfMonth(v.value)),m=a.isSameDay(i,a.endOfMonth(v.value)),r=a.isSameDay(i,v.value),w=e.weekdays.length;return{date:i,formatted:a.format(i,"keyboardDate"),isAdjacent:_,isDisabled:V(i),isEnd:m,isHidden:_&&!e.showAdjacentMonths,isSame:r,isSelected:c.value.some(A=>a.isSameDay(i,A)),isStart:F,isToday:a.isSameDay(i,y),isWeekEnd:C%w===w-1,isWeekStart:C%w===0,isoDate:T,localized:a.format(i,"dayOfMonth"),month:a.getMonth(i),year:a.getYear(i)}})}const D=P(()=>{const n=a.startOfWeek(l.value,e.firstDayOfWeek),y=[];for(let C=0;C<=6;C++)y.push(a.addDays(n,C));const i=a.date();return o(y,i)}),f=P(()=>{const n=s.value.flat(),y=a.date();return o(n,y)}),x=P(()=>s.value.map(n=>n.length?a.getWeek(n[0],e.firstDayOfWeek,e.firstDayOfYear):null)),{minDate:u,maxDate:M}=Se(e);function V(n){if(e.disabled)return!0;const y=a.date(n);return u.value&&a.isBefore(a.endOfDay(y),u.value)||M.value&&a.isAfter(y,M.value)?!0:Array.isArray(e.allowedDates)&&e.allowedDates.length>0?!e.allowedDates.some(i=>a.isSameDay(a.date(i),y)):typeof e.allowedDates=="function"?!e.allowedDates(y):!1}return{displayValue:l,daysInMonth:f,daysInWeek:D,genDays:o,model:c,weeksInMonth:s,weekdayLabels:k,weekNumbers:x}}function Se(e){const a=X(),c=P(()=>{if(!e.min)return null;const k=a.date(e.min);return a.isValid(k)?k:null}),l=P(()=>{if(!e.max)return null;const k=a.date(e.max);return a.isValid(k)?k:null});function t(k){return c.value&&a.isBefore(k,c.value)?c.value:l.value&&a.isAfter(k,l.value)?l.value:k}function v(k){return(!c.value||a.isAfter(k,c.value))&&(!l.value||a.isBefore(k,l.value))}return{minDate:c,maxDate:l,clampDate:t,isInAllowedRange:v}}const Ve=R({color:String,hideWeekdays:Boolean,multiple:[Boolean,Number,String],showWeek:Boolean,readonly:Boolean,transition:{type:String,default:"picker-transition"},reverseTransition:{type:String,default:"picker-reverse-transition"},events:{type:[Array,Function,Object],default:()=>null},eventColor:{type:[Array,Function,Object,String],default:()=>null},...E(Ke(),["displayValue"])},"VDatePickerMonth"),he=U()({name:"VDatePickerMonth",props:Ve(),emits:{"update:modelValue":e=>!0,"update:month":e=>!0,"update:year":e=>!0},setup(e,a){let{emit:c,slots:l}=a;const t=Ee(),{t:v}=re(),{daysInMonth:k,model:s,weekNumbers:o,weekdayLabels:D}=Qe(e),f=X(),x=Z(),u=Z(),M=Z(!1),V=H(()=>M.value?e.reverseTransition:e.transition);e.multiple==="range"&&s.value.length>0&&(x.value=s.value[0],s.value.length>1&&(u.value=s.value[s.value.length-1]));const n=P(()=>{const m=["number","string"].includes(typeof e.multiple)?Number(e.multiple):1/0;return s.value.length>=m});xe(k,(m,r)=>{r&&(M.value=f.isBefore(m[0].date,r[0].date))});function y(m){const r=f.startOfDay(m);if(s.value.length===0?x.value=void 0:s.value.length===1&&(x.value=s.value[0],u.value=void 0),!x.value)x.value=r,s.value=[x.value];else if(u.value)x.value=m,u.value=void 0,s.value=[x.value];else{if(f.isSameDay(r,x.value)){x.value=void 0,s.value=[];return}else f.isBefore(r,x.value)?(u.value=f.endOfDay(x.value),x.value=r):u.value=f.endOfDay(r);s.value=$e(f,x.value,u.value)}}function i(m){const r=f.format(m.date,"fullDateWithWeekday"),w=m.isToday?"currentDate":"selectDate";return v(`$vuetify.datePicker.ariaLabel.${w}`,r)}function C(m){const r=s.value.findIndex(w=>f.isSameDay(w,m));if(r===-1)s.value=[...s.value,m];else{const w=[...s.value];w.splice(r,1),s.value=w}}function T(m){e.multiple==="range"?y(m):e.multiple?C(m):s.value=[m]}function _(m){const{events:r,eventColor:w}=e;let A,O=[];if(Array.isArray(r)?A=r.includes(m):r instanceof Function?A=r(m)||!1:r?A=r[m]||!1:A=!1,A)A!==!0?O=j(A):typeof w=="string"?O=[w]:typeof w=="function"?O=j(w(m)):Array.isArray(w)?O=w:typeof w=="object"&&w!==null&&(O=j(w[m]));else return[];return O.length?O.filter(Boolean).map(z=>typeof z=="string"?z:"surface-variant"):["surface-variant"]}function F(m){const r=_(m);return r.length?b("div",{class:"v-date-picker-month__events"},[r.map(w=>g(pe,{dot:!0,color:w},null))]):null}p(()=>b("div",{class:"v-date-picker-month",style:{"--v-date-picker-days-in-week":e.weekdays.length}},[e.showWeek&&b("div",{key:"weeks",class:"v-date-picker-month__weeks"},[!e.hideWeekdays&&b("div",{key:"hide-week-days",class:"v-date-picker-month__day"},[je(" ")]),o.value.map(m=>b("div",{class:Q(["v-date-picker-month__day","v-date-picker-month__day--adjacent"])},[m]))]),g(De,{name:V.value},{default:()=>{var m;return[b("div",{ref:t,key:(m=k.value[0].date)==null?void 0:m.toString(),class:"v-date-picker-month__days"},[!e.hideWeekdays&&D.value.map(r=>b("div",{class:Q(["v-date-picker-month__day","v-date-picker-month__weekday"])},[r])),k.value.map((r,w)=>{var O;const A={props:{class:"v-date-picker-month__day-btn",color:r.isSelected||r.isToday?e.color:void 0,disabled:r.isDisabled,readonly:e.readonly,icon:!0,ripple:!1,variant:r.isSelected?"flat":r.isToday?"outlined":"text","aria-label":i(r),"aria-current":r.isToday?"date":void 0,onClick:()=>T(r.date)},item:r,i:w};return n.value&&!r.isSelected&&(r.isDisabled=!0),b("div",{class:Q(["v-date-picker-month__day",{"v-date-picker-month__day--adjacent":r.isAdjacent,"v-date-picker-month__day--hide-adjacent":r.isHidden,"v-date-picker-month__day--selected":r.isSelected,"v-date-picker-month__day--week-end":r.isWeekEnd,"v-date-picker-month__day--week-start":r.isWeekStart}]),"data-v-date":r.isDisabled?void 0:r.isoDate},[(e.showAdjacentMonths||!r.isAdjacent)&&(((O=l.day)==null?void 0:O.call(l,A))??g(I,A.props,{default:()=>[r.localized,F(r.isoDate)]}))])})])]}})]))}}),Ye=R({color:String,height:[String,Number],min:null,max:null,modelValue:Number,year:Number,allowedMonths:[Array,Function]},"VDatePickerMonths"),ye=U()({name:"VDatePickerMonths",props:Ye(),emits:{"update:modelValue":e=>!0},setup(e,a){let{emit:c,slots:l}=a;const t=X(),v=W(e,"modelValue"),k=P(()=>{let o=t.startOfYear(t.date());return e.year&&(o=t.setYear(o,e.year)),ge(12).map(D=>{const f=t.format(o,"monthShort"),x=t.format(o,"month"),u=!!(!s(D)||e.min&&t.isAfter(t.startOfMonth(t.date(e.min)),o)||e.max&&t.isAfter(o,t.startOfMonth(t.date(e.max))));return o=t.getNextMonth(o),{isDisabled:u,text:f,label:x,value:D}})});Me(()=>{v.value=v.value??t.getMonth(t.date())});function s(o){return Array.isArray(e.allowedMonths)&&e.allowedMonths.length?e.allowedMonths.includes(o):typeof e.allowedMonths=="function"?e.allowedMonths(o):!0}return p(()=>b("div",{class:"v-date-picker-months",style:{height:ne(e.height)}},[b("div",{class:"v-date-picker-months__content"},[k.value.map((o,D)=>{var u;const f={active:v.value===D,ariaLabel:o.label,color:v.value===D?e.color:void 0,disabled:o.isDisabled,rounded:!0,text:o.text,variant:v.value===o.value?"flat":"text",onClick:()=>x(D)};function x(M){if(v.value===M){c("update:modelValue",v.value);return}v.value=M}return((u=l.month)==null?void 0:u.call(l,{month:o,i:D,props:f}))??g(I,N({key:"month"},f),null)})])])),{}}}),Ce=R({color:String,height:[String,Number],min:null,max:null,modelValue:Number,allowedYears:[Array,Function]},"VDatePickerYears"),me=U()({name:"VDatePickerYears",props:Ce(),directives:{vIntersect:ue},emits:{"update:modelValue":e=>!0},setup(e,a){let{emit:c,slots:l}=a;const t=X(),v=W(e,"modelValue"),k=Z(!1),s=P(()=>{const u=t.getYear(t.date());let M=u-100,V=u+52;e.min&&(M=t.getYear(t.date(e.min))),e.max&&(V=t.getYear(t.date(e.max)));let n=t.startOfYear(t.date());return n=t.setYear(n,M),ge(V-M+1,M).map(y=>{const i=t.format(n,"year");return n=t.setYear(n,t.getYear(n)+1),{text:i,value:y,isDisabled:!x(y)}})});Me(()=>{v.value=v.value??t.getYear(t.date())});const o=de(),D=de();function f(){const u=o.el,M=D.el;if(!u||!M)return;const V=u.getBoundingClientRect(),n=M.getBoundingClientRect();u.scrollTop+=n.top-V.top-u.clientHeight/2+n.height/2}function x(u){return Array.isArray(e.allowedYears)&&e.allowedYears.length?e.allowedYears.includes(u):typeof e.allowedYears=="function"?e.allowedYears(u):!0}return p(()=>Ue(b("div",{class:"v-date-picker-years",ref:o,style:{height:ne(e.height)}},[b("div",{class:"v-date-picker-years__content",onFocus:()=>{var u;return(u=D.el)==null?void 0:u.focus()},onFocusin:()=>k.value=!0,onFocusout:()=>k.value=!1,tabindex:k.value?-1:0},[s.value.map((u,M)=>{var n;const V={ref:v.value===u.value?D:void 0,active:v.value===u.value,color:v.value===u.value?e.color:void 0,rounded:!0,text:u.text,disabled:u.isDisabled,variant:v.value===u.value?"flat":"text",onClick:()=>{if(v.value===u.value){c("update:modelValue",v.value);return}v.value=u.value}};return((n=l.year)==null?void 0:n.call(l,{year:u,i:M,props:V}))??g(I,N({key:"month"},V),null)})])]),[[ue,{handler:f},null,{once:!0}]])),{}}}),Xe=Re("v-picker-title"),Ae=R({bgColor:String,divided:Boolean,landscape:Boolean,title:String,hideHeader:Boolean,hideTitle:Boolean,...ze()},"VPicker"),ke=U()({name:"VPicker",props:Ae(),setup(e,a){let{slots:c}=a;const{backgroundColorClasses:l,backgroundColorStyles:t}=be(()=>e.color);return p(()=>{const v=ce.filterProps(e),k=!e.hideTitle&&!!(e.title||c.title);return g(ce,N(v,{color:e.bgColor,class:["v-picker",{"v-picker--divided":e.divided,"v-picker--landscape":e.landscape,"v-picker--with-actions":!!c.actions},e.class],style:e.style}),{default:()=>{var s;return[!e.hideHeader&&b("div",{key:"header",class:Q(["v-picker__header-wrapper",l.value]),style:we([t.value])},[k&&g(Xe,{key:"picker-title"},{default:()=>{var o;return[((o=c.title)==null?void 0:o.call(c))??e.title]}}),c.header&&b("div",{class:"v-picker__header"},[c.header()])]),b("div",{class:"v-picker__body"},[(s=c.default)==null?void 0:s.call(c)]),c.actions&&g(le,{defaults:{VBtn:{slim:!0,variant:"text"}}},{default:()=>[b("div",{class:"v-picker__actions"},[c.actions()])]})]}})}),{}}}),qe=R({header:{type:String,default:"$vuetify.datePicker.header"},headerColor:String,headerDateFormat:{type:String,default:"normalDateWithWeekday"},landscapeHeaderWidth:[Number,String],...E(Pe(),["active","monthText","yearText"]),...Ve({weeksInMonth:"static"}),...E(Ye(),["modelValue"]),...E(Ce(),["modelValue"]),...Ae({title:"$vuetify.datePicker.title"}),modelValue:null},"VDatePicker"),nt=U()({name:"VDatePicker",props:qe(),emits:{"update:modelValue":e=>!0,"update:month":e=>!0,"update:year":e=>!0,"update:viewMode":e=>!0},setup(e,a){let{emit:c,slots:l}=a;const t=X(),{t:v}=re(),{rtlClasses:k}=Fe(),s=W(e,"modelValue",void 0,d=>j(d).map(h=>t.date(h)),d=>e.multiple?d:d[0]),o=W(e,"viewMode"),{minDate:D,maxDate:f,clampDate:x}=Se(e),u=P(()=>{var Y;const d=t.date(),h=(Y=s.value)!=null&&Y[0]?t.date(s.value[0]):x(d);return h&&t.isValid(h)?h:d}),M=H(()=>e.headerColor??e.color),V=W(e,"month"),n=P({get:()=>Number(V.value??t.getMonth(t.startOfMonth(u.value))),set:d=>V.value=d}),y=W(e,"year"),i=P({get:()=>Number(y.value??t.getYear(t.startOfYear(t.setMonth(u.value,n.value)))),set:d=>y.value=d}),C=Z(!1),T=P(()=>{if(e.multiple&&s.value.length>1)return v("$vuetify.datePicker.itemsSelected",s.value.length);const d=s.value[0]&&t.isValid(s.value[0])?t.format(t.date(s.value[0]),e.headerDateFormat):v(e.header);return e.landscape&&d.split(" ").length===3?d.replace(" ",` -`):d}),_=H(()=>{let d=t.date();return d=t.setDate(d,1),d=t.setMonth(d,n.value),d=t.setYear(d,i.value),d}),F=H(()=>t.format(_.value,"monthAndYear")),m=H(()=>t.format(_.value,"monthShort")),r=H(()=>t.format(_.value,"year")),w=H(()=>`date-picker-header${C.value?"-reverse":""}-transition`),A=P(()=>{if(e.disabled)return!0;const d=[];if(o.value!=="month")d.push("prev-month","next-month","prev-year","next-year");else{let h=t.date();if(h=t.startOfMonth(h),h=t.setMonth(h,n.value),h=t.setYear(h,i.value),D.value){const Y=t.addDays(t.startOfMonth(h),-1),B=t.addDays(t.startOfYear(h),-1);t.isAfter(D.value,Y)&&d.push("prev-month"),t.isAfter(D.value,B)&&d.push("prev-year")}if(f.value){const Y=t.addDays(t.endOfMonth(h),1),B=t.addDays(t.endOfYear(h),1);t.isAfter(Y,f.value)&&d.push("next-month"),t.isAfter(B,f.value)&&d.push("next-year")}}return d}),O=P(()=>e.allowedYears||te),z=P(()=>e.allowedMonths||_e);function ee(d,h){const Y=e.allowedDates;if(typeof Y!="function")return!0;const B=1+Le(t,d,h);for(let $=0;$0?n.value--:(i.value--,n.value=11,L()),q()}function Te(){if(i.value++,f.value){const d=String(n.value+1).padStart(2,"0"),h=t.parseISO(`${i.value}-${d}-01`);t.isAfter(h,f.value)&&(n.value=t.getMonth(f.value))}L()}function Be(){if(i.value--,D.value){const d=String(n.value+1).padStart(2,"0"),h=t.endOfMonth(t.parseISO(`${i.value}-${d}-01`));t.isAfter(D.value,h)&&(n.value=t.getMonth(D.value))}L()}function Ne(){o.value="month"}function ie(){o.value=o.value==="months"?"month":"months"}function oe(){o.value=o.value==="year"?"month":"year"}function q(){o.value==="months"&&ie()}function L(){o.value==="year"&&oe()}return xe(s,(d,h)=>{const Y=j(h),B=j(d);if(!B.length)return;const $=t.date(Y[Y.length-1]),J=t.date(B[B.length-1]);if(t.isSameDay($,J))return;const K=t.getMonth(J),S=t.getYear(J);K!==n.value&&(n.value=K,q()),S!==i.value&&(i.value=S,L()),C.value=t.isBefore($,J)}),p(()=>{const d=ke.filterProps(e),h=E(ve.filterProps(e),["viewMode"]),Y=fe.filterProps(e),B=he.filterProps(e),$=E(ye.filterProps(e),["modelValue"]),J=E(me.filterProps(e),["modelValue"]),K={color:M.value,header:T.value,transition:w.value};return g(ke,N(d,{color:M.value,class:["v-date-picker",`v-date-picker--${o.value}`,{"v-date-picker--show-week":e.showWeek},k.value,e.class],style:[{"--v-date-picker-landscape-header-width":ne(e.landscapeHeaderWidth)},e.style]}),{title:()=>{var S;return((S=l.title)==null?void 0:S.call(l))??b("div",{class:"v-date-picker__title"},[v(e.title)])},header:()=>l.header?g(le,{defaults:{VDatePickerHeader:{...K}}},{default:()=>{var S;return[(S=l.header)==null?void 0:S.call(l,K)]}}):g(fe,N({key:"header"},Y,K,{onClick:o.value!=="month"?Ne:void 0}),{prepend:l.prepend,append:l.append}),default:()=>b(G,null,[g(ve,N(h,{disabled:A.value,viewMode:o.value,text:F.value,monthText:m.value,yearText:r.value,"onClick:next":Oe,"onClick:prev":Ie,"onClick:nextYear":Te,"onClick:prevYear":Be,"onClick:month":ie,"onClick:year":oe}),{default:l.controls}),g(He,{hideOnLeave:!0},{default:()=>[o.value==="months"?g(ye,N({key:"date-picker-months"},$,{modelValue:n.value,"onUpdate:modelValue":[S=>n.value=S,q],min:D.value,max:f.value,year:i.value,allowedMonths:z.value}),{month:l.month}):o.value==="year"?g(me,N({key:"date-picker-years"},J,{modelValue:i.value,"onUpdate:modelValue":[S=>i.value=S,L],min:D.value,max:f.value,allowedYears:O.value}),{year:l.year}):g(he,N({key:"date-picker-month"},B,{modelValue:s.value,"onUpdate:modelValue":S=>s.value=S,month:n.value,"onUpdate:month":[S=>n.value=S,q],year:i.value,"onUpdate:year":[S=>i.value=S,L],min:D.value,max:f.value}),{day:l.day})]})]),actions:l.actions})}),{}}});export{nt as V,ke as a,Ae as m}; +import{f as U,an as re,u as p,s as ne,p as R,I as ae,ag as We,aQ as X,n as W,w as j,a5 as E,aR as $e,aK as ge,X as de,aa as Re,A as Fe,aS as He}from"./vendor-vuetify-s-yw_Hr8.js";import{i as I,r as se,a9 as le,H as be,a3 as De,aE as ue,an as Le}from"./index-CFUCTEXJ.js";import{j as g,k as b,F as G,n as Q,e as P,N as we,o as xe,a1 as je,s as Z,b as Ee,t as L,w as Me,m as N,R as Ue}from"./vendor-vue-B2vxubPy.js";import{V as pe}from"./VBadge-C7i5WU2T.js";import{a as ce,m as ze}from"./VSheet-B8D7XEg5.js";const Pe=R({active:{type:[String,Array],default:void 0},controlHeight:[Number,String],controlVariant:{type:String,default:"docked"},noMonthPicker:Boolean,disabled:{type:[Boolean,String,Array],default:null},nextIcon:{type:ae,default:"$next"},prevIcon:{type:ae,default:"$prev"},modeIcon:{type:ae,default:"$subgroup"},text:String,monthText:String,yearText:String,viewMode:{type:String,default:"month"}},"VDatePickerControls"),ve=U()({name:"VDatePickerControls",props:Pe(),emits:{"click:year":()=>!0,"click:month":()=>!0,"click:prev":()=>!0,"click:next":()=>!0,"click:prev-year":()=>!0,"click:next-year":()=>!0},setup(e,a){let{emit:c,slots:l}=a;const{t}=re(),v=P(()=>Array.isArray(e.disabled)?e.disabled.includes("text"):!!e.disabled),k=P(()=>Array.isArray(e.disabled)?e.disabled.includes("mode"):!!e.disabled),s=P(()=>Array.isArray(e.disabled)?e.disabled.includes("prev-month"):!!e.disabled),o=P(()=>Array.isArray(e.disabled)?e.disabled.includes("next-month"):!!e.disabled),D=P(()=>Array.isArray(e.disabled)?e.disabled.includes("prev-year"):!!e.disabled),f=P(()=>Array.isArray(e.disabled)?e.disabled.includes("next-year"):!!e.disabled);function x(){c("click:prev")}function u(){c("click:next")}function M(){c("click:prev-year")}function V(){c("click:next-year")}function n(){c("click:year")}function y(){c("click:month")}return p(()=>{const i={VBtn:{density:"comfortable",variant:"text"}},C=g(I,{"data-testid":"prev-month",disabled:s.value,icon:e.prevIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.previousMonth"),onClick:x},null),T=g(I,{"data-testid":"next-month",disabled:o.value,icon:e.nextIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.nextMonth"),onClick:u},null),_=g(I,{"data-testid":"prev-year",disabled:D.value,icon:e.prevIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.previousYear"),onClick:M},null),F=g(I,{"data-testid":"next-year",disabled:f.value,icon:e.nextIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.nextYear"),onClick:V},null),m=g(I,{class:"v-date-picker-controls__only-month-btn","data-testid":"month-btn",density:"default",disabled:v.value,text:e.monthText,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectMonth"),onClick:y},null),r=g(I,{class:"v-date-picker-controls__only-year-btn","data-testid":"year-btn",density:"default",disabled:k.value,text:e.yearText,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null),w=g(I,{class:"v-date-picker-controls__year-btn","data-testid":"year-btn",density:"default",disabled:k.value,text:e.text,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null),A=b(G,null,[g(I,{class:"v-date-picker-controls__month-btn","data-testid":"month-btn",height:"36",disabled:v.value,text:e.text,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectMonth"),onClick:y},null),g(I,{class:"v-date-picker-controls__mode-btn","data-testid":"year-btn",disabled:k.value,icon:e.modeIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null)]),O={viewMode:e.viewMode,disabled:Array.isArray(e.disabled)?e.disabled:[],monthYearText:e.text??"",monthText:e.monthText??"",yearText:e.yearText??"",openMonths:y,openYears:n,prevMonth:x,nextMonth:u,prevYear:M,nextYear:V},z=b(G,null,[e.noMonthPicker?w:A,g(se,null,null),b("div",{class:"v-date-picker-controls__month"},[C,T])]),ee=b(G,null,[b("div",{class:"v-date-picker-controls__month"},[C,m,T]),g(se,null,null),b("div",{class:"v-date-picker-controls__year"},[_,r,F])]);return g(le,{defaults:i},{default:()=>{var te;return[b("div",{class:Q(["v-date-picker-controls",`v-date-picker-controls--variant-${e.controlVariant}`]),style:{"--v-date-picker-controls-height":ne(e.controlHeight)}},[((te=l.default)==null?void 0:te.call(l,O))??b(G,null,[e.controlVariant==="modal"&&z,e.controlVariant==="docked"&&ee])])]}})}),{}}}),Je=R({appendIcon:ae,color:String,header:String,transition:String,onClick:We()},"VDatePickerHeader"),fe=U()({name:"VDatePickerHeader",props:Je(),emits:{click:()=>!0,"click:append":()=>!0},setup(e,a){let{emit:c,slots:l}=a;const{backgroundColorClasses:t,backgroundColorStyles:v}=be(()=>e.color);function k(){c("click")}function s(){c("click:append")}return p(()=>{const o=!!(l.default||e.header),D=!!(l.append||e.appendIcon);return b("div",{class:Q(["v-date-picker-header",{"v-date-picker-header--clickable":!!e.onClick},t.value]),style:we(v.value),onClick:k},[l.prepend&&b("div",{key:"prepend",class:"v-date-picker-header__prepend"},[l.prepend()]),o&&g(De,{key:"content",name:e.transition},{default:()=>{var f;return[b("div",{key:e.header,class:"v-date-picker-header__content"},[((f=l.default)==null?void 0:f.call(l))??e.header])]}}),D&&b("div",{class:"v-date-picker-header__append"},[l.append?g(le,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VBtn:{icon:e.appendIcon,variant:"text"}}},{default:()=>{var f;return[(f=l.append)==null?void 0:f.call(l)]}}):g(I,{key:"append-btn",icon:e.appendIcon,variant:"text",onClick:s},null)])])}),{}}}),Ke=R({allowedDates:[Array,Function],disabled:{type:Boolean,default:null},displayValue:null,modelValue:Array,month:[Number,String],max:null,min:null,showAdjacentMonths:Boolean,year:[Number,String],weekdays:{type:Array,default:()=>[0,1,2,3,4,5,6]},weeksInMonth:{type:String,default:"dynamic"},firstDayOfWeek:{type:[Number,String],default:void 0},firstDayOfYear:{type:[Number,String],default:void 0},weekdayFormat:String},"calendar");function Qe(e){const a=X(),c=W(e,"modelValue",[],n=>j(n).map(y=>a.date(y))),l=P(()=>e.displayValue?a.date(e.displayValue):c.value.length>0?a.date(c.value[0]):e.min?a.date(e.min):Array.isArray(e.allowedDates)?a.date(e.allowedDates[0]):a.date()),t=W(e,"year",void 0,n=>{const y=n!=null?Number(n):a.getYear(l.value);return a.startOfYear(a.setYear(a.date(),y))},n=>a.getYear(n)),v=W(e,"month",void 0,n=>{const y=n!=null?Number(n):a.getMonth(l.value),i=a.setYear(a.startOfMonth(a.date()),a.getYear(t.value));return a.setMonth(i,y)},n=>a.getMonth(n)),k=P(()=>{const n=a.toJsDate(a.startOfWeek(a.date(),e.firstDayOfWeek)).getDay();return a.getWeekdays(e.firstDayOfWeek,e.weekdayFormat).filter((y,i)=>e.weekdays.includes((i+n)%7))}),s=P(()=>{const n=a.getWeekArray(v.value,e.firstDayOfWeek),y=n.flat(),i=6*7;if(e.weeksInMonth==="static"&&y.lengthe.weekdays.includes(a.toJsDate(i).getDay())).map((i,C)=>{const T=a.toISO(i),_=!a.isSameMonth(i,v.value),F=a.isSameDay(i,a.startOfMonth(v.value)),m=a.isSameDay(i,a.endOfMonth(v.value)),r=a.isSameDay(i,v.value),w=e.weekdays.length;return{date:i,formatted:a.format(i,"keyboardDate"),isAdjacent:_,isDisabled:V(i),isEnd:m,isHidden:_&&!e.showAdjacentMonths,isSame:r,isSelected:c.value.some(A=>a.isSameDay(i,A)),isStart:F,isToday:a.isSameDay(i,y),isWeekEnd:C%w===w-1,isWeekStart:C%w===0,isoDate:T,localized:a.format(i,"dayOfMonth"),month:a.getMonth(i),year:a.getYear(i)}})}const D=P(()=>{const n=a.startOfWeek(l.value,e.firstDayOfWeek),y=[];for(let C=0;C<=6;C++)y.push(a.addDays(n,C));const i=a.date();return o(y,i)}),f=P(()=>{const n=s.value.flat(),y=a.date();return o(n,y)}),x=P(()=>s.value.map(n=>n.length?a.getWeek(n[0],e.firstDayOfWeek,e.firstDayOfYear):null)),{minDate:u,maxDate:M}=Se(e);function V(n){if(e.disabled)return!0;const y=a.date(n);return u.value&&a.isBefore(a.endOfDay(y),u.value)||M.value&&a.isAfter(y,M.value)?!0:Array.isArray(e.allowedDates)&&e.allowedDates.length>0?!e.allowedDates.some(i=>a.isSameDay(a.date(i),y)):typeof e.allowedDates=="function"?!e.allowedDates(y):!1}return{displayValue:l,daysInMonth:f,daysInWeek:D,genDays:o,model:c,weeksInMonth:s,weekdayLabels:k,weekNumbers:x}}function Se(e){const a=X(),c=P(()=>{if(!e.min)return null;const k=a.date(e.min);return a.isValid(k)?k:null}),l=P(()=>{if(!e.max)return null;const k=a.date(e.max);return a.isValid(k)?k:null});function t(k){return c.value&&a.isBefore(k,c.value)?c.value:l.value&&a.isAfter(k,l.value)?l.value:k}function v(k){return(!c.value||a.isAfter(k,c.value))&&(!l.value||a.isBefore(k,l.value))}return{minDate:c,maxDate:l,clampDate:t,isInAllowedRange:v}}const Ve=R({color:String,hideWeekdays:Boolean,multiple:[Boolean,Number,String],showWeek:Boolean,readonly:Boolean,transition:{type:String,default:"picker-transition"},reverseTransition:{type:String,default:"picker-reverse-transition"},events:{type:[Array,Function,Object],default:()=>null},eventColor:{type:[Array,Function,Object,String],default:()=>null},...E(Ke(),["displayValue"])},"VDatePickerMonth"),he=U()({name:"VDatePickerMonth",props:Ve(),emits:{"update:modelValue":e=>!0,"update:month":e=>!0,"update:year":e=>!0},setup(e,a){let{emit:c,slots:l}=a;const t=Ee(),{t:v}=re(),{daysInMonth:k,model:s,weekNumbers:o,weekdayLabels:D}=Qe(e),f=X(),x=Z(),u=Z(),M=Z(!1),V=L(()=>M.value?e.reverseTransition:e.transition);e.multiple==="range"&&s.value.length>0&&(x.value=s.value[0],s.value.length>1&&(u.value=s.value[s.value.length-1]));const n=P(()=>{const m=["number","string"].includes(typeof e.multiple)?Number(e.multiple):1/0;return s.value.length>=m});xe(k,(m,r)=>{r&&(M.value=f.isBefore(m[0].date,r[0].date))});function y(m){const r=f.startOfDay(m);if(s.value.length===0?x.value=void 0:s.value.length===1&&(x.value=s.value[0],u.value=void 0),!x.value)x.value=r,s.value=[x.value];else if(u.value)x.value=m,u.value=void 0,s.value=[x.value];else{if(f.isSameDay(r,x.value)){x.value=void 0,s.value=[];return}else f.isBefore(r,x.value)?(u.value=f.endOfDay(x.value),x.value=r):u.value=f.endOfDay(r);s.value=$e(f,x.value,u.value)}}function i(m){const r=f.format(m.date,"fullDateWithWeekday"),w=m.isToday?"currentDate":"selectDate";return v(`$vuetify.datePicker.ariaLabel.${w}`,r)}function C(m){const r=s.value.findIndex(w=>f.isSameDay(w,m));if(r===-1)s.value=[...s.value,m];else{const w=[...s.value];w.splice(r,1),s.value=w}}function T(m){e.multiple==="range"?y(m):e.multiple?C(m):s.value=[m]}function _(m){const{events:r,eventColor:w}=e;let A,O=[];if(Array.isArray(r)?A=r.includes(m):r instanceof Function?A=r(m)||!1:r?A=r[m]||!1:A=!1,A)A!==!0?O=j(A):typeof w=="string"?O=[w]:typeof w=="function"?O=j(w(m)):Array.isArray(w)?O=w:typeof w=="object"&&w!==null&&(O=j(w[m]));else return[];return O.length?O.filter(Boolean).map(z=>typeof z=="string"?z:"surface-variant"):["surface-variant"]}function F(m){const r=_(m);return r.length?b("div",{class:"v-date-picker-month__events"},[r.map(w=>g(pe,{dot:!0,color:w},null))]):null}p(()=>b("div",{class:"v-date-picker-month",style:{"--v-date-picker-days-in-week":e.weekdays.length}},[e.showWeek&&b("div",{key:"weeks",class:"v-date-picker-month__weeks"},[!e.hideWeekdays&&b("div",{key:"hide-week-days",class:"v-date-picker-month__day"},[je(" ")]),o.value.map(m=>b("div",{class:Q(["v-date-picker-month__day","v-date-picker-month__day--adjacent"])},[m]))]),g(De,{name:V.value},{default:()=>{var m;return[b("div",{ref:t,key:(m=k.value[0].date)==null?void 0:m.toString(),class:"v-date-picker-month__days"},[!e.hideWeekdays&&D.value.map(r=>b("div",{class:Q(["v-date-picker-month__day","v-date-picker-month__weekday"])},[r])),k.value.map((r,w)=>{var O;const A={props:{class:"v-date-picker-month__day-btn",color:r.isSelected||r.isToday?e.color:void 0,disabled:r.isDisabled,readonly:e.readonly,icon:!0,ripple:!1,variant:r.isSelected?"flat":r.isToday?"outlined":"text","aria-label":i(r),"aria-current":r.isToday?"date":void 0,onClick:()=>T(r.date)},item:r,i:w};return n.value&&!r.isSelected&&(r.isDisabled=!0),b("div",{class:Q(["v-date-picker-month__day",{"v-date-picker-month__day--adjacent":r.isAdjacent,"v-date-picker-month__day--hide-adjacent":r.isHidden,"v-date-picker-month__day--selected":r.isSelected,"v-date-picker-month__day--week-end":r.isWeekEnd,"v-date-picker-month__day--week-start":r.isWeekStart}]),"data-v-date":r.isDisabled?void 0:r.isoDate},[(e.showAdjacentMonths||!r.isAdjacent)&&(((O=l.day)==null?void 0:O.call(l,A))??g(I,A.props,{default:()=>[r.localized,F(r.isoDate)]}))])})])]}})]))}}),Ye=R({color:String,height:[String,Number],min:null,max:null,modelValue:Number,year:Number,allowedMonths:[Array,Function]},"VDatePickerMonths"),ye=U()({name:"VDatePickerMonths",props:Ye(),emits:{"update:modelValue":e=>!0},setup(e,a){let{emit:c,slots:l}=a;const t=X(),v=W(e,"modelValue"),k=P(()=>{let o=t.startOfYear(t.date());return e.year&&(o=t.setYear(o,e.year)),ge(12).map(D=>{const f=t.format(o,"monthShort"),x=t.format(o,"month"),u=!!(!s(D)||e.min&&t.isAfter(t.startOfMonth(t.date(e.min)),o)||e.max&&t.isAfter(o,t.startOfMonth(t.date(e.max))));return o=t.getNextMonth(o),{isDisabled:u,text:f,label:x,value:D}})});Me(()=>{v.value=v.value??t.getMonth(t.date())});function s(o){return Array.isArray(e.allowedMonths)&&e.allowedMonths.length?e.allowedMonths.includes(o):typeof e.allowedMonths=="function"?e.allowedMonths(o):!0}return p(()=>b("div",{class:"v-date-picker-months",style:{height:ne(e.height)}},[b("div",{class:"v-date-picker-months__content"},[k.value.map((o,D)=>{var u;const f={active:v.value===D,ariaLabel:o.label,color:v.value===D?e.color:void 0,disabled:o.isDisabled,rounded:!0,text:o.text,variant:v.value===o.value?"flat":"text",onClick:()=>x(D)};function x(M){if(v.value===M){c("update:modelValue",v.value);return}v.value=M}return((u=l.month)==null?void 0:u.call(l,{month:o,i:D,props:f}))??g(I,N({key:"month"},f),null)})])])),{}}}),Ce=R({color:String,height:[String,Number],min:null,max:null,modelValue:Number,allowedYears:[Array,Function]},"VDatePickerYears"),me=U()({name:"VDatePickerYears",props:Ce(),directives:{vIntersect:ue},emits:{"update:modelValue":e=>!0},setup(e,a){let{emit:c,slots:l}=a;const t=X(),v=W(e,"modelValue"),k=Z(!1),s=P(()=>{const u=t.getYear(t.date());let M=u-100,V=u+52;e.min&&(M=t.getYear(t.date(e.min))),e.max&&(V=t.getYear(t.date(e.max)));let n=t.startOfYear(t.date());return n=t.setYear(n,M),ge(V-M+1,M).map(y=>{const i=t.format(n,"year");return n=t.setYear(n,t.getYear(n)+1),{text:i,value:y,isDisabled:!x(y)}})});Me(()=>{v.value=v.value??t.getYear(t.date())});const o=de(),D=de();function f(){const u=o.el,M=D.el;if(!u||!M)return;const V=u.getBoundingClientRect(),n=M.getBoundingClientRect();u.scrollTop+=n.top-V.top-u.clientHeight/2+n.height/2}function x(u){return Array.isArray(e.allowedYears)&&e.allowedYears.length?e.allowedYears.includes(u):typeof e.allowedYears=="function"?e.allowedYears(u):!0}return p(()=>Ue(b("div",{class:"v-date-picker-years",ref:o,style:{height:ne(e.height)}},[b("div",{class:"v-date-picker-years__content",onFocus:()=>{var u;return(u=D.el)==null?void 0:u.focus()},onFocusin:()=>k.value=!0,onFocusout:()=>k.value=!1,tabindex:k.value?-1:0},[s.value.map((u,M)=>{var n;const V={ref:v.value===u.value?D:void 0,active:v.value===u.value,color:v.value===u.value?e.color:void 0,rounded:!0,text:u.text,disabled:u.isDisabled,variant:v.value===u.value?"flat":"text",onClick:()=>{if(v.value===u.value){c("update:modelValue",v.value);return}v.value=u.value}};return((n=l.year)==null?void 0:n.call(l,{year:u,i:M,props:V}))??g(I,N({key:"month"},V),null)})])]),[[ue,{handler:f},null,{once:!0}]])),{}}}),Xe=Re("v-picker-title"),Ae=R({bgColor:String,divided:Boolean,landscape:Boolean,title:String,hideHeader:Boolean,hideTitle:Boolean,...ze()},"VPicker"),ke=U()({name:"VPicker",props:Ae(),setup(e,a){let{slots:c}=a;const{backgroundColorClasses:l,backgroundColorStyles:t}=be(()=>e.color);return p(()=>{const v=ce.filterProps(e),k=!e.hideTitle&&!!(e.title||c.title);return g(ce,N(v,{color:e.bgColor,class:["v-picker",{"v-picker--divided":e.divided,"v-picker--landscape":e.landscape,"v-picker--with-actions":!!c.actions},e.class],style:e.style}),{default:()=>{var s;return[!e.hideHeader&&b("div",{key:"header",class:Q(["v-picker__header-wrapper",l.value]),style:we([t.value])},[k&&g(Xe,{key:"picker-title"},{default:()=>{var o;return[((o=c.title)==null?void 0:o.call(c))??e.title]}}),c.header&&b("div",{class:"v-picker__header"},[c.header()])]),b("div",{class:"v-picker__body"},[(s=c.default)==null?void 0:s.call(c)]),c.actions&&g(le,{defaults:{VBtn:{slim:!0,variant:"text"}}},{default:()=>[b("div",{class:"v-picker__actions"},[c.actions()])]})]}})}),{}}}),qe=R({header:{type:String,default:"$vuetify.datePicker.header"},headerColor:String,headerDateFormat:{type:String,default:"normalDateWithWeekday"},landscapeHeaderWidth:[Number,String],...E(Pe(),["active","monthText","yearText"]),...Ve({weeksInMonth:"static"}),...E(Ye(),["modelValue"]),...E(Ce(),["modelValue"]),...Ae({title:"$vuetify.datePicker.title"}),modelValue:null},"VDatePicker"),nt=U()({name:"VDatePicker",props:qe(),emits:{"update:modelValue":e=>!0,"update:month":e=>!0,"update:year":e=>!0,"update:viewMode":e=>!0},setup(e,a){let{emit:c,slots:l}=a;const t=X(),{t:v}=re(),{rtlClasses:k}=Fe(),s=W(e,"modelValue",void 0,d=>j(d).map(h=>t.date(h)),d=>e.multiple?d:d[0]),o=W(e,"viewMode"),{minDate:D,maxDate:f,clampDate:x}=Se(e),u=P(()=>{var Y;const d=t.date(),h=(Y=s.value)!=null&&Y[0]?t.date(s.value[0]):x(d);return h&&t.isValid(h)?h:d}),M=L(()=>e.headerColor??e.color),V=W(e,"month"),n=P({get:()=>Number(V.value??t.getMonth(t.startOfMonth(u.value))),set:d=>V.value=d}),y=W(e,"year"),i=P({get:()=>Number(y.value??t.getYear(t.startOfYear(t.setMonth(u.value,n.value)))),set:d=>y.value=d}),C=Z(!1),T=P(()=>{if(e.multiple&&s.value.length>1)return v("$vuetify.datePicker.itemsSelected",s.value.length);const d=s.value[0]&&t.isValid(s.value[0])?t.format(t.date(s.value[0]),e.headerDateFormat):v(e.header);return e.landscape&&d.split(" ").length===3?d.replace(" ",` +`):d}),_=L(()=>{let d=t.date();return d=t.setDate(d,1),d=t.setMonth(d,n.value),d=t.setYear(d,i.value),d}),F=L(()=>t.format(_.value,"monthAndYear")),m=L(()=>t.format(_.value,"monthShort")),r=L(()=>t.format(_.value,"year")),w=L(()=>`date-picker-header${C.value?"-reverse":""}-transition`),A=P(()=>{if(e.disabled)return!0;const d=[];if(o.value!=="month")d.push("prev-month","next-month","prev-year","next-year");else{let h=t.date();if(h=t.startOfMonth(h),h=t.setMonth(h,n.value),h=t.setYear(h,i.value),D.value){const Y=t.addDays(t.startOfMonth(h),-1),B=t.addDays(t.startOfYear(h),-1);t.isAfter(D.value,Y)&&d.push("prev-month"),t.isAfter(D.value,B)&&d.push("prev-year")}if(f.value){const Y=t.addDays(t.endOfMonth(h),1),B=t.addDays(t.endOfYear(h),1);t.isAfter(Y,f.value)&&d.push("next-month"),t.isAfter(B,f.value)&&d.push("next-year")}}return d}),O=P(()=>e.allowedYears||te),z=P(()=>e.allowedMonths||_e);function ee(d,h){const Y=e.allowedDates;if(typeof Y!="function")return!0;const B=1+He(t,d,h);for(let $=0;$0?n.value--:(i.value--,n.value=11,H()),q()}function Te(){if(i.value++,f.value){const d=String(n.value+1).padStart(2,"0"),h=t.parseISO(`${i.value}-${d}-01`);t.isAfter(h,f.value)&&(n.value=t.getMonth(f.value))}H()}function Be(){if(i.value--,D.value){const d=String(n.value+1).padStart(2,"0"),h=t.endOfMonth(t.parseISO(`${i.value}-${d}-01`));t.isAfter(D.value,h)&&(n.value=t.getMonth(D.value))}H()}function Ne(){o.value="month"}function ie(){o.value=o.value==="months"?"month":"months"}function oe(){o.value=o.value==="year"?"month":"year"}function q(){o.value==="months"&&ie()}function H(){o.value==="year"&&oe()}return xe(s,(d,h)=>{const Y=j(h),B=j(d);if(!B.length)return;const $=t.date(Y[Y.length-1]),J=t.date(B[B.length-1]);if(t.isSameDay($,J))return;const K=t.getMonth(J),S=t.getYear(J);K!==n.value&&(n.value=K,q()),S!==i.value&&(i.value=S,H()),C.value=t.isBefore($,J)}),p(()=>{const d=ke.filterProps(e),h=E(ve.filterProps(e),["viewMode"]),Y=fe.filterProps(e),B=he.filterProps(e),$=E(ye.filterProps(e),["modelValue"]),J=E(me.filterProps(e),["modelValue"]),K={color:M.value,header:T.value,transition:w.value};return g(ke,N(d,{color:M.value,class:["v-date-picker",`v-date-picker--${o.value}`,{"v-date-picker--show-week":e.showWeek},k.value,e.class],style:[{"--v-date-picker-landscape-header-width":ne(e.landscapeHeaderWidth)},e.style]}),{title:()=>{var S;return((S=l.title)==null?void 0:S.call(l))??b("div",{class:"v-date-picker__title"},[v(e.title)])},header:()=>l.header?g(le,{defaults:{VDatePickerHeader:{...K}}},{default:()=>{var S;return[(S=l.header)==null?void 0:S.call(l,K)]}}):g(fe,N({key:"header"},Y,K,{onClick:o.value!=="month"?Ne:void 0}),{prepend:l.prepend,append:l.append}),default:()=>b(G,null,[g(ve,N(h,{disabled:A.value,viewMode:o.value,text:F.value,monthText:m.value,yearText:r.value,"onClick:next":Oe,"onClick:prev":Ie,"onClick:nextYear":Te,"onClick:prevYear":Be,"onClick:month":ie,"onClick:year":oe}),{default:l.controls}),g(Le,{hideOnLeave:!0},{default:()=>[o.value==="months"?g(ye,N({key:"date-picker-months"},$,{modelValue:n.value,"onUpdate:modelValue":[S=>n.value=S,q],min:D.value,max:f.value,year:i.value,allowedMonths:z.value}),{month:l.month}):o.value==="year"?g(me,N({key:"date-picker-years"},J,{modelValue:i.value,"onUpdate:modelValue":[S=>i.value=S,H],min:D.value,max:f.value,allowedYears:O.value}),{year:l.year}):g(he,N({key:"date-picker-month"},B,{modelValue:s.value,"onUpdate:modelValue":S=>s.value=S,month:n.value,"onUpdate:month":[S=>n.value=S,q],year:i.value,"onUpdate:year":[S=>i.value=S,H],min:D.value,max:f.value}),{day:l.day})]})]),actions:l.actions})}),{}}});export{nt as V,ke as a,Ae as m}; diff --git a/assets/VExpansionPanels-qZkn9NEQ.js b/assets/VExpansionPanels-qZkn9NEQ.js new file mode 100644 index 0000000..dc081e2 --- /dev/null +++ b/assets/VExpansionPanels-qZkn9NEQ.js @@ -0,0 +1 @@ +import{d as B,j as c,R as A,V as $,k as v,N as b,n as p,e as P,t as l,p as F}from"./vendor-vue-B2vxubPy.js";import{a2 as H,W as O,a4 as W,al as C,H as _,f as q,a9 as R,b as J,a as K,a1 as M,a8 as Q,aa as U,m as D,ab as X,a5 as Y,ad as Z,a0 as ee,ao as ae}from"./index-CFUCTEXJ.js";import{f as y,u as V,p as g,k as S,I as h,h as ne,j as le,m as te,aj as se}from"./vendor-vuetify-s-yw_Hr8.js";const f=Symbol.for("vuetify:v-expansion-panel"),j=g({...S(),...W()},"VExpansionPanelText"),T=y()({name:"VExpansionPanelText",props:j(),setup(e,d){let{slots:n}=d;const a=B(f);if(!a)throw new Error("[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel");const{hasContent:s,onAfterLeave:u}=H(e,a.isSelected);return V(()=>c(O,{onAfterLeave:u},{default:()=>{var o;return[A(v("div",{class:p(["v-expansion-panel-text",e.class]),style:b(e.style)},[n.default&&s.value&&v("div",{class:"v-expansion-panel-text__wrapper"},[(o=n.default)==null?void 0:o.call(n)])]),[[$,a.isSelected.value]])]}})),{}}}),z=g({color:String,expandIcon:{type:h,default:"$expand"},collapseIcon:{type:h,default:"$collapse"},hideActions:Boolean,focusable:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:!1},readonly:Boolean,...S(),...K()},"VExpansionPanelTitle"),w=y()({name:"VExpansionPanelTitle",directives:{vRipple:C},props:z(),setup(e,d){let{slots:n}=d;const a=B(f);if(!a)throw new Error("[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel");const{backgroundColorClasses:s,backgroundColorStyles:u}=_(()=>e.color),{dimensionStyles:o}=J(e),r=P(()=>({collapseIcon:e.collapseIcon,disabled:a.disabled.value,expanded:a.isSelected.value,expandIcon:e.expandIcon,readonly:e.readonly})),E=l(()=>a.isSelected.value?e.collapseIcon:e.expandIcon);return V(()=>{var x;return A(v("button",{class:p(["v-expansion-panel-title",{"v-expansion-panel-title--active":a.isSelected.value,"v-expansion-panel-title--focusable":e.focusable,"v-expansion-panel-title--static":e.static},s.value,e.class]),style:b([u.value,o.value,e.style]),type:"button",tabindex:a.disabled.value?-1:void 0,disabled:a.disabled.value,"aria-expanded":a.isSelected.value,onClick:e.readonly?void 0:a.toggle},[v("span",{class:"v-expansion-panel-title__overlay"},null),(x=n.default)==null?void 0:x.call(n,r.value),!e.hideActions&&c(R,{defaults:{VIcon:{icon:E.value}}},{default:()=>{var m;return[v("span",{class:"v-expansion-panel-title__icon"},[((m=n.actions)==null?void 0:m.call(n,r.value))??c(q,null,null)])]}})]),[[C,e.ripple]])}),{}}}),G=g({title:String,text:String,bgColor:String,...Z(),...Y(),...X(),...D(),...z(),...j()},"VExpansionPanel"),re=y()({name:"VExpansionPanel",props:G(),emits:{"group:selected":e=>!0},setup(e,d){let{slots:n}=d;const a=M(e,f),{backgroundColorClasses:s,backgroundColorStyles:u}=_(()=>e.bgColor),{elevationClasses:o}=U(e),{roundedClasses:r}=Q(e),E=l(()=>(a==null?void 0:a.disabled.value)||e.disabled),x=P(()=>a.group.items.value.reduce((i,t,k)=>(a.group.selected.value.includes(t.id)&&i.push(k),i),[])),m=P(()=>{const i=a.group.items.value.findIndex(t=>t.id===a.id);return!a.isSelected.value&&x.value.some(t=>t-i===1)}),L=P(()=>{const i=a.group.items.value.findIndex(t=>t.id===a.id);return!a.isSelected.value&&x.value.some(t=>t-i===-1)});return F(f,a),V(()=>{const i=!!(n.text||e.text),t=!!(n.title||e.title),k=w.filterProps(e),N=T.filterProps(e);return c(e.tag,{class:p(["v-expansion-panel",{"v-expansion-panel--active":a.isSelected.value,"v-expansion-panel--before-active":m.value,"v-expansion-panel--after-active":L.value,"v-expansion-panel--disabled":E.value},r.value,s.value,e.class]),style:b([u.value,e.style])},{default:()=>[v("div",{class:p(["v-expansion-panel__shadow",...o.value])},null),c(R,{defaults:{VExpansionPanelTitle:{...k},VExpansionPanelText:{...N}}},{default:()=>{var I;return[t&&c(w,{key:"title"},{default:()=>[n.title?n.title():e.title]}),i&&c(T,{key:"text"},{default:()=>[n.text?n.text():e.text]}),(I=n.default)==null?void 0:I.call(n)]}})]})}),{groupItem:a}}}),oe=["default","accordion","inset","popout"],ie=g({flat:Boolean,...ae(),...se(G(),["bgColor","collapseIcon","color","eager","elevation","expandIcon","focusable","hideActions","readonly","ripple","rounded","tile","static"]),...te(),...S(),...D(),variant:{type:String,default:"default",validator:e=>oe.includes(e)}},"VExpansionPanels"),ve=y()({name:"VExpansionPanels",props:ie(),emits:{"update:modelValue":e=>!0},setup(e,d){let{slots:n}=d;const{next:a,prev:s}=ee(e,f),{themeClasses:u}=ne(e),o=l(()=>e.variant&&`v-expansion-panels--variant-${e.variant}`);return le({VExpansionPanel:{bgColor:l(()=>e.bgColor),collapseIcon:l(()=>e.collapseIcon),color:l(()=>e.color),eager:l(()=>e.eager),elevation:l(()=>e.elevation),expandIcon:l(()=>e.expandIcon),focusable:l(()=>e.focusable),hideActions:l(()=>e.hideActions),readonly:l(()=>e.readonly),ripple:l(()=>e.ripple),rounded:l(()=>e.rounded),static:l(()=>e.static)}}),V(()=>c(e.tag,{class:p(["v-expansion-panels",{"v-expansion-panels--flat":e.flat,"v-expansion-panels--tile":e.tile},u.value,o.value,e.class]),style:b(e.style)},{default:()=>{var r;return[(r=n.default)==null?void 0:r.call(n,{prev:s,next:a})]}})),{next:a,prev:s}}});export{ve as V,re as a,w as b,T as c}; diff --git a/assets/VExpansionPanels-rcXmB3Pp.js b/assets/VExpansionPanels-rcXmB3Pp.js deleted file mode 100644 index 8d60980..0000000 --- a/assets/VExpansionPanels-rcXmB3Pp.js +++ /dev/null @@ -1 +0,0 @@ -import{d as B,j as c,R as A,V as N,k as v,N as b,n as p,e as P,t as l,p as F}from"./vendor-vue-H0jQBZ7T.js";import{a1 as O,U,a3 as q,am as C,E as _,h as H,a8 as R,b as J,a as K,a0 as M,a7 as Q,a9 as W,m as D,aa as X,a4 as Y,ac as Z,$ as ee,al as ae}from"./index-_6IQhlPZ.js";import{f as y,u as V,p as g,k as S,I as h,h as ne,j as le,m as te,aj as se}from"./vendor-vuetify-ChAgIwn2.js";const f=Symbol.for("vuetify:v-expansion-panel"),j=g({...S(),...q()},"VExpansionPanelText"),T=y()({name:"VExpansionPanelText",props:j(),setup(e,d){let{slots:n}=d;const a=B(f);if(!a)throw new Error("[Vuetify] v-expansion-panel-text needs to be placed inside v-expansion-panel");const{hasContent:s,onAfterLeave:u}=O(e,a.isSelected);return V(()=>c(U,{onAfterLeave:u},{default:()=>{var o;return[A(v("div",{class:p(["v-expansion-panel-text",e.class]),style:b(e.style)},[n.default&&s.value&&v("div",{class:"v-expansion-panel-text__wrapper"},[(o=n.default)==null?void 0:o.call(n)])]),[[N,a.isSelected.value]])]}})),{}}}),z=g({color:String,expandIcon:{type:h,default:"$expand"},collapseIcon:{type:h,default:"$collapse"},hideActions:Boolean,focusable:Boolean,static:Boolean,ripple:{type:[Boolean,Object],default:!1},readonly:Boolean,...S(),...K()},"VExpansionPanelTitle"),w=y()({name:"VExpansionPanelTitle",directives:{vRipple:C},props:z(),setup(e,d){let{slots:n}=d;const a=B(f);if(!a)throw new Error("[Vuetify] v-expansion-panel-title needs to be placed inside v-expansion-panel");const{backgroundColorClasses:s,backgroundColorStyles:u}=_(()=>e.color),{dimensionStyles:o}=J(e),r=P(()=>({collapseIcon:e.collapseIcon,disabled:a.disabled.value,expanded:a.isSelected.value,expandIcon:e.expandIcon,readonly:e.readonly})),E=l(()=>a.isSelected.value?e.collapseIcon:e.expandIcon);return V(()=>{var x;return A(v("button",{class:p(["v-expansion-panel-title",{"v-expansion-panel-title--active":a.isSelected.value,"v-expansion-panel-title--focusable":e.focusable,"v-expansion-panel-title--static":e.static},s.value,e.class]),style:b([u.value,o.value,e.style]),type:"button",tabindex:a.disabled.value?-1:void 0,disabled:a.disabled.value,"aria-expanded":a.isSelected.value,onClick:e.readonly?void 0:a.toggle},[v("span",{class:"v-expansion-panel-title__overlay"},null),(x=n.default)==null?void 0:x.call(n,r.value),!e.hideActions&&c(R,{defaults:{VIcon:{icon:E.value}}},{default:()=>{var m;return[v("span",{class:"v-expansion-panel-title__icon"},[((m=n.actions)==null?void 0:m.call(n,r.value))??c(H,null,null)])]}})]),[[C,e.ripple]])}),{}}}),G=g({title:String,text:String,bgColor:String,...Z(),...Y(),...X(),...D(),...z(),...j()},"VExpansionPanel"),re=y()({name:"VExpansionPanel",props:G(),emits:{"group:selected":e=>!0},setup(e,d){let{slots:n}=d;const a=M(e,f),{backgroundColorClasses:s,backgroundColorStyles:u}=_(()=>e.bgColor),{elevationClasses:o}=W(e),{roundedClasses:r}=Q(e),E=l(()=>(a==null?void 0:a.disabled.value)||e.disabled),x=P(()=>a.group.items.value.reduce((i,t,k)=>(a.group.selected.value.includes(t.id)&&i.push(k),i),[])),m=P(()=>{const i=a.group.items.value.findIndex(t=>t.id===a.id);return!a.isSelected.value&&x.value.some(t=>t-i===1)}),L=P(()=>{const i=a.group.items.value.findIndex(t=>t.id===a.id);return!a.isSelected.value&&x.value.some(t=>t-i===-1)});return F(f,a),V(()=>{const i=!!(n.text||e.text),t=!!(n.title||e.title),k=w.filterProps(e),$=T.filterProps(e);return c(e.tag,{class:p(["v-expansion-panel",{"v-expansion-panel--active":a.isSelected.value,"v-expansion-panel--before-active":m.value,"v-expansion-panel--after-active":L.value,"v-expansion-panel--disabled":E.value},r.value,s.value,e.class]),style:b([u.value,e.style])},{default:()=>[v("div",{class:p(["v-expansion-panel__shadow",...o.value])},null),c(R,{defaults:{VExpansionPanelTitle:{...k},VExpansionPanelText:{...$}}},{default:()=>{var I;return[t&&c(w,{key:"title"},{default:()=>[n.title?n.title():e.title]}),i&&c(T,{key:"text"},{default:()=>[n.text?n.text():e.text]}),(I=n.default)==null?void 0:I.call(n)]}})]})}),{groupItem:a}}}),oe=["default","accordion","inset","popout"],ie=g({flat:Boolean,...ae(),...se(G(),["bgColor","collapseIcon","color","eager","elevation","expandIcon","focusable","hideActions","readonly","ripple","rounded","tile","static"]),...te(),...S(),...D(),variant:{type:String,default:"default",validator:e=>oe.includes(e)}},"VExpansionPanels"),ve=y()({name:"VExpansionPanels",props:ie(),emits:{"update:modelValue":e=>!0},setup(e,d){let{slots:n}=d;const{next:a,prev:s}=ee(e,f),{themeClasses:u}=ne(e),o=l(()=>e.variant&&`v-expansion-panels--variant-${e.variant}`);return le({VExpansionPanel:{bgColor:l(()=>e.bgColor),collapseIcon:l(()=>e.collapseIcon),color:l(()=>e.color),eager:l(()=>e.eager),elevation:l(()=>e.elevation),expandIcon:l(()=>e.expandIcon),focusable:l(()=>e.focusable),hideActions:l(()=>e.hideActions),readonly:l(()=>e.readonly),ripple:l(()=>e.ripple),rounded:l(()=>e.rounded),static:l(()=>e.static)}}),V(()=>c(e.tag,{class:p(["v-expansion-panels",{"v-expansion-panels--flat":e.flat,"v-expansion-panels--tile":e.tile},u.value,o.value,e.class]),style:b(e.style)},{default:()=>{var r;return[(r=n.default)==null?void 0:r.call(n,{prev:s,next:a})]}})),{next:a,prev:s}}});export{ve as V,re as a,w as b,T as c}; diff --git a/assets/VForm-Cskwow1F.js b/assets/VForm-Cskwow1F.js deleted file mode 100644 index 728c522..0000000 --- a/assets/VForm-Cskwow1F.js +++ /dev/null @@ -1 +0,0 @@ -import{f as p,u as b,p as v,k as y}from"./vendor-vuetify-ChAgIwn2.js";import{f as F,g as V}from"./autofocus-BrMOVHY_.js";import{C as h}from"./index-_6IQhlPZ.js";import{k,N as R,n as C,b as P}from"./vendor-vue-H0jQBZ7T.js";const S=v({...y(),...V()},"VForm"),w=p()({name:"VForm",props:S(),emits:{"update:modelValue":o=>!0,submit:o=>!0},setup(o,i){let{slots:s,emit:f}=i;const r=F(o),n=P();function l(t){t.preventDefault(),r.reset()}function u(t){const a=t,e=r.validate();a.then=e.then.bind(e),a.catch=e.catch.bind(e),a.finally=e.finally.bind(e),f("submit",a),a.defaultPrevented||e.then(c=>{var m;let{valid:d}=c;d&&((m=n.value)==null||m.submit())}),a.preventDefault()}return b(()=>{var t;return k("form",{ref:n,class:C(["v-form",o.class]),style:R(o.style),novalidate:!0,onReset:l,onSubmit:u},[(t=s.default)==null?void 0:t.call(s,r)])}),h(r,n)}});export{w as V}; diff --git a/assets/VForm-zpXHQBRK.js b/assets/VForm-zpXHQBRK.js new file mode 100644 index 0000000..2017659 --- /dev/null +++ b/assets/VForm-zpXHQBRK.js @@ -0,0 +1 @@ +import{f as p,u as b,p as v,k as y}from"./vendor-vuetify-s-yw_Hr8.js";import{d as F,e as V}from"./VLabel-CU-8PdVS.js";import{D as h}from"./index-CFUCTEXJ.js";import{k,N as R,n as P,b as C}from"./vendor-vue-B2vxubPy.js";const D=v({...y(),...V()},"VForm"),w=p()({name:"VForm",props:D(),emits:{"update:modelValue":o=>!0,submit:o=>!0},setup(o,i){let{slots:s,emit:f}=i;const r=F(o),n=C();function l(t){t.preventDefault(),r.reset()}function u(t){const a=t,e=r.validate();a.then=e.then.bind(e),a.catch=e.catch.bind(e),a.finally=e.finally.bind(e),f("submit",a),a.defaultPrevented||e.then(c=>{var m;let{valid:d}=c;d&&((m=n.value)==null||m.submit())}),a.preventDefault()}return b(()=>{var t;return k("form",{ref:n,class:P(["v-form",o.class]),style:R(o.style),novalidate:!0,onReset:l,onSubmit:u},[(t=s.default)==null?void 0:t.call(s,r)])}),h(r,n)}});export{w as V}; diff --git a/assets/VLabel-BXfPXCwa.css b/assets/VLabel-BXfPXCwa.css new file mode 100644 index 0000000..283bb4e --- /dev/null +++ b/assets/VLabel-BXfPXCwa.css @@ -0,0 +1 @@ +.v-input{display:grid;flex:1 1 auto;font-size:1rem;font-weight:400;line-height:1.5}.v-input--disabled{pointer-events:none}.v-input--density-default{--v-input-control-height: 56px;--v-input-padding-top: 16px}.v-input--density-comfortable{--v-input-control-height: 48px;--v-input-padding-top: 12px}.v-input--density-compact{--v-input-control-height: 40px;--v-input-padding-top: 8px}.v-input--vertical{grid-template-areas:"append" "control" "prepend";grid-template-rows:max-content auto max-content;grid-template-columns:min-content}.v-input--vertical .v-input__prepend{margin-block-start:16px}.v-input--vertical .v-input__append{margin-block-end:16px}.v-input--horizontal{grid-template-areas:"prepend control append" "a messages b";grid-template-columns:max-content minmax(0,1fr) max-content;grid-template-rows:1fr auto}.v-input--horizontal .v-input__prepend{margin-inline-end:16px}.v-input--horizontal .v-input__append{margin-inline-start:16px}.v-input__details{align-items:flex-end;display:flex;font-size:.75rem;font-weight:400;grid-area:messages;letter-spacing:.0333333333em;line-height:normal;min-height:22px;padding-top:6px;overflow:hidden;justify-content:space-between}.v-input__details>.v-icon,.v-input__prepend>.v-icon,.v-input__append>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-input--disabled .v-input__details>.v-icon,.v-input--disabled .v-input__details .v-messages,.v-input--error .v-input__details>.v-icon,.v-input--error .v-input__details .v-messages,.v-input--disabled .v-input__prepend>.v-icon,.v-input--disabled .v-input__prepend .v-messages,.v-input--error .v-input__prepend>.v-icon,.v-input--error .v-input__prepend .v-messages,.v-input--disabled .v-input__append>.v-icon,.v-input--disabled .v-input__append .v-messages,.v-input--error .v-input__append>.v-icon,.v-input--error .v-input__append .v-messages{opacity:1}.v-input--glow.v-input--focused .v-input__details>.v-icon,.v-input--glow.v-input--focused .v-input__prepend>.v-icon,.v-input--glow.v-input--focused .v-input__append>.v-icon{opacity:1}.v-input--disabled .v-input__details,.v-input--disabled .v-input__prepend,.v-input--disabled .v-input__append{opacity:var(--v-disabled-opacity)}.v-input--error:not(.v-input--disabled) .v-input__details>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__details .v-messages,.v-input--error:not(.v-input--disabled) .v-input__prepend>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__prepend .v-messages,.v-input--error:not(.v-input--disabled) .v-input__append>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__append .v-messages{color:rgb(var(--v-theme-error))}.v-input__prepend,.v-input__append{display:flex;align-items:flex-start;padding-top:var(--v-input-padding-top)}.v-input--center-affix .v-input__prepend,.v-input--center-affix .v-input__append{align-items:center;padding-top:0}.v-input__prepend{grid-area:prepend}.v-input__append{grid-area:append}.v-input__control{display:flex;grid-area:control}.v-input--hide-spin-buttons input::-webkit-outer-spin-button,.v-input--hide-spin-buttons input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.v-input--hide-spin-buttons input[type=number]{-moz-appearance:textfield}.v-input--plain-underlined .v-input__prepend,.v-input--plain-underlined .v-input__append{align-items:flex-start}.v-input--density-default.v-input--plain-underlined .v-input__prepend,.v-input--density-default.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 4px)}.v-input--density-comfortable.v-input--plain-underlined .v-input__prepend,.v-input--density-comfortable.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 2px)}.v-input--density-compact.v-input--plain-underlined .v-input__prepend,.v-input--density-compact.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 0px)}.v-messages{flex:1 1 auto;font-size:12px;min-height:14px;min-width:1px;opacity:var(--v-medium-emphasis-opacity);position:relative}.v-messages__message{line-height:12px;word-break:break-word;overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;transition-duration:.15s}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-label{align-items:center;color:inherit;display:inline-flex;font-size:1rem;letter-spacing:.009375em;min-width:0;opacity:var(--v-medium-emphasis-opacity);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-label--clickable{cursor:pointer} diff --git a/assets/VLabel-CU-8PdVS.js b/assets/VLabel-CU-8PdVS.js new file mode 100644 index 0000000..a570358 --- /dev/null +++ b/assets/VLabel-CU-8PdVS.js @@ -0,0 +1 @@ +import{an as te,ap as le,f as T,u as N,w as R,p as S,k as O,g as q,n as L,ag as $,l as se,C as J,h as ie,A as ue,I as Y,m as Q,aj as oe}from"./vendor-vuetify-s-yw_Hr8.js";import{f as re,G as de,a3 as ce,au as ve,j as fe,J as ge,b as me,a as ye,L as he}from"./index-CFUCTEXJ.js";import{j as D,m as be,k as p,N as j,n as K,e as g,t as V,o as P,d as X,b as F,s as _,p as Ve,ag as ke,E as Z,a0 as Ce,A as Ie,D as pe,I as Se,u as Me}from"./vendor-vue-B2vxubPy.js";function we(e){const{t:l}=te();function o(t){let{name:r,color:a,...f}=t;const c={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[r],m=e[`onClick:${r}`];function h(s){s.key!=="Enter"&&s.key!==" "||(s.preventDefault(),s.stopPropagation(),le(m,new PointerEvent("click",s)))}const i=m&&c?l(`$vuetify.input.${c}`,e.label??""):void 0;return D(re,be({icon:e[`${r}Icon`],"aria-label":i,onClick:m,onKeydown:h,color:a},f),null)}return{InputIcon:o}}const Be=S({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...O(),...ve({transition:{component:fe,leaveAbsolute:!0,group:!0}})},"VMessages"),Pe=T()({name:"VMessages",props:Be(),setup(e,l){let{slots:o}=l;const t=g(()=>R(e.messages)),{textColorClasses:r,textColorStyles:a}=de(()=>e.color);return N(()=>D(ce,{transition:e.transition,tag:"div",class:K(["v-messages",r.value,e.class]),style:j([a.value,e.style])},{default:()=>[e.active&&t.value.map((f,c)=>p("div",{class:"v-messages__message",key:`${c}-${t.value}`},[o.message?o.message({message:f}):f]))]})),{}}}),De=S({focused:Boolean,"onUpdate:focused":$()},"focus");function Oe(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:q();const o=L(e,"focused"),t=V(()=>({[`${l}--focused`]:o.value}));function r(){o.value=!0}function a(){o.value=!1}return{focusClasses:t,isFocused:o,focus:r,blur:a}}const ee=Symbol.for("vuetify:form"),Le=S({disabled:Boolean,fastFail:Boolean,readonly:Boolean,modelValue:{type:Boolean,default:null},validateOn:{type:String,default:"input"}},"form");function je(e){const l=L(e,"modelValue"),o=V(()=>e.disabled),t=V(()=>e.readonly),r=_(!1),a=F([]),f=F([]);async function c(){const i=[];let s=!0;f.value=[],r.value=!0;for(const u of a.value){const d=await u.validate();if(d.length>0&&(s=!1,i.push({id:u.id,errorMessages:d})),!s&&e.fastFail)break}return f.value=i,r.value=!1,{valid:s,errors:f.value}}function m(){a.value.forEach(i=>i.reset())}function h(){a.value.forEach(i=>i.resetValidation())}return P(a,()=>{let i=0,s=0;const u=[];for(const d of a.value)d.isValid===!1?(s++,u.push({id:d.id,errorMessages:d.errorMessages})):d.isValid===!0&&i++;f.value=u,l.value=s>0?!1:i===a.value.length?!0:null},{deep:!0,flush:"post"}),Ve(ee,{register:i=>{let{id:s,vm:u,validate:d,reset:I,resetValidation:M}=i;a.value.some(b=>b.id===s),a.value.push({id:s,validate:d,reset:I,resetValidation:M,vm:ke(u),isValid:null,errorMessages:[]})},unregister:i=>{a.value=a.value.filter(s=>s.id!==i)},update:(i,s,u)=>{const d=a.value.find(I=>I.id===i);d&&(d.isValid=s,d.errorMessages=u)},isDisabled:o,isReadonly:t,isValidating:r,isValid:l,items:a,validateOn:V(()=>e.validateOn)}),{errors:f,isDisabled:o,isReadonly:t,isValidating:r,isValid:l,items:a,validate:c,reset:m,resetValidation:h}}function xe(e){const l=X(ee,null);return{...l,isReadonly:g(()=>!!((e==null?void 0:e.readonly)??(l==null?void 0:l.isReadonly.value))),isDisabled:g(()=>!!((e==null?void 0:e.disabled)??(l==null?void 0:l.isDisabled.value)))}}const Ae=Symbol.for("vuetify:rules");function Re(e){const l=X(Ae,null);if(!e){if(!l)throw new Error("Could not find Vuetify rules injection");return l.aliases}return(l==null?void 0:l.resolve(e))??V(e)}const $e=S({disabled:{type:Boolean,default:null},error:Boolean,errorMessages:{type:[Array,String],default:()=>[]},maxErrors:{type:[Number,String],default:1},name:String,label:String,readonly:{type:Boolean,default:null},rules:{type:Array,default:()=>[]},modelValue:null,validateOn:String,validationValue:null,...De()},"validation");function Ee(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:q(),o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Z();const t=L(e,"modelValue"),r=g(()=>e.validationValue===void 0?t.value:e.validationValue),a=xe(e),f=Re(()=>e.rules),c=F([]),m=_(!0),h=g(()=>!!(R(t.value===""?null:t.value).length||R(r.value===""?null:r.value).length)),i=g(()=>{var n;return(n=e.errorMessages)!=null&&n.length?R(e.errorMessages).concat(c.value).slice(0,Math.max(0,Number(e.maxErrors))):c.value}),s=g(()=>{var k;let n=(e.validateOn??((k=a.validateOn)==null?void 0:k.value))||"input";n==="lazy"&&(n="input lazy"),n==="eager"&&(n="input eager");const v=new Set((n==null?void 0:n.split(" "))??[]);return{input:v.has("input"),blur:v.has("blur")||v.has("input")||v.has("invalid-input"),invalidInput:v.has("invalid-input"),lazy:v.has("lazy"),eager:v.has("eager")}}),u=g(()=>{var n;return e.error||(n=e.errorMessages)!=null&&n.length?!1:e.rules.length?m.value?c.value.length||s.value.lazy?null:!0:!c.value.length:!0}),d=_(!1),I=g(()=>({[`${l}--error`]:u.value===!1,[`${l}--dirty`]:h.value,[`${l}--disabled`]:a.isDisabled.value,[`${l}--readonly`]:a.isReadonly.value})),M=se("validation"),b=g(()=>e.name??Me(o));Ce(()=>{var n;(n=a.register)==null||n.call(a,{id:b.value,vm:M,validate:y,reset:w,resetValidation:B})}),Ie(()=>{var n;(n=a.unregister)==null||n.call(a,b.value)}),pe(async()=>{var n;s.value.lazy||await y(!s.value.eager),(n=a.update)==null||n.call(a,b.value,u.value,i.value)}),J(()=>s.value.input||s.value.invalidInput&&u.value===!1,()=>{P(r,()=>{if(r.value!=null)y();else if(e.focused){const n=P(()=>e.focused,v=>{v||y(),n()})}})}),J(()=>s.value.blur,()=>{P(()=>e.focused,n=>{n||y()})}),P([u,i],()=>{var n;(n=a.update)==null||n.call(a,b.value,u.value,i.value)});async function w(){t.value=null,await Se(),await B()}async function B(){m.value=!0,s.value.lazy?c.value=[]:await y(!s.value.eager)}async function y(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const v=[];d.value=!0;for(const k of f.value){if(v.length>=Number(e.maxErrors??1))break;const C=await(typeof k=="function"?k:()=>k)(r.value);if(C!==!0){if(C!==!1&&typeof C!="string"){console.warn(`${C} is not a valid value. Rule functions must return boolean true or a string.`);continue}v.push(C||"")}}return c.value=v,d.value=!1,m.value=n,c.value}return{errorMessages:i,isDirty:h,isDisabled:a.isDisabled,isReadonly:a.isReadonly,isPristine:m,isValid:u,isValidating:d,reset:w,resetValidation:B,validate:y,validationClasses:I}}const ze=S({id:String,appendIcon:Y,baseColor:String,centerAffix:{type:Boolean,default:!0},color:String,glow:Boolean,iconColor:[Boolean,String],prependIcon:Y,hideDetails:[Boolean,String],hideSpinButtons:Boolean,hint:String,persistentHint:Boolean,messages:{type:[Array,String],default:()=>[]},direction:{type:String,default:"horizontal",validator:e=>["horizontal","vertical"].includes(e)},"onClick:prepend":$(),"onClick:append":$(),...O(),...he(),...oe(ye(),["maxWidth","minWidth","width"]),...Q(),...$e()},"VInput"),Ke=T()({name:"VInput",props:{...ze()},emits:{"update:modelValue":e=>!0},setup(e,l){let{attrs:o,slots:t,emit:r}=l;const{densityClasses:a}=ge(e),{dimensionStyles:f}=me(e),{themeClasses:c}=ie(e),{rtlClasses:m}=ue(),{InputIcon:h}=we(e),i=Z(),s=g(()=>e.id||`input-${i}`),{errorMessages:u,isDirty:d,isDisabled:I,isReadonly:M,isPristine:b,isValid:w,isValidating:B,reset:y,resetValidation:n,validate:v,validationClasses:k}=Ee(e,"v-input",s),E=g(()=>{var A;return(A=e.errorMessages)!=null&&A.length||!b.value&&u.value.length?u.value:e.hint&&(e.persistentHint||e.focused)?e.hint:e.messages}),C=V(()=>E.value.length>0),z=V(()=>!e.hideDetails||e.hideDetails==="auto"&&(C.value||!!t.details)),H=g(()=>z.value?`${s.value}-messages`:void 0),x=g(()=>({id:s,messagesId:H,isDirty:d,isDisabled:I,isReadonly:M,isPristine:b,isValid:w,isValidating:B,hasDetails:z,reset:y,resetValidation:n,validate:v})),ae=V(()=>e.error||e.disabled?void 0:e.focused?e.color:e.baseColor),U=V(()=>{if(e.iconColor)return e.iconColor===!0?ae.value:e.iconColor});return N(()=>{var W,G;const A=!!(t.prepend||e.prependIcon),ne=!!(t.append||e.appendIcon);return p("div",{class:K(["v-input",`v-input--${e.direction}`,{"v-input--center-affix":e.centerAffix,"v-input--focused":e.focused,"v-input--glow":e.glow,"v-input--hide-spin-buttons":e.hideSpinButtons},a.value,c.value,m.value,k.value,e.class]),style:j([f.value,e.style])},[A&&p("div",{key:"prepend",class:"v-input__prepend"},[t.prepend?t.prepend(x.value):e.prependIcon&&D(h,{key:"prepend-icon",name:"prepend",color:U.value},null)]),t.default&&p("div",{class:"v-input__control"},[(W=t.default)==null?void 0:W.call(t,x.value)]),ne&&p("div",{key:"append",class:"v-input__append"},[t.append?t.append(x.value):e.appendIcon&&D(h,{key:"append-icon",name:"append",color:U.value},null)]),z.value&&p("div",{id:H.value,class:"v-input__details",role:"alert","aria-live":"polite"},[D(Pe,{active:C.value,messages:E.value},{message:t.message}),(G=t.details)==null?void 0:G.call(t,x.value)])])}),{reset:y,resetValidation:n,validate:v,isValid:w,errorMessages:u}}}),Fe=S({text:String,onClick:$(),...O(),...Q()},"VLabel"),He=T()({name:"VLabel",props:Fe(),setup(e,l){let{slots:o}=l;return N(()=>{var t;return p("label",{class:K(["v-label",{"v-label--clickable":!!e.onClick},e.class]),style:j(e.style),onClick:e.onClick},[e.text,(t=o.default)==null?void 0:t.call(o)])}),{}}});export{Ke as V,He as a,we as b,xe as c,je as d,Le as e,De as f,ze as m,Oe as u}; diff --git a/assets/VPagination-BiSMksGW.js b/assets/VPagination-D-juuf4L.js similarity index 76% rename from assets/VPagination-BiSMksGW.js rename to assets/VPagination-D-juuf4L.js index 959a33d..46dae26 100644 --- a/assets/VPagination-BiSMksGW.js +++ b/assets/VPagination-D-juuf4L.js @@ -1 +1 @@ -import{l as P,ai as q,m as K,aq as W,aa as G,ac as J,I as O,ad as U}from"./index-_6IQhlPZ.js";import{f as X,n as H,an as Q,A as Y,h as Z,a0 as aa,j as R,y as ea,u as ta,aI as B,p as la,I as x,m as ia,k as na,aJ as V}from"./vendor-vuetify-ChAgIwn2.js";import{ag as sa,b as ra,j as g,k as b,m as L,n as N,N as ua,s as oa,e as m,I as $,t as d}from"./vendor-vue-H0jQBZ7T.js";function va(){const a=ra([]);sa(()=>a.value=[]);function I(n,_){a.value[_]=n}return{refs:a,updateRef:I}}const ca=la({activeColor:String,start:{type:[Number,String],default:1},modelValue:{type:Number,default:a=>a.start},disabled:Boolean,length:{type:[Number,String],default:1,validator:a=>a%1===0},totalVisible:[Number,String],firstIcon:{type:x,default:"$first"},prevIcon:{type:x,default:"$prev"},nextIcon:{type:x,default:"$next"},lastIcon:{type:x,default:"$last"},ariaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.root"},pageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.page"},currentPageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.currentPage"},firstAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.first"},previousAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.previous"},nextAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.next"},lastAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.last"},ellipsis:{type:String,default:"..."},showFirstLastPage:Boolean,...U(),...na(),...O(),...J(),...G(),...W(),...K({tag:"nav"}),...ia(),...q({variant:"text"})},"VPagination"),ba=X()({name:"VPagination",props:ca(),emits:{"update:modelValue":a=>!0,first:a=>!0,prev:a=>!0,next:a=>!0,last:a=>!0},setup(a,I){let{slots:n,emit:_}=I;const i=H(a,"modelValue"),{t:f,n:C}=Q(),{isRtl:k}=Y(),{themeClasses:w}=Z(a),{width:F}=aa(),p=oa(-1);R(void 0,{scoped:!0});const{resizeRef:M}=ea(e=>{if(!e.length)return;const{target:t,contentRect:l}=e[0],u=t.querySelector(".v-pagination__list > *");if(!u)return;const o=l.width,h=u.offsetWidth+parseFloat(getComputedStyle(u).marginRight)*2;p.value=S(o,h)}),s=m(()=>parseInt(a.length,10)),r=m(()=>parseInt(a.start,10)),v=m(()=>a.totalVisible!=null?parseInt(a.totalVisible,10):p.value>=0?p.value:S(F.value,58));function S(e,t){const l=a.showFirstLastPage?5:3;return Math.max(0,Math.floor(Number(((e-t*l)/t).toFixed(2))))}const z=m(()=>{if(s.value<=0||isNaN(s.value)||s.value>Number.MAX_SAFE_INTEGER)return[];if(v.value<=0)return[];if(v.value===1)return[i.value];if(s.value<=v.value)return V(s.value,r.value);const e=v.value%2===0,t=e?v.value/2:Math.floor(v.value/2),l=e?t:t+1,u=s.value-t;if(l-i.value>=0)return[...V(Math.max(1,v.value-1),r.value),a.ellipsis,s.value];if(i.value-u>=(e?1:0)){const o=v.value-1,h=s.value-o+r.value;return[r.value,a.ellipsis,...V(o,h)]}else{const o=Math.max(1,v.value-2),h=o===1?i.value:i.value-Math.ceil(o/2)+r.value;return[r.value,a.ellipsis,...V(o,h),a.ellipsis,s.value]}});function y(e,t,l){e.preventDefault(),i.value=t,l&&_(l,t)}const{refs:D,updateRef:T}=va();R({VPaginationBtn:{color:d(()=>a.color),border:d(()=>a.border),density:d(()=>a.density),size:d(()=>a.size),variant:d(()=>a.variant),rounded:d(()=>a.rounded),elevation:d(()=>a.elevation)}});const E=m(()=>z.value.map((e,t)=>{const l=u=>T(u,t);if(typeof e=="string")return{isActive:!1,key:`ellipsis-${t}`,page:e,props:{ref:l,ellipsis:!0,icon:!0,disabled:!0}};{const u=e===i.value;return{isActive:u,key:e,page:C(e),props:{ref:l,ellipsis:!1,icon:!0,disabled:!!a.disabled||Number(a.length)<2,color:u?a.activeColor:a.color,"aria-current":u,"aria-label":f(u?a.currentPageAriaLabel:a.pageAriaLabel,e),onClick:o=>y(o,e)}}}})),c=m(()=>{const e=!!a.disabled||i.value<=r.value,t=!!a.disabled||i.value>=r.value+s.value-1;return{first:a.showFirstLastPage?{icon:k.value?a.lastIcon:a.firstIcon,onClick:l=>y(l,r.value,"first"),disabled:e,"aria-label":f(a.firstAriaLabel),"aria-disabled":e}:void 0,prev:{icon:k.value?a.nextIcon:a.prevIcon,onClick:l=>y(l,i.value-1,"prev"),disabled:e,"aria-label":f(a.previousAriaLabel),"aria-disabled":e},next:{icon:k.value?a.prevIcon:a.nextIcon,onClick:l=>y(l,i.value+1,"next"),disabled:t,"aria-label":f(a.nextAriaLabel),"aria-disabled":t},last:a.showFirstLastPage?{icon:k.value?a.firstIcon:a.lastIcon,onClick:l=>y(l,r.value+s.value-1,"last"),disabled:t,"aria-label":f(a.lastAriaLabel),"aria-disabled":t}:void 0}});function A(){var t;const e=i.value-r.value;(t=D.value[e])==null||t.$el.focus()}function j(e){e.key===B.left&&!a.disabled&&i.value>Number(a.start)?(i.value=i.value-1,$(A)):e.key===B.right&&!a.disabled&&i.valueg(a.tag,{ref:M,class:N(["v-pagination",w.value,a.class]),style:ua(a.style),role:"navigation","aria-label":f(a.ariaLabel),onKeydown:j,"data-test":"v-pagination-root"},{default:()=>[b("ul",{class:"v-pagination__list"},[a.showFirstLastPage&&b("li",{key:"first",class:"v-pagination__first","data-test":"v-pagination-first"},[n.first?n.first(c.value.first):g(P,L({_as:"VPaginationBtn"},c.value.first),null)]),b("li",{key:"prev",class:"v-pagination__prev","data-test":"v-pagination-prev"},[n.prev?n.prev(c.value.prev):g(P,L({_as:"VPaginationBtn"},c.value.prev),null)]),E.value.map((e,t)=>b("li",{key:e.key,class:N(["v-pagination__item",{"v-pagination__item--is-active":e.isActive}]),"data-test":"v-pagination-item"},[n.item?n.item(e):g(P,L({_as:"VPaginationBtn"},e.props),{default:()=>[e.page]})])),b("li",{key:"next",class:"v-pagination__next","data-test":"v-pagination-next"},[n.next?n.next(c.value.next):g(P,L({_as:"VPaginationBtn"},c.value.next),null)]),a.showFirstLastPage&&b("li",{key:"last",class:"v-pagination__last","data-test":"v-pagination-last"},[n.last?n.last(c.value.last):g(P,L({_as:"VPaginationBtn"},c.value.last),null)])])]})),{}}});export{ba as V}; +import{i as L,aj as K,m as W,as as q,ab as G,ad as J,L as O,ae as U}from"./index-CFUCTEXJ.js";import{f as X,n as H,an as Q,A as Y,h as Z,a0 as aa,j as R,y as ea,u as ta,aJ as B,p as la,I as x,m as ia,k as na,aK as V}from"./vendor-vuetify-s-yw_Hr8.js";import{ah as sa,b as ra,j as g,k as b,m as P,n as N,N as ua,s as oa,e as m,I as $,t as d}from"./vendor-vue-B2vxubPy.js";function va(){const a=ra([]);sa(()=>a.value=[]);function _(n,p){a.value[p]=n}return{refs:a,updateRef:_}}const ca=la({activeColor:String,start:{type:[Number,String],default:1},modelValue:{type:Number,default:a=>a.start},disabled:Boolean,length:{type:[Number,String],default:1,validator:a=>a%1===0},totalVisible:[Number,String],firstIcon:{type:x,default:"$first"},prevIcon:{type:x,default:"$prev"},nextIcon:{type:x,default:"$next"},lastIcon:{type:x,default:"$last"},ariaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.root"},pageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.page"},currentPageAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.currentPage"},firstAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.first"},previousAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.previous"},nextAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.next"},lastAriaLabel:{type:String,default:"$vuetify.pagination.ariaLabel.last"},ellipsis:{type:String,default:"..."},showFirstLastPage:Boolean,...U(),...na(),...O(),...J(),...G(),...q(),...W({tag:"nav"}),...ia(),...K({variant:"text"})},"VPagination"),ba=X()({name:"VPagination",props:ca(),emits:{"update:modelValue":a=>!0,first:a=>!0,prev:a=>!0,next:a=>!0,last:a=>!0},setup(a,_){let{slots:n,emit:p}=_;const i=H(a,"modelValue"),{t:f,n:C}=Q(),{isRtl:k}=Y(),{themeClasses:w}=Z(a),{width:F}=aa(),I=oa(-1);R(void 0,{scoped:!0});const{resizeRef:M}=ea(e=>{if(!e.length)return;const{target:t,contentRect:l}=e[0],u=t.querySelector(".v-pagination__list > *");if(!u)return;const o=l.width,h=u.offsetWidth+parseFloat(getComputedStyle(u).marginRight)*2;I.value=S(o,h)}),s=m(()=>parseInt(a.length,10)),r=m(()=>parseInt(a.start,10)),v=m(()=>a.totalVisible!=null?parseInt(a.totalVisible,10):I.value>=0?I.value:S(F.value,58));function S(e,t){const l=a.showFirstLastPage?5:3;return Math.max(0,Math.floor(Number(((e-t*l)/t).toFixed(2))))}const z=m(()=>{if(s.value<=0||isNaN(s.value)||s.value>Number.MAX_SAFE_INTEGER)return[];if(v.value<=0)return[];if(v.value===1)return[i.value];if(s.value<=v.value)return V(s.value,r.value);const e=v.value%2===0,t=e?v.value/2:Math.floor(v.value/2),l=e?t:t+1,u=s.value-t;if(l-i.value>=0)return[...V(Math.max(1,v.value-1),r.value),a.ellipsis,s.value];if(i.value-u>=(e?1:0)){const o=v.value-1,h=s.value-o+r.value;return[r.value,a.ellipsis,...V(o,h)]}else{const o=Math.max(1,v.value-2),h=o===1?i.value:i.value-Math.ceil(o/2)+r.value;return[r.value,a.ellipsis,...V(o,h),a.ellipsis,s.value]}});function y(e,t,l){e.preventDefault(),i.value=t,l&&p(l,t)}const{refs:D,updateRef:T}=va();R({VPaginationBtn:{color:d(()=>a.color),border:d(()=>a.border),density:d(()=>a.density),size:d(()=>a.size),variant:d(()=>a.variant),rounded:d(()=>a.rounded),elevation:d(()=>a.elevation)}});const E=m(()=>z.value.map((e,t)=>{const l=u=>T(u,t);if(typeof e=="string")return{isActive:!1,key:`ellipsis-${t}`,page:e,props:{ref:l,ellipsis:!0,icon:!0,disabled:!0}};{const u=e===i.value;return{isActive:u,key:e,page:C(e),props:{ref:l,ellipsis:!1,icon:!0,disabled:!!a.disabled||Number(a.length)<2,color:u?a.activeColor:a.color,"aria-current":u,"aria-label":f(u?a.currentPageAriaLabel:a.pageAriaLabel,e),onClick:o=>y(o,e)}}}})),c=m(()=>{const e=!!a.disabled||i.value<=r.value,t=!!a.disabled||i.value>=r.value+s.value-1;return{first:a.showFirstLastPage?{icon:k.value?a.lastIcon:a.firstIcon,onClick:l=>y(l,r.value,"first"),disabled:e,"aria-label":f(a.firstAriaLabel),"aria-disabled":e}:void 0,prev:{icon:k.value?a.nextIcon:a.prevIcon,onClick:l=>y(l,i.value-1,"prev"),disabled:e,"aria-label":f(a.previousAriaLabel),"aria-disabled":e},next:{icon:k.value?a.prevIcon:a.nextIcon,onClick:l=>y(l,i.value+1,"next"),disabled:t,"aria-label":f(a.nextAriaLabel),"aria-disabled":t},last:a.showFirstLastPage?{icon:k.value?a.firstIcon:a.lastIcon,onClick:l=>y(l,r.value+s.value-1,"last"),disabled:t,"aria-label":f(a.lastAriaLabel),"aria-disabled":t}:void 0}});function A(){var t;const e=i.value-r.value;(t=D.value[e])==null||t.$el.focus()}function j(e){e.key===B.left&&!a.disabled&&i.value>Number(a.start)?(i.value=i.value-1,$(A)):e.key===B.right&&!a.disabled&&i.valueg(a.tag,{ref:M,class:N(["v-pagination",w.value,a.class]),style:ua(a.style),role:"navigation","aria-label":f(a.ariaLabel),onKeydown:j,"data-test":"v-pagination-root"},{default:()=>[b("ul",{class:"v-pagination__list"},[a.showFirstLastPage&&b("li",{key:"first",class:"v-pagination__first","data-test":"v-pagination-first"},[n.first?n.first(c.value.first):g(L,P({_as:"VPaginationBtn"},c.value.first),null)]),b("li",{key:"prev",class:"v-pagination__prev","data-test":"v-pagination-prev"},[n.prev?n.prev(c.value.prev):g(L,P({_as:"VPaginationBtn"},c.value.prev),null)]),E.value.map((e,t)=>b("li",{key:e.key,class:N(["v-pagination__item",{"v-pagination__item--is-active":e.isActive}]),"data-test":"v-pagination-item"},[n.item?n.item(e):g(L,P({_as:"VPaginationBtn"},e.props),{default:()=>[e.page]})])),b("li",{key:"next",class:"v-pagination__next","data-test":"v-pagination-next"},[n.next?n.next(c.value.next):g(L,P({_as:"VPaginationBtn"},c.value.next),null)]),a.showFirstLastPage&&b("li",{key:"last",class:"v-pagination__last","data-test":"v-pagination-last"},[n.last?n.last(c.value.last):g(L,P({_as:"VPaginationBtn"},c.value.last),null)])])]})),{}}});export{ba as V}; diff --git a/assets/VRow-WkEz3xRr.js b/assets/VRow-Dw4j2TKL.js similarity index 93% rename from assets/VRow-WkEz3xRr.js rename to assets/VRow-Dw4j2TKL.js index 2eea803..ee13d48 100644 --- a/assets/VRow-WkEz3xRr.js +++ b/assets/VRow-Dw4j2TKL.js @@ -1 +1 @@ -import{f as C,p as S,k as b,aA as i}from"./vendor-vuetify-ChAgIwn2.js";import{m as k}from"./index-_6IQhlPZ.js";import{h as N,e as j,a as u}from"./vendor-vue-H0jQBZ7T.js";const V=i.reduce((t,a)=>(t[a]={type:[Boolean,String,Number],default:!1},t),{}),v=i.reduce((t,a)=>{const e="offset"+u(a);return t[e]={type:[String,Number],default:null},t},{}),L=i.reduce((t,a)=>{const e="order"+u(a);return t[e]={type:[String,Number],default:null},t},{}),y={col:Object.keys(V),offset:Object.keys(v),order:Object.keys(L)};function G(t,a,e){let s=t;if(!(e==null||e===!1)){if(a){const n=a.replace(t,"");s+=`-${n}`}return t==="col"&&(s="v-"+s),t==="col"&&(e===""||e===!0)||(s+=`-${e}`),s.toLowerCase()}}const _=["auto","start","end","center","baseline","stretch"],I=S({cols:{type:[Boolean,String,Number],default:!1},...V,offset:{type:[String,Number],default:null},...v,order:{type:[String,Number],default:null},...L,alignSelf:{type:String,default:null,validator:t=>_.includes(t)},...b(),...k()},"VCol"),J=C()({name:"VCol",props:I(),setup(t,a){let{slots:e}=a;const s=j(()=>{const n=[];let l;for(l in y)y[l].forEach(o=>{const c=t[o],g=G(l,o,c);g&&n.push(g)});const r=n.some(o=>o.startsWith("v-col-"));return n.push({"v-col":!r||!t.cols,[`v-col-${t.cols}`]:t.cols,[`offset-${t.offset}`]:t.offset,[`order-${t.order}`]:t.order,[`align-self-${t.alignSelf}`]:t.alignSelf}),n});return()=>{var n;return N(t.tag,{class:[s.value,t.class],style:t.style},(n=e.default)==null?void 0:n.call(e))}}}),f=["start","end","center"],$=["space-between","space-around","space-evenly"];function d(t,a){return i.reduce((e,s)=>{const n=t+u(s);return e[n]=a(),e},{})}const R=[...f,"baseline","stretch"],h=t=>R.includes(t),w=d("align",()=>({type:String,default:null,validator:h})),T=[...f,...$],P=t=>T.includes(t),A=d("justify",()=>({type:String,default:null,validator:P})),U=[...f,...$,"stretch"],E=t=>U.includes(t),O=d("alignContent",()=>({type:String,default:null,validator:E})),m={align:Object.keys(w),justify:Object.keys(A),alignContent:Object.keys(O)},B={align:"align",justify:"justify",alignContent:"align-content"};function M(t,a,e){let s=B[t];if(e!=null){if(a){const n=a.replace(t,"");s+=`-${n}`}return s+=`-${e}`,s.toLowerCase()}}const F=S({dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:h},...w,justify:{type:String,default:null,validator:P},...A,alignContent:{type:String,default:null,validator:E},...O,...b(),...k()},"VRow"),W=C()({name:"VRow",props:F(),setup(t,a){let{slots:e}=a;const s=j(()=>{const n=[];let l;for(l in m)m[l].forEach(r=>{const o=t[r],c=M(l,r,o);c&&n.push(c)});return n.push({"v-row--no-gutters":t.noGutters,"v-row--dense":t.dense,[`align-${t.align}`]:t.align,[`justify-${t.justify}`]:t.justify,[`align-content-${t.alignContent}`]:t.alignContent}),n});return()=>{var n;return N(t.tag,{class:["v-row",s.value,t.class],style:t.style},(n=e.default)==null?void 0:n.call(e))}}});export{W as V,J as a}; +import{f as C,p as S,k as b,aA as i}from"./vendor-vuetify-s-yw_Hr8.js";import{m as k}from"./index-CFUCTEXJ.js";import{h as N,e as j,a as u}from"./vendor-vue-B2vxubPy.js";const V=i.reduce((t,a)=>(t[a]={type:[Boolean,String,Number],default:!1},t),{}),v=i.reduce((t,a)=>{const e="offset"+u(a);return t[e]={type:[String,Number],default:null},t},{}),L=i.reduce((t,a)=>{const e="order"+u(a);return t[e]={type:[String,Number],default:null},t},{}),y={col:Object.keys(V),offset:Object.keys(v),order:Object.keys(L)};function G(t,a,e){let s=t;if(!(e==null||e===!1)){if(a){const n=a.replace(t,"");s+=`-${n}`}return t==="col"&&(s="v-"+s),t==="col"&&(e===""||e===!0)||(s+=`-${e}`),s.toLowerCase()}}const _=["auto","start","end","center","baseline","stretch"],I=S({cols:{type:[Boolean,String,Number],default:!1},...V,offset:{type:[String,Number],default:null},...v,order:{type:[String,Number],default:null},...L,alignSelf:{type:String,default:null,validator:t=>_.includes(t)},...b(),...k()},"VCol"),J=C()({name:"VCol",props:I(),setup(t,a){let{slots:e}=a;const s=j(()=>{const n=[];let l;for(l in y)y[l].forEach(o=>{const c=t[o],g=G(l,o,c);g&&n.push(g)});const r=n.some(o=>o.startsWith("v-col-"));return n.push({"v-col":!r||!t.cols,[`v-col-${t.cols}`]:t.cols,[`offset-${t.offset}`]:t.offset,[`order-${t.order}`]:t.order,[`align-self-${t.alignSelf}`]:t.alignSelf}),n});return()=>{var n;return N(t.tag,{class:[s.value,t.class],style:t.style},(n=e.default)==null?void 0:n.call(e))}}}),f=["start","end","center"],$=["space-between","space-around","space-evenly"];function d(t,a){return i.reduce((e,s)=>{const n=t+u(s);return e[n]=a(),e},{})}const R=[...f,"baseline","stretch"],h=t=>R.includes(t),w=d("align",()=>({type:String,default:null,validator:h})),T=[...f,...$],P=t=>T.includes(t),A=d("justify",()=>({type:String,default:null,validator:P})),U=[...f,...$,"stretch"],E=t=>U.includes(t),O=d("alignContent",()=>({type:String,default:null,validator:E})),m={align:Object.keys(w),justify:Object.keys(A),alignContent:Object.keys(O)},B={align:"align",justify:"justify",alignContent:"align-content"};function M(t,a,e){let s=B[t];if(e!=null){if(a){const n=a.replace(t,"");s+=`-${n}`}return s+=`-${e}`,s.toLowerCase()}}const F=S({dense:Boolean,noGutters:Boolean,align:{type:String,default:null,validator:h},...w,justify:{type:String,default:null,validator:P},...A,alignContent:{type:String,default:null,validator:E},...O,...b(),...k()},"VRow"),W=C()({name:"VRow",props:F(),setup(t,a){let{slots:e}=a;const s=j(()=>{const n=[];let l;for(l in m)m[l].forEach(r=>{const o=t[r],c=M(l,r,o);c&&n.push(c)});return n.push({"v-row--no-gutters":t.noGutters,"v-row--dense":t.dense,[`align-${t.align}`]:t.align,[`justify-${t.justify}`]:t.justify,[`align-content-${t.alignContent}`]:t.alignContent}),n});return()=>{var n;return N(t.tag,{class:["v-row",s.value,t.class],style:t.style},(n=e.default)==null?void 0:n.call(e))}}});export{W as V,J as a}; diff --git a/assets/VSelect-ANRyd3L-.js b/assets/VSelect-ANRyd3L-.js deleted file mode 100644 index 744e1fd..0000000 --- a/assets/VSelect-ANRyd3L-.js +++ /dev/null @@ -1 +0,0 @@ -import{e as Je,h as Ze,d as qe}from"./autofocus-BrMOVHY_.js";import{V as Le,m as et}from"./VTextField-CuXGbmmC.js";import{o as oe,k as S,F as ue,m as N,w as Ce,s as U,q as ze,b as X,e as $,I as He,D as tt,j as T,N as lt,n as me,t as he,l as Pe,u as se,E as nt,a1 as at}from"./vendor-vue-H0jQBZ7T.js";import{f as Fe,y as Ne,u as Re,p as re,k as Ue,a0 as ot,z as ke,aM as rt,ai as je,E as Ge,l as ut,C as st,a3 as it,s as ve,$ as ct,w as xe,an as ft,n as be,o as Ve,aN as dt,aE as vt,aF as Ee,_ as Oe,a5 as mt,I as ht}from"./vendor-vuetify-ChAgIwn2.js";import{b as gt,a as pt,ay as yt,h as Be,j as wt,k as Ke,i as kt,W as bt,L as Vt,a8 as It,C as St,aD as Ct,aF as Pt,aG as xt}from"./index-_6IQhlPZ.js";import{V as Ft,a as Rt}from"./VSheet-U4CNWLuy.js";import{V as Tt}from"./VCheckboxBtn-DCkgbmVP.js";import{V as $e}from"./VChip-Veb3ShEh.js";const At=re({renderless:Boolean,...Ue()},"VVirtualScrollItem"),Mt=Fe()({name:"VVirtualScrollItem",inheritAttrs:!1,props:At(),emits:{"update:height":e=>!0},setup(e,n){let{attrs:t,emit:s,slots:o}=n;const{resizeRef:f,contentRect:v}=Ne(void 0,"border");oe(()=>{var a;return(a=v.value)==null?void 0:a.height},a=>{a!=null&&s("update:height",a)}),Re(()=>{var a,u;return e.renderless?S(ue,null,[(a=o.default)==null?void 0:a.call(o,{itemRef:f})]):S("div",N({ref:f,class:["v-virtual-scroll__item",e.class],style:e.style},t),[(u=o.default)==null?void 0:u.call(o)])})}}),Dt=-1,_t=1,Ie=100,Lt=re({itemHeight:{type:[Number,String],default:null},itemKey:{type:[String,Array,Function],default:null},height:[Number,String]},"virtual");function Et(e,n){const t=ot(),s=U(0);Ce(()=>{s.value=parseFloat(e.itemHeight||0)});const o=U(0),f=U(Math.ceil((parseInt(e.height)||t.height.value)/(s.value||16))||1),v=U(0),a=U(0),u=X(),m=X();let b=0;const{resizeRef:y,contentRect:p}=Ne();Ce(()=>{y.value=u.value});const h=$(()=>{var i;return u.value===document.documentElement?t.height.value:((i=p.value)==null?void 0:i.height)||parseInt(e.height)||0}),c=$(()=>!!(u.value&&m.value&&h.value&&s.value));let r=Array.from({length:n.value.length}),I=Array.from({length:n.value.length});const w=U(0);let A=-1;function z(i){return r[i]||s.value}const x=rt(()=>{const i=performance.now();I[0]=0;const V=n.value.length;for(let R=1;R<=V;R++)I[R]=(I[R-1]||0)+z(R-1);w.value=Math.max(w.value,performance.now()-i)},w),Y=oe(c,i=>{i&&(Y(),b=m.value.offsetTop,x.immediate(),j(),~A&&He(()=>{Ge&&window.requestAnimationFrame(()=>{H(A),A=-1})}))});ze(()=>{x.clear()});function J(i,V){const R=r[i],D=s.value;s.value=D?Math.min(s.value,V):V,(R!==V||D!==s.value)&&(r[i]=V,x())}function F(i){i=ke(i,0,n.value.length);const V=Math.floor(i),R=i%1,D=V+1,W=I[V]||0,E=I[D]||W;return W+(E-W)*R}function G(i){return Ot(I,i)}let Z=0,M=0,q=0;oe(h,(i,V)=>{j(),i{M=0,j()})});let ee=-1;function P(){if(!u.value||!m.value)return;const i=u.value.scrollTop,V=performance.now();V-q>500?(M=Math.sign(i-Z),b=m.value.offsetTop):M=i-Z,Z=i,q=V,window.clearTimeout(ee),ee=window.setTimeout(ie,500),j()}function ie(){!u.value||!m.value||(M=0,q=0,window.clearTimeout(ee),j())}let ce=-1;function j(){cancelAnimationFrame(ce),ce=requestAnimationFrame(ge)}function ge(){if(!u.value||!h.value||!s.value)return;const i=Z-b,V=Math.sign(M),R=Math.max(0,i-Ie),D=ke(G(R),0,n.value.length),W=i+h.value+Ie,E=ke(G(W)+1,D+1,n.value.length);if((V!==Dt||Df.value)){const ye=F(o.value)-F(D),we=F(E)-F(f.value);Math.max(ye,we)>Ie?(o.value=D,f.value=E):(D<=0&&(o.value=D),E>=n.value.length&&(f.value=E))}v.value=F(o.value),a.value=F(n.value.length)-F(f.value)}function H(i){const V=F(i);!u.value||i&&!V?A=i:u.value.scrollTop=V}const pe=$(()=>n.value.slice(o.value,f.value).map((i,V)=>{const R=V+o.value;return{raw:i,index:R,key:je(i,e.itemKey,R)}}));return oe(n,()=>{r=Array.from({length:n.value.length}),I=Array.from({length:n.value.length}),x.immediate(),j()},{deep:1}),{calculateVisibleItems:j,containerRef:u,markerRef:m,computedItems:pe,paddingTop:v,paddingBottom:a,scrollToIndex:H,handleScroll:P,handleScrollend:ie,handleItemResize:J}}function Ot(e,n){let t=e.length-1,s=0,o=0,f=null,v=-1;if(e[t]>1,f=e[o],f>n)t=o-1;else if(f[]},renderless:Boolean,...Lt(),...Ue(),...pt()},"VVirtualScroll"),Kt=Fe()({name:"VVirtualScroll",props:Bt(),setup(e,n){let{slots:t}=n;const s=ut("VVirtualScroll"),{dimensionStyles:o}=gt(e),{calculateVisibleItems:f,containerRef:v,markerRef:a,handleScroll:u,handleScrollend:m,handleItemResize:b,scrollToIndex:y,paddingTop:p,paddingBottom:h,computedItems:c}=Et(e,he(()=>e.items));return st(()=>e.renderless,()=>{function r(){var A,z;const w=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)?"addEventListener":"removeEventListener";v.value===document.documentElement?(document[w]("scroll",u,{passive:!0}),document[w]("scrollend",m)):((A=v.value)==null||A[w]("scroll",u,{passive:!0}),(z=v.value)==null||z[w]("scrollend",m))}tt(()=>{v.value=it(s.vnode.el,!0),r(!0)}),ze(r)}),Re(()=>{const r=c.value.map(I=>T(Mt,{key:I.key,renderless:e.renderless,"onUpdate:height":w=>b(I.index,w)},{default:w=>{var A;return(A=t.default)==null?void 0:A.call(t,{item:I.raw,index:I.index,...w})}}));return e.renderless?S(ue,null,[S("div",{ref:a,class:"v-virtual-scroll__spacer",style:{paddingTop:ve(p.value)}},null),r,S("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:ve(h.value)}},null)]):S("div",{ref:v,class:me(["v-virtual-scroll",e.class]),onScrollPassive:u,onScrollend:m,style:lt([o.value,e.style])},[S("div",{ref:a,class:"v-virtual-scroll__container",style:{paddingTop:ve(p.value),paddingBottom:ve(h.value)}},[r])])}),{calculateVisibleItems:f,scrollToIndex:y}}});function $t(e,n){const t=U(!1);let s;function o(a){cancelAnimationFrame(s),t.value=!0,s=requestAnimationFrame(()=>{s=requestAnimationFrame(()=>{t.value=!1})})}async function f(){await new Promise(a=>requestAnimationFrame(a)),await new Promise(a=>requestAnimationFrame(a)),await new Promise(a=>requestAnimationFrame(a)),await new Promise(a=>{if(t.value){const u=oe(t,()=>{u(),a()})}else a()})}async function v(a){var b,y;if(a.key==="Tab"&&((b=n.value)==null||b.focus()),!["PageDown","PageUp","Home","End"].includes(a.key))return;const u=(y=e.value)==null?void 0:y.$el;if(!u)return;(a.key==="Home"||a.key==="End")&&u.scrollTo({top:a.key==="Home"?0:u.scrollHeight,behavior:"smooth"}),await f();const m=u.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(a.key==="PageDown"||a.key==="Home"){const p=u.getBoundingClientRect().top;for(const h of m)if(h.getBoundingClientRect().top>=p){h.focus();break}}else{const p=u.getBoundingClientRect().bottom;for(const h of[...m].reverse())if(h.getBoundingClientRect().bottom<=p){h.focus();break}}}return{onScrollPassive:o,onKeydown:v}}function zt(e){let{groups:n,onLeave:t}=e;function s(a){var u;return a.type==="list"?(u=a.contentRef.value)==null?void 0:u.$el:a.contentRef.value}function o(a){const u=s(a);return u?ct(u):[]}function f(a){var h;const u=a.target,m=a.shiftKey?"backward":"forward",b=n.map(o),y=n.map(c=>{var r;return c.type==="list"?(r=c.contentRef.value)==null?void 0:r.$el:c.contentRef.value}).findIndex(c=>c==null?void 0:c.contains(u)),p=v(b,y,m,u);if(p===null){const c=n[y],r=b[y];(c.type==="list"||(m==="forward"?r.at(-1)===a.target:r.at(0)===a.target))&&t()}else{a.preventDefault(),a.stopImmediatePropagation();const c=n[p];if(c.type==="list"&&Pe(c.displayItemsCount)>0)(h=c.contentRef.value)==null||h.focus(0);else{const r=m==="forward";b[p].at(r?0:-1).focus()}}}function v(a,u,m,b){const y=n[u],p=a[u];if(y.type!=="list"&&!(m==="forward"?p.at(-1)===b:p.at(0)===b))return null;const h=m==="forward"?1:-1;for(let c=u+h;c>=0&&c0||r.type==="list"&&Pe(r.displayItemsCount)>0)return c}return null}return{onTabKeydown:f}}const Ht=(e,n,t)=>{if(e==null||n==null)return-1;if(!n.length)return 0;e=e.toString().toLocaleLowerCase(),n=n.toString().toLocaleLowerCase();const s=[];let o=e.indexOf(n);for(;~o;)s.push([o,o+n.length]),o=e.indexOf(n,o+n.length);return s.length?s:-1};function Se(e,n){if(!(e==null||typeof e=="boolean"||e===-1))return typeof e=="number"?[[e,e+n.length]]:Array.isArray(e[0])?e:[e]}const Nt=re({customFilter:Function,customKeyFilter:Object,filterKeys:[Array,String],filterMode:{type:String,default:"intersection"},noFilter:Boolean},"filter");function Ut(e,n,t){var u,m;const s=[],o=(t==null?void 0:t.default)??Ht,f=t!=null&&t.filterKeys?xe(t.filterKeys):!1,v=Object.keys((t==null?void 0:t.customKeyFilter)??{}).length;if(!(e!=null&&e.length))return s;let a=[];e:for(let b=0;b0)&&!(t!=null&&t.noFilter)){let I=!1;if(typeof y=="object"){if(y.type==="divider"||y.type==="subheader"){(((u=a.at(-1))==null?void 0:u.type)!=="divider"||y.type!=="subheader")&&(a=[]),a.push({index:b,matches:{},type:y.type});continue}const z=f||Object.keys(p);I=z.length===v;for(const x of z){const Y=je(p,x),J=(m=t==null?void 0:t.customKeyFilter)==null?void 0:m[x];if(r=J?J(Y,n,y):o(Y,n,y),r!==-1&&r!==!1)J?h[x]=Se(r,n):c[x]=Se(r,n);else if((t==null?void 0:t.filterMode)==="every")continue e}}else r=o(y,n,y),r!==-1&&r!==!1&&(c.title=Se(r,n));const w=Object.keys(c).length,A=Object.keys(h).length;if(!w&&!A||(t==null?void 0:t.filterMode)==="union"&&A!==v&&!w||(t==null?void 0:t.filterMode)==="intersection"&&(A!==v||!w&&v>0&&!I))continue}a.length&&(s.push(...a),a=[]),s.push({index:b,matches:{...c,...h}})}return s}function jt(e,n,t,s){const o=U([]),f=U(new Map),v=$(()=>s!=null&&s.transform?se(n).map(u=>[u,s.transform(u)]):se(n));Ce(()=>{const u=typeof t=="function"?t():se(t),m=typeof u!="string"&&typeof u!="number"?"":String(u),b=Ut(v.value,m,{customKeyFilter:{...e.customKeyFilter,...se(s==null?void 0:s.customKeyFilter)},default:e.customFilter,filterKeys:e.filterKeys,filterMode:e.filterMode,noFilter:e.noFilter}),y=se(n),p=[],h=new Map;b.forEach(c=>{let{index:r,matches:I}=c;const w=y[r];p.push(w),h.set(w.value,I)}),o.value=p,f.value=h});function a(u){return f.value.get(u.value)}return{filteredItems:o,filteredMatches:f,getMatches:a}}function Gt(e,n,t){return t==null||!t.length?n:t.map((s,o)=>{const f=o===0?0:t[o-1][1],v=[S("span",{class:me(`${e}__unmask`)},[n.slice(f,s[0])]),S("span",{class:me(`${e}__mask`)},[n.slice(s[0],s[1])])];return o===t.length-1&&v.push(S("span",{class:me(`${e}__unmask`)},[n.slice(s[1])])),S(ue,null,[v])})}const Wt=re({closeText:{type:String,default:"$vuetify.close"},openText:{type:String,default:"$vuetify.open"}},"autocomplete");function Qt(e,n){const t=nt(),s=$(()=>`menu-${t}`),o=he(()=>Pe(n)),f=he(()=>s.value);return{menuId:s,ariaExpanded:o,ariaControls:f}}const Xt=re({chips:Boolean,closableChips:Boolean,eager:Boolean,hideNoData:Boolean,hideSelected:Boolean,listProps:{type:Object},menu:Boolean,menuIcon:{type:ht,default:"$dropdown"},menuProps:{type:Object},multiple:Boolean,noDataText:{type:String,default:"$vuetify.noDataText"},openOnClear:Boolean,itemColor:String,noAutoScroll:Boolean,...Wt(),...xt({itemChildren:!1})},"Select"),Yt=re({search:String,...Nt({filterKeys:["title"]}),...Xt(),...mt(et({modelValue:null,role:"combobox"}),["validationValue","dirty"]),...Ct({transition:{component:Pt}})},"VSelect"),ol=Fe()({name:"VSelect",props:Yt(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:menu":e=>!0,"update:search":e=>!0},setup(e,n){let{slots:t}=n;const{t:s}=ft(),o=X(),f=X(),v=X(),a=X(),u=X(),{items:m,transformIn:b,transformOut:y}=yt(e),p=be(e,"search",""),{filteredItems:h,getMatches:c}=jt(e,m,()=>p.value),r=be(e,"modelValue",[],l=>b(l===null?[null]:xe(l)),l=>{const g=y(l);return e.multiple?g:g[0]??null}),I=$(()=>typeof e.counterValue=="function"?e.counterValue(r.value):typeof e.counterValue=="number"?e.counterValue:r.value.length),w=Je(e),A=Ze(e),z=$(()=>r.value.map(l=>l.value)),x=U(!1),Y=he(()=>e.closableChips&&!w.isReadonly.value&&!w.isDisabled.value),{InputIcon:J}=qe(e);let F="",G=0,Z;const M=$(()=>{const l=p.value?h.value:m.value;return e.hideSelected?l.filter(g=>!r.value.some(C=>(e.valueComparator||Ve)(C,g))):l}),q=$(()=>e.hideNoData&&!M.value.length||w.isReadonly.value||w.isDisabled.value),ee=be(e,"menu"),P=$({get:()=>ee.value,set:l=>{var g;ee.value&&!l&&((g=f.value)!=null&&g.ΨopenChildren.size)||l&&q.value||(ee.value=l)}}),{menuId:ie,ariaExpanded:ce,ariaControls:j}=Qt(e,P),ge=$(()=>{var l;return{...e.menuProps,activatorProps:{...((l=e.menuProps)==null?void 0:l.activatorProps)||{},"aria-haspopup":"listbox"}}}),H=X(),pe=$t(H,o),{onTabKeydown:i}=zt({groups:[{type:"element",contentRef:v},{type:"list",contentRef:H,displayItemsCount:()=>M.value.length},{type:"element",contentRef:a}],onLeave:()=>{var l;P.value=!1,(l=o.value)==null||l.focus()}});function V(l){e.openOnClear&&(P.value=!0)}function R(){q.value||(P.value=!P.value)}function D(l){var g;l.key==="Tab"&&i(l),(g=H.value)!=null&&g.$el.contains(l.target)&&Ee(l)&&W(l)}function W(l){var O,K,ae;if(!l.key||w.isReadonly.value)return;if(["Enter"," ","ArrowDown","ArrowUp","Home","End"].includes(l.key)&&l.preventDefault(),["Enter","ArrowDown"," "].includes(l.key)&&(P.value=!0),["Escape","Tab"].includes(l.key)&&(P.value=!1),e.clearable&&l.key==="Backspace"){l.preventDefault(),r.value=[],V();return}l.key==="Home"?(O=H.value)==null||O.focus("first"):l.key==="End"&&((K=H.value)==null||K.focus("last"));const g=1e3;if(!Ee(l))return;const C=performance.now();C-Z>g&&(F="",G=0),F+=l.key.toLowerCase(),Z=C;const te=M.value;function Q(){let d=le();return d||F.at(-1)===F.at(-2)&&(F=F.slice(0,-1),G++,d=le(),d)||(G=0,d=le(),d)?d:(F=l.key.toLowerCase(),le())}function le(){for(let d=G;d1&&arguments[1]!==void 0?arguments[1]:!0;if(!l.props.disabled)if(e.multiple){const C=r.value.findIndex(Q=>(e.valueComparator||Ve)(Q.value,l.value)),te=g??!~C;if(~C){const Q=te?[...r.value,l]:[...r.value];Q.splice(C,1),r.value=Q}else te&&(r.value=[...r.value,l])}else{const C=g!==!1;r.value=C?[l]:[],He(()=>{P.value=!1})}}function ye(l){var C;const g=l.target;(C=o.value)!=null&&C.$el.contains(g)||(P.value=!1)}function we(){var l;e.eager&&((l=u.value)==null||l.calculateVisibleItems())}function Te(){var l;p.value="",x.value&&((l=o.value)==null||l.focus())}function We(l){x.value=!0}function Qe(l){if(l==null)r.value=[];else if(Oe(o.value,":autofill")||Oe(o.value,":-webkit-autofill")){const g=m.value.find(C=>C.title===l);g&&E(g)}else o.value&&(o.value.value="")}return oe(P,()=>{if(!e.hideSelected&&P.value&&r.value.length){const l=M.value.findIndex(g=>r.value.some(C=>(e.valueComparator||Ve)(C.value,g.value)));Ge&&!e.noAutoScroll&&window.requestAnimationFrame(()=>{var g;l>=0&&((g=u.value)==null||g.scrollToIndex(l))})}}),oe(m,(l,g)=>{P.value||x.value&&e.hideNoData&&!g.length&&l.length&&(P.value=!0)}),Re(()=>{const l=!!(e.chips||t.chip),g=!!(!e.hideNoData||M.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),C=r.value.length>0,te=Le.filterProps(e),Q=C||!x.value&&e.label&&!e.persistentPlaceholder?void 0:e.placeholder,le={search:p,filteredItems:h.value};return T(Le,N({ref:o},te,{modelValue:r.value.map(B=>B.props.title).join(", "),name:void 0,"onUpdate:modelValue":Qe,focused:x.value,"onUpdate:focused":B=>x.value=B,validationValue:r.externalValue,counterValue:I.value,dirty:C,class:["v-select",{"v-select--active-menu":P.value,"v-select--chips":!!e.chips,[`v-select--${e.multiple?"multiple":"single"}`]:!0,"v-select--selected":r.value.length,"v-select--selection-slot":!!t.selection},e.class],style:e.style,inputmode:"none",placeholder:Q,"onClick:clear":V,"onMousedown:control":R,onBlur:ye,onKeydown:W,"aria-expanded":ce.value,"aria-controls":j.value}),{...t,default:B=>{let{id:ne}=B;return S(ue,null,[S("select",{hidden:!0,multiple:e.multiple,name:A.fieldName.value},[m.value.map(k=>S("option",{key:k.value,value:k.value,selected:z.value.includes(k.value)},null))]),T(Ft,N({id:ie.value,ref:f,modelValue:P.value,"onUpdate:modelValue":k=>P.value=k,activator:"parent",contentClass:"v-select__content",disabled:q.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterEnter:we,onAfterLeave:Te},ge.value),{default:()=>[T(Rt,{onFocusin:We,onKeydown:D},{default:()=>[t["menu-header"]&&S("header",{ref:v},[t["menu-header"](le)]),g&&T(wt,N({key:"select-list",ref:H,selected:z.value,selectStrategy:e.multiple?"independent":"single-independent",tabindex:"-1",selectable:!!M.value.length,"aria-live":"polite","aria-labelledby":`${ne.value}-label`,"aria-multiselectable":e.multiple,color:e.itemColor??e.color},pe,e.listProps),{default:()=>{var k,O,K;return[(k=t["prepend-item"])==null?void 0:k.call(t),!M.value.length&&!e.hideNoData&&(((O=t["no-data"])==null?void 0:O.call(t))??T(Ke,{key:"no-data",title:s(e.noDataText)},null)),T(Kt,{ref:u,renderless:!0,items:M.value,itemKey:"value"},{default:ae=>{var Me,De,_e;let{item:d,index:_,itemRef:L}=ae;const fe=dt(d.props),Ae=N(d.props,{ref:L,key:d.value,onClick:()=>E(d,null),"aria-posinset":_+1,"aria-setsize":M.value.length});return d.type==="divider"?((Me=t.divider)==null?void 0:Me.call(t,{props:d.raw,index:_}))??T(kt,N(d.props,{key:`divider-${_}`}),null):d.type==="subheader"?((De=t.subheader)==null?void 0:De.call(t,{props:d.raw,index:_}))??T(bt,N(d.props,{key:`subheader-${_}`}),null):((_e=t.item)==null?void 0:_e.call(t,{item:d,index:_,props:Ae}))??T(Ke,N(Ae,{role:"option"}),{prepend:de=>{let{isSelected:Xe}=de;return S(ue,null,[e.multiple&&!e.hideSelected?T(Tt,{key:d.value,modelValue:Xe,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:Ye=>Ye.preventDefault()},null):void 0,fe.prependAvatar&&T(Vt,{image:fe.prependAvatar},null),fe.prependIcon&&T(Be,{icon:fe.prependIcon},null)])},title:()=>{var de;return p.value?Gt("v-select",d.title,(de=c(d))==null?void 0:de.title):d.title}})}}),(K=t["append-item"])==null?void 0:K.call(t)]}}),t["menu-footer"]&&S("footer",{ref:a},[t["menu-footer"](le)])]})]}),r.value.map((k,O)=>{function K(L){L.stopPropagation(),L.preventDefault(),E(k,!1)}const ae=N($e.filterProps(k.props),{"onClick:close":K,onKeydown(L){L.key!=="Enter"&&L.key!==" "||(L.preventDefault(),L.stopPropagation(),K(L))},onMousedown(L){L.preventDefault(),L.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),d=l?!!t.chip:!!t.selection,_=d?vt(l?t.chip({item:k,index:O,props:ae}):t.selection({item:k,index:O})):void 0;if(!(d&&!_))return S("div",{key:k.value,class:"v-select__selection"},[l?t.chip?T(It,{key:"chip-defaults",defaults:{VChip:{closable:Y.value,size:"small",text:k.title}}},{default:()=>[_]}):T($e,N({key:"chip",closable:Y.value,size:"small",text:k.title,disabled:k.props.disabled},ae),null):_??S("span",{class:"v-select__selection-text"},[k.title,e.multiple&&O!0},setup(e,n){let{attrs:t,emit:s,slots:r}=n;const{resizeRef:d,contentRect:m}=Ne(void 0,"border");oe(()=>{var a;return(a=m.value)==null?void 0:a.height},a=>{a!=null&&s("update:height",a)}),Re(()=>{var a,u;return e.renderless?C(ue,null,[(a=r.default)==null?void 0:a.call(r,{itemRef:d})]):C("div",U({ref:d,class:["v-virtual-scroll__item",e.class],style:e.style},t),[(u=r.default)==null?void 0:u.call(r)])})}}),Lt=-1,Ot=1,Ie=100,Bt=re({itemHeight:{type:[Number,String],default:null},itemKey:{type:[String,Array,Function],default:null},height:[Number,String]},"virtual");function Et(e,n){const t=rt(),s=j(0);Ce(()=>{s.value=parseFloat(e.itemHeight||0)});const r=j(0),d=j(Math.ceil((parseInt(e.height)||t.height.value)/(s.value||16))||1),m=j(0),a=j(0),u=Y(),h=Y();let k=0;const{resizeRef:y,contentRect:p}=Ne();Ce(()=>{y.value=u.value});const g=z(()=>{var i;return u.value===document.documentElement?t.height.value:((i=p.value)==null?void 0:i.height)||parseInt(e.height)||0}),f=z(()=>!!(u.value&&h.value&&g.value&&s.value));let o=Array.from({length:n.value.length}),S=Array.from({length:n.value.length});const b=j(0);let A=-1;function H(i){return o[i]||s.value}const P=ut(()=>{const i=performance.now();S[0]=0;const V=n.value.length;for(let R=1;R<=V;R++)S[R]=(S[R-1]||0)+H(R-1);b.value=Math.max(b.value,performance.now()-i)},b),J=oe(f,i=>{i&&(J(),k=h.value.offsetTop,P.immediate(),G(),~A&&He(()=>{Ge&&window.requestAnimationFrame(()=>{O(A),A=-1})}))});ze(()=>{P.clear()});function Z(i,V){const R=o[i],D=s.value;s.value=D?Math.min(s.value,V):V,(R!==V||D!==s.value)&&(o[i]=V,P())}function F(i){i=ke(i,0,n.value.length);const V=Math.floor(i),R=i%1,D=V+1,X=S[V]||0,B=S[D]||X;return X+(B-X)*R}function W(i){return Kt(S,i)}let q=0,M=0,ee=0;oe(g,(i,V)=>{G(),i{M=0,G()})});let te=-1;function x(){if(!u.value||!h.value)return;const i=u.value.scrollTop,V=performance.now();V-ee>500?(M=Math.sign(i-q),k=h.value.offsetTop):M=i-q,q=i,ee=V,window.clearTimeout(te),te=window.setTimeout(ie,500),G()}function ie(){!u.value||!h.value||(M=0,ee=0,window.clearTimeout(te),G())}let ce=-1;function G(){cancelAnimationFrame(ce),ce=requestAnimationFrame(pe)}function pe(){if(!u.value||!g.value||!s.value)return;const i=q-k,V=Math.sign(M),R=Math.max(0,i-Ie),D=ke(W(R),0,n.value.length),X=i+g.value+Ie,B=ke(W(X)+1,D+1,n.value.length);if((V!==Lt||Dd.value)){const be=F(r.value)-F(D),we=F(B)-F(d.value);Math.max(be,we)>Ie?(r.value=D,d.value=B):(D<=0&&(r.value=D),B>=n.value.length&&(d.value=B))}m.value=F(r.value),a.value=F(n.value.length)-F(d.value)}function O(i){const V=F(i);!u.value||i&&!V?A=i:u.value.scrollTop=V}const ye=z(()=>n.value.slice(r.value,d.value).map((i,V)=>{const R=V+r.value;return{raw:i,index:R,key:je(i,e.itemKey,R)}}));return oe(n,()=>{o=Array.from({length:n.value.length}),S=Array.from({length:n.value.length}),P.immediate(),G()},{deep:1}),{calculateVisibleItems:G,containerRef:u,markerRef:h,computedItems:ye,paddingTop:m,paddingBottom:a,scrollToIndex:O,handleScroll:x,handleScrollend:ie,handleItemResize:Z}}function Kt(e,n){let t=e.length-1,s=0,r=0,d=null,m=-1;if(e[t]>1,d=e[r],d>n)t=r-1;else if(d[]},renderless:Boolean,...Bt(),...Ue(),...bt()},"VVirtualScroll"),zt=Fe()({name:"VVirtualScroll",props:$t(),setup(e,n){let{slots:t}=n;const s=st("VVirtualScroll"),{dimensionStyles:r}=yt(e),{calculateVisibleItems:d,containerRef:m,markerRef:a,handleScroll:u,handleScrollend:h,handleItemResize:k,scrollToIndex:y,paddingTop:p,paddingBottom:g,computedItems:f}=Et(e,ge(()=>e.items));return it(()=>e.renderless,()=>{function o(){var A,H;const b=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)?"addEventListener":"removeEventListener";m.value===document.documentElement?(document[b]("scroll",u,{passive:!0}),document[b]("scrollend",h)):((A=m.value)==null||A[b]("scroll",u,{passive:!0}),(H=m.value)==null||H[b]("scrollend",h))}lt(()=>{m.value=ct(s.vnode.el,!0),o(!0)}),ze(o)}),Re(()=>{const o=f.value.map(S=>T(_t,{key:S.key,renderless:e.renderless,"onUpdate:height":b=>k(S.index,b)},{default:b=>{var A;return(A=t.default)==null?void 0:A.call(t,{item:S.raw,index:S.index,...b})}}));return e.renderless?C(ue,null,[C("div",{ref:a,class:"v-virtual-scroll__spacer",style:{paddingTop:ve(p.value)}},null),o,C("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:ve(g.value)}},null)]):C("div",{ref:m,class:he(["v-virtual-scroll",e.class]),onScrollPassive:u,onScrollend:h,style:nt([r.value,e.style])},[C("div",{ref:a,class:"v-virtual-scroll__container",style:{paddingTop:ve(p.value),paddingBottom:ve(g.value)}},[o])])}),{calculateVisibleItems:d,scrollToIndex:y}}});function Ht(e,n){const t=j(!1);let s;function r(a){cancelAnimationFrame(s),t.value=!0,s=requestAnimationFrame(()=>{s=requestAnimationFrame(()=>{t.value=!1})})}async function d(){await new Promise(a=>requestAnimationFrame(a)),await new Promise(a=>requestAnimationFrame(a)),await new Promise(a=>requestAnimationFrame(a)),await new Promise(a=>{if(t.value){const u=oe(t,()=>{u(),a()})}else a()})}async function m(a){var k,y;if(a.key==="Tab"&&((k=n.value)==null||k.focus()),!["PageDown","PageUp","Home","End"].includes(a.key))return;const u=(y=e.value)==null?void 0:y.$el;if(!u)return;(a.key==="Home"||a.key==="End")&&u.scrollTo({top:a.key==="Home"?0:u.scrollHeight,behavior:"smooth"}),await d();const h=u.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(a.key==="PageDown"||a.key==="Home"){const p=u.getBoundingClientRect().top;for(const g of h)if(g.getBoundingClientRect().top>=p){g.focus();break}}else{const p=u.getBoundingClientRect().bottom;for(const g of[...h].reverse())if(g.getBoundingClientRect().bottom<=p){g.focus();break}}}return{onScrollPassive:r,onKeydown:m}}function Nt(e){let{groups:n,onLeave:t}=e;function s(a){var u;return a.type==="list"?(u=a.contentRef.value)==null?void 0:u.$el:a.contentRef.value}function r(a){const u=s(a);return u?ft(u):[]}function d(a){var g;const u=a.target,h=a.shiftKey?"backward":"forward",k=n.map(r),y=n.map(f=>{var o;return f.type==="list"?(o=f.contentRef.value)==null?void 0:o.$el:f.contentRef.value}).findIndex(f=>f==null?void 0:f.contains(u)),p=m(k,y,h,u);if(p===null){const f=n[y],o=k[y];(f.type==="list"||(h==="forward"?o.at(-1)===a.target:o.at(0)===a.target))&&t()}else{a.preventDefault(),a.stopImmediatePropagation();const f=n[p];if(f.type==="list"&&xe(f.displayItemsCount)>0)(g=f.contentRef.value)==null||g.focus(0);else{const o=h==="forward";k[p].at(o?0:-1).focus()}}}function m(a,u,h,k){const y=n[u],p=a[u];if(y.type!=="list"&&!(h==="forward"?p.at(-1)===k:p.at(0)===k))return null;const g=h==="forward"?1:-1;for(let f=u+g;f>=0&&f0||o.type==="list"&&xe(o.displayItemsCount)>0)return f}return null}return{onTabKeydown:d}}const Ut=(e,n,t)=>{if(e==null||n==null)return-1;if(!n.length)return 0;e=e.toString().toLocaleLowerCase(),n=n.toString().toLocaleLowerCase();const s=[];let r=e.indexOf(n);for(;~r;)s.push([r,r+n.length]),r=e.indexOf(n,r+n.length);return s.length?s:-1};function Se(e,n){if(!(e==null||typeof e=="boolean"||e===-1))return typeof e=="number"?[[e,e+n.length]]:Array.isArray(e[0])?e:[e]}const jt=re({customFilter:Function,customKeyFilter:Object,filterKeys:[Array,String],filterMode:{type:String,default:"intersection"},noFilter:Boolean},"filter");function Gt(e,n,t){var u,h;const s=[],r=(t==null?void 0:t.default)??Ut,d=t!=null&&t.filterKeys?Pe(t.filterKeys):!1,m=Object.keys((t==null?void 0:t.customKeyFilter)??{}).length;if(!(e!=null&&e.length))return s;let a=[];e:for(let k=0;k0)&&!(t!=null&&t.noFilter)){let S=!1;if(typeof y=="object"){if(y.type==="divider"||y.type==="subheader"){(((u=a.at(-1))==null?void 0:u.type)!=="divider"||y.type!=="subheader")&&(a=[]),a.push({index:k,matches:{},type:y.type});continue}const H=d||Object.keys(p);S=H.length===m;for(const P of H){const J=je(p,P),Z=(h=t==null?void 0:t.customKeyFilter)==null?void 0:h[P];if(o=Z?Z(J,n,y):r(J,n,y),o!==-1&&o!==!1)Z?g[P]=Se(o,n):f[P]=Se(o,n);else if((t==null?void 0:t.filterMode)==="every")continue e}}else o=r(y,n,y),o!==-1&&o!==!1&&(f.title=Se(o,n));const b=Object.keys(f).length,A=Object.keys(g).length;if(!b&&!A||(t==null?void 0:t.filterMode)==="union"&&A!==m&&!b||(t==null?void 0:t.filterMode)==="intersection"&&(A!==m||!b&&m>0&&!S))continue}a.length&&(s.push(...a),a=[]),s.push({index:k,matches:{...f,...g}})}return s}function Wt(e,n,t,s){const r=j([]),d=j(new Map),m=z(()=>s!=null&&s.transform?se(n).map(u=>[u,s.transform(u)]):se(n));Ce(()=>{const u=typeof t=="function"?t():se(t),h=typeof u!="string"&&typeof u!="number"?"":String(u),k=Gt(m.value,h,{customKeyFilter:{...e.customKeyFilter,...se(s==null?void 0:s.customKeyFilter)},default:e.customFilter,filterKeys:e.filterKeys,filterMode:e.filterMode,noFilter:e.noFilter}),y=se(n),p=[],g=new Map;k.forEach(f=>{let{index:o,matches:S}=f;const b=y[o];p.push(b),g.set(b.value,S)}),r.value=p,d.value=g});function a(u){return d.value.get(u.value)}return{filteredItems:r,filteredMatches:d,getMatches:a}}function Xt(e,n,t){return t==null||!t.length?n:t.map((s,r)=>{const d=r===0?0:t[r-1][1],m=[C("span",{class:he(`${e}__unmask`)},[n.slice(d,s[0])]),C("span",{class:he(`${e}__mask`)},[n.slice(s[0],s[1])])];return r===t.length-1&&m.push(C("span",{class:he(`${e}__unmask`)},[n.slice(s[1])])),C(ue,null,[m])})}const Qt=re({closeText:{type:String,default:"$vuetify.close"},openText:{type:String,default:"$vuetify.open"}},"autocomplete");function Yt(e,n){const t=at(),s=z(()=>`menu-${t}`),r=ge(()=>xe(n)),d=ge(()=>s.value);return{menuId:s,ariaExpanded:r,ariaControls:d}}const Jt=re({chips:Boolean,closableChips:Boolean,eager:Boolean,hideNoData:Boolean,hideSelected:Boolean,listProps:{type:Object},menu:Boolean,menuIcon:{type:gt,default:"$dropdown"},menuProps:{type:Object},multiple:Boolean,noDataText:{type:String,default:"$vuetify.noDataText"},openOnClear:Boolean,itemColor:String,noAutoScroll:Boolean,...Qt(),...Rt({itemChildren:!1})},"Select"),Zt=re({search:String,...jt({filterKeys:["title"]}),...Jt(),...ht(tt({modelValue:null,role:"combobox"}),["validationValue","dirty"]),...Pt({transition:{component:Ft}})},"VSelect"),sl=Fe()({name:"VSelect",props:Zt(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:menu":e=>!0,"update:search":e=>!0},setup(e,n){let{slots:t}=n;const{t:s}=dt(),r=Y(),d=Y(),m=Y(),a=Y(),u=Y(),{items:h,transformIn:k,transformOut:y}=wt(e),p=Ve(e,"search",""),{filteredItems:g,getMatches:f}=Wt(e,h,()=>p.value),o=Ve(e,"modelValue",[],l=>k(l===null?[null]:Pe(l)),l=>{const c=y(l);return e.multiple?c:c[0]??null}),S=z(()=>typeof e.counterValue=="function"?e.counterValue(o.value):typeof e.counterValue=="number"?e.counterValue:o.value.length),b=qe(e),A=pt(e),H=z(()=>o.value.map(l=>l.value)),P=j(!1),J=ge(()=>e.closableChips&&!b.isReadonly.value&&!b.isDisabled.value),{InputIcon:Z}=et(e);let F="",W=0,q;const M=z(()=>{const l=p.value?g.value:h.value;return e.hideSelected?l.filter(c=>!o.value.some(I=>(e.valueComparator||me)(I,c))):l}),ee=z(()=>e.hideNoData&&!M.value.length||b.isReadonly.value||b.isDisabled.value),te=Ve(e,"menu"),x=z({get:()=>te.value,set:l=>{var c;te.value&&!l&&((c=d.value)!=null&&c.ΨopenChildren.size)||l&&ee.value||(te.value=l)}}),{menuId:ie,ariaExpanded:ce,ariaControls:G}=Yt(e,x),pe=z(()=>{var l;return{...e.menuProps,activatorProps:{...((l=e.menuProps)==null?void 0:l.activatorProps)||{},"aria-haspopup":"listbox"}}}),O=Y(),ye=Ht(O,r),{onTabKeydown:i}=Nt({groups:[{type:"element",contentRef:m},{type:"list",contentRef:O,displayItemsCount:()=>M.value.length},{type:"element",contentRef:a}],onLeave:()=>{var l;x.value=!1,(l=r.value)==null||l.focus()}});function V(l){e.openOnClear&&(x.value=!0)}function R(){ee.value||(x.value=!x.value)}function D(l){var c;l.key==="Tab"&&i(l),(c=O.value)!=null&&c.$el.contains(l.target)&&Oe(l)&&X(l)}function X(l){var E,$,ae;if(!l.key||b.isReadonly.value)return;if(["Enter"," ","ArrowDown","ArrowUp","Home","End"].includes(l.key)&&l.preventDefault(),["Enter","ArrowDown"," "].includes(l.key)&&(x.value=!0),["Escape","Tab"].includes(l.key)&&(x.value=!1),e.clearable&&l.key==="Backspace"){l.preventDefault(),o.value=[],V();return}l.key==="Home"?(E=O.value)==null||E.focus("first"):l.key==="End"&&(($=O.value)==null||$.focus("last"));const c=1e3;if(!Oe(l))return;const I=performance.now();I-q>c&&(F="",W=0),F+=l.key.toLowerCase(),q=I;const Q=M.value;function N(){let v=le();return v||F.at(-1)===F.at(-2)&&(F=F.slice(0,-1),W++,v=le(),v)||(W=0,v=le(),v)?v:(F=l.key.toLowerCase(),le())}function le(){for(let v=W;v1&&arguments[1]!==void 0?arguments[1]:!0;if(!l.props.disabled)if(e.multiple){const I=o.value.findIndex(N=>(e.valueComparator||me)(N.value,l.value)),Q=c??!~I;if(~I){const N=Q?[...o.value,l]:[...o.value];N.splice(I,1),o.value=N}else Q&&(o.value=[...o.value,l])}else{const I=c!==!1;o.value=I?[l]:[],He(()=>{x.value=!1})}}function be(l){var I;const c=l.target;(I=r.value)!=null&&I.$el.contains(c)||(x.value=!1)}function we(){return M.value.findIndex(l=>o.value.some(c=>(e.valueComparator||me)(c.value,l.value)))}function Te(){if(!o.value.length)return-1;const l=e.valueComparator||me;let c=0;for(const I of M.value){if(o.value.some(N=>l(N.value,I.value)))return I.props.disabled?-1:c;I.props.disabled||c++}return-1}function We(){var l;if(e.eager&&((l=u.value)==null||l.calculateVisibleItems()),O.value){const c=Te();O.value.focus(c>=0?c:"first")}}function Xe(){var l;p.value="",P.value&&((l=r.value)==null||l.focus())}function Qe(l){P.value=!0}function Ye(l){if(l==null)o.value=[];else if(Be(r.value,":autofill")||Be(r.value,":-webkit-autofill")){const c=h.value.find(I=>I.title===l);c&&B(c)}else r.value&&(r.value.value="")}return oe(x,()=>{if(!e.hideSelected&&x.value&&o.value.length){const l=we();Ge&&!e.noAutoScroll&&window.requestAnimationFrame(()=>{var c;l>=0&&((c=u.value)==null||c.scrollToIndex(l))})}}),oe(h,(l,c)=>{x.value||P.value&&e.hideNoData&&!c.length&&l.length&&(x.value=!0)}),Re(()=>{const l=!!(e.chips||t.chip),c=!!(!e.hideNoData||M.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),I=o.value.length>0,Q=Le.filterProps(e),N=I||!P.value&&e.label&&!e.persistentPlaceholder?void 0:e.placeholder,le={search:p,filteredItems:g.value};return T(Le,U({ref:r},Q,{modelValue:o.value.map(K=>K.props.title).join(", "),name:void 0,"onUpdate:modelValue":Ye,focused:P.value,"onUpdate:focused":K=>P.value=K,validationValue:o.externalValue,counterValue:S.value,dirty:I,class:["v-select",{"v-select--active-menu":x.value,"v-select--chips":!!e.chips,[`v-select--${e.multiple?"multiple":"single"}`]:!0,"v-select--selected":o.value.length,"v-select--selection-slot":!!t.selection},e.class],style:e.style,inputmode:"none",placeholder:N,"onClick:clear":V,"onMousedown:control":R,onBlur:be,onKeydown:X,"aria-expanded":ce.value,"aria-controls":G.value}),{...t,default:K=>{let{id:ne}=K;return C(ue,null,[C("select",{hidden:!0,multiple:e.multiple,name:A.fieldName.value},[h.value.map(w=>C("option",{key:w.value,value:w.value,selected:H.value.includes(w.value)},null))]),T(Tt,U({id:ie.value,ref:d,modelValue:x.value,"onUpdate:modelValue":w=>x.value=w,activator:"parent",contentClass:"v-select__content",disabled:ee.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterEnter:We,onAfterLeave:Xe},pe.value),{default:()=>[T(At,{onFocusin:Qe,onKeydown:D},{default:()=>[t["menu-header"]&&C("header",{ref:m},[t["menu-header"](le)]),c&&T(kt,U({key:"select-list",ref:O,selected:H.value,selectStrategy:e.multiple?"independent":"single-independent",tabindex:"-1",selectable:!!M.value.length,"aria-live":"polite","aria-labelledby":`${ne.value}-label`,"aria-multiselectable":e.multiple,color:e.itemColor??e.color},ye,e.listProps),{default:()=>{var w,E,$;return[(w=t["prepend-item"])==null?void 0:w.call(t),!M.value.length&&!e.hideNoData&&(((E=t["no-data"])==null?void 0:E.call(t))??T(Ke,{key:"no-data",title:s(e.noDataText)},null)),T(zt,{ref:u,renderless:!0,items:M.value,itemKey:"value"},{default:ae=>{var Me,De,_e;let{item:v,index:_,itemRef:L}=ae;const fe=vt(v.props),Ae=U(v.props,{ref:L,key:v.value,onClick:()=>B(v,null),"aria-posinset":_+1,"aria-setsize":M.value.length});return v.type==="divider"?((Me=t.divider)==null?void 0:Me.call(t,{props:v.raw,index:_}))??T(Vt,U(v.props,{key:`divider-${_}`}),null):v.type==="subheader"?((De=t.subheader)==null?void 0:De.call(t,{props:v.raw,index:_}))??T(It,U(v.props,{key:`subheader-${_}`}),null):((_e=t.item)==null?void 0:_e.call(t,{item:v,index:_,props:Ae}))??T(Ke,U(Ae,{role:"option"}),{prepend:de=>{let{isSelected:Je}=de;return C(ue,null,[e.multiple&&!e.hideSelected?T(Mt,{key:v.value,modelValue:Je,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:Ze=>Ze.preventDefault()},null):void 0,fe.prependAvatar&&T(St,{image:fe.prependAvatar},null),fe.prependIcon&&T(Ee,{icon:fe.prependIcon},null)])},title:()=>{var de;return p.value?Xt("v-select",v.title,(de=f(v))==null?void 0:de.title):v.title}})}}),($=t["append-item"])==null?void 0:$.call(t)]}}),t["menu-footer"]&&C("footer",{ref:a},[t["menu-footer"](le)])]})]}),o.value.map((w,E)=>{function $(L){L.stopPropagation(),L.preventDefault(),B(w,!1)}const ae=U($e.filterProps(w.props),{"onClick:close":$,onKeydown(L){L.key!=="Enter"&&L.key!==" "||(L.preventDefault(),L.stopPropagation(),$(L))},onMousedown(L){L.preventDefault(),L.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),v=l?!!t.chip:!!t.selection,_=v?mt(l?t.chip({item:w,index:E,props:ae}):t.selection({item:w,index:E})):void 0;if(!(v&&!_))return C("div",{key:w.value,class:"v-select__selection"},[l?t.chip?T(Ct,{key:"chip-defaults",defaults:{VChip:{closable:J.value,size:"small",text:w.title}}},{default:()=>[_]}):T($e,U({key:"chip",closable:J.value,size:"small",text:w.title,disabled:w.props.disabled},ae),null):_??C("span",{class:"v-select__selection-text"},[w.title,e.multiple&&E!0},setup(a,f){let{slots:u}=f;const o=W(a,"modelValue"),{scopeId:y}=x(),{isRtl:i}=X(),d=oe(),c=ce(()=>a.id||`v-menu-${d}`),n=me(),t=ne(h,null),m=de(new Set);ve(h,{register(){m.value.add(d)},unregister(){m.value.delete(d)},closeParents(e){setTimeout(()=>{var s;!m.value.size&&!a.persistent&&(e==null||(s=n.value)!=null&&s.contentEl&&!ee(e,n.value.contentEl))&&(o.value=!1,t==null||t.closeParents())},40)}}),le(()=>t==null?void 0:t.unregister()),re(()=>o.value=!1),ue(o,e=>{e?t==null||t.register():t==null||t.unregister()},{immediate:!0});function g(e){t==null||t.closeParents(e)}function D(e){var s,l,r,v,C;if(!a.disabled)if(e.key==="Tab"||e.key==="Enter"&&!a.closeOnContentClick){if(e.key==="Enter"&&(e.target instanceof HTMLTextAreaElement||e.target instanceof HTMLInputElement&&e.target.closest("form")))return;e.key==="Enter"&&e.preventDefault(),!Y(Z((s=n.value)==null?void 0:s.contentEl,!1),e.shiftKey?"prev":"next",T=>T.tabIndex>=0)&&!a.retainFocus&&(o.value=!1,(r=(l=n.value)==null?void 0:l.activatorEl)==null||r.focus())}else a.submenu&&e.key===(i.value?"ArrowRight":"ArrowLeft")&&(o.value=!1,(C=(v=n.value)==null?void 0:v.activatorEl)==null||C.focus())}function w(e){var l;if(a.disabled)return;const s=(l=n.value)==null?void 0:l.contentEl;s&&o.value?e.key==="ArrowDown"?(e.preventDefault(),e.stopImmediatePropagation(),k(s,"next")):e.key==="ArrowUp"?(e.preventDefault(),e.stopImmediatePropagation(),k(s,"prev")):a.submenu&&(e.key===(i.value?"ArrowRight":"ArrowLeft")?o.value=!1:e.key===(i.value?"ArrowLeft":"ArrowRight")&&(e.preventDefault(),k(s,"first"))):(a.submenu?e.key===(i.value?"ArrowLeft":"ArrowRight"):["ArrowDown","ArrowUp"].includes(e.key))&&(o.value=!0,e.preventDefault(),setTimeout(()=>setTimeout(()=>w(e))))}const R=ie(()=>V({"aria-haspopup":"menu","aria-expanded":String(o.value),"aria-controls":c.value,"aria-owns":c.value,onKeydown:w},a.activatorProps));return E(()=>{const e=b.filterProps(a);return P(b,V({ref:n,id:c.value,class:["v-menu",a.class],style:a.style},e,{modelValue:o.value,"onUpdate:modelValue":s=>o.value=s,absolute:!0,activatorProps:R.value,location:a.location??(a.submenu?"end":"bottom"),"onClick:outside":g,onKeydown:D},y),{activator:u.activator,default:function(){for(var s=arguments.length,l=new Array(s),r=0;r{var v;return[(v=u.default)==null?void 0:v.call(u,...l)]}})}})}),p({id:c,ΨopenChildren:m},n)}}),ke=S({color:String,...Q(),...se(),...J(),...q(),...G(),...$(),...N(),...z(),...te()},"VSheet"),Ve=A()({name:"VSheet",props:ke(),setup(a,f){let{slots:u}=f;const{themeClasses:o}=ae(a),{backgroundColorClasses:y,backgroundColorStyles:i}=O(()=>a.color),{borderClasses:d}=B(a),{dimensionStyles:c}=U(a),{elevationClasses:n}=j(a),{locationStyles:t}=K(a),{positionClasses:m}=F(a),{roundedClasses:g}=H(a);return E(()=>P(a.tag,{class:ye(["v-sheet",o.value,y.value,d.value,n.value,m.value,g.value,a.class]),style:fe([i.value,c.value,t.value,a.style])},u)),{}}});export{be as V,Ve as a,ke as m}; +import{K as x,aH as h,C as b,a9 as M,D as p,N as I,aF as L,H as K,a6 as O,a7 as B,ah as F,a8 as H,b as N,aa as U,m as z,ab as j,ak as $,ac as G,ad as q,a as J,ae as Q}from"./index-CFUCTEXJ.js";import{f as A,n as W,A as X,u as E,aO as Y,$ as Z,p as S,a5 as _,ak as g,aP as ee,h as ae,m as te,k as se}from"./vendor-vuetify-s-yw_Hr8.js";import{E as oe,d as ne,A as le,G as re,o as ue,j as P,m as V,e as ie,t as ce,b as me,s as de,p as ve,N as fe,n as ye}from"./vendor-vue-B2vxubPy.js";const ke=S({id:String,submenu:Boolean,..._(I({captureFocus:!0,closeDelay:250,closeOnContentClick:!0,locationStrategy:"connected",location:void 0,openDelay:300,scrim:!1,scrollStrategy:"reposition",transition:{component:L}}),["absolute"])},"VMenu"),be=A()({name:"VMenu",props:ke(),emits:{"update:modelValue":a=>!0},setup(a,f){let{slots:u}=f;const o=W(a,"modelValue"),{scopeId:y}=x(),{isRtl:i}=X(),d=oe(),c=ce(()=>a.id||`v-menu-${d}`),n=me(),t=ne(h,null),m=de(new Set);ve(h,{register(){m.value.add(d)},unregister(){m.value.delete(d)},closeParents(e){setTimeout(()=>{var s;!m.value.size&&!a.persistent&&(e==null||(s=n.value)!=null&&s.contentEl&&!ee(e,n.value.contentEl))&&(o.value=!1,t==null||t.closeParents())},40)}}),le(()=>t==null?void 0:t.unregister()),re(()=>o.value=!1),ue(o,e=>{e?t==null||t.register():t==null||t.unregister()},{immediate:!0});function k(e){t==null||t.closeParents(e)}function D(e){var s,l,r,v,C;if(!a.disabled)if(e.key==="Tab"||e.key==="Enter"&&!a.closeOnContentClick){if(e.key==="Enter"&&(e.target instanceof HTMLTextAreaElement||e.target instanceof HTMLInputElement&&e.target.closest("form")))return;e.key==="Enter"&&e.preventDefault(),!Y(Z((s=n.value)==null?void 0:s.contentEl,!1),e.shiftKey?"prev":"next",T=>T.tabIndex>=0)&&!a.retainFocus&&(o.value=!1,(r=(l=n.value)==null?void 0:l.activatorEl)==null||r.focus())}else a.submenu&&e.key===(i.value?"ArrowRight":"ArrowLeft")&&(o.value=!1,(C=(v=n.value)==null?void 0:v.activatorEl)==null||C.focus())}function w(e){var l;if(a.disabled)return;const s=(l=n.value)==null?void 0:l.contentEl;s&&o.value?e.key==="ArrowDown"?(e.preventDefault(),e.stopImmediatePropagation(),g(s,"next")):e.key==="ArrowUp"?(e.preventDefault(),e.stopImmediatePropagation(),g(s,"prev")):a.submenu&&(e.key===(i.value?"ArrowRight":"ArrowLeft")?o.value=!1:e.key===(i.value?"ArrowLeft":"ArrowRight")&&(e.preventDefault(),g(s,"first"))):(a.submenu?e.key===(i.value?"ArrowLeft":"ArrowRight"):["ArrowDown","ArrowUp"].includes(e.key))&&(o.value=!0,e.preventDefault(),setTimeout(()=>setTimeout(()=>w(e))))}const R=ie(()=>V({"aria-haspopup":"menu","aria-expanded":String(o.value),"aria-controls":c.value,"aria-owns":c.value,onKeydown:w},a.activatorProps));return E(()=>{const e=b.filterProps(a);return P(b,V({ref:n,id:c.value,class:["v-menu",a.class],style:a.style},e,{modelValue:o.value,"onUpdate:modelValue":s=>o.value=s,absolute:!0,activatorProps:R.value,location:a.location??(a.submenu?"end":"bottom"),"onClick:outside":k,onKeydown:D},y),{activator:u.activator,default:function(){for(var s=arguments.length,l=new Array(s),r=0;r{var v;return[(v=u.default)==null?void 0:v.call(u,...l)]}})}})}),p({id:c,ΨopenChildren:m},n)}}),ge=S({color:String,...Q(),...se(),...J(),...q(),...G(),...$(),...j(),...z(),...te()},"VSheet"),Ve=A()({name:"VSheet",props:ge(),setup(a,f){let{slots:u}=f;const{themeClasses:o}=ae(a),{backgroundColorClasses:y,backgroundColorStyles:i}=K(()=>a.color),{borderClasses:d}=O(a),{dimensionStyles:c}=N(a),{elevationClasses:n}=U(a),{locationStyles:t}=B(a),{positionClasses:m}=F(a),{roundedClasses:k}=H(a);return E(()=>P(a.tag,{class:ye(["v-sheet",o.value,y.value,d.value,n.value,m.value,k.value,a.class]),style:fe([i.value,c.value,t.value,a.style])},u)),{}}});export{be as V,Ve as a,ge as m}; diff --git a/assets/VSkeletonLoader-CfCoJRep.js b/assets/VSkeletonLoader-AysIn-20.js similarity index 79% rename from assets/VSkeletonLoader-CfCoJRep.js rename to assets/VSkeletonLoader-AysIn-20.js index e1fc0c3..42c9b29 100644 --- a/assets/VSkeletonLoader-CfCoJRep.js +++ b/assets/VSkeletonLoader-AysIn-20.js @@ -1 +1 @@ -import{E as f,b as k,a9 as x,ac as y,a as S}from"./index-_6IQhlPZ.js";import{f as w,h as C,an as L,u as B,w as P,p as V,m as T}from"./vendor-vuetify-ChAgIwn2.js";import{k as r,m as A,F as _,e as E,n as F}from"./vendor-vue-H0jQBZ7T.js";const D={actions:"button@2",article:"heading, paragraph",avatar:"avatar",button:"button",card:"image, heading","card-avatar":"image, list-item-avatar",chip:"chip","date-picker":"list-item, heading, divider, date-picker-options, date-picker-days, actions","date-picker-options":"text, avatar@2","date-picker-days":"avatar@28",divider:"divider",heading:"heading",image:"image","list-item":"text","list-item-avatar":"avatar, text","list-item-two-line":"sentences","list-item-avatar-two-line":"avatar, sentences","list-item-three-line":"paragraph","list-item-avatar-three-line":"avatar, paragraph",ossein:"ossein",paragraph:"text@3",sentences:"text@2",subtitle:"text",table:"table-heading, table-thead, table-tbody, table-tfoot","table-heading":"chip, text","table-thead":"heading@6","table-tbody":"table-row-divider@6","table-row-divider":"table-row, divider","table-row":"text@6","table-tfoot":"text@2, avatar@2",text:"text"};function $(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return r("div",{class:F(["v-skeleton-loader__bone",`v-skeleton-loader__${e}`])},[a])}function l(e){const[a,t]=e.split("@");return Array.from({length:t}).map(()=>i(a))}function i(e){let a=[];if(!e)return a;const t=D[e];if(e!==t){if(e.includes(","))return d(e);if(e.includes("@"))return l(e);t.includes(",")?a=d(t):t.includes("@")?a=l(t):t&&a.push(i(t))}return[$(e,a)]}function d(e){return e.replace(/\s/g,"").split(",").map(i)}const j=V({boilerplate:Boolean,color:String,loading:Boolean,loadingText:{type:String,default:"$vuetify.loading"},type:{type:[String,Array],default:"ossein"},...S(),...y(),...T()},"VSkeletonLoader"),R=w()({name:"VSkeletonLoader",inheritAttrs:!1,props:j(),setup(e,a){let{attrs:t,slots:n}=a;const{backgroundColorClasses:c,backgroundColorStyles:u}=f(()=>e.color),{dimensionStyles:m}=k(e),{elevationClasses:g}=x(e),{themeClasses:v}=C(e),{t:p}=L(),b=E(()=>i(P(e.type).join(",")));return B(()=>{var s;const o=!n.default||e.loading,h=e.boilerplate||!o?{}:{ariaLive:"polite",ariaLabel:p(e.loadingText),role:"alert"};return o?r("div",A({class:["v-skeleton-loader",{"v-skeleton-loader--boilerplate":e.boilerplate},v.value,c.value,g.value],style:[u.value,m.value]},h,t),[b.value]):r(_,null,[(s=n.default)==null?void 0:s.call(n)])}),{}}});export{R as V}; +import{H as f,b as k,aa as x,ad as y,a as S}from"./index-CFUCTEXJ.js";import{f as w,h as C,an as L,u as B,w as P,p as V,m as T}from"./vendor-vuetify-s-yw_Hr8.js";import{k as r,m as A,F as _,e as F,n as D}from"./vendor-vue-B2vxubPy.js";const E={actions:"button@2",article:"heading, paragraph",avatar:"avatar",button:"button",card:"image, heading","card-avatar":"image, list-item-avatar",chip:"chip","date-picker":"list-item, heading, divider, date-picker-options, date-picker-days, actions","date-picker-options":"text, avatar@2","date-picker-days":"avatar@28",divider:"divider",heading:"heading",image:"image","list-item":"text","list-item-avatar":"avatar, text","list-item-two-line":"sentences","list-item-avatar-two-line":"avatar, sentences","list-item-three-line":"paragraph","list-item-avatar-three-line":"avatar, paragraph",ossein:"ossein",paragraph:"text@3",sentences:"text@2",subtitle:"text",table:"table-heading, table-thead, table-tbody, table-tfoot","table-heading":"chip, text","table-thead":"heading@6","table-tbody":"table-row-divider@6","table-row-divider":"table-row, divider","table-row":"text@6","table-tfoot":"text@2, avatar@2",text:"text"};function $(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return r("div",{class:D(["v-skeleton-loader__bone",`v-skeleton-loader__${e}`])},[a])}function l(e){const[a,t]=e.split("@");return Array.from({length:t}).map(()=>i(a))}function i(e){let a=[];if(!e)return a;const t=E[e];if(e!==t){if(e.includes(","))return d(e);if(e.includes("@"))return l(e);t.includes(",")?a=d(t):t.includes("@")?a=l(t):t&&a.push(i(t))}return[$(e,a)]}function d(e){return e.replace(/\s/g,"").split(",").map(i)}const j=V({boilerplate:Boolean,color:String,loading:Boolean,loadingText:{type:String,default:"$vuetify.loading"},type:{type:[String,Array],default:"ossein"},...S(),...y(),...T()},"VSkeletonLoader"),N=w()({name:"VSkeletonLoader",inheritAttrs:!1,props:j(),setup(e,a){let{attrs:t,slots:n}=a;const{backgroundColorClasses:c,backgroundColorStyles:u}=f(()=>e.color),{dimensionStyles:m}=k(e),{elevationClasses:g}=x(e),{themeClasses:v}=C(e),{t:p}=L(),b=F(()=>i(P(e.type).join(",")));return B(()=>{var s;const o=!n.default||e.loading,h=e.boilerplate||!o?{}:{ariaLive:"polite",ariaLabel:p(e.loadingText),role:"alert"};return o?r("div",A({class:["v-skeleton-loader",{"v-skeleton-loader--boilerplate":e.boilerplate},v.value,c.value,g.value],style:[u.value,m.value]},h,t),[b.value]):r(_,null,[(s=n.default)==null?void 0:s.call(n)])}),{}}});export{N as V}; diff --git a/assets/VSwitch-Bk42mIwg.css b/assets/VSwitch-Bk42mIwg.css new file mode 100644 index 0000000..0b88e37 --- /dev/null +++ b/assets/VSwitch-Bk42mIwg.css @@ -0,0 +1 @@ +.v-switch .v-label{padding-inline-start:10px}.v-switch__loader{display:flex}.v-switch__loader .v-progress-circular{color:rgb(var(--v-theme-surface))}.v-switch__track,.v-switch__thumb{transition:none}.v-selection-control--error:not(.v-selection-control--disabled) .v-switch__track,.v-selection-control--error:not(.v-selection-control--disabled) .v-switch__thumb{background-color:rgb(var(--v-theme-error));color:rgb(var(--v-theme-on-error))}.v-switch__track-true{margin-inline-end:auto}.v-selection-control:not(.v-selection-control--dirty) .v-switch__track-true{opacity:0}.v-switch__track-false{margin-inline-start:auto}.v-selection-control--dirty .v-switch__track-false{opacity:0}.v-switch__track{display:inline-flex;align-items:center;font-size:.5rem;padding:0 5px;background-color:rgb(var(--v-theme-surface-variant));border-radius:9999px;height:14px;opacity:.6;min-width:36px;cursor:pointer;transition:.2s background-color cubic-bezier(.4,0,.2,1)}.v-switch--inset .v-switch__track{border-radius:9999px;font-size:.75rem;height:32px;min-width:52px}.v-switch__thumb{align-items:center;background-color:rgb(var(--v-theme-surface-bright));color:rgb(var(--v-theme-on-surface-bright));border-radius:50%;display:flex;font-size:.75rem;height:20px;justify-content:center;width:20px;pointer-events:none;transition:.15s .05s transform cubic-bezier(0,0,.2,1),.2s color cubic-bezier(.4,0,.2,1),.2s background-color cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.v-switch:not(.v-switch--inset) .v-switch__thumb{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-switch.v-switch--flat:not(.v-switch--inset) .v-switch__thumb{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-switch.v-switch--flat:not(.v-switch--inset) .v-switch__thumb{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-switch--inset .v-switch__thumb{height:24px;width:24px;transform:scale(.6666666667)}.v-switch--inset .v-switch__thumb--filled{transform:none}.v-switch--inset .v-selection-control--dirty .v-switch__thumb{transform:none;transition:.15s .05s transform cubic-bezier(0,0,.2,1)}.v-switch.v-input{flex:0 1 auto}.v-switch .v-selection-control{min-height:var(--v-input-control-height)}.v-switch .v-selection-control__input{border-radius:50%;transition:.2s transform cubic-bezier(.4,0,.2,1);position:absolute}.v-locale--is-ltr.v-switch .v-selection-control__input,.v-locale--is-ltr .v-switch .v-selection-control__input{transform:translate(-10px)}.v-locale--is-rtl.v-switch .v-selection-control__input,.v-locale--is-rtl .v-switch .v-selection-control__input{transform:translate(10px)}.v-switch .v-selection-control__input .v-icon{position:absolute}.v-locale--is-ltr.v-switch .v-selection-control--dirty .v-selection-control__input,.v-locale--is-ltr .v-switch .v-selection-control--dirty .v-selection-control__input{transform:translate(10px)}.v-locale--is-rtl.v-switch .v-selection-control--dirty .v-selection-control__input,.v-locale--is-rtl .v-switch .v-selection-control--dirty .v-selection-control__input{transform:translate(-10px)}.v-switch.v-switch--indeterminate .v-selection-control__input{transform:scale(.8)}.v-switch.v-switch--indeterminate .v-switch__thumb{transform:scale(.75);box-shadow:none}.v-switch.v-switch--inset .v-selection-control__wrapper{width:auto}.v-switch.v-input--vertical .v-label{min-width:max-content}.v-switch.v-input--vertical .v-selection-control__wrapper{transform:rotate(-90deg)}@media (forced-colors: active){.v-switch .v-switch__loader .v-progress-circular{color:currentColor}.v-switch .v-switch__thumb{background-color:buttontext}.v-switch .v-switch__track,.v-switch .v-switch__thumb{border:1px solid;color:buttontext}.v-switch:not(.v-switch--loading):not(.v-input--disabled) .v-selection-control--dirty .v-switch__thumb{background-color:highlight}.v-switch:not(.v-input--disabled) .v-selection-control--dirty .v-switch__track{background-color:highlight}.v-switch:not(.v-input--disabled) .v-selection-control--dirty .v-switch__track,.v-switch:not(.v-input--disabled) .v-selection-control--dirty .v-switch__thumb{color:highlight}.v-switch.v-switch--inset .v-switch__track{border-width:2px}.v-switch.v-switch--inset:not(.v-switch--loading):not(.v-input--disabled) .v-selection-control--dirty .v-switch__thumb{background-color:highlighttext;color:highlighttext}.v-switch.v-input--disabled .v-switch__thumb{background-color:graytext}.v-switch.v-input--disabled .v-switch__track,.v-switch.v-input--disabled .v-switch__thumb{color:graytext}.v-switch.v-switch--loading .v-switch__thumb{background-color:canvas}.v-switch.v-switch--loading.v-switch--inset .v-switch__thumb,.v-switch.v-switch--loading.v-switch--indeterminate .v-switch__thumb{border-width:0}}.v-selection-control{align-items:center;contain:layout;display:flex;flex:1 0;grid-area:control;position:relative;-webkit-user-select:none;user-select:none}.v-selection-control .v-label{white-space:normal;word-break:break-word;height:100%;opacity:1}.v-selection-control--disabled{opacity:var(--v-disabled-opacity);pointer-events:none}.v-selection-control--error:not(.v-selection-control--disabled) .v-label{color:rgb(var(--v-theme-error))}.v-selection-control--inline{display:inline-flex;flex:0 0 auto;min-width:0;max-width:100%}.v-selection-control--inline .v-label{width:auto}.v-selection-control--density-default{--v-selection-control-size: 40px}.v-selection-control--density-comfortable{--v-selection-control-size: 36px}.v-selection-control--density-compact{--v-selection-control-size: 28px}.v-selection-control__wrapper{width:var(--v-selection-control-size);height:var(--v-selection-control-size);display:inline-flex;align-items:center;position:relative;justify-content:center;flex:none}.v-selection-control__input{width:var(--v-selection-control-size);height:var(--v-selection-control-size);align-items:center;display:flex;flex:none;justify-content:center;position:relative;border-radius:50%}.v-selection-control__input input{cursor:pointer;position:absolute;left:0;top:0;width:100%;height:100%;opacity:0}.v-selection-control__input:before{border-radius:100%;background-color:currentColor;opacity:0;pointer-events:none}.v-selection-control__input:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-selection-control__input:hover:before{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-selection-control__input>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-selection-control--disabled .v-selection-control__input>.v-icon,.v-selection-control--dirty .v-selection-control__input>.v-icon,.v-selection-control--error .v-selection-control__input>.v-icon{opacity:1}.v-selection-control--error:not(.v-selection-control--disabled) .v-selection-control__input>.v-icon{color:rgb(var(--v-theme-error))}.v-selection-control--focus-visible .v-selection-control__input:before{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-selection-control-group{grid-area:control;display:flex;flex-direction:column}.v-selection-control-group--inline{flex-direction:row;flex-wrap:wrap} diff --git a/assets/VSwitch-C87GkfUP.css b/assets/VSwitch-C87GkfUP.css deleted file mode 100644 index e42940b..0000000 --- a/assets/VSwitch-C87GkfUP.css +++ /dev/null @@ -1 +0,0 @@ -.v-selection-control{align-items:center;contain:layout;display:flex;flex:1 0;grid-area:control;position:relative;-webkit-user-select:none;user-select:none}.v-selection-control .v-label{white-space:normal;word-break:break-word;height:100%;opacity:1}.v-selection-control--disabled{opacity:var(--v-disabled-opacity);pointer-events:none}.v-selection-control--error:not(.v-selection-control--disabled) .v-label{color:rgb(var(--v-theme-error))}.v-selection-control--inline{display:inline-flex;flex:0 0 auto;min-width:0;max-width:100%}.v-selection-control--inline .v-label{width:auto}.v-selection-control--density-default{--v-selection-control-size: 40px}.v-selection-control--density-comfortable{--v-selection-control-size: 36px}.v-selection-control--density-compact{--v-selection-control-size: 28px}.v-selection-control__wrapper{width:var(--v-selection-control-size);height:var(--v-selection-control-size);display:inline-flex;align-items:center;position:relative;justify-content:center;flex:none}.v-selection-control__input{width:var(--v-selection-control-size);height:var(--v-selection-control-size);align-items:center;display:flex;flex:none;justify-content:center;position:relative;border-radius:50%}.v-selection-control__input input{cursor:pointer;position:absolute;left:0;top:0;width:100%;height:100%;opacity:0}.v-selection-control__input:before{border-radius:100%;background-color:currentColor;opacity:0;pointer-events:none}.v-selection-control__input:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-selection-control__input:hover:before{opacity:calc(var(--v-hover-opacity) * var(--v-theme-overlay-multiplier))}.v-selection-control__input>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-selection-control--disabled .v-selection-control__input>.v-icon,.v-selection-control--dirty .v-selection-control__input>.v-icon,.v-selection-control--error .v-selection-control__input>.v-icon{opacity:1}.v-selection-control--error:not(.v-selection-control--disabled) .v-selection-control__input>.v-icon{color:rgb(var(--v-theme-error))}.v-selection-control--focus-visible .v-selection-control__input:before{opacity:calc(var(--v-focus-opacity) * var(--v-theme-overlay-multiplier))}.v-selection-control-group{grid-area:control;display:flex;flex-direction:column}.v-selection-control-group--inline{flex-direction:row;flex-wrap:wrap}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-switch .v-label{padding-inline-start:10px}.v-switch__loader{display:flex}.v-switch__loader .v-progress-circular{color:rgb(var(--v-theme-surface))}.v-switch__track,.v-switch__thumb{transition:none}.v-selection-control--error:not(.v-selection-control--disabled) .v-switch__track,.v-selection-control--error:not(.v-selection-control--disabled) .v-switch__thumb{background-color:rgb(var(--v-theme-error));color:rgb(var(--v-theme-on-error))}.v-switch__track-true{margin-inline-end:auto}.v-selection-control:not(.v-selection-control--dirty) .v-switch__track-true{opacity:0}.v-switch__track-false{margin-inline-start:auto}.v-selection-control--dirty .v-switch__track-false{opacity:0}.v-switch__track{display:inline-flex;align-items:center;font-size:.5rem;padding:0 5px;background-color:rgb(var(--v-theme-surface-variant));border-radius:9999px;height:14px;opacity:.6;min-width:36px;cursor:pointer;transition:.2s background-color cubic-bezier(.4,0,.2,1)}.v-switch--inset .v-switch__track{border-radius:9999px;font-size:.75rem;height:32px;min-width:52px}.v-switch__thumb{align-items:center;background-color:rgb(var(--v-theme-surface-bright));color:rgb(var(--v-theme-on-surface-bright));border-radius:50%;display:flex;font-size:.75rem;height:20px;justify-content:center;width:20px;pointer-events:none;transition:.15s .05s transform cubic-bezier(0,0,.2,1),.2s color cubic-bezier(.4,0,.2,1),.2s background-color cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.v-switch:not(.v-switch--inset) .v-switch__thumb{box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 10px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-switch.v-switch--flat:not(.v-switch--inset) .v-switch__thumb{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-switch.v-switch--flat:not(.v-switch--inset) .v-switch__thumb{box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 0 0 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 0 0 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-switch--inset .v-switch__thumb{height:24px;width:24px;transform:scale(.6666666667)}.v-switch--inset .v-switch__thumb--filled{transform:none}.v-switch--inset .v-selection-control--dirty .v-switch__thumb{transform:none;transition:.15s .05s transform cubic-bezier(0,0,.2,1)}.v-switch.v-input{flex:0 1 auto}.v-switch .v-selection-control{min-height:var(--v-input-control-height)}.v-switch .v-selection-control__input{border-radius:50%;transition:.2s transform cubic-bezier(.4,0,.2,1);position:absolute}.v-locale--is-ltr.v-switch .v-selection-control__input,.v-locale--is-ltr .v-switch .v-selection-control__input{transform:translate(-10px)}.v-locale--is-rtl.v-switch .v-selection-control__input,.v-locale--is-rtl .v-switch .v-selection-control__input{transform:translate(10px)}.v-switch .v-selection-control__input .v-icon{position:absolute}.v-locale--is-ltr.v-switch .v-selection-control--dirty .v-selection-control__input,.v-locale--is-ltr .v-switch .v-selection-control--dirty .v-selection-control__input{transform:translate(10px)}.v-locale--is-rtl.v-switch .v-selection-control--dirty .v-selection-control__input,.v-locale--is-rtl .v-switch .v-selection-control--dirty .v-selection-control__input{transform:translate(-10px)}.v-switch.v-switch--indeterminate .v-selection-control__input{transform:scale(.8)}.v-switch.v-switch--indeterminate .v-switch__thumb{transform:scale(.75);box-shadow:none}.v-switch.v-switch--inset .v-selection-control__wrapper{width:auto}.v-switch.v-input--vertical .v-label{min-width:max-content}.v-switch.v-input--vertical .v-selection-control__wrapper{transform:rotate(-90deg)}@media (forced-colors: active){.v-switch .v-switch__loader .v-progress-circular{color:currentColor}.v-switch .v-switch__thumb{background-color:buttontext}.v-switch .v-switch__track,.v-switch .v-switch__thumb{border:1px solid;color:buttontext}.v-switch:not(.v-switch--loading):not(.v-input--disabled) .v-selection-control--dirty .v-switch__thumb{background-color:highlight}.v-switch:not(.v-input--disabled) .v-selection-control--dirty .v-switch__track{background-color:highlight}.v-switch:not(.v-input--disabled) .v-selection-control--dirty .v-switch__track,.v-switch:not(.v-input--disabled) .v-selection-control--dirty .v-switch__thumb{color:highlight}.v-switch.v-switch--inset .v-switch__track{border-width:2px}.v-switch.v-switch--inset:not(.v-switch--loading):not(.v-input--disabled) .v-selection-control--dirty .v-switch__thumb{background-color:highlighttext;color:highlighttext}.v-switch.v-input--disabled .v-switch__thumb{background-color:graytext}.v-switch.v-input--disabled .v-switch__track,.v-switch.v-input--disabled .v-switch__thumb{color:graytext}.v-switch.v-switch--loading .v-switch__thumb{background-color:canvas}.v-switch.v-switch--loading.v-switch--inset .v-switch__thumb,.v-switch.v-switch--loading.v-switch--indeterminate .v-switch__thumb{border-width:0}} diff --git a/assets/VSwitch-CdpUb5tZ.js b/assets/VSwitch-CdpUb5tZ.js deleted file mode 100644 index 1d89f6d..0000000 --- a/assets/VSwitch-CdpUb5tZ.js +++ /dev/null @@ -1 +0,0 @@ -import{I as ie,am as Y,h as Z,G as se,D as re,E as ce,X as de,a8 as ve,aE as fe,Y as me,V as ye,C as Ce}from"./index-_6IQhlPZ.js";import{k as Ve,u as be,V as J,c as ke}from"./autofocus-BrMOVHY_.js";import{p as E,o as ge,I as K,m as Se,k as p,f as H,n as T,j as he,u as O,ao as ee,_ as we,w as $,aL as Ie}from"./vendor-vuetify-ChAgIwn2.js";import{E as X,t as n,k as r,N as G,n as D,p as Pe,q as _e,m as U,R as Ae,F as le,j as C,d as Be,b as q,I as Fe,s as Q,e as x}from"./vendor-vue-H0jQBZ7T.js";const ae=Symbol.for("vuetify:selection-control-group"),te=E({color:String,disabled:{type:Boolean,default:null},defaultsTarget:String,error:Boolean,id:String,inline:Boolean,falseIcon:K,trueIcon:K,ripple:{type:[Boolean,Object],default:!0},multiple:{type:Boolean,default:null},name:String,readonly:{type:Boolean,default:null},modelValue:null,type:String,valueComparator:{type:Function,default:ge},...p(),...ie(),...Se()},"SelectionControlGroup"),xe=E({...te({defaultsTarget:"VSelectionControl"})},"VSelectionControlGroup");H()({name:"VSelectionControlGroup",props:xe(),emits:{"update:modelValue":e=>!0},setup(e,i){let{slots:f}=i;const l=T(e,"modelValue"),a=X(),u=n(()=>e.id||`v-selection-control-group-${a}`),c=n(()=>e.name||u.value),t=new Set;return Pe(ae,{modelValue:l,forceUpdate:()=>{t.forEach(o=>o())},onForceUpdate:o=>{t.add(o),_e(()=>{t.delete(o)})}}),he({[e.defaultsTarget]:{color:n(()=>e.color),disabled:n(()=>e.disabled),density:n(()=>e.density),error:n(()=>e.error),inline:n(()=>e.inline),modelValue:l,multiple:n(()=>!!e.multiple||e.multiple==null&&Array.isArray(l.value)),name:c,falseIcon:n(()=>e.falseIcon),trueIcon:n(()=>e.trueIcon),readonly:n(()=>e.readonly),ripple:n(()=>e.ripple),type:n(()=>e.type),valueComparator:n(()=>e.valueComparator)}}),O(()=>{var o;return r("div",{class:D(["v-selection-control-group",{"v-selection-control-group--inline":e.inline},e.class]),style:G(e.style),role:e.type==="radio"?"radiogroup":void 0},[(o=f.default)==null?void 0:o.call(f)])}),{}}});const ne=E({label:String,baseColor:String,trueValue:null,falseValue:null,value:null,...p(),...te()},"VSelectionControl");function De(e){const i=Be(ae,void 0),{densityClasses:f}=se(e),l=T(e,"modelValue"),a=x(()=>e.trueValue!==void 0?e.trueValue:e.value!==void 0?e.value:!0),u=x(()=>e.falseValue!==void 0?e.falseValue:!1),c=x(()=>!!e.multiple||e.multiple==null&&Array.isArray(l.value)),t=x({get(){const m=i?i.modelValue.value:l.value;return c.value?$(m).some(s=>e.valueComparator(s,a.value)):e.valueComparator(m,a.value)},set(m){if(e.readonly)return;const s=m?a.value:u.value;let y=s;c.value&&(y=m?[...$(l.value),s]:$(l.value).filter(d=>!e.valueComparator(d,a.value))),i?i.modelValue.value=y:l.value=y}}),{textColorClasses:o,textColorStyles:w}=re(()=>{if(!(e.error||e.disabled))return t.value?e.color:e.baseColor}),{backgroundColorClasses:b,backgroundColorStyles:k}=ce(()=>t.value&&!e.error&&!e.disabled?e.color:e.baseColor),I=x(()=>t.value?e.trueIcon:e.falseIcon);return{group:i,densityClasses:f,trueValue:a,falseValue:u,model:t,textColorClasses:o,textColorStyles:w,backgroundColorClasses:b,backgroundColorStyles:k,icon:I}}const W=H()({name:"VSelectionControl",directives:{vRipple:Y},inheritAttrs:!1,props:ne(),emits:{"update:modelValue":e=>!0},setup(e,i){let{attrs:f,slots:l}=i;const{group:a,densityClasses:u,icon:c,model:t,textColorClasses:o,textColorStyles:w,backgroundColorClasses:b,backgroundColorStyles:k,trueValue:I}=De(e),m=X(),s=Q(!1),y=Q(!1),d=q(),P=n(()=>e.id||`input-${m}`),g=n(()=>!e.disabled&&!e.readonly);a==null||a.onForceUpdate(()=>{d.value&&(d.value.checked=t.value)});function S(v){g.value&&(s.value=!0,we(v.target,":focus-visible")!==!1&&(y.value=!0))}function h(){s.value=!1,y.value=!1}function M(v){v.stopPropagation()}function A(v){if(!g.value){d.value&&(d.value.checked=t.value);return}e.readonly&&a&&Fe(()=>a.forceUpdate()),t.value=v.target.checked}return O(()=>{var B,_;const v=l.label?l.label({label:e.label,props:{for:P.value}}):e.label,[z,L]=ee(f),R=r("input",U({ref:d,checked:t.value,disabled:!!e.disabled,id:P.value,onBlur:h,onFocus:S,onInput:A,"aria-disabled":!!e.disabled,"aria-label":e.label,type:e.type,value:I.value,name:e.name,"aria-checked":e.type==="checkbox"?t.value:void 0},L),null);return r("div",U({class:["v-selection-control",{"v-selection-control--dirty":t.value,"v-selection-control--disabled":e.disabled,"v-selection-control--error":e.error,"v-selection-control--focused":s.value,"v-selection-control--focus-visible":y.value,"v-selection-control--inline":e.inline},u.value,e.class]},z,{style:e.style}),[r("div",{class:D(["v-selection-control__wrapper",o.value]),style:G(w.value)},[(B=l.default)==null?void 0:B.call(l,{backgroundColorClasses:b,backgroundColorStyles:k}),Ae(r("div",{class:D(["v-selection-control__input"])},[((_=l.input)==null?void 0:_.call(l,{model:t,textColorClasses:o,textColorStyles:w,backgroundColorClasses:b,backgroundColorStyles:k,inputNode:R,icon:c.value,props:{onFocus:S,onBlur:h,id:P.value}}))??r(le,null,[c.value&&C(Z,{key:"icon",icon:c.value},null),R])]),[[Y,!e.disabled&&!e.readonly&&e.ripple,null,{center:!0,circle:!0}]])]),v&&C(Ve,{for:P.value,onClick:M},{default:()=>[v]})])}),{isFocused:s,input:d}}}),Re=E({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...ke(),...ne()},"VSwitch"),Me=H()({name:"VSwitch",inheritAttrs:!1,props:Re(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,i){let{attrs:f,slots:l}=i;const a=T(e,"indeterminate"),u=T(e,"modelValue"),{loaderClasses:c}=de(e),{isFocused:t,focus:o,blur:w}=be(e),b=q(),k=q(),I=Ie&&window.matchMedia("(forced-colors: active)").matches,m=n(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),s=X(),y=n(()=>e.id||`switch-${s}`);function d(){a.value&&(a.value=!1)}function P(g){var S,h;g.stopPropagation(),g.preventDefault(),(h=(S=b.value)==null?void 0:S.input)==null||h.click()}return O(()=>{const[g,S]=ee(f),h=J.filterProps(e),M=W.filterProps(e);return C(J,U({ref:k,class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":a.value},c.value,e.class]},g,h,{modelValue:u.value,"onUpdate:modelValue":A=>u.value=A,id:y.value,focused:t.value,style:e.style}),{...l,default:A=>{let{id:v,messagesId:z,isDisabled:L,isReadonly:R,isValid:B}=A;const _={model:u,isValid:B};return C(W,U({ref:b},M,{modelValue:u.value,"onUpdate:modelValue":[F=>u.value=F,d],id:v.value,"aria-describedby":z.value,type:"checkbox","aria-checked":a.value?"mixed":void 0,disabled:L.value,readonly:R.value,onFocus:o,onBlur:w},S),{...l,default:F=>{let{backgroundColorClasses:N,backgroundColorStyles:V}=F;return r("div",{class:D(["v-switch__track",I?void 0:N.value]),style:G(V.value),onClick:P},[l["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[l["track-true"](_)]),l["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[l["track-false"](_)])])},input:F=>{let{inputNode:N,icon:V,backgroundColorClasses:oe,backgroundColorStyles:ue}=F;return r(le,null,[N,r("div",{class:D(["v-switch__thumb",{"v-switch__thumb--filled":V||e.loading},e.inset||I?void 0:oe.value]),style:G(e.inset?void 0:ue.value)},[l.thumb?C(ve,{defaults:{VIcon:{icon:V,size:"x-small"}}},{default:()=>[l.thumb({..._,icon:V})]}):C(fe,null,{default:()=>[e.loading?C(me,{name:"v-switch",active:!0,color:B.value===!1?void 0:m.value},{default:j=>l.loader?l.loader(j):C(ye,{active:j.isActive,color:j.color,indeterminate:!0,size:"16",width:"2"},null)}):V&&C(Z,{key:String(V),icon:V,size:"x-small"},null)]})])])}})}})}),Ce({},k)}});export{Me as V,W as a,ne as m}; diff --git a/assets/VSwitch-DKh_Uq_M.js b/assets/VSwitch-DKh_Uq_M.js new file mode 100644 index 0000000..04dec95 --- /dev/null +++ b/assets/VSwitch-DKh_Uq_M.js @@ -0,0 +1 @@ +import{L as ie,al as Y,f as X,J as se,G as re,H as ce,Y as de,a9 as ve,am as fe,Z as me,V as ye,D as Ce}from"./index-CFUCTEXJ.js";import{a as Ve,u as be,V as Z,m as ke}from"./VLabel-CU-8PdVS.js";import{p as M,o as ge,I as K,m as Se,k as p,f as q,n as T,j as he,u as O,ao as ee,_ as we,w as H,aB as Ie}from"./vendor-vuetify-s-yw_Hr8.js";import{E as J,t as n,k as r,N as G,n as D,p as Pe,q as _e,m as U,R as Ae,F as le,j as C,d as Be,b as $,I as Fe,s as Q,e as x}from"./vendor-vue-B2vxubPy.js";const ae=Symbol.for("vuetify:selection-control-group"),te=M({color:String,disabled:{type:Boolean,default:null},defaultsTarget:String,error:Boolean,id:String,inline:Boolean,falseIcon:K,trueIcon:K,ripple:{type:[Boolean,Object],default:!0},multiple:{type:Boolean,default:null},name:String,readonly:{type:Boolean,default:null},modelValue:null,type:String,valueComparator:{type:Function,default:ge},...p(),...ie(),...Se()},"SelectionControlGroup"),xe=M({...te({defaultsTarget:"VSelectionControl"})},"VSelectionControlGroup");q()({name:"VSelectionControlGroup",props:xe(),emits:{"update:modelValue":e=>!0},setup(e,i){let{slots:f}=i;const l=T(e,"modelValue"),a=J(),u=n(()=>e.id||`v-selection-control-group-${a}`),c=n(()=>e.name||u.value),t=new Set;return Pe(ae,{modelValue:l,forceUpdate:()=>{t.forEach(o=>o())},onForceUpdate:o=>{t.add(o),_e(()=>{t.delete(o)})}}),he({[e.defaultsTarget]:{color:n(()=>e.color),disabled:n(()=>e.disabled),density:n(()=>e.density),error:n(()=>e.error),inline:n(()=>e.inline),modelValue:l,multiple:n(()=>!!e.multiple||e.multiple==null&&Array.isArray(l.value)),name:c,falseIcon:n(()=>e.falseIcon),trueIcon:n(()=>e.trueIcon),readonly:n(()=>e.readonly),ripple:n(()=>e.ripple),type:n(()=>e.type),valueComparator:n(()=>e.valueComparator)}}),O(()=>{var o;return r("div",{class:D(["v-selection-control-group",{"v-selection-control-group--inline":e.inline},e.class]),style:G(e.style),role:e.type==="radio"?"radiogroup":void 0},[(o=f.default)==null?void 0:o.call(f)])}),{}}});const ne=M({label:String,baseColor:String,trueValue:null,falseValue:null,value:null,...p(),...te()},"VSelectionControl");function De(e){const i=Be(ae,void 0),{densityClasses:f}=se(e),l=T(e,"modelValue"),a=x(()=>e.trueValue!==void 0?e.trueValue:e.value!==void 0?e.value:!0),u=x(()=>e.falseValue!==void 0?e.falseValue:!1),c=x(()=>!!e.multiple||e.multiple==null&&Array.isArray(l.value)),t=x({get(){const m=i?i.modelValue.value:l.value;return c.value?H(m).some(s=>e.valueComparator(s,a.value)):e.valueComparator(m,a.value)},set(m){if(e.readonly)return;const s=m?a.value:u.value;let y=s;c.value&&(y=m?[...H(l.value),s]:H(l.value).filter(d=>!e.valueComparator(d,a.value))),i?i.modelValue.value=y:l.value=y}}),{textColorClasses:o,textColorStyles:w}=re(()=>{if(!(e.error||e.disabled))return t.value?e.color:e.baseColor}),{backgroundColorClasses:b,backgroundColorStyles:k}=ce(()=>t.value&&!e.error&&!e.disabled?e.color:e.baseColor),I=x(()=>t.value?e.trueIcon:e.falseIcon);return{group:i,densityClasses:f,trueValue:a,falseValue:u,model:t,textColorClasses:o,textColorStyles:w,backgroundColorClasses:b,backgroundColorStyles:k,icon:I}}const W=q()({name:"VSelectionControl",directives:{vRipple:Y},inheritAttrs:!1,props:ne(),emits:{"update:modelValue":e=>!0},setup(e,i){let{attrs:f,slots:l}=i;const{group:a,densityClasses:u,icon:c,model:t,textColorClasses:o,textColorStyles:w,backgroundColorClasses:b,backgroundColorStyles:k,trueValue:I}=De(e),m=J(),s=Q(!1),y=Q(!1),d=$(),P=n(()=>e.id||`input-${m}`),g=n(()=>!e.disabled&&!e.readonly);a==null||a.onForceUpdate(()=>{d.value&&(d.value.checked=t.value)});function S(v){g.value&&(s.value=!0,we(v.target,":focus-visible")!==!1&&(y.value=!0))}function h(){s.value=!1,y.value=!1}function z(v){v.stopPropagation()}function A(v){if(!g.value){d.value&&(d.value.checked=t.value);return}e.readonly&&a&&Fe(()=>a.forceUpdate()),t.value=v.target.checked}return O(()=>{var B,_;const v=l.label?l.label({label:e.label,props:{for:P.value}}):e.label,[L,N]=ee(f),R=r("input",U({ref:d,checked:t.value,disabled:!!e.disabled,id:P.value,onBlur:h,onFocus:S,onInput:A,"aria-disabled":!!e.disabled,"aria-label":e.label,type:e.type,value:I.value,name:e.name,"aria-checked":e.type==="checkbox"?t.value:void 0},N),null);return r("div",U({class:["v-selection-control",{"v-selection-control--dirty":t.value,"v-selection-control--disabled":e.disabled,"v-selection-control--error":e.error,"v-selection-control--focused":s.value,"v-selection-control--focus-visible":y.value,"v-selection-control--inline":e.inline},u.value,e.class]},L,{style:e.style}),[r("div",{class:D(["v-selection-control__wrapper",o.value]),style:G(w.value)},[(B=l.default)==null?void 0:B.call(l,{backgroundColorClasses:b,backgroundColorStyles:k}),Ae(r("div",{class:D(["v-selection-control__input"])},[((_=l.input)==null?void 0:_.call(l,{model:t,textColorClasses:o,textColorStyles:w,backgroundColorClasses:b,backgroundColorStyles:k,inputNode:R,icon:c.value,props:{onFocus:S,onBlur:h,id:P.value}}))??r(le,null,[c.value&&C(X,{key:"icon",icon:c.value},null),R])]),[[Y,!e.disabled&&!e.readonly&&e.ripple,null,{center:!0,circle:!0}]])]),v&&C(Ve,{for:P.value,onClick:z},{default:()=>[v]})])}),{isFocused:s,input:d}}}),Re=M({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...ke(),...ne()},"VSwitch"),ze=q()({name:"VSwitch",inheritAttrs:!1,props:Re(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,i){let{attrs:f,slots:l}=i;const a=T(e,"indeterminate"),u=T(e,"modelValue"),{loaderClasses:c}=de(e),{isFocused:t,focus:o,blur:w}=be(e),b=$(),k=$(),I=Ie&&window.matchMedia("(forced-colors: active)").matches,m=n(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),s=J(),y=n(()=>e.id||`switch-${s}`);function d(){a.value&&(a.value=!1)}function P(g){var S,h;g.stopPropagation(),g.preventDefault(),(h=(S=b.value)==null?void 0:S.input)==null||h.click()}return O(()=>{const[g,S]=ee(f),h=Z.filterProps(e),z=W.filterProps(e);return C(Z,U({ref:k,class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":a.value},c.value,e.class]},g,h,{modelValue:u.value,"onUpdate:modelValue":A=>u.value=A,id:y.value,focused:t.value,style:e.style}),{...l,default:A=>{let{id:v,messagesId:L,isDisabled:N,isReadonly:R,isValid:B}=A;const _={model:u,isValid:B};return C(W,U({ref:b},z,{modelValue:u.value,"onUpdate:modelValue":[F=>u.value=F,d],id:v.value,"aria-describedby":L.value,type:"checkbox","aria-checked":a.value?"mixed":void 0,disabled:N.value,readonly:R.value,onFocus:o,onBlur:w},S),{...l,default:F=>{let{backgroundColorClasses:j,backgroundColorStyles:V}=F;return r("div",{class:D(["v-switch__track",I?void 0:j.value]),style:G(V.value),onClick:P},[l["track-true"]&&r("div",{key:"prepend",class:"v-switch__track-true"},[l["track-true"](_)]),l["track-false"]&&r("div",{key:"append",class:"v-switch__track-false"},[l["track-false"](_)])])},input:F=>{let{inputNode:j,icon:V,backgroundColorClasses:oe,backgroundColorStyles:ue}=F;return r(le,null,[j,r("div",{class:D(["v-switch__thumb",{"v-switch__thumb--filled":V||e.loading},e.inset||I?void 0:oe.value]),style:G(e.inset?void 0:ue.value)},[l.thumb?C(ve,{defaults:{VIcon:{icon:V,size:"x-small"}}},{default:()=>[l.thumb({..._,icon:V})]}):C(fe,null,{default:()=>[e.loading?C(me,{name:"v-switch",active:!0,color:B.value===!1?void 0:m.value},{default:E=>l.loader?l.loader(E):C(ye,{active:E.isActive,color:E.color,indeterminate:!0,size:"16",width:"2"},null)}):V&&C(X,{key:String(V),icon:V,size:"x-small"},null)]})])])}})}})}),Ce({},k)}});export{ze as V,W as a,ne as m}; diff --git a/assets/VTabs-566n5b08.css b/assets/VTabs-566n5b08.css new file mode 100644 index 0000000..2457cc2 --- /dev/null +++ b/assets/VTabs-566n5b08.css @@ -0,0 +1 @@ +.v-tab.v-tab.v-btn{height:var(--v-tabs-height);border-radius:0;min-width:90px}.v-slide-group--horizontal .v-tab{max-width:360px}.v-slide-group--vertical .v-tab{justify-content:start}.v-tab__slider{position:absolute;bottom:0;left:0;height:2px;width:100%;background:currentColor;pointer-events:none;opacity:0}.v-tab--selected .v-tab__slider{opacity:1}.v-slide-group--vertical .v-tab__slider{top:0;height:100%;width:2px}@media (forced-colors: active){.v-tab--selected.v-btn{color:highlight!important}.v-tab__slider{background:highlight!important}}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-tabs{display:flex;height:var(--v-tabs-height)}.v-tabs--density-default{--v-tabs-height: 48px}.v-tabs--density-default.v-tabs--stacked{--v-tabs-height: 72px}.v-tabs--density-comfortable{--v-tabs-height: 44px}.v-tabs--density-comfortable.v-tabs--stacked{--v-tabs-height: 68px}.v-tabs--density-compact{--v-tabs-height: 36px}.v-tabs--density-compact.v-tabs--stacked{--v-tabs-height: 60px}.v-tabs.v-slide-group--vertical{height:auto;flex:none;--v-tabs-height: 48px}.v-tabs--align-tabs-title:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:42px}.v-tabs--fixed-tabs .v-slide-group__content>*:last-child,.v-tabs--align-tabs-center .v-slide-group__content>*:last-child{margin-inline-end:auto}.v-tabs--fixed-tabs .v-slide-group__content>*:first-child,.v-tabs--align-tabs-center .v-slide-group__content>*:first-child{margin-inline-start:auto}.v-tabs--grow{flex-grow:1}.v-tabs--grow .v-tab{flex:1 0 auto;max-width:none}.v-tabs--align-tabs-end .v-tab:first-child{margin-inline-start:auto}.v-tabs--align-tabs-end .v-tab:last-child{margin-inline-end:0}.v-tabs--inset{--v-tabs-inset-radius: 4px;--v-tabs-inset-padding: 4px;--v-tabs-slider-background: rgba(var(--v-theme-on-surface), .2);background:rgba(var(--v-theme-on-surface),.06);box-shadow:inset 0 0 0 2px rgba(var(--v-border-color),var(--v-border-opacity));border-radius:calc(var(--v-tabs-inset-radius) + var(--v-tabs-inset-padding))}.v-tabs--inset .v-tab{margin:var(--v-tabs-inset-padding);transition-property:box-shadow,transform,opacity,background,color}.v-tabs--inset .v-tab.v-tab.v-btn{border-radius:var(--v-tabs-inset-radius)}.v-tabs--inset .v-tab:focus-visible{outline:2px solid rgb(var(--v-border-color));outline-offset:2px}.v-tabs--inset .v-tab:focus-visible:after{opacity:0}.v-tabs--inset:not(.v-tabs--fixed-tabs,.v-tabs--grow){max-width:max-content}.v-tabs--inset.v-tabs--fixed-tabs .v-slide-group__content{padding-inline:var(--v-tabs-inset-padding)}.v-tabs--inset .v-tab__slider{background:var(--v-tabs-slider-background);top:0;right:0;bottom:0;left:0;border-radius:var(--v-tabs-inset-radius);z-index:-1;width:auto}.v-tabs--inset.v-tabs--horizontal{height:calc(var(--v-tabs-height) + var(--v-tabs-inset-padding) * 2);--v-tabs-inset-tab-radius: calc(var(--v-tabs-outer-radius) - var(--v-tabs-inset-padding) + 4px)}.v-tabs--inset.v-tabs--horizontal .v-tab__slider{height:auto}.v-tabs--inset .v-btn__overlay{display:none}.v-tabs--inset.v-tabs--vertical .v-tab{grid-template-columns:max-content 1fr max-content}.v-tabs--inset.v-tabs--vertical .v-tab>.v-btn__content{justify-content:start}.v-tabs--inset.v-tabs--vertical .v-tab .v-tab__slider{width:auto}@media (max-width: 1279.98px){.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:52px}.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:last-child{margin-inline-end:52px}} diff --git a/assets/VTabs-D8mV99Hb.js b/assets/VTabs-D8mV99Hb.js new file mode 100644 index 0000000..7e22b2a --- /dev/null +++ b/assets/VTabs-D8mV99Hb.js @@ -0,0 +1 @@ +import{G as q,H as I,i as R,D as J,I as K,J as L,K as Q,m as Z,L as p}from"./index-CFUCTEXJ.js";import{e as j,a as ee,V as te}from"./VTabsWindowItem-CU31Uty7.js";import{f as F,u as W,a4 as ae,p as X,a5 as ne,a6 as se,n as le,j as ie,s as E,aj as oe,F as re}from"./vendor-vuetify-s-yw_Hr8.js";import{j as T,k as D,N as de,n as ue,F as Y,m as P,b as M,e as N,t as r}from"./vendor-vue-B2vxubPy.js";import{b as G,m as ce}from"./VChip-DR8Ljy6R.js";const _=X({fixed:Boolean,sliderColor:String,sliderTransition:String,sliderTransitionDuration:[String,Number],hideSlider:Boolean,inset:Boolean,direction:{type:String,default:"horizontal"},...ne(K({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),ve=F()({name:"VTab",props:_(),setup(e,d){let{slots:C,attrs:t}=d;const{textColorClasses:g,textColorStyles:k}=q(()=>e.sliderColor),{backgroundColorClasses:V,backgroundColorStyles:w}=I(()=>e.sliderColor),y=M(),x=M(),u=N(()=>e.direction==="horizontal"),m=N(()=>{var s,n;return((n=(s=y.value)==null?void 0:s.group)==null?void 0:n.isSelected.value)??!1});function a(s,n){return{opacity:[0,1]}}function l(s,n){return e.direction==="vertical"?{transform:["scaleY(0)","scaleY(1)"]}:{transform:["scaleX(0)","scaleX(1)"]}}function c(s,n){const i=n.getBoundingClientRect(),o=s.getBoundingClientRect(),v=u.value?"x":"y",b=u.value?"X":"Y",S=u.value?"right":"bottom",f=u.value?"width":"height",$=i[v],H=o[v],h=$>H?i[S]-o[S]:i[v]-o[v],U=Math.sign(h)>0?u.value?"right":"bottom":Math.sign(h)<0?u.value?"left":"top":"center",A=(Math.abs(h)+(Math.sign(h)<0?i[f]:o[f]))/Math.max(i[f],o[f])||0,O=i[f]/o[f]||0,z=1.5;return{transform:[`translate${b}(${h}px) scale${b}(${O})`,`translate${b}(${h/z}px) scale${b}(${(A-1)/z+1})`,"none"],transformOrigin:Array(3).fill(U)}}function B(s){var i,o;let{value:n}=s;if(n){const v=(o=(i=y.value)==null?void 0:i.$el.parentElement)==null?void 0:o.querySelector(".v-tab--selected .v-tab__slider"),b=x.value;if(!v||!b)return;const S=getComputedStyle(v).backgroundColor,f={fade:a,grow:l,shift:c}[e.sliderTransition??"shift"]??c,$=Number(e.sliderTransitionDuration)||({fade:400,grow:350,shift:225}[e.sliderTransition??"shift"]??225);ae(b,{backgroundColor:[S,S],...f(b,v)},{duration:$,easing:se})}}return W(()=>{const s=R.filterProps(e);return T(R,P({symbol:j,ref:y,class:["v-tab",e.class,m.value&&e.inset?V.value:[]],style:[e.style,m.value&&e.inset?w.value:[],{backgroundColor:m.value&&e.inset?"transparent !important":void 0}],tabindex:m.value?0:-1,role:"tab","aria-selected":String(m.value),active:!1},s,t,{block:e.fixed,maxWidth:e.fixed?300:void 0,"onGroup:selected":B}),{...C,default:()=>{var n;return D(Y,null,[((n=C.default)==null?void 0:n.call(C))??e.text,!e.hideSlider&&D("div",{ref:x,class:ue(["v-tab__slider",e.inset?V.value:g.value]),style:de([k.value,e.inset?w.value:g.value])},null)])}})}),J({},y)}});function be(e){return e?e.map(d=>re(d)?d:{text:d,value:d}):[]}const fe=X({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,inset:Boolean,insetPadding:[String,Number],insetRadius:[String,Number],sliderColor:String,...oe(_(),["spaced","sliderTransition","sliderTransitionDuration"]),...ce({mandatory:"force",selectedClass:"v-tab-item--selected"}),...p(),...Z()},"VTabs"),Se=F()({name:"VTabs",props:fe(),emits:{"update:modelValue":e=>!0},setup(e,d){let{attrs:C,slots:t}=d;const g=le(e,"modelValue"),k=N(()=>be(e.items)),{densityClasses:V}=L(e),{backgroundColorClasses:w,backgroundColorStyles:y}=I(()=>e.bgColor),{scopeId:x}=Q();return ie({VTab:{color:r(e,"color"),direction:r(e,"direction"),stacked:r(e,"stacked"),fixed:r(e,"fixedTabs"),inset:r(e,"inset"),sliderColor:r(e,"sliderColor"),sliderTransition:r(e,"sliderTransition"),sliderTransitionDuration:r(e,"sliderTransitionDuration"),hideSlider:r(e,"hideSlider")}}),W(()=>{const u=G.filterProps(e),m=!!(t.window||e.items.length>0);return D(Y,null,[T(G,P(u,{modelValue:g.value,"onUpdate:modelValue":a=>g.value=a,class:["v-tabs",`v-tabs--${e.direction}`,`v-tabs--align-tabs-${e.alignTabs}`,{"v-tabs--fixed-tabs":e.fixedTabs,"v-tabs--grow":e.grow,"v-tabs--inset":e.inset,"v-tabs--stacked":e.stacked},V.value,w.value,e.class],style:[{"--v-tabs-height":E(e.height),"--v-tabs-inset-padding":e.inset?E(e.insetPadding):void 0,"--v-tabs-inset-radius":e.inset?E(e.insetRadius):void 0},y.value,e.style],role:"tablist",symbol:j},x,C),{default:t.default??(()=>k.value.map(a=>{var l;return((l=t.tab)==null?void 0:l.call(t,{item:a}))??T(ve,P(a,{key:a.text,value:a.value,spaced:e.spaced}),{default:t[`tab.${a.value}`]?()=>{var c;return(c=t[`tab.${a.value}`])==null?void 0:c.call(t,{item:a})}:void 0})})),prev:t.prev,next:t.next}),m&&T(te,P({modelValue:g.value,"onUpdate:modelValue":a=>g.value=a,key:"tabs-window"},x),{default:()=>{var a;return[k.value.map(l=>{var c;return((c=t.item)==null?void 0:c.call(t,{item:l}))??T(ee,{value:l.value},{default:()=>{var B;return(B=t[`item.${l.value}`])==null?void 0:B.call(t,{item:l})}})}),(a=t.window)==null?void 0:a.call(t)]}})])}),{}}});export{Se as V,ve as a}; diff --git a/assets/VTabsWindowItem-BWevsoWc.css b/assets/VTabsWindowItem-BWevsoWc.css deleted file mode 100644 index a498827..0000000 --- a/assets/VTabsWindowItem-BWevsoWc.css +++ /dev/null @@ -1 +0,0 @@ -.v-data-table{width:100%}.v-data-table__table{width:100%;border-collapse:separate;border-spacing:0}.v-data-table__tr--focus{border:1px dotted black}.v-data-table__tr--clickable{cursor:pointer}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--align-end,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--align-end,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--align-end,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--align-end{text-align:end}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--align-end .v-data-table-header__content,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--align-end .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--align-end .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--align-end .v-data-table-header__content{flex-direction:row-reverse}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--align-center,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--align-center,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--align-center,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--align-center{text-align:center}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--align-center .v-data-table-header__content,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--align-center .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--align-center .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--align-center .v-data-table-header__content{justify-content:center}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--no-padding,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--no-padding,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--no-padding,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--no-padding{padding:0 8px}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--empty,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--empty,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--empty,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--empty{padding:0}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--nowrap,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--nowrap,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--nowrap,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--nowrap{text-overflow:ellipsis;text-wrap:nowrap;overflow:hidden}.v-data-table .v-table__wrapper>table>thead>tr>td.v-data-table-column--nowrap .v-data-table-header__content,.v-data-table .v-table__wrapper>table>thead>tr th.v-data-table-column--nowrap .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr>td.v-data-table-column--nowrap .v-data-table-header__content,.v-data-table .v-table__wrapper>table tbody>tr th.v-data-table-column--nowrap .v-data-table-header__content{display:contents}.v-data-table .v-table__wrapper>table>thead>tr>th,.v-data-table .v-table__wrapper>table tbody>tr>th{align-items:center}.v-data-table .v-table__wrapper>table>thead>tr>th.v-data-table__th--fixed,.v-data-table .v-table__wrapper>table tbody>tr>th.v-data-table__th--fixed{position:sticky}.v-data-table .v-table__wrapper>table>thead>tr>th.v-data-table__th--sortable:hover,.v-data-table .v-table__wrapper>table>thead>tr>th.v-data-table__th--sortable:focus,.v-data-table .v-table__wrapper>table tbody>tr>th.v-data-table__th--sortable:hover,.v-data-table .v-table__wrapper>table tbody>tr>th.v-data-table__th--sortable:focus{cursor:pointer;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-data-table .v-table__wrapper>table>thead>tr>th:not(.v-data-table__th--sorted) .v-data-table-header__sort-icon,.v-data-table .v-table__wrapper>table tbody>tr>th:not(.v-data-table__th--sorted) .v-data-table-header__sort-icon{opacity:0}.v-data-table .v-table__wrapper>table>thead>tr>th:not(.v-data-table__th--sorted):hover .v-data-table-header__sort-icon,.v-data-table .v-table__wrapper>table>thead>tr>th:not(.v-data-table__th--sorted):focus-visible .v-data-table-header__sort-icon,.v-data-table .v-table__wrapper>table tbody>tr>th:not(.v-data-table__th--sorted):hover .v-data-table-header__sort-icon,.v-data-table .v-table__wrapper>table tbody>tr>th:not(.v-data-table__th--sorted):focus-visible .v-data-table-header__sort-icon{opacity:.5}.v-data-table .v-table__wrapper>table>thead>tr.v-data-table__tr--mobile>td,.v-data-table .v-table__wrapper>table tbody>tr.v-data-table__tr--mobile>td{height:fit-content}.v-data-table-column--fixed,.v-data-table-column--fixed-end,.v-data-table__th--sticky{background-color:rgb(var(--v-theme-surface));background-image:inherit;position:sticky!important;left:0;z-index:1}.v-data-table-column--fixed-end{left:unset;right:0}.v-data-table-column--last-fixed{border-right:1px solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-data-table-column--first-fixed-end{border-left:1px solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-data-table.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th.v-data-table-column--fixed,.v-data-table.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th.v-data-table-column--fixed-end{z-index:2}.v-data-table-group-header-row td{background:rgba(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface))}.v-data-table-group-header-row td>span{padding-left:5px}.v-data-table--loading .v-data-table__td{opacity:var(--v-disabled-opacity)}.v-data-table-group-header-row__column{padding-inline-start:calc(var(--v-data-table-group-header-row-depth) * 16px)!important}.v-data-table-header__content{display:flex;align-items:center}.v-data-table-header__sort-icon{margin-inline:0px}.v-data-table-header__sort-badge{display:inline-flex;justify-content:center;align-items:center;font-size:.875rem;padding:4px;border-radius:50%;background:rgba(var(--v-border-color),var(--v-border-opacity));min-width:20px;min-height:20px;width:20px;height:20px}.v-data-table-progress>th{border:none!important;height:auto!important;padding:0!important}.v-data-table-progress__loader{position:relative}.v-data-table-rows-loading,.v-data-table-rows-no-data{text-align:center}.v-data-table__tr--mobile>.v-data-table__td--expanded-row{grid-template-columns:auto;justify-content:center}.v-data-table__tr--mobile>.v-data-table__td--select-row{grid-template-columns:0;justify-content:end}.v-data-table__tr--mobile>td{align-items:center;column-gap:4px;display:grid;grid-template-columns:repeat(2,1fr);min-height:var(--v-table-row-height)}.v-data-table__tr--mobile>td:not(:last-child){border-bottom:0!important}.v-data-table__td-title{font-weight:500;text-align:start}.v-data-table__td-value{text-align:end}.v-data-table__td-sort-icon{color:rgba(var(--v-theme-on-surface),var(--v-disabled-opacity))}.v-data-table__td-sort-icon-active{color:rgba(var(--v-theme-on-surface))}.v-data-table-footer{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding:8px 4px}.v-data-table-footer__items-per-page{align-items:center;display:flex;justify-content:center}.v-data-table-footer__items-per-page>span{padding-inline-end:8px}.v-data-table-footer__items-per-page>.v-select{width:90px}.v-data-table-footer__info{display:flex;justify-content:flex-end;min-width:116px;padding:0 16px}.v-data-table-footer__paginationz{align-items:center;display:flex;margin-inline-start:16px}.v-data-table-footer__page{padding:0 8px}.v-table{font-size:.875rem;transition-duration:.28s;transition-property:box-shadow,opacity,background,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.v-table{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-table .v-table-divider{border-right:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>thead>tr>th{border-bottom:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>tbody>tr:not(:last-child)>td,.v-table .v-table__wrapper>table>tbody>tr:not(:last-child)>th{border-bottom:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>tfoot>tr>td,.v-table .v-table__wrapper>table>tfoot>tr>th{border-top:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr>td{position:relative}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr:hover>td:after{background:rgba(var(--v-border-color),var(--v-hover-opacity));pointer-events:none}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr:hover>td:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-table.v-table--striped-even>.v-table__wrapper>table>tbody>tr:nth-child(2n){background-image:linear-gradient(0deg,rgba(var(--v-border-color),var(--v-hover-opacity)),rgba(var(--v-border-color),var(--v-hover-opacity)))}.v-table.v-table--striped-odd>.v-table__wrapper>table>tbody>tr:nth-child(odd){background-image:linear-gradient(0deg,rgba(var(--v-border-color),var(--v-hover-opacity)),rgba(var(--v-border-color),var(--v-hover-opacity)))}.v-table.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th{background:rgb(var(--v-theme-surface));box-shadow:inset 0 -1px rgba(var(--v-border-color),var(--v-border-opacity));z-index:1}.v-table.v-table--fixed-footer>tfoot>tr>th,.v-table.v-table--fixed-footer>tfoot>tr>td{background:rgb(var(--v-theme-surface));box-shadow:inset 0 1px rgba(var(--v-border-color),var(--v-border-opacity))}.v-table{border-radius:inherit;line-height:1.5;max-width:100%;display:flex;flex-direction:column}.v-table>.v-table__wrapper>table{width:100%;border-spacing:0}.v-table>.v-table__wrapper>table>tbody>tr>td,.v-table>.v-table__wrapper>table>tbody>tr>th,.v-table>.v-table__wrapper>table>thead>tr>td,.v-table>.v-table__wrapper>table>thead>tr>th,.v-table>.v-table__wrapper>table>tfoot>tr>td,.v-table>.v-table__wrapper>table>tfoot>tr>th{padding:0 16px;transition-duration:.28s;transition-property:box-shadow,opacity,background,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.v-table>.v-table__wrapper>table>tbody>tr>td,.v-table>.v-table__wrapper>table>thead>tr>td,.v-table>.v-table__wrapper>table>tfoot>tr>td{height:var(--v-table-row-height)}.v-table>.v-table__wrapper>table>tbody>tr>th,.v-table>.v-table__wrapper>table>thead>tr>th,.v-table>.v-table__wrapper>table>tfoot>tr>th{height:var(--v-table-header-height);font-weight:500;font-size:inherit;-webkit-user-select:none;user-select:none;text-align:start}.v-table--density-default{--v-table-header-height: 56px;--v-table-row-height: 52px}.v-table--density-comfortable{--v-table-header-height: 48px;--v-table-row-height: 44px}.v-table--density-compact{--v-table-header-height: 40px;--v-table-row-height: 36px}.v-table__wrapper{border-radius:inherit;overflow:auto;flex:1 1 auto}.v-table--has-top>.v-table__wrapper{border-top-left-radius:0;border-top-right-radius:0}.v-table--has-bottom>.v-table__wrapper{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-table--fixed-height>.v-table__wrapper{overflow-y:auto}.v-table--fixed-header>.v-table__wrapper>table>thead{position:sticky;top:0;z-index:2}.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th{border-bottom:0px!important}.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr{position:sticky;bottom:0;z-index:1}.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr>td,.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr>th{border-top:0px!important}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-window{overflow:hidden}.v-window__container{display:flex;flex-direction:column;height:inherit;position:relative;transition:.3s cubic-bezier(.25,.8,.5,1)}.v-window__controls{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 16px;pointer-events:none}.v-window__controls>*{pointer-events:auto}.v-window--show-arrows-on-hover{overflow:hidden}.v-window--show-arrows-on-hover .v-window__left{transform:translate(-200%)}:has(.v-window__controls--right).v-window--show-arrows-on-hover .v-window__left{transform:translate(200%)}.v-window--show-arrows-on-hover .v-window__right{transform:translate(200%)}:has(.v-window__controls--left).v-window--show-arrows-on-hover .v-window__right{transform:translate(-200%)}.v-window--show-arrows-on-hover:hover .v-window__left,.v-window--show-arrows-on-hover:hover .v-window__right{transform:translate(0)}.v-window--vertical-arrows .v-window__controls{flex-direction:column;justify-content:center;gap:12px}.v-window--vertical-arrows .v-window__controls--left{align-items:start}.v-window--vertical-arrows .v-window__controls--right{align-items:end}.v-window--vertical-arrows .v-window__controls .v-window__left .v-icon,.v-window--vertical-arrows .v-window__controls .v-window__right .v-icon{transform:rotate(90deg)}@container style(--v-window-transition-duration){.v-window .v-window-item{transition-duration:var(--v-window-transition-duration)!important}}.v-window--crossfade>.v-window__container{isolation:isolate}.v-window--crossfade>.v-window__container>.v-window-item{mix-blend-mode:plus-lighter}.v-window-x-transition-enter-active,.v-window-x-transition-leave-active,.v-window-x-reverse-transition-enter-active,.v-window-x-reverse-transition-leave-active,.v-window-y-transition-enter-active,.v-window-y-transition-leave-active,.v-window-y-reverse-transition-enter-active,.v-window-y-reverse-transition-leave-active{transition:.3s cubic-bezier(.25,.8,.5,1)}@media (prefers-reduced-motion: reduce){.v-window-x-transition-enter-active,.v-window-x-transition-leave-active,.v-window-x-reverse-transition-enter-active,.v-window-x-reverse-transition-leave-active,.v-window-y-transition-enter-active,.v-window-y-transition-leave-active,.v-window-y-reverse-transition-enter-active,.v-window-y-reverse-transition-leave-active{transition-duration:0s}}.v-window-x-transition-leave-from,.v-window-x-transition-leave-to,.v-window-x-reverse-transition-leave-from,.v-window-x-reverse-transition-leave-to,.v-window-y-transition-leave-from,.v-window-y-transition-leave-to,.v-window-y-reverse-transition-leave-from,.v-window-y-reverse-transition-leave-to{position:absolute!important;top:0;width:100%}.v-window-x-transition-enter-from{transform:translate(100%)}.v-window-x-transition-leave-to,.v-window-x-reverse-transition-enter-from{transform:translate(-100%)}.v-window-x-reverse-transition-leave-to{transform:translate(100%)}.v-window-y-transition-enter-from{transform:translateY(100%)}.v-window-y-transition-leave-to,.v-window-y-reverse-transition-enter-from{transform:translateY(-100%)}.v-window-y-reverse-transition-leave-to{transform:translateY(100%)}.v-window-crossfade-transition-enter-active,.v-window-crossfade-transition-leave-active{transition:.3s cubic-bezier(.25,.8,.5,1)}.v-window-crossfade-transition-leave-from,.v-window-crossfade-transition-leave-to{position:absolute!important;top:0;width:100%}.v-window-crossfade-transition-enter-from,.v-window-crossfade-transition-leave-to{opacity:0} diff --git a/assets/VTabsWindowItem-BmdOdR5s.css b/assets/VTabsWindowItem-BmdOdR5s.css new file mode 100644 index 0000000..87fd847 --- /dev/null +++ b/assets/VTabsWindowItem-BmdOdR5s.css @@ -0,0 +1 @@ +.v-table{font-size:.875rem;transition-duration:.28s;transition-property:box-shadow,opacity,background,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.v-table{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-table .v-table-divider{border-right:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>thead>tr>th{border-bottom:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>tbody>tr:not(:last-child)>td,.v-table .v-table__wrapper>table>tbody>tr:not(:last-child)>th{border-bottom:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table .v-table__wrapper>table>tfoot>tr>td,.v-table .v-table__wrapper>table>tfoot>tr>th{border-top:thin solid rgba(var(--v-border-color),var(--v-border-opacity))}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr>td{position:relative}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr:hover>td:after{background:rgba(var(--v-border-color),var(--v-hover-opacity));pointer-events:none}.v-table.v-table--hover>.v-table__wrapper>table>tbody>tr:hover>td:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-table.v-table--striped-even>.v-table__wrapper>table>tbody>tr:nth-child(2n){background-image:linear-gradient(0deg,rgba(var(--v-border-color),var(--v-hover-opacity)),rgba(var(--v-border-color),var(--v-hover-opacity)))}.v-table.v-table--striped-odd>.v-table__wrapper>table>tbody>tr:nth-child(odd){background-image:linear-gradient(0deg,rgba(var(--v-border-color),var(--v-hover-opacity)),rgba(var(--v-border-color),var(--v-hover-opacity)))}.v-table.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th{background:rgb(var(--v-theme-surface));box-shadow:inset 0 -1px rgba(var(--v-border-color),var(--v-border-opacity));z-index:1}.v-table.v-table--fixed-footer>tfoot>tr>th,.v-table.v-table--fixed-footer>tfoot>tr>td{background:rgb(var(--v-theme-surface));box-shadow:inset 0 1px rgba(var(--v-border-color),var(--v-border-opacity))}.v-table{border-radius:inherit;line-height:1.5;max-width:100%;display:flex;flex-direction:column}.v-table>.v-table__wrapper>table{width:100%;border-spacing:0}.v-table>.v-table__wrapper>table>tbody>tr>td,.v-table>.v-table__wrapper>table>tbody>tr>th,.v-table>.v-table__wrapper>table>thead>tr>td,.v-table>.v-table__wrapper>table>thead>tr>th,.v-table>.v-table__wrapper>table>tfoot>tr>td,.v-table>.v-table__wrapper>table>tfoot>tr>th{padding:0 16px;transition-duration:.28s;transition-property:box-shadow,opacity,background,height;transition-timing-function:cubic-bezier(.4,0,.2,1)}.v-table>.v-table__wrapper>table>tbody>tr>td,.v-table>.v-table__wrapper>table>thead>tr>td,.v-table>.v-table__wrapper>table>tfoot>tr>td{height:var(--v-table-row-height)}.v-table>.v-table__wrapper>table>tbody>tr>th,.v-table>.v-table__wrapper>table>thead>tr>th,.v-table>.v-table__wrapper>table>tfoot>tr>th{height:var(--v-table-header-height);font-weight:500;font-size:inherit;-webkit-user-select:none;user-select:none;text-align:start}.v-table--density-default{--v-table-header-height: 56px;--v-table-row-height: 52px}.v-table--density-comfortable{--v-table-header-height: 48px;--v-table-row-height: 44px}.v-table--density-compact{--v-table-header-height: 40px;--v-table-row-height: 36px}.v-table__wrapper{border-radius:inherit;overflow:auto;flex:1 1 auto}.v-table--has-top>.v-table__wrapper{border-top-left-radius:0;border-top-right-radius:0}.v-table--has-bottom>.v-table__wrapper{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-table--fixed-height>.v-table__wrapper{overflow-y:auto}.v-table--fixed-header>.v-table__wrapper>table>thead{position:sticky;top:0;z-index:2}.v-table--fixed-header>.v-table__wrapper>table>thead>tr>th{border-bottom:0px!important}.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr{position:sticky;bottom:0;z-index:1}.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr>td,.v-table--fixed-footer>.v-table__wrapper>table>tfoot>tr>th{border-top:0px!important}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-window{overflow:hidden}.v-window__container{display:flex;flex-direction:column;height:inherit;position:relative;transition:.3s cubic-bezier(.25,.8,.5,1)}.v-window__controls{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:space-between;padding:0 16px;pointer-events:none}.v-window__controls>*{pointer-events:auto}.v-window--show-arrows-on-hover{overflow:hidden}.v-window--show-arrows-on-hover .v-window__left{transform:translate(-200%)}:has(.v-window__controls--right).v-window--show-arrows-on-hover .v-window__left{transform:translate(200%)}.v-window--show-arrows-on-hover .v-window__right{transform:translate(200%)}:has(.v-window__controls--left).v-window--show-arrows-on-hover .v-window__right{transform:translate(-200%)}.v-window--show-arrows-on-hover:hover .v-window__left,.v-window--show-arrows-on-hover:hover .v-window__right{transform:translate(0)}.v-window--vertical-arrows .v-window__controls{flex-direction:column;justify-content:center;gap:12px}.v-window--vertical-arrows .v-window__controls--left{align-items:start}.v-window--vertical-arrows .v-window__controls--right{align-items:end}.v-window--vertical-arrows .v-window__controls .v-window__left .v-icon,.v-window--vertical-arrows .v-window__controls .v-window__right .v-icon{transform:rotate(90deg)}@container style(--v-window-transition-duration){.v-window .v-window-item{transition-duration:var(--v-window-transition-duration)!important}}.v-window--crossfade>.v-window__container{isolation:isolate}.v-window--crossfade>.v-window__container>.v-window-item{mix-blend-mode:plus-lighter}.v-window-x-transition-enter-active,.v-window-x-transition-leave-active,.v-window-x-reverse-transition-enter-active,.v-window-x-reverse-transition-leave-active,.v-window-y-transition-enter-active,.v-window-y-transition-leave-active,.v-window-y-reverse-transition-enter-active,.v-window-y-reverse-transition-leave-active{transition:.3s cubic-bezier(.25,.8,.5,1)}@media (prefers-reduced-motion: reduce){.v-window-x-transition-enter-active,.v-window-x-transition-leave-active,.v-window-x-reverse-transition-enter-active,.v-window-x-reverse-transition-leave-active,.v-window-y-transition-enter-active,.v-window-y-transition-leave-active,.v-window-y-reverse-transition-enter-active,.v-window-y-reverse-transition-leave-active{transition-duration:0s}}.v-window-x-transition-leave-from,.v-window-x-transition-leave-to,.v-window-x-reverse-transition-leave-from,.v-window-x-reverse-transition-leave-to,.v-window-y-transition-leave-from,.v-window-y-transition-leave-to,.v-window-y-reverse-transition-leave-from,.v-window-y-reverse-transition-leave-to{position:absolute!important;top:0;width:100%}.v-window-x-transition-enter-from{transform:translate(100%)}.v-window-x-transition-leave-to,.v-window-x-reverse-transition-enter-from{transform:translate(-100%)}.v-window-x-reverse-transition-leave-to{transform:translate(100%)}.v-window-y-transition-enter-from{transform:translateY(100%)}.v-window-y-transition-leave-to,.v-window-y-reverse-transition-enter-from{transform:translateY(-100%)}.v-window-y-reverse-transition-leave-to{transform:translateY(100%)}.v-window-crossfade-transition-enter-active,.v-window-crossfade-transition-leave-active{transition:.3s cubic-bezier(.25,.8,.5,1)}.v-window-crossfade-transition-leave-from,.v-window-crossfade-transition-leave-to{position:absolute!important;top:0;width:100%}.v-window-crossfade-transition-enter-from,.v-window-crossfade-transition-leave-to{opacity:0} diff --git a/assets/VTabsWindowItem-CU31Uty7.js b/assets/VTabsWindowItem-CU31Uty7.js new file mode 100644 index 0000000..5b76978 --- /dev/null +++ b/assets/VTabsWindowItem-CU31Uty7.js @@ -0,0 +1 @@ +import{f as b,h as G,u as T,s as B,p as V,m as N,k as Y,ax as U,A as ae,an as se,E as $,a3 as ie,P as le,n as ue,a5 as re}from"./vendor-vuetify-s-yw_Hr8.js";import{J as ce,m as K,L as de,a0 as ve,i as M,a1 as fe,u as he,a2 as me,a3 as we,a4 as ge,a5 as ye}from"./index-CFUCTEXJ.js";import{j as g,k as w,N as H,n as E,o as be,I as _,R as q,b as F,s as P,e as m,t as O,p as Te,d as J,m as Q,V as Ve}from"./vendor-vue-B2vxubPy.js";const Se=V({fixedHeader:Boolean,fixedFooter:Boolean,height:[Number,String],hover:Boolean,striped:{type:String,default:null,validator:e=>["even","odd"].includes(e)},...Y(),...de(),...K(),...N()},"VTable"),Le=b()({name:"VTable",props:Se(),setup(e,o){let{slots:t,emit:n}=o;const{themeClasses:i}=G(e),{densityClasses:u}=ce(e);return T(()=>g(e.tag,{class:E(["v-table",{"v-table--fixed-height":!!e.height,"v-table--fixed-header":e.fixedHeader,"v-table--fixed-footer":e.fixedFooter,"v-table--has-top":!!t.top,"v-table--has-bottom":!!t.bottom,"v-table--hover":e.hover,"v-table--striped-even":e.striped==="even","v-table--striped-odd":e.striped==="odd"},i.value,u.value,e.class]),style:H(e.style)},{default:()=>{var a,r,d;return[(a=t.top)==null?void 0:a.call(t),t.default?w("div",{class:"v-table__wrapper",style:{height:B(e.height)}},[w("table",null,[t.default()])]):(r=t.wrapper)==null?void 0:r.call(t),(d=t.bottom)==null?void 0:d.call(t)]}})),{}}}),xe=Symbol.for("vuetify:v-tabs"),Ie=e=>{const{touchstartX:o,touchendX:t,touchstartY:n,touchendY:i}=e,u=.5,a=16;e.offsetX=t-o,e.offsetY=i-n,Math.abs(e.offsetY)o+a&&e.right(e)),Math.abs(e.offsetX)n+a&&e.down(e))};function _e(e,o){var n;const t=e.changedTouches[0];o.touchstartX=t.clientX,o.touchstartY=t.clientY,(n=o.start)==null||n.call(o,{originalEvent:e,...o})}function Be(e,o){var n;const t=e.changedTouches[0];o.touchendX=t.clientX,o.touchendY=t.clientY,(n=o.end)==null||n.call(o,{originalEvent:e,...o}),Ie(o)}function Ee(e,o){var n;const t=e.changedTouches[0];o.touchmoveX=t.clientX,o.touchmoveY=t.clientY,(n=o.move)==null||n.call(o,{originalEvent:e,...o})}function We(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const o={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:e.left,right:e.right,up:e.up,down:e.down,start:e.start,move:e.move,end:e.end};return{touchstart:t=>_e(t,o),touchend:t=>Be(t,o),touchmove:t=>Ee(t,o)}}function ke(e,o){var r;const t=o.value,n=t!=null&&t.parent?e.parentElement:e,i=(t==null?void 0:t.options)??{passive:!0},u=(r=o.instance)==null?void 0:r.$.uid;if(!n||u===void 0)return;const a=We(o.value);n._touchHandlers=n._touchHandlers??Object.create(null),n._touchHandlers[u]=a,U(a).forEach(d=>{n.addEventListener(d,a[d],i)})}function Ae(e,o){var u,a;const t=(u=o.value)!=null&&u.parent?e.parentElement:e,n=(a=o.instance)==null?void 0:a.$.uid;if(!(t!=null&&t._touchHandlers)||n===void 0)return;const i=t._touchHandlers[n];U(i).forEach(r=>{t.removeEventListener(r,i[r])}),delete t._touchHandlers[n]}const R={mounted:ke,unmounted:Ae},Z=Symbol.for("vuetify:v-window"),p=Symbol.for("vuetify:v-window-group"),ee=V({continuous:Boolean,nextIcon:{type:[Boolean,String,Function,Object],default:"$next"},prevIcon:{type:[Boolean,String,Function,Object],default:"$prev"},reverse:Boolean,showArrows:{type:[Boolean,String],validator:e=>typeof e=="boolean"||e==="hover"},verticalArrows:[Boolean,String],touch:{type:[Object,Boolean],default:void 0},direction:{type:String,default:"horizontal"},modelValue:null,disabled:Boolean,selectedClass:{type:String,default:"v-window-item--active"},mandatory:{type:[Boolean,String],default:"force"},crossfade:Boolean,transitionDuration:Number,...Y(),...K(),...N()},"VWindow"),z=b()({name:"VWindow",directives:{vTouch:R},props:ee(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:t}=o;const{themeClasses:n}=G(e),{isRtl:i}=ae(),{t:u}=se(),a=ve(e,p),r=F(),d=m(()=>i.value?!e.reverse:e.reverse),f=P(!1),S=m(()=>{if(e.crossfade)return"v-window-crossfade-transition";const s=e.direction==="vertical"?"y":"x",l=(d.value?!f.value:f.value)?"-reverse":"";return`v-window-${s}${l}-transition`}),W=P(0),x=F(void 0),y=m(()=>a.items.value.findIndex(s=>a.selected.value.includes(s.id)));be(y,(s,c)=>{let l;const h={left:0,top:0};$&&c>=0&&(l=ie(r.value),h.left=l==null?void 0:l.scrollLeft,h.top=l==null?void 0:l.scrollTop);const D=a.items.value.length,L=D-1;D<=2?f.value=s{if(!$||!l)return;l.scrollTop!==h.top&&l.scrollTo({...h,behavior:"instant"}),requestAnimationFrame(()=>{if(!l)return;l.scrollTop!==h.top&&l.scrollTo({...h,behavior:"instant"})})})},{flush:"sync"}),Te(Z,{transition:S,isReversed:f,transitionCount:W,transitionHeight:x,rootRef:r});const v=O(()=>e.continuous||y.value!==0),k=O(()=>e.continuous||y.value!==a.items.value.length-1);function A(){v.value&&a.prev()}function C(){k.value&&a.next()}const X=m(()=>{const s=[],c={icon:i.value?e.nextIcon:e.prevIcon,class:`v-window__${d.value?"right":"left"}`,onClick:a.prev,"aria-label":u("$vuetify.carousel.prev")};s.push(v.value?t.prev?t.prev({props:c}):g(M,c,null):w("div",null,null));const l={icon:i.value?e.prevIcon:e.nextIcon,class:`v-window__${d.value?"left":"right"}`,onClick:a.next,"aria-label":u("$vuetify.carousel.next")};return s.push(k.value?t.next?t.next({props:l}):g(M,l,null):w("div",null,null)),s}),ne=m(()=>e.touch===!1?e.touch:{...{left:()=>{d.value?A():C()},right:()=>{d.value?C():A()},start:c=>{let{originalEvent:l}=c;l.stopPropagation()}},...e.touch===!0?{}:e.touch});function oe(s){(e.direction==="horizontal"&&s.key==="ArrowLeft"||e.direction==="vertical"&&s.key==="ArrowUp")&&(s.preventDefault(),A(),_(()=>{v.value?I(0):I(1)})),(e.direction==="horizontal"&&s.key==="ArrowRight"||e.direction==="vertical"&&s.key==="ArrowDown")&&(s.preventDefault(),C(),_(()=>{k.value?I(1):I(0)}))}function I(s){var h;const c=X.value[s];if(!c)return;(h=(Array.isArray(c)?c[0]:c).el)==null||h.focus()}return T(()=>q(g(e.tag,{ref:r,class:E(["v-window",{"v-window--show-arrows-on-hover":e.showArrows==="hover","v-window--vertical-arrows":!!e.verticalArrows,"v-window--crossfade":!!e.crossfade},n.value,e.class]),style:H([e.style,{"--v-window-transition-duration":le()?null:B(e.transitionDuration,"ms")}])},{default:()=>{var s,c;return[w("div",{class:"v-window__container",style:{height:x.value}},[(s=t.default)==null?void 0:s.call(t,{group:a}),e.showArrows!==!1&&w("div",{class:E(["v-window__controls",{"v-window__controls--left":e.verticalArrows==="left"||e.verticalArrows===!0},{"v-window__controls--right":e.verticalArrows==="right"}]),onKeydown:oe},[X.value])]),(c=t.additional)==null?void 0:c.call(t,{group:a})]}}),[[R,ne.value]])),{group:a}}}),Ce=V({...re(ee(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),$e=b()({name:"VTabsWindow",props:Ce(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:t}=o;const n=J(xe,null),i=ue(e,"modelValue"),u=m({get(){var a;return i.value!=null||!n?i.value:(a=n.items.value.find(r=>n.selected.value.includes(r.id)))==null?void 0:a.value},set(a){i.value=a}});return T(()=>{const a=z.filterProps(e);return g(z,Q({_as:"VTabsWindow"},a,{modelValue:u.value,"onUpdate:modelValue":r=>u.value=r,class:["v-tabs-window",e.class],style:e.style,mandatory:!1,touch:!1}),t)}),{}}}),te=V({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},...Y(),...ye(),...ge()},"VWindowItem"),j=b()({name:"VWindowItem",directives:{vTouch:R},props:te(),emits:{"group:selected":e=>!0},setup(e,o){let{slots:t}=o;const n=J(Z),i=fe(e,p),{isBooted:u}=he();if(!n||!i)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const a=P(!1),r=m(()=>u.value&&(n.isReversed.value?e.reverseTransition!==!1:e.transition!==!1));function d(){!a.value||!n||(a.value=!1,n.transitionCount.value>0&&(n.transitionCount.value-=1,n.transitionCount.value===0&&(n.transitionHeight.value=void 0)))}function f(){var v;a.value||!n||(a.value=!0,n.transitionCount.value===0&&(n.transitionHeight.value=B((v=n.rootRef.value)==null?void 0:v.clientHeight)),n.transitionCount.value+=1)}function S(){d()}function W(v){a.value&&_(()=>{!r.value||!a.value||!n||(n.transitionHeight.value=B(v.clientHeight))})}const x=m(()=>{const v=n.isReversed.value?e.reverseTransition:e.transition;return r.value?{name:typeof v!="string"?n.transition.value:v,onBeforeEnter:f,onAfterEnter:d,onEnterCancelled:S,onBeforeLeave:f,onAfterLeave:d,onLeaveCancelled:S,onEnter:W}:!1}),{hasContent:y}=me(e,i.isSelected);return T(()=>g(we,{transition:x.value,disabled:!u.value},{default:()=>{var v;return[q(w("div",{class:E(["v-window-item",i.selectedClass.value,e.class]),style:H(e.style)},[y.value&&((v=t.default)==null?void 0:v.call(t))]),[[Ve,i.isSelected.value]])]}})),{groupItem:i}}}),Pe=V({...te()},"VTabsWindowItem"),Me=b()({name:"VTabsWindowItem",props:Pe(),setup(e,o){let{slots:t}=o;return T(()=>{const n=j.filterProps(e);return g(j,Q({_as:"VTabsWindowItem"},n,{class:["v-tabs-window-item",e.class],style:e.style}),t)}),{}}});export{$e as V,Me as a,Le as b,z as c,j as d,xe as e,Se as m}; diff --git a/assets/VTabsWindowItem-DL2r3YhT.js b/assets/VTabsWindowItem-DL2r3YhT.js deleted file mode 100644 index c9ff9f2..0000000 --- a/assets/VTabsWindowItem-DL2r3YhT.js +++ /dev/null @@ -1 +0,0 @@ -import{n as q,p as _,l as Ke,z as pe,f as $,an as ee,u as L,a5 as me,I as H,ar as Ft,s as F,as as Ot,w as oe,ah as At,o as Ue,at as ce,au as re,F as Rt,a0 as Be,av as _e,ag as Te,aj as Ve,aw as He,h as qe,m as Qe,k as Ee,ai as se,j as Ht,ax as Ze,A as $t,E as $e,a3 as Nt,P as Wt}from"./vendor-vuetify-ChAgIwn2.js";import{l as j,e as V,d as K,o as he,p as Q,k as S,j as T,m as R,n as X,w as Gt,a as Lt,b as z,s as fe,t as E,F as Z,N as ye,a1 as Ne,x as ie,ad as ue,S as Mt,y as jt,I as de,R as Je,V as Yt}from"./vendor-vue-H0jQBZ7T.js";import{V as We}from"./VPagination-BiSMksGW.js";import{V as et,u as zt,m as Xt}from"./VSelect-ANRyd3L-.js";import{X as Kt,E as Ut,Y as qt,h as Ge,Z as Qt,I as be,l as ve,G as Zt,m as tt,i as Jt,$ as ea,a0 as ta,u as aa,a1 as na,a2 as la,a3 as oa,a4 as ra}from"./index-_6IQhlPZ.js";import{V as sa}from"./VChip-Veb3ShEh.js";import{V as ge}from"./VCheckboxBtn-DCkgbmVP.js";const ia=_({page:{type:[Number,String],default:1},itemsPerPage:{type:[Number,String],default:10},pageBy:{type:String,default:"any"}},"DataTable-paginate"),at=Symbol.for("vuetify:data-table-pagination");function ua(e){const n=q(e,"page",void 0,t=>Number(t??1)),a=q(e,"itemsPerPage",void 0,t=>Number(t??10));return{page:n,itemsPerPage:a}}function da(e){const{page:n,itemsPerPage:a,itemsLength:t}=e,l=V(()=>a.value===-1?0:a.value*(n.value-1)),r=V(()=>a.value===-1?t.value:Math.min(t.value,l.value+a.value)),o=V(()=>a.value===-1||t.value===0?1:Math.ceil(t.value/a.value));he([n,o],()=>{n.value>o.value&&(n.value=o.value)});function s(v){a.value=v,n.value=1}function i(){n.value=pe(n.value+1,1,o.value)}function d(){n.value=pe(n.value-1,1,o.value)}function f(v){n.value=pe(v,1,o.value)}const m={page:n,itemsPerPage:a,startIndex:l,stopIndex:r,pageCount:o,itemsLength:t,nextPage:i,prevPage:d,setPage:f,setItemsPerPage:s};return Q(at,m),m}function ca(){const e=K(at);if(!e)throw new Error("Missing pagination!");return e}function fa(e){const n=Ke("usePaginatedItems"),{items:a,startIndex:t,stopIndex:l,itemsPerPage:r}=e,o=V(()=>r.value<=0?j(a):j(a).slice(t.value,l.value));return he(o,s=>{n.emit("update:currentItems",s)},{immediate:!0}),{paginatedItems:o}}function va(e){const{sortedItems:n,paginate:a,group:t}=e,l=j(e.pageBy);if(l==="item"){const{paginatedItems:r,pageCount:o,setItemsPerPage:s}=a(n),{flatItems:i}=t(r);return{pageCount:o,setItemsPerPage:s,paginatedItems:i}}if(l==="group"){const{flatItems:r,groups:o}=t(n),{paginatedItems:s,pageCount:i,setItemsPerPage:d}=a(o),f=V(()=>{if(!s.value.length)return[];const m=s.value.at(0).id,v=s.value.at(-1).id,x=r.value.findIndex(c=>c.type==="group"&&c.id===m),g=r.value.findIndex(c=>c.type==="group"&&c.id===v),y=r.value.findIndex((c,w)=>w>g&&c.type==="group"&&c.depth===0);return r.value.slice(x,y===-1?void 0:y)});return{pageCount:i,setItemsPerPage:d,paginatedItems:f}}if(l==="any"){const{flatItems:r}=t(n),{paginatedItems:o,pageCount:s,setItemsPerPage:i}=a(r);return{pageCount:s,setItemsPerPage:i,paginatedItems:o}}throw new Error(`Unrecognized pagination target ${l}`)}const nt=_({color:String,prevIcon:{type:H,default:"$prev"},nextIcon:{type:H,default:"$next"},firstIcon:{type:H,default:"$first"},lastIcon:{type:H,default:"$last"},itemsPerPageText:{type:String,default:"$vuetify.dataFooter.itemsPerPageText"},pageText:{type:String,default:"$vuetify.dataFooter.pageText"},firstPageLabel:{type:String,default:"$vuetify.dataFooter.firstPage"},prevPageLabel:{type:String,default:"$vuetify.dataFooter.prevPage"},nextPageLabel:{type:String,default:"$vuetify.dataFooter.nextPage"},lastPageLabel:{type:String,default:"$vuetify.dataFooter.lastPage"},itemsPerPageOptions:{type:Array,default:()=>[{value:10,title:"10"},{value:25,title:"25"},{value:50,title:"50"},{value:100,title:"100"},{value:-1,title:"$vuetify.dataFooter.itemsPerPageAll"}]},showCurrentPage:Boolean},"VDataTableFooter"),Le=$()({name:"VDataTableFooter",props:nt(),setup(e,n){let{slots:a}=n;const{t}=ee(),{page:l,pageCount:r,startIndex:o,stopIndex:s,itemsLength:i,itemsPerPage:d,setItemsPerPage:f}=ca(),m=V(()=>e.itemsPerPageOptions.map(v=>typeof v=="number"?{value:v,title:v===-1?t("$vuetify.dataFooter.itemsPerPageAll"):String(v)}:{...v,title:isNaN(Number(v.title))?t(v.title):v.title}));return L(()=>{var x;const v=We.filterProps(e);return S("div",{class:"v-data-table-footer"},[(x=a.prepend)==null?void 0:x.call(a),S("div",{class:"v-data-table-footer__items-per-page"},[S("span",null,[t(e.itemsPerPageText)]),T(et,{items:m.value,itemColor:e.color,modelValue:d.value,"onUpdate:modelValue":g=>f(Number(g)),density:"compact",variant:"outlined","aria-label":t(e.itemsPerPageText),hideDetails:!0},null)]),S("div",{class:"v-data-table-footer__info"},[S("div",null,[t(e.pageText,i.value?o.value+1:0,s.value,i.value)])]),S("div",{class:"v-data-table-footer__pagination"},[T(We,R({modelValue:l.value,"onUpdate:modelValue":g=>l.value=g,density:"comfortable",firstAriaLabel:e.firstPageLabel,lastAriaLabel:e.lastPageLabel,length:r.value,nextAriaLabel:e.nextPageLabel,previousAriaLabel:e.prevPageLabel,rounded:!0,showFirstLastPage:!0,totalVisible:e.showCurrentPage?1:0,variant:"plain"},me(v,["color"])),null)])])}),{}}}),J=Ft({align:{type:String,default:"start"},fixed:{type:[Boolean,String],default:!1},fixedOffset:[Number,String],fixedEndOffset:[Number,String],height:[Number,String],lastFixed:Boolean,firstFixedEnd:Boolean,noPadding:Boolean,indent:[Number,String],empty:Boolean,tag:String,width:[Number,String],maxWidth:[Number,String],nowrap:Boolean},(e,n)=>{let{slots:a}=n;const t=e.tag??"td",l=typeof e.fixed=="string"?e.fixed:e.fixed?"start":"none";return T(t,{class:X(["v-data-table__td",{"v-data-table-column--fixed":l==="start","v-data-table-column--fixed-end":l==="end","v-data-table-column--last-fixed":e.lastFixed,"v-data-table-column--first-fixed-end":e.firstFixedEnd,"v-data-table-column--no-padding":e.noPadding,"v-data-table-column--nowrap":e.nowrap,"v-data-table-column--empty":e.empty},`v-data-table-column--align-${e.align}`]),style:{height:F(e.height),width:F(e.width),maxWidth:F(e.maxWidth),left:l==="start"?F(e.fixedOffset||null):void 0,right:l==="end"?F(e.fixedEndOffset||null):void 0,paddingInlineStart:e.indent?F(e.indent):void 0}},{default:()=>{var r;return[(r=a.default)==null?void 0:r.call(a)]}})}),ga=_({headers:Array},"DataTable-header"),lt=Symbol.for("vuetify:data-table-headers"),ot={title:"",sortable:!1},ma={...ot,width:48};function ha(){const n=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:[]).map(a=>({element:a,priority:0}));return{enqueue:(a,t)=>{let l=!1;for(let r=0;rt){n.splice(r,0,{element:a,priority:t}),l=!0;break}l||n.push({element:a,priority:t})},size:()=>n.length,count:()=>{let a=0;if(!n.length)return 0;const t=Math.floor(n[0].priority);for(let l=0;ln.shift()}}function De(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];if(!e.children)n.push(e);else for(const a of e.children)De(a,n);return n}function rt(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:new Set;for(const a of e)a.key&&n.add(a.key),a.children&&rt(a.children,n);return n}function ya(e){if(e.key){if(e.key==="data-table-group")return ot;if(["data-table-expand","data-table-select"].includes(e.key))return ma}}function Fe(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.children?Math.max(n,...e.children.map(a=>Fe(a,n+1))):n}function ba(e){let n=!1;function a(r,o){let s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"none";if(r)if(s!=="none"&&(r.fixed=s),r.fixed===!0&&(r.fixed="start"),r.fixed===o)if(r.children)if(o==="start")for(let i=r.children.length-1;i>=0;i--)a(r.children[i],o,o);else for(let i=0;i=0;i--)a(r.children[i],o);else for(let i=0;i=0;r--)a(e[r],"start");for(let r=0;r=0;r--)l=it(e[r],l)}function st(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!e)return n;if(e.children){e.fixedOffset=n;for(const a of e.children)n=st(a,n)}else e.fixed&&e.fixed!=="end"&&(e.fixedOffset=n,n+=parseFloat(e.width||"0")||0);return n}function it(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!e)return n;if(e.children){e.fixedEndOffset=n;for(const a of e.children)n=it(a,n)}else e.fixed==="end"&&(e.fixedEndOffset=n,n+=parseFloat(e.width||"0")||0);return n}function xa(e,n){const a=[];let t=0;const l=ha(e);for(;l.size()>0;){let o=l.count();const s=[];let i=1;for(;o>0;){const{element:d,priority:f}=l.dequeue(),m=n-t-Fe(d);if(s.push({...d,rowspan:m??1,colspan:d.children?De(d).length:1}),d.children)for(const v of d.children){const x=f%1+i/Math.pow(10,t+2);l.enqueue(v,t+m+x)}i+=1,o-=1}t+=1,a.push(s)}return{columns:e.map(o=>De(o)).flat(),headers:a}}function ut(e){const n=[];for(const a of e){const t={...ya(a),...a},l=t.key??(typeof t.value=="string"?t.value:null),r=t.value??l??null,o={...t,key:l,value:r,sortable:t.sortable??(t.key!=null||!!t.sort),children:t.children?ut(t.children):void 0};n.push(o)}return n}function wa(e,n){const a=z([]),t=z([]),l=z({}),r=z({}),o=z({});Gt(()=>{var y,c,w;const d=(e.headers||Object.keys(e.items[0]??{}).map(u=>({key:u,title:Lt(u)}))).slice(),f=rt(d);(y=n==null?void 0:n.groupBy)!=null&&y.value.length&&!f.has("data-table-group")&&d.unshift({key:"data-table-group",title:"Group"}),(c=n==null?void 0:n.showSelect)!=null&&c.value&&!f.has("data-table-select")&&d.unshift({key:"data-table-select"}),(w=n==null?void 0:n.showExpand)!=null&&w.value&&!f.has("data-table-expand")&&d.push({key:"data-table-expand"});const m=ut(d);ba(m);const v=Math.max(...m.map(u=>Fe(u)))+1,x=xa(m,v);a.value=x.headers,t.value=x.columns;const g=x.headers.flat(1);for(const u of g)u.key&&(u.sortable&&(u.sort&&(l.value[u.key]=u.sort),u.sortRaw&&(r.value[u.key]=u.sortRaw)),u.filter&&(o.value[u.key]=u.filter))});const s={headers:a,columns:t,sortFunctions:l,sortRawFunctions:r,filterFunctions:o};return Q(lt,s),s}function xe(){const e=K(lt);if(!e)throw new Error("Missing headers!");return e}const Sa={showSelectAll:!1,allSelected:()=>[],select:e=>{var t;let{items:n,value:a}=e;return new Set(a?[(t=n[0])==null?void 0:t.value]:[])},selectAll:e=>{let{selected:n}=e;return n}},dt={showSelectAll:!0,allSelected:e=>{let{currentPage:n}=e;return n},select:e=>{let{items:n,value:a,selected:t}=e;for(const l of n)a?t.add(l.value):t.delete(l.value);return t},selectAll:e=>{let{value:n,currentPage:a,selected:t}=e;return dt.select({items:a,value:n,selected:t})}},Pa={showSelectAll:!0,allSelected:e=>{let{allItems:n}=e;return n},select:e=>{let{items:n,value:a,selected:t}=e;for(const l of n)a?t.add(l.value):t.delete(l.value);return t},selectAll:e=>{let{value:n,allItems:a}=e;return new Set(n?a.map(t=>t.value):[])}},Ia=_({showSelect:Boolean,selectStrategy:{type:[String,Object],default:"page"},modelValue:{type:Array,default:()=>[]},valueComparator:Function},"DataTable-select"),ct=Symbol.for("vuetify:data-table-selection");function ka(e,n){let{allItems:a,currentPage:t}=n;const l=q(e,"modelValue",e.modelValue,u=>{const I=e.valueComparator;return I?new Set(oe(u).map(B=>{var k;return((k=a.value.find(b=>I(B,b.value)))==null?void 0:k.value)??B})):new Set(oe(u).map(B=>{var k,b;return At(B)?((k=a.value.find(P=>B===P.value))==null?void 0:k.value)??B:((b=a.value.find(P=>Ue(B,P.value)))==null?void 0:b.value)??B}))},u=>[...u.values()]),r=V(()=>a.value.filter(u=>u.selectable)),o=V(()=>j(t).filter(u=>u.selectable)),s=V(()=>{if(typeof e.selectStrategy=="object")return e.selectStrategy;switch(e.selectStrategy){case"single":return Sa;case"all":return Pa;case"page":default:return dt}}),i=fe(null);function d(u){return oe(u).every(I=>l.value.has(I.value))}function f(u){return oe(u).some(I=>l.value.has(I.value))}function m(u,I){const B=s.value.select({items:u,value:I,selected:new Set(l.value)});l.value=B}function v(u,I,B){const k=[],b=j(t);if(I=I??b.findIndex(P=>P.value===u.value),e.selectStrategy!=="single"&&(B!=null&&B.shiftKey)&&i.value!==null){const[P,D]=[i.value,I].sort((p,h)=>p-h);k.push(...b.slice(P,D+1).filter(p=>p.selectable))}else k.push(u),i.value=I;m(k,!d([u]))}function x(u){const I=s.value.selectAll({value:u,allItems:r.value,currentPage:o.value,selected:new Set(l.value)});l.value=I}const g=V(()=>l.value.size>0),y=V(()=>{const u=s.value.allSelected({allItems:r.value,currentPage:o.value});return!!u.length&&d(u)}),c=E(()=>s.value.showSelectAll),w={toggleSelect:v,select:m,selectAll:x,isSelected:d,isSomeSelected:f,someSelected:g,allSelected:y,showSelectAll:c,lastSelectedIndex:i,selectStrategy:s};return Q(ct,w),w}function we(){const e=K(ct);if(!e)throw new Error("Missing selection!");return e}const pa=_({initialSortOrder:{type:String,default:"asc",validator:e=>!e||["asc","desc"].includes(e)},sortBy:{type:Array,default:()=>[]},customKeySort:Object,multiSort:{type:[Boolean,Object],default:!1},mustSort:Boolean},"DataTable-sort"),ft=Symbol.for("vuetify:data-table-sort");function Ta(e){const n=E(()=>e.initialSortOrder),a=q(e,"sortBy"),t=E(()=>e.mustSort),l=E(()=>e.multiSort);return{initialSortOrder:n,sortBy:a,multiSort:l,mustSort:t}}function Va(e,n){if(!Rt(e))return{active:!!e};const{key:a,mode:t,modifier:l}=e,r=l==="alt"&&(n==null?void 0:n.altKey)||l==="shift"&&(n==null?void 0:n.shiftKey);return{active:!a||(n==null?void 0:n.ctrlKey)||(n==null?void 0:n.metaKey)||!1,mode:r?t==="append"?"prepend":"append":t}}function Da(e){const{initialSortOrder:n,sortBy:a,mustSort:t,multiSort:l,page:r}=e,o=(d,f)=>{if(d.key==null)return;let m=a.value.map(y=>({...y}))??[];const v=m.find(y=>y.key===d.key),x=n.value,g=n.value==="desc"?"asc":"desc";if(v)v.order===g?t.value&&m.length===1?v.order=n.value:m=m.filter(y=>y.key!==d.key):v.order=g;else{const{active:y,mode:c}=Va(l.value,f);y?c==="prepend"?m.unshift({key:d.key,order:x}):m.push({key:d.key,order:x}):m=[{key:d.key,order:x}]}a.value=m,r&&(r.value=1)};function s(d){return!!a.value.find(f=>f.key===d.key)}const i={sortBy:a,toggleSort:o,isSorted:s};return Q(ft,i),i}function vt(){const e=K(ft);if(!e)throw new Error("Missing sort!");return e}function Ca(e,n,a,t){const l=ee();return{sortedItems:V(()=>{var o,s;return a.value.length?Ba(n.value,a.value,l.current.value,{transform:t==null?void 0:t.transform,sortFunctions:{...e.customKeySort,...(o=t==null?void 0:t.sortFunctions)==null?void 0:o.value},sortRawFunctions:(s=t==null?void 0:t.sortRawFunctions)==null?void 0:s.value}):n.value})}}function Ba(e,n,a,t){const l=new Intl.Collator(a,{sensitivity:"accent",usage:"sort"});return e.map(o=>[o,t!=null&&t.transform?t.transform(o):o]).sort((o,s)=>{var i,d;for(let f=0;fu!=null?u.toString().toLocaleLowerCase():u),g!==y))return re(g)&&re(y)?0:re(g)?-1:re(y)?1:!isNaN(g)&&!isNaN(y)?Number(g)-Number(y):l.compare(g,y)}return 0}).map(o=>{let[s]=o;return s})}const gt=_({color:String,disableSort:Boolean,fixedHeader:Boolean,multiSort:Boolean,initialSortOrder:String,sortIcon:{type:H},sortAscIcon:{type:H,default:"$sortAsc"},sortDescIcon:{type:H,default:"$sortDesc"},headerProps:{type:Object},sticky:Boolean,...be(),..._e(),...Qt()},"VDataTableHeaders"),Me=$()({name:"VDataTableHeaders",props:gt(),setup(e,n){let{slots:a}=n;const{t}=ee(),{toggleSort:l,sortBy:r,isSorted:o}=vt(),{someSelected:s,allSelected:i,selectAll:d,showSelectAll:f}=we(),{columns:m,headers:v}=xe(),{loaderClasses:x}=Kt(e);function g(p,h){if(!(e.sticky||e.fixedHeader)&&!p.fixed)return;const C=typeof p.fixed=="string"?p.fixed:p.fixed?"start":"none";return{position:"sticky",left:C==="start"?F(p.fixedOffset):void 0,right:C==="end"?F(p.fixedEndOffset):void 0,top:e.sticky||e.fixedHeader?`calc(var(--v-table-header-height) * ${h})`:void 0}}function y(p,h){p.key==="Enter"&&!e.disableSort&&l(h,p)}function c(p){const h=r.value.find(C=>C.key===p.key);switch(h==null?void 0:h.order){case"asc":return e.sortAscIcon;case"desc":return e.sortDescIcon;default:return e.sortIcon||(e.initialSortOrder==="asc"?e.sortAscIcon:e.sortDescIcon)}}const{backgroundColorClasses:w,backgroundColorStyles:u}=Ut(()=>e.color),{displayClasses:I,mobile:B}=Be(e),k=V(()=>({headers:v.value,columns:m.value,toggleSort:l,isSorted:o,sortBy:r.value,someSelected:s.value,allSelected:i.value,selectAll:d,getSortIcon:c})),b=V(()=>["v-data-table__th",{"v-data-table__th--sticky":e.sticky||e.fixedHeader},I.value,x.value]),P=p=>{let{column:h,x:C,y:A}=p;const N=h.key==="data-table-select"||h.key==="data-table-expand",M=h.key==="data-table-group"&&h.width===0&&!h.title,Y=R(e.headerProps??{},h.headerProps??{});return T(J,R({tag:"th",align:h.align,class:[{"v-data-table__th--sortable":h.sortable&&!e.disableSort,"v-data-table__th--sorted":o(h),"v-data-table__th--fixed":h.fixed},...b.value],style:{width:F(h.width),minWidth:F(h.minWidth),maxWidth:F(h.maxWidth),...g(h,A)},colspan:h.colspan,rowspan:h.rowspan,fixed:h.fixed,nowrap:h.nowrap,lastFixed:h.lastFixed,firstFixedEnd:h.firstFixedEnd,noPadding:N,empty:M,tabindex:h.sortable?0:void 0,onClick:h.sortable?W=>l(h,W):void 0,onKeydown:h.sortable?W=>y(W,h):void 0},Y),{default:()=>{var ae;const W=`header.${h.key}`,te={column:h,selectAll:d,isSorted:o,toggleSort:l,sortBy:r.value,someSelected:s.value,allSelected:i.value,getSortIcon:c};return a[W]?a[W](te):M?"":h.key==="data-table-select"?((ae=a["header.data-table-select"])==null?void 0:ae.call(a,te))??(f.value&&T(ge,{color:e.color,density:e.density,modelValue:i.value,indeterminate:s.value&&!i.value,"onUpdate:modelValue":d},null)):S("div",{class:"v-data-table-header__content"},[S("span",null,[h.title]),h.sortable&&!e.disableSort&&T(Ge,{key:"icon",class:"v-data-table-header__sort-icon",icon:c(h)},null),e.multiSort&&o(h)&&S("div",{key:"badge",class:X(["v-data-table-header__sort-badge",...w.value]),style:ye(u.value)},[r.value.findIndex(Se=>Se.key===h.key)+1])])}})},D=()=>{const p=V(()=>m.value.filter(C=>(C==null?void 0:C.sortable)&&!e.disableSort)),h=m.value.find(C=>C.key==="data-table-select");return T(J,R({tag:"th",class:[...b.value],colspan:v.value.length+1},e.headerProps),{default:()=>[S("div",{class:"v-data-table-header__content"},[T(et,{chips:!0,color:e.color,class:"v-data-table__td-sort-select",clearable:!0,density:"default",items:p.value,label:t("$vuetify.dataTable.sortBy"),multiple:e.multiSort,variant:"underlined","onClick:clear":()=>r.value=[]},{append:h?()=>T(ge,{color:e.color,density:"compact",modelValue:i.value,indeterminate:s.value&&!i.value,"onUpdate:modelValue":()=>d(!i.value)},null):void 0,chip:C=>{var A;return T(sa,{onClick:(A=C.item.raw)!=null&&A.sortable?()=>l(C.item.raw):void 0,onMousedown:N=>{N.preventDefault(),N.stopPropagation()}},{default:()=>[C.item.title,T(Ge,{class:X(["v-data-table__td-sort-icon",o(C.item.raw)&&"v-data-table__td-sort-icon-active"]),icon:c(C.item.raw),size:"small"},null)]})}})])]})};L(()=>B.value?S("tr",null,[T(D,null,null)]):S(Z,null,[a.headers?a.headers(k.value):v.value.map((p,h)=>S("tr",null,[p.map((C,A)=>T(P,{column:C,x:A,y:h},null))])),e.loading&&S("tr",{class:"v-data-table-progress"},[S("th",{colspan:m.value.length},[T(qt,{name:"v-data-table-progress",absolute:!0,active:!0,color:typeof e.loading=="boolean"||e.loading==="true"?e.color:e.loading,indeterminate:!0},{default:a.loader})])])]))}}),_a=_({groupBy:{type:Array,default:()=>[]}},"DataTable-group"),mt=Symbol.for("vuetify:data-table-group");function Ea(e){return{groupBy:q(e,"groupBy")}}function Fa(e){const{disableSort:n,groupBy:a,sortBy:t}=e,l=z(new Set),r=V(()=>a.value.map(f=>({...f,order:f.order??!1})).concat(n!=null&&n.value?[]:t.value));function o(f){return l.value.has(f.id)}function s(f){const m=new Set(l.value);o(f)?m.delete(f.id):m.add(f.id),l.value=m}function i(f){function m(v){const x=[];for(const g of v.items)"type"in g&&g.type==="group"?x.push(...m(g)):x.push(g);return[...new Set(x)]}return m({items:f})}const d={sortByWithGroups:r,toggleGroup:s,opened:l,groupBy:a,extractRows:i,isGroupOpen:o};return Q(mt,d),d}function ht(){const e=K(mt);if(!e)throw new Error("Missing group!");return e}function Oa(e,n){if(!e.length)return[];const a=new Map;for(const t of e){const l=ce(t.raw,n);a.has(l)||a.set(l,[]),a.get(l).push(t)}return a}function yt(e,n){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,t=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"root";if(!n.length)return[];const l=Oa(e,n[0]),r=[],o=n.slice(1);return l.forEach((s,i)=>{const d=n[0],f=`${t}_${d}_${i}`;r.push({depth:a,id:f,key:d,value:i,items:o.length?yt(s,o,a+1,f):s,type:"group"})}),r}function bt(e,n,a){const t=[];for(const l of e)"type"in l&&l.type==="group"?(l.value!=null&&t.push(l),(n.has(l.id)||l.value==null)&&(t.push(...bt(l.items,n,a)),a&&t.push({...l,type:"group-summary"}))):t.push(l);return t}function Aa(e,n,a,t){const l=V(()=>n.value.length?yt(j(e),n.value.map(o=>o.key)):[]),r=V(()=>n.value.length?bt(l.value,a.value,j(t)):j(e));return{groups:l,flatItems:r}}const xt=_({item:{type:Object,required:!0},groupCollapseIcon:{type:H,default:"$tableGroupCollapse"},groupExpandIcon:{type:H,default:"$tableGroupExpand"},...be()},"VDataTableGroupHeaderRow"),Ra=$()({name:"VDataTableGroupHeaderRow",props:xt(),setup(e,n){let{slots:a}=n;const{isGroupOpen:t,toggleGroup:l,extractRows:r}=ht(),{isSelected:o,isSomeSelected:s,select:i}=we(),{columns:d}=xe(),f=V(()=>r([e.item])),m=E(()=>d.value.length-(d.value.some(v=>v.key==="data-table-select")?1:0));return()=>S("tr",{class:"v-data-table-group-header-row",style:{"--v-data-table-group-header-row-depth":e.item.depth}},[d.value.map(v=>{var x,g;if(v.key==="data-table-group"){const y=t(e.item)?e.groupCollapseIcon:e.groupExpandIcon,c=()=>l(e.item);return((x=a["data-table-group"])==null?void 0:x.call(a,{item:e.item,count:f.value.length,props:{icon:y,onClick:c}}))??T(J,{class:"v-data-table-group-header-row__column",colspan:m.value},{default:()=>[T(ve,{size:"small",variant:"text",icon:y,onClick:c},null),S("span",null,[e.item.value]),S("span",null,[Ne("("),f.value.length,Ne(")")])]})}else if(v.key==="data-table-select"){const y=f.value.filter(I=>I.selectable),c=y.length>0&&o(y),w=s(y)&&!c,u=I=>i(y,I);return((g=a["data-table-select"])==null?void 0:g.call(a,{props:{modelValue:c,indeterminate:w,"onUpdate:modelValue":u}}))??T(J,{class:"v-data-table__td--select-row",noPadding:!0},{default:()=>[T(ge,{density:e.density,disabled:y.length===0,modelValue:c,indeterminate:w,"onUpdate:modelValue":u},null)]})}return""})])}}),Ha=_({expandOnClick:Boolean,showExpand:Boolean,expanded:{type:Array,default:()=>[]}},"DataTable-expand"),wt=Symbol.for("vuetify:datatable:expanded");function $a(e){const n=E(()=>e.expandOnClick),a=q(e,"expanded",e.expanded,s=>new Set(s),s=>[...s.values()]);function t(s,i){const d=new Set(a.value),f=ie(s.value);if(i)d.add(f);else{const m=[...a.value].find(v=>ie(v)===f);d.delete(m)}a.value=d}function l(s){const i=ie(s.value);return[...a.value].some(d=>ie(d)===i)}function r(s){t(s,!l(s))}const o={expand:t,expanded:a,expandOnClick:n,isExpanded:l,toggleExpand:r};return Q(wt,o),o}function St(){const e=K(wt);if(!e)throw new Error("foo");return e}const Pt=_({color:String,index:Number,item:Object,cellProps:[Object,Function],collapseIcon:{type:H,default:"$collapse"},expandIcon:{type:H,default:"$expand"},onClick:Te(),onContextmenu:Te(),onDblclick:Te(),...be(),..._e()},"VDataTableRow"),Na=$()({name:"VDataTableRow",props:Pt(),setup(e,n){let{slots:a}=n;const{displayClasses:t,mobile:l}=Be(e,"v-data-table__tr"),{isSelected:r,toggleSelect:o,someSelected:s,allSelected:i,selectAll:d}=we(),{isExpanded:f,toggleExpand:m}=St(),{toggleSort:v,sortBy:x,isSorted:g}=vt(),{columns:y}=xe();L(()=>S("tr",{class:X(["v-data-table__tr",{"v-data-table__tr--clickable":!!(e.onClick||e.onContextmenu||e.onDblclick)},t.value]),onClick:e.onClick,onContextmenu:e.onContextmenu,onDblclick:e.onDblclick},[e.item&&y.value.map((c,w)=>{const u=e.item,I=`item.${c.key}`,B=`header.${c.key}`,k={index:e.index,item:u.raw,internalItem:u,value:ce(u.columns,c.key),column:c,isSelected:r,toggleSelect:o,isExpanded:f,toggleExpand:m},b={column:c,selectAll:d,isSorted:g,toggleSort:v,sortBy:x.value,someSelected:s.value,allSelected:i.value,getSortIcon:()=>""},P=typeof e.cellProps=="function"?e.cellProps({index:k.index,item:k.item,internalItem:k.internalItem,value:k.value,column:c}):e.cellProps,D=typeof c.cellProps=="function"?c.cellProps({index:k.index,item:k.item,internalItem:k.internalItem,value:k.value}):c.cellProps,p=c.key==="data-table-select"||c.key==="data-table-expand",h=c.key==="data-table-group"&&c.width===0&&!c.title;return T(J,R({align:c.align,indent:c.indent,class:{"v-data-table__td--expanded-row":c.key==="data-table-expand","v-data-table__td--select-row":c.key==="data-table-select"},fixed:c.fixed,fixedOffset:c.fixedOffset,fixedEndOffset:c.fixedEndOffset,lastFixed:c.lastFixed,firstFixedEnd:c.firstFixedEnd,maxWidth:l.value?void 0:c.maxWidth,noPadding:p,empty:h,nowrap:c.nowrap,width:l.value?void 0:c.width},P,D),{default:()=>{var A,N,M,Y;if(c.key==="data-table-select")return((A=a["item.data-table-select"])==null?void 0:A.call(a,{...k,props:{color:e.color,disabled:!u.selectable,modelValue:r([u]),onClick:ue(()=>o(u),["stop"])}}))??T(ge,{color:e.color,disabled:!u.selectable,density:e.density,modelValue:r([u]),onClick:ue(W=>o(u,e.index,W),["stop"])},null);if(c.key==="data-table-expand")return((N=a["item.data-table-expand"])==null?void 0:N.call(a,{...k,props:{icon:f(u)?e.collapseIcon:e.expandIcon,size:"small",variant:"text",onClick:ue(()=>m(u),["stop"])}}))??T(ve,{icon:f(u)?e.collapseIcon:e.expandIcon,size:"small",variant:"text",onClick:ue(()=>m(u),["stop"])},null);if(a[I]&&!l.value)return a[I](k);const C=Mt(k.value);return l.value?S(Z,null,[S("div",{class:"v-data-table__td-title"},[((M=a[B])==null?void 0:M.call(a,b))??c.title]),S("div",{class:"v-data-table__td-value"},[((Y=a[I])==null?void 0:Y.call(a,k))??C])]):C}})})]))}}),It=_({color:String,loading:[Boolean,String],loadingText:{type:String,default:"$vuetify.dataIterator.loadingText"},hideNoData:Boolean,items:{type:Array,default:()=>[]},noDataText:{type:String,default:"$vuetify.noDataText"},rowProps:[Object,Function],cellProps:[Object,Function],...Ve(Pt(),["collapseIcon","expandIcon","density"]),...Ve(xt(),["groupCollapseIcon","groupExpandIcon","density"]),..._e()},"VDataTableRows"),je=$()({name:"VDataTableRows",inheritAttrs:!1,props:It(),setup(e,n){let{attrs:a,slots:t}=n;const{columns:l}=xe(),{expandOnClick:r,toggleExpand:o,isExpanded:s}=St(),{isSelected:i,toggleSelect:d}=we(),{toggleGroup:f,isGroupOpen:m}=ht(),{t:v}=ee(),{mobile:x}=Be(e);return L(()=>{var y,c;const g=Ve(e,["groupCollapseIcon","groupExpandIcon","density"]);return e.loading&&(!e.items.length||t.loading)?S("tr",{class:"v-data-table-rows-loading",key:"loading"},[S("td",{colspan:l.value.length},[((y=t.loading)==null?void 0:y.call(t))??v(e.loadingText)])]):!e.loading&&!e.items.length&&!e.hideNoData?S("tr",{class:"v-data-table-rows-no-data",key:"no-data"},[S("td",{colspan:l.value.length},[((c=t["no-data"])==null?void 0:c.call(t))??v(e.noDataText)])]):S(Z,null,[e.items.map((w,u)=>{var k,b;if(w.type==="group"){const P={index:u,item:w,columns:l.value,isExpanded:s,toggleExpand:o,isSelected:i,toggleSelect:d,toggleGroup:f,isGroupOpen:m};return t["group-header"]?t["group-header"](P):T(Ra,R({key:`group-header_${w.id}`,item:w},He(a,":groupHeader",()=>P),g),t)}if(w.type==="group-summary"){const P={index:u,item:w,columns:l.value,toggleGroup:f};return((k=t["group-summary"])==null?void 0:k.call(t,P))??""}const I={index:w.virtualIndex??u,item:w.raw,internalItem:w,columns:l.value,isExpanded:s,toggleExpand:o,isSelected:i,toggleSelect:d},B={...I,props:R({key:`item_${w.key??w.index}`,onClick:r.value?()=>{o(w)}:void 0,index:u,item:w,color:e.color,cellProps:e.cellProps,collapseIcon:e.collapseIcon,expandIcon:e.expandIcon,density:e.density,mobile:x.value},He(a,":row",()=>I),typeof e.rowProps=="function"?e.rowProps({item:I.item,index:I.index,internalItem:I.internalItem}):e.rowProps)};return S(Z,{key:B.props.key},[t.item?t.item(B):T(Na,B.props,t),s(w)&&((b=t["expanded-row"])==null?void 0:b.call(t,I))])})])}),{}}}),kt=_({fixedHeader:Boolean,fixedFooter:Boolean,height:[Number,String],hover:Boolean,striped:{type:String,default:null,validator:e=>["even","odd"].includes(e)},...Ee(),...be(),...tt(),...Qe()},"VTable"),Ye=$()({name:"VTable",props:kt(),setup(e,n){let{slots:a,emit:t}=n;const{themeClasses:l}=qe(e),{densityClasses:r}=Zt(e);return L(()=>T(e.tag,{class:X(["v-table",{"v-table--fixed-height":!!e.height,"v-table--fixed-header":e.fixedHeader,"v-table--fixed-footer":e.fixedFooter,"v-table--has-top":!!a.top,"v-table--has-bottom":!!a.bottom,"v-table--hover":e.hover,"v-table--striped-even":e.striped==="even","v-table--striped-odd":e.striped==="odd"},l.value,r.value,e.class]),style:ye(e.style)},{default:()=>{var o,s,i;return[(o=a.top)==null?void 0:o.call(a),a.default?S("div",{class:"v-table__wrapper",style:{height:F(e.height)}},[S("table",null,[a.default()])]):(s=a.wrapper)==null?void 0:s.call(a),(i=a.bottom)==null?void 0:i.call(a)]}})),{}}}),Wa=_({items:{type:Array,default:()=>[]},itemValue:{type:[String,Array,Function],default:"id"},itemSelectable:{type:[String,Array,Function],default:null},rowProps:[Object,Function],cellProps:[Object,Function],returnObject:Boolean},"DataTable-items");function Ga(e,n,a,t){const l=e.returnObject?n:se(n,e.itemValue),r=se(n,e.itemSelectable,!0),o=t.reduce((s,i)=>(i.key!=null&&(s[i.key]=se(n,i.value)),s),{});return{type:"item",key:e.returnObject?se(n,e.itemValue):l,index:a,value:l,selectable:r,columns:o,raw:n}}function La(e,n,a){return n.map((t,l)=>Ga(e,t,l,a))}function Ma(e,n){return{items:V(()=>La(e,e.items,n.value))}}function ja(e){let{page:n,itemsPerPage:a,sortBy:t,groupBy:l,search:r}=e;const o=Ke("VDataTable"),s=()=>({page:n.value,itemsPerPage:a.value,sortBy:t.value,groupBy:l.value,search:r.value});let i=null;he(s,d=>{Ue(i,d)||(i&&i.search!==d.search&&(n.value=1),o.emit("update:options",d),i=d)},{deep:!0,immediate:!0})}const Ya=_({...It(),hideDefaultBody:Boolean,hideDefaultFooter:Boolean,hideDefaultHeader:Boolean,width:[String,Number],search:String,...Ha(),..._a(),...ga(),...Wa(),...Ia(),...pa(),...me(gt(),["multiSort","initialSortOrder"]),...kt()},"DataTable"),za=_({...ia(),...Ya(),...Xt(),...nt()},"VDataTable"),cn=$()({name:"VDataTable",props:za(),emits:{"update:modelValue":e=>!0,"update:page":e=>!0,"update:itemsPerPage":e=>!0,"update:sortBy":e=>!0,"update:options":e=>!0,"update:groupBy":e=>!0,"update:expanded":e=>!0,"update:currentItems":e=>!0},setup(e,n){let{attrs:a,slots:t}=n;const{groupBy:l}=Ea(e),{initialSortOrder:r,sortBy:o,multiSort:s,mustSort:i}=Ta(e),{page:d,itemsPerPage:f}=ua(e),{disableSort:m}=jt(e),{columns:v,headers:x,sortFunctions:g,sortRawFunctions:y,filterFunctions:c}=wa(e,{groupBy:l,showSelect:E(()=>e.showSelect),showExpand:E(()=>e.showExpand)}),{items:w}=Ma(e,v),u=E(()=>e.search),{filteredItems:I}=zt(e,w,u,{transform:O=>O.columns,customKeyFilter:c}),{toggleSort:B}=Da({initialSortOrder:r,sortBy:o,multiSort:s,mustSort:i,page:d}),{sortByWithGroups:k,opened:b,extractRows:P,isGroupOpen:D,toggleGroup:p}=Fa({groupBy:l,sortBy:o,disableSort:m}),{sortedItems:h}=Ca(e,I,k,{transform:O=>({...O.raw,...O.columns}),sortFunctions:g,sortRawFunctions:y}),C=V(()=>e.pageBy==="auto"?e.groupBy.length?"group":"item":e.pageBy),{pageCount:A,setItemsPerPage:N,paginatedItems:M}=va({pageBy:C,sortedItems:h,paginate:O=>{const Pe=V(()=>j(O).length),{startIndex:Ie,stopIndex:ke,pageCount:U,setItemsPerPage:ne}=da({page:d,itemsPerPage:f,itemsLength:Pe}),{paginatedItems:le}=fa({items:O,startIndex:Ie,stopIndex:ke,itemsPerPage:f});return{paginatedItems:le,pageCount:U,setItemsPerPage:ne}},group:O=>Aa(O,l,b,()=>!!t["group-summary"])}),Y=V(()=>P(M.value)),{isSelected:W,select:te,selectAll:ae,toggleSelect:Se,someSelected:Ct,allSelected:Bt}=ka(e,{allItems:w,currentPage:Y}),{isExpanded:_t,toggleExpand:Et}=$a(e);ja({page:d,itemsPerPage:f,sortBy:o,groupBy:l,search:u}),Ht({VDataTableRows:{hideNoData:E(()=>e.hideNoData),noDataText:E(()=>e.noDataText),loading:E(()=>e.loading),loadingText:E(()=>e.loadingText)}});const G=V(()=>({page:d.value,itemsPerPage:f.value,sortBy:o.value,pageCount:A.value,toggleSort:B,setItemsPerPage:N,someSelected:Ct.value,allSelected:Bt.value,isSelected:W,select:te,selectAll:ae,toggleSelect:Se,isExpanded:_t,toggleExpand:Et,isGroupOpen:D,toggleGroup:p,items:Y.value.map(O=>O.raw),internalItems:Y.value,groupedItems:M.value,columns:v.value,headers:x.value}));return L(()=>{const O=Le.filterProps(e),Pe=Me.filterProps(me(e,["multiSort"])),Ie=je.filterProps(e),ke=Ye.filterProps(e);return T(Ye,R({class:["v-data-table",{"v-data-table--show-select":e.showSelect,"v-data-table--loading":e.loading},e.class],style:e.style},ke,{fixedHeader:e.fixedHeader||e.sticky}),{top:()=>{var U;return(U=t.top)==null?void 0:U.call(t,G.value)},default:()=>{var U,ne,le,Oe,Ae,Re;return t.default?t.default(G.value):S(Z,null,[(U=t.colgroup)==null?void 0:U.call(t,G.value),!e.hideDefaultHeader&&S("thead",{key:"thead"},[T(Me,R(Pe,{multiSort:!!e.multiSort}),t)]),(ne=t.thead)==null?void 0:ne.call(t,G.value),!e.hideDefaultBody&&S("tbody",null,[(le=t["body.prepend"])==null?void 0:le.call(t,G.value),t.body?t.body(G.value):T(je,R(a,Ie,{items:M.value}),t),(Oe=t["body.append"])==null?void 0:Oe.call(t,G.value)]),(Ae=t.tbody)==null?void 0:Ae.call(t,G.value),(Re=t.tfoot)==null?void 0:Re.call(t,G.value)])},bottom:()=>t.bottom?t.bottom(G.value):!e.hideDefaultFooter&&S(Z,null,[T(Jt,null,null),T(Le,O,{prepend:t["footer.prepend"]})])})}),{}}}),Xa=Symbol.for("vuetify:v-tabs"),Ka=e=>{const{touchstartX:n,touchendX:a,touchstartY:t,touchendY:l}=e,r=.5,o=16;e.offsetX=a-n,e.offsetY=l-t,Math.abs(e.offsetY)n+o&&e.right(e)),Math.abs(e.offsetX)t+o&&e.down(e))};function Ua(e,n){var t;const a=e.changedTouches[0];n.touchstartX=a.clientX,n.touchstartY=a.clientY,(t=n.start)==null||t.call(n,{originalEvent:e,...n})}function qa(e,n){var t;const a=e.changedTouches[0];n.touchendX=a.clientX,n.touchendY=a.clientY,(t=n.end)==null||t.call(n,{originalEvent:e,...n}),Ka(n)}function Qa(e,n){var t;const a=e.changedTouches[0];n.touchmoveX=a.clientX,n.touchmoveY=a.clientY,(t=n.move)==null||t.call(n,{originalEvent:e,...n})}function Za(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const n={touchstartX:0,touchstartY:0,touchendX:0,touchendY:0,touchmoveX:0,touchmoveY:0,offsetX:0,offsetY:0,left:e.left,right:e.right,up:e.up,down:e.down,start:e.start,move:e.move,end:e.end};return{touchstart:a=>Ua(a,n),touchend:a=>qa(a,n),touchmove:a=>Qa(a,n)}}function Ja(e,n){var s;const a=n.value,t=a!=null&&a.parent?e.parentElement:e,l=(a==null?void 0:a.options)??{passive:!0},r=(s=n.instance)==null?void 0:s.$.uid;if(!t||r===void 0)return;const o=Za(n.value);t._touchHandlers=t._touchHandlers??Object.create(null),t._touchHandlers[r]=o,Ze(o).forEach(i=>{t.addEventListener(i,o[i],l)})}function en(e,n){var r,o;const a=(r=n.value)!=null&&r.parent?e.parentElement:e,t=(o=n.instance)==null?void 0:o.$.uid;if(!(a!=null&&a._touchHandlers)||t===void 0)return;const l=a._touchHandlers[t];Ze(l).forEach(s=>{a.removeEventListener(s,l[s])}),delete a._touchHandlers[t]}const Ce={mounted:Ja,unmounted:en},pt=Symbol.for("vuetify:v-window"),Tt=Symbol.for("vuetify:v-window-group"),Vt=_({continuous:Boolean,nextIcon:{type:[Boolean,String,Function,Object],default:"$next"},prevIcon:{type:[Boolean,String,Function,Object],default:"$prev"},reverse:Boolean,showArrows:{type:[Boolean,String],validator:e=>typeof e=="boolean"||e==="hover"},verticalArrows:[Boolean,String],touch:{type:[Object,Boolean],default:void 0},direction:{type:String,default:"horizontal"},modelValue:null,disabled:Boolean,selectedClass:{type:String,default:"v-window-item--active"},mandatory:{type:[Boolean,String],default:"force"},crossfade:Boolean,transitionDuration:Number,...Ee(),...tt(),...Qe()},"VWindow"),ze=$()({name:"VWindow",directives:{vTouch:Ce},props:Vt(),emits:{"update:modelValue":e=>!0},setup(e,n){let{slots:a}=n;const{themeClasses:t}=qe(e),{isRtl:l}=$t(),{t:r}=ee(),o=ea(e,Tt),s=z(),i=V(()=>l.value?!e.reverse:e.reverse),d=fe(!1),f=V(()=>{if(e.crossfade)return"v-window-crossfade-transition";const b=e.direction==="vertical"?"y":"x",D=(i.value?!d.value:d.value)?"-reverse":"";return`v-window-${b}${D}-transition`}),m=fe(0),v=z(void 0),x=V(()=>o.items.value.findIndex(b=>o.selected.value.includes(b.id)));he(x,(b,P)=>{let D;const p={left:0,top:0};$e&&P>=0&&(D=Nt(s.value),p.left=D==null?void 0:D.scrollLeft,p.top=D==null?void 0:D.scrollTop);const h=o.items.value.length,C=h-1;h<=2?d.value=b{if(!$e||!D)return;D.scrollTop!==p.top&&D.scrollTo({...p,behavior:"instant"}),requestAnimationFrame(()=>{if(!D)return;D.scrollTop!==p.top&&D.scrollTo({...p,behavior:"instant"})})})},{flush:"sync"}),Q(pt,{transition:f,isReversed:d,transitionCount:m,transitionHeight:v,rootRef:s});const g=E(()=>e.continuous||x.value!==0),y=E(()=>e.continuous||x.value!==o.items.value.length-1);function c(){g.value&&o.prev()}function w(){y.value&&o.next()}const u=V(()=>{const b=[],P={icon:l.value?e.nextIcon:e.prevIcon,class:`v-window__${i.value?"right":"left"}`,onClick:o.prev,"aria-label":r("$vuetify.carousel.prev")};b.push(g.value?a.prev?a.prev({props:P}):T(ve,P,null):S("div",null,null));const D={icon:l.value?e.prevIcon:e.nextIcon,class:`v-window__${i.value?"left":"right"}`,onClick:o.next,"aria-label":r("$vuetify.carousel.next")};return b.push(y.value?a.next?a.next({props:D}):T(ve,D,null):S("div",null,null)),b}),I=V(()=>e.touch===!1?e.touch:{...{left:()=>{i.value?c():w()},right:()=>{i.value?w():c()},start:P=>{let{originalEvent:D}=P;D.stopPropagation()}},...e.touch===!0?{}:e.touch});function B(b){(e.direction==="horizontal"&&b.key==="ArrowLeft"||e.direction==="vertical"&&b.key==="ArrowUp")&&(b.preventDefault(),c(),de(()=>{g.value?k(0):k(1)})),(e.direction==="horizontal"&&b.key==="ArrowRight"||e.direction==="vertical"&&b.key==="ArrowDown")&&(b.preventDefault(),w(),de(()=>{y.value?k(1):k(0)}))}function k(b){var p;const P=u.value[b];if(!P)return;(p=(Array.isArray(P)?P[0]:P).el)==null||p.focus()}return L(()=>Je(T(e.tag,{ref:s,class:X(["v-window",{"v-window--show-arrows-on-hover":e.showArrows==="hover","v-window--vertical-arrows":!!e.verticalArrows,"v-window--crossfade":!!e.crossfade},t.value,e.class]),style:ye([e.style,{"--v-window-transition-duration":Wt()?null:F(e.transitionDuration,"ms")}])},{default:()=>{var b,P;return[S("div",{class:"v-window__container",style:{height:v.value}},[(b=a.default)==null?void 0:b.call(a,{group:o}),e.showArrows!==!1&&S("div",{class:X(["v-window__controls",{"v-window__controls--left":e.verticalArrows==="left"||e.verticalArrows===!0},{"v-window__controls--right":e.verticalArrows==="right"}]),onKeydown:B},[u.value])]),(P=a.additional)==null?void 0:P.call(a,{group:o})]}}),[[Ce,I.value]])),{group:o}}}),tn=_({...me(Vt(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),fn=$()({name:"VTabsWindow",props:tn(),emits:{"update:modelValue":e=>!0},setup(e,n){let{slots:a}=n;const t=K(Xa,null),l=q(e,"modelValue"),r=V({get(){var o;return l.value!=null||!t?l.value:(o=t.items.value.find(s=>t.selected.value.includes(s.id)))==null?void 0:o.value},set(o){l.value=o}});return L(()=>{const o=ze.filterProps(e);return T(ze,R({_as:"VTabsWindow"},o,{modelValue:r.value,"onUpdate:modelValue":s=>r.value=s,class:["v-tabs-window",e.class],style:e.style,mandatory:!1,touch:!1}),a)}),{}}}),Dt=_({reverseTransition:{type:[Boolean,String],default:void 0},transition:{type:[Boolean,String],default:void 0},...Ee(),...ra(),...oa()},"VWindowItem"),Xe=$()({name:"VWindowItem",directives:{vTouch:Ce},props:Dt(),emits:{"group:selected":e=>!0},setup(e,n){let{slots:a}=n;const t=K(pt),l=ta(e,Tt),{isBooted:r}=aa();if(!t||!l)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const o=fe(!1),s=V(()=>r.value&&(t.isReversed.value?e.reverseTransition!==!1:e.transition!==!1));function i(){!o.value||!t||(o.value=!1,t.transitionCount.value>0&&(t.transitionCount.value-=1,t.transitionCount.value===0&&(t.transitionHeight.value=void 0)))}function d(){var g;o.value||!t||(o.value=!0,t.transitionCount.value===0&&(t.transitionHeight.value=F((g=t.rootRef.value)==null?void 0:g.clientHeight)),t.transitionCount.value+=1)}function f(){i()}function m(g){o.value&&de(()=>{!s.value||!o.value||!t||(t.transitionHeight.value=F(g.clientHeight))})}const v=V(()=>{const g=t.isReversed.value?e.reverseTransition:e.transition;return s.value?{name:typeof g!="string"?t.transition.value:g,onBeforeEnter:d,onAfterEnter:i,onEnterCancelled:f,onBeforeLeave:d,onAfterLeave:i,onLeaveCancelled:f,onEnter:m}:!1}),{hasContent:x}=na(e,l.isSelected);return L(()=>T(la,{transition:v.value,disabled:!r.value},{default:()=>{var g;return[Je(S("div",{class:X(["v-window-item",l.selectedClass.value,e.class]),style:ye(e.style)},[x.value&&((g=a.default)==null?void 0:g.call(a))]),[[Yt,l.isSelected.value]])]}})),{groupItem:l}}}),an=_({...Dt()},"VTabsWindowItem"),vn=$()({name:"VTabsWindowItem",props:an(),setup(e,n){let{slots:a}=n;return L(()=>{const t=Xe.filterProps(e);return T(Xe,R({_as:"VTabsWindowItem"},t,{class:["v-tabs-window-item",e.class],style:e.style}),a)}),{}}});export{Xa as V,vn as a,fn as b,ze as c,Xe as d,cn as e,Ye as f}; diff --git a/assets/VTextField-ByBRYn99.js b/assets/VTextField-ByBRYn99.js new file mode 100644 index 0000000..3474a8e --- /dev/null +++ b/assets/VTextField-ByBRYn99.js @@ -0,0 +1 @@ +import{u as te,V as B,a as le,b as ae,m as ne,c as ue}from"./autofocus-BAgnxQiD.js";import{u as oe,V as T,m as ie}from"./VLabel-CU-8PdVS.js";import{aE as E,D as se}from"./index-CFUCTEXJ.js";import{f as re,n as ce,u as de,ao as fe,a5 as M,ap as ve,p as me}from"./vendor-vuetify-s-yw_Hr8.js";import{j as b,k as n,F as h,m as C,R as xe,n as Ve,aj as ge,e as x,b as F,I as P}from"./vendor-vue-B2vxubPy.js";const ye=["color","file","time","date","datetime-local","week","month"],be=me({autofocus:Boolean,counter:[Boolean,Number,String],counterValue:[Number,Function],prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,suffix:String,role:String,type:{type:String,default:"text"},modelModifiers:Object,...ue(),...M(ie(),["direction"]),...ne()},"VTextField"),_e=re()({name:"VTextField",directives:{vIntersect:E},inheritAttrs:!1,props:be(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,j){let{attrs:V,emit:k,slots:a}=j;const u=ce(e,"modelValue",void 0,t=>Object.is(t,-0)?"-0":t),{isFocused:i,focus:_,blur:O}=oe(e),{onIntersect:z}=ae(e),U=x(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:(u.value??"").toString().length),$=x(()=>{if(V.maxlength)return V.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),I=x(()=>["plain","underlined"].includes(e.variant)),S=F(),p=F(),s=F(),f=te(e),q=x(()=>ye.includes(e.type)||e.persistentPlaceholder||i.value||e.active);function A(){f.isSuppressing.value&&f.update(),i.value||_(),P(()=>{var t;s.value!==document.activeElement&&((t=s.value)==null||t.focus())})}function G(t){k("mousedown:control",t),t.target!==s.value&&(A(),t.preventDefault())}function H(t){k("click:control",t)}function J(t,l){t.stopPropagation(),A(),P(()=>{l(),ve(e["onClick:clear"],t)})}function K(t){var m;const l=t.target;if(!((m=e.modelModifiers)!=null&&m.trim&&["text","search","password","tel","url"].includes(e.type))){u.value=l.value;return}const r=l.value,v=l.selectionStart,g=l.selectionEnd;u.value=r,P(()=>{let c=0;r.trimStart().length===l.value.length&&(c=r.length-l.value.length),v!=null&&(l.selectionStart=v-c),g!=null&&(l.selectionEnd=g-c)})}return de(()=>{const t=!!(a.counter||e.counter!==!1&&e.counter!=null),l=!!(t||a.details),[r,v]=fe(V),{modelValue:g,...m}=T.filterProps(e),c=B.filterProps(e);return b(T,C({ref:S,modelValue:u.value,"onUpdate:modelValue":d=>u.value=d,class:["v-text-field",{"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-input--plain-underlined":I.value},e.class],style:e.style},r,m,{centerAffix:!I.value,focused:i.value}),{...a,default:d=>{let{id:o,isDisabled:w,isDirty:R,isReadonly:L,isValid:Q,hasDetails:W,reset:X}=d;return b(B,C({ref:p,onMousedown:G,onClick:H,"onClick:clear":y=>J(y,X),role:e.role},M(c,["onClick:clear"]),{id:o.value,labelId:`${o.value}-label`,active:q.value||R.value,dirty:R.value||e.dirty,disabled:w.value,focused:i.value,details:W.value,error:Q.value===!1}),{...a,default:y=>{let{props:{class:D,...Y},controlRef:Z}=y;const N=n("input",C({ref:ee=>s.value=Z.value=ee,value:u.value,onInput:K,autofocus:e.autofocus,readonly:L.value,disabled:w.value,name:f.fieldName.value,autocomplete:f.fieldAutocomplete.value,placeholder:e.placeholder,size:1,role:e.role,type:e.type,onFocus:_,onBlur:O,"aria-labelledby":`${o.value}-label`},Y,v),null);return n(h,null,[e.prefix&&n("span",{class:"v-text-field__prefix"},[n("span",{class:"v-text-field__prefix__text"},[e.prefix])]),xe(a.default?n("div",{class:Ve(D),"data-no-activator":""},[a.default({id:o}),N]):ge(N,{class:D}),[[E,z,null,{once:!0}]]),e.suffix&&n("span",{class:"v-text-field__suffix"},[n("span",{class:"v-text-field__suffix__text"},[e.suffix])])])}})},details:l?d=>{var o;return n(h,null,[(o=a.details)==null?void 0:o.call(a,d),t&&n(h,null,[n("span",null,null),b(le,{active:e.persistentCounter||i.value,value:U.value,max:$.value,disabled:e.disabled},a.counter)])])}:void 0})}),se({},S,p,s)}});export{_e as V,be as m}; diff --git a/assets/VTextField-CuXGbmmC.js b/assets/VTextField-CuXGbmmC.js deleted file mode 100644 index b002780..0000000 --- a/assets/VTextField-CuXGbmmC.js +++ /dev/null @@ -1 +0,0 @@ -import{u as te,h as le,V as D,a as T,b as ae,m as ne,c as ue,i as oe,j as ie}from"./autofocus-BrMOVHY_.js";import{aC as M,C as se}from"./index-_6IQhlPZ.js";import{f as re,n as ce,u as de,ao as fe,a5 as j,ap as ve,p as me}from"./vendor-vuetify-ChAgIwn2.js";import{j as y,k as n,F as b,m as C,R as xe,n as Ve,ai as ge,e as x,b as F,I as P}from"./vendor-vue-H0jQBZ7T.js";const he=["color","file","time","date","datetime-local","week","month"],ye=me({autofocus:Boolean,counter:[Boolean,Number,String],counterValue:[Number,Function],prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,suffix:String,role:String,type:{type:String,default:"text"},modelModifiers:Object,...oe(),...j(ue(),["direction"]),...ne()},"VTextField"),ke=re()({name:"VTextField",directives:{vIntersect:M},inheritAttrs:!1,props:ye(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,E){let{attrs:V,emit:k,slots:a}=E;const u=ce(e,"modelValue",void 0,t=>Object.is(t,-0)?"-0":t),{isFocused:i,focus:_,blur:O}=te(e),{onIntersect:z}=ie(e),U=x(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:(u.value??"").toString().length),$=x(()=>{if(V.maxlength)return V.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),I=x(()=>["plain","underlined"].includes(e.variant)),S=F(),A=F(),s=F(),f=le(e),q=x(()=>he.includes(e.type)||e.persistentPlaceholder||i.value||e.active);function p(){f.isSuppressing.value&&f.update(),i.value||_(),P(()=>{var t;s.value!==document.activeElement&&((t=s.value)==null||t.focus())})}function G(t){k("mousedown:control",t),t.target!==s.value&&(p(),t.preventDefault())}function H(t){k("click:control",t)}function J(t,l){t.stopPropagation(),p(),P(()=>{l(),ve(e["onClick:clear"],t)})}function K(t){var m;const l=t.target;if(!((m=e.modelModifiers)!=null&&m.trim&&["text","search","password","tel","url"].includes(e.type))){u.value=l.value;return}const r=l.value,v=l.selectionStart,g=l.selectionEnd;u.value=r,P(()=>{let c=0;r.trimStart().length===l.value.length&&(c=r.length-l.value.length),v!=null&&(l.selectionStart=v-c),g!=null&&(l.selectionEnd=g-c)})}return de(()=>{const t=!!(a.counter||e.counter!==!1&&e.counter!=null),l=!!(t||a.details),[r,v]=fe(V),{modelValue:g,...m}=D.filterProps(e),c=T.filterProps(e);return y(D,C({ref:S,modelValue:u.value,"onUpdate:modelValue":d=>u.value=d,class:["v-text-field",{"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-input--plain-underlined":I.value},e.class],style:e.style},r,m,{centerAffix:!I.value,focused:i.value}),{...a,default:d=>{let{id:o,isDisabled:w,isDirty:R,isReadonly:L,isValid:Q,hasDetails:W,reset:X}=d;return y(T,C({ref:A,onMousedown:G,onClick:H,"onClick:clear":h=>J(h,X),role:e.role},j(c,["onClick:clear"]),{id:o.value,labelId:`${o.value}-label`,active:q.value||R.value,dirty:R.value||e.dirty,disabled:w.value,focused:i.value,details:W.value,error:Q.value===!1}),{...a,default:h=>{let{props:{class:N,...Y},controlRef:Z}=h;const B=n("input",C({ref:ee=>s.value=Z.value=ee,value:u.value,onInput:K,autofocus:e.autofocus,readonly:L.value,disabled:w.value,name:f.fieldName.value,autocomplete:f.fieldAutocomplete.value,placeholder:e.placeholder,size:1,role:e.role,type:e.type,onFocus:_,onBlur:O,"aria-labelledby":`${o.value}-label`},Y,v),null);return n(b,null,[e.prefix&&n("span",{class:"v-text-field__prefix"},[n("span",{class:"v-text-field__prefix__text"},[e.prefix])]),xe(a.default?n("div",{class:Ve(N),"data-no-activator":""},[a.default({id:o}),B]):ge(B,{class:N}),[[M,z,null,{once:!0}]]),e.suffix&&n("span",{class:"v-text-field__suffix"},[n("span",{class:"v-text-field__suffix__text"},[e.suffix])])])}})},details:l?d=>{var o;return n(b,null,[(o=a.details)==null?void 0:o.call(a,d),t&&n(b,null,[n("span",null,null),y(ae,{active:e.persistentCounter||i.value,value:U.value,max:$.value,disabled:e.disabled},a.counter)])])}:void 0})}),se({},S,A,s)}});export{ke as V,ye as m}; diff --git a/assets/VTextarea-BxmmuONa.js b/assets/VTextarea-BxmmuONa.js new file mode 100644 index 0000000..3580e34 --- /dev/null +++ b/assets/VTextarea-BxmmuONa.js @@ -0,0 +1 @@ +import{b as w,w as re,D as se,o as f,A as ce,j as A,k as r,F as M,m as z,R as U,ai as de,n as fe,I as C,e as P,s as ve}from"./vendor-vue-B2vxubPy.js";import{u as me,V as $,a as xe,b as ge,m as he,c as we}from"./autofocus-BAgnxQiD.js";import{u as Ve,V as O,m as ye}from"./VLabel-CU-8PdVS.js";import{aE as W,D as be}from"./index-CFUCTEXJ.js";import{f as Fe,n as Ce,a0 as Pe,u as Ie,ao as ke,s as B,z as Re,ap as Ne,p as Se,a5 as He}from"./vendor-vuetify-s-yw_Hr8.js";const Ae=Se({autoGrow:Boolean,autofocus:Boolean,counter:[Boolean,Number,String],counterValue:Function,prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,noResize:Boolean,rows:{type:[Number,String],default:5,validator:e=>!isNaN(parseFloat(e))},maxHeight:{type:[Number,String],validator:e=>!isNaN(parseFloat(e))},maxRows:{type:[Number,String],validator:e=>!isNaN(parseFloat(e))},suffix:String,modelModifiers:Object,...we(),...He(ye(),["direction"]),...he()},"VTextarea"),Te=Fe()({name:"VTextarea",directives:{vIntersect:W},inheritAttrs:!1,props:Ae(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0,"update:rows":e=>!0},setup(e,j){let{attrs:I,emit:k,slots:o}=j;const l=Ce(e,"modelValue"),{isFocused:V,focus:q,blur:J}=Ve(e),{onIntersect:K}=ge(e),L=P(()=>typeof e.counterValue=="function"?e.counterValue(l.value):(l.value||"").toString().length),Q=P(()=>{if(I.maxlength)return I.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),D=w(),b=w(),p=ve(""),v=w(),R=w(0),{platform:X}=Pe(),F=me(e),Y=P(()=>e.persistentPlaceholder||V.value||e.active);function N(){var t;F.isSuppressing.value&&F.update(),v.value!==document.activeElement&&((t=v.value)==null||t.focus()),V.value||q()}function Z(t){N(),k("click:control",t)}function ee(t){k("mousedown:control",t)}function te(t){t.stopPropagation(),N(),C(()=>{l.value="",Ne(e["onClick:clear"],t)})}function ae(t){var g;const a=t.target;if(!((g=e.modelModifiers)!=null&&g.trim)){l.value=a.value;return}const n=a.value,x=a.selectionStart,c=a.selectionEnd;l.value=n,C(()=>{let d=0;n.trimStart().length===a.value.length&&(d=n.length-a.value.length),x!=null&&(a.selectionStart=x-d),c!=null&&(a.selectionEnd=c-d)})}const m=w(),y=w(Number(e.rows)),S=P(()=>["plain","underlined"].includes(e.variant));re(()=>{e.autoGrow||(y.value=Number(e.rows))});function s(){C(()=>{if(!v.value)return;if(X.value.firefox){R.value=12;return}const{offsetWidth:t,clientWidth:a}=v.value;R.value=Math.max(0,t-a)}),e.autoGrow&&C(()=>{if(!m.value||!b.value)return;const t=getComputedStyle(m.value),a=getComputedStyle(b.value.$el),n=parseFloat(t.getPropertyValue("--v-field-padding-top"))+parseFloat(t.getPropertyValue("--v-input-padding-top"))+parseFloat(t.getPropertyValue("--v-field-padding-bottom")),x=m.value.scrollHeight,c=parseFloat(t.lineHeight),g=Math.max(parseFloat(e.rows)*c+n,parseFloat(a.getPropertyValue("--v-input-control-height"))),d=e.maxHeight?parseFloat(e.maxHeight):parseFloat(e.maxRows)*c+n||1/0,i=Re(x??0,g,d);y.value=Math.floor((i-n)/c),p.value=B(i)})}se(s),f(l,s),f(()=>e.rows,s),f(()=>e.maxHeight,s),f(()=>e.maxRows,s),f(()=>e.density,s),f(y,t=>{k("update:rows",t)});let u;return f(m,t=>{t?(u=new ResizeObserver(s),u.observe(m.value)):u==null||u.disconnect()}),ce(()=>{u==null||u.disconnect()}),Ie(()=>{const t=!!(o.counter||e.counter||e.counterValue),a=!!(t||o.details),[n,x]=ke(I),{modelValue:c,...g}=O.filterProps(e),d={...$.filterProps(e),"onClick:clear":te};return A(O,z({ref:D,modelValue:l.value,"onUpdate:modelValue":i=>l.value=i,class:["v-textarea v-text-field",{"v-textarea--prefixed":e.prefix,"v-textarea--suffixed":e.suffix,"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-textarea--auto-grow":e.autoGrow,"v-textarea--no-resize":e.noResize||e.autoGrow,"v-input--plain-underlined":S.value},e.class],style:[{"--v-textarea-max-height":e.maxHeight?B(e.maxHeight):void 0,"--v-textarea-scroll-bar-width":B(R.value)},e.style]},n,g,{centerAffix:y.value===1&&!S.value,focused:V.value}),{...o,default:i=>{let{id:h,isDisabled:T,isDirty:_,isReadonly:le,isValid:ne,hasDetails:oe}=i;return A($,z({ref:b,style:{"--v-textarea-control-height":p.value},onClick:Z,onMousedown:ee,"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"]},d,{id:h.value,active:Y.value||_.value,labelId:`${h.value}-label`,centerAffix:y.value===1&&!S.value,dirty:_.value||e.dirty,disabled:T.value,focused:V.value,details:oe.value,error:ne.value===!1}),{...o,default:ue=>{let{props:{class:E,...G},controlRef:ie}=ue;return r(M,null,[e.prefix&&r("span",{class:"v-text-field__prefix"},[e.prefix]),U(r("textarea",z({ref:H=>v.value=ie.value=H,class:E,value:l.value,onInput:ae,autofocus:e.autofocus,readonly:le.value,disabled:T.value,placeholder:e.placeholder,rows:e.rows,name:F.fieldName.value,autocomplete:F.fieldAutocomplete.value,onFocus:N,onBlur:J,"aria-labelledby":`${h.value}-label`},G,x),null),[[W,{handler:K},null,{once:!0}]]),e.autoGrow&&U(r("textarea",{class:fe([E,"v-textarea__sizer"]),id:`${G.id}-sizer`,"onUpdate:modelValue":H=>l.value=H,ref:m,readonly:!0,"aria-hidden":"true"},null),[[de,l.value]]),e.suffix&&r("span",{class:"v-text-field__suffix"},[e.suffix])])}})},details:a?i=>{var h;return r(M,null,[(h=o.details)==null?void 0:h.call(o,i),t&&r(M,null,[r("span",null,null),A(xe,{active:e.persistentCounter||V.value,value:L.value,max:Q.value,disabled:e.disabled},o.counter)])])}:void 0})}),be({},D,b,v)}});export{Te as V}; diff --git a/assets/VTextarea-CCCqy4pz.js b/assets/VTextarea-CCCqy4pz.js deleted file mode 100644 index e16d87f..0000000 --- a/assets/VTextarea-CCCqy4pz.js +++ /dev/null @@ -1 +0,0 @@ -import{b as w,w as re,D as se,o as f,A as ce,j as A,k as r,F as M,m as z,R as U,ah as de,n as fe,I as F,e as P,s as ve}from"./vendor-vue-H0jQBZ7T.js";import{u as me,h as xe,V as $,a as j,b as he,m as ge,c as we,i as Ve,j as ye}from"./autofocus-BrMOVHY_.js";import{aC as O,C as be}from"./index-_6IQhlPZ.js";import{f as Ce,n as Fe,a0 as Pe,u as Ie,ao as ke,s as B,z as Re,ap as Ne,p as Se,a5 as He}from"./vendor-vuetify-ChAgIwn2.js";const Ae=Se({autoGrow:Boolean,autofocus:Boolean,counter:[Boolean,Number,String],counterValue:Function,prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,noResize:Boolean,rows:{type:[Number,String],default:5,validator:e=>!isNaN(parseFloat(e))},maxHeight:{type:[Number,String],validator:e=>!isNaN(parseFloat(e))},maxRows:{type:[Number,String],validator:e=>!isNaN(parseFloat(e))},suffix:String,modelModifiers:Object,...Ve(),...He(we(),["direction"]),...ge()},"VTextarea"),Te=Ce()({name:"VTextarea",directives:{vIntersect:O},inheritAttrs:!1,props:Ae(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0,"update:rows":e=>!0},setup(e,W){let{attrs:I,emit:k,slots:o}=W;const l=Fe(e,"modelValue"),{isFocused:V,focus:q,blur:J}=me(e),{onIntersect:K}=ye(e),L=P(()=>typeof e.counterValue=="function"?e.counterValue(l.value):(l.value||"").toString().length),Q=P(()=>{if(I.maxlength)return I.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),D=w(),b=w(),T=ve(""),v=w(),R=w(0),{platform:X}=Pe(),C=xe(e),Y=P(()=>e.persistentPlaceholder||V.value||e.active);function N(){var t;C.isSuppressing.value&&C.update(),v.value!==document.activeElement&&((t=v.value)==null||t.focus()),V.value||q()}function Z(t){N(),k("click:control",t)}function ee(t){k("mousedown:control",t)}function te(t){t.stopPropagation(),N(),F(()=>{l.value="",Ne(e["onClick:clear"],t)})}function ae(t){var h;const a=t.target;if(!((h=e.modelModifiers)!=null&&h.trim)){l.value=a.value;return}const n=a.value,x=a.selectionStart,c=a.selectionEnd;l.value=n,F(()=>{let d=0;n.trimStart().length===a.value.length&&(d=n.length-a.value.length),x!=null&&(a.selectionStart=x-d),c!=null&&(a.selectionEnd=c-d)})}const m=w(),y=w(Number(e.rows)),S=P(()=>["plain","underlined"].includes(e.variant));re(()=>{e.autoGrow||(y.value=Number(e.rows))});function s(){F(()=>{if(!v.value)return;if(X.value.firefox){R.value=12;return}const{offsetWidth:t,clientWidth:a}=v.value;R.value=Math.max(0,t-a)}),e.autoGrow&&F(()=>{if(!m.value||!b.value)return;const t=getComputedStyle(m.value),a=getComputedStyle(b.value.$el),n=parseFloat(t.getPropertyValue("--v-field-padding-top"))+parseFloat(t.getPropertyValue("--v-input-padding-top"))+parseFloat(t.getPropertyValue("--v-field-padding-bottom")),x=m.value.scrollHeight,c=parseFloat(t.lineHeight),h=Math.max(parseFloat(e.rows)*c+n,parseFloat(a.getPropertyValue("--v-input-control-height"))),d=e.maxHeight?parseFloat(e.maxHeight):parseFloat(e.maxRows)*c+n||1/0,i=Re(x??0,h,d);y.value=Math.floor((i-n)/c),T.value=B(i)})}se(s),f(l,s),f(()=>e.rows,s),f(()=>e.maxHeight,s),f(()=>e.maxRows,s),f(()=>e.density,s),f(y,t=>{k("update:rows",t)});let u;return f(m,t=>{t?(u=new ResizeObserver(s),u.observe(m.value)):u==null||u.disconnect()}),ce(()=>{u==null||u.disconnect()}),Ie(()=>{const t=!!(o.counter||e.counter||e.counterValue),a=!!(t||o.details),[n,x]=ke(I),{modelValue:c,...h}=$.filterProps(e),d={...j.filterProps(e),"onClick:clear":te};return A($,z({ref:D,modelValue:l.value,"onUpdate:modelValue":i=>l.value=i,class:["v-textarea v-text-field",{"v-textarea--prefixed":e.prefix,"v-textarea--suffixed":e.suffix,"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-textarea--auto-grow":e.autoGrow,"v-textarea--no-resize":e.noResize||e.autoGrow,"v-input--plain-underlined":S.value},e.class],style:[{"--v-textarea-max-height":e.maxHeight?B(e.maxHeight):void 0,"--v-textarea-scroll-bar-width":B(R.value)},e.style]},n,h,{centerAffix:y.value===1&&!S.value,focused:V.value}),{...o,default:i=>{let{id:g,isDisabled:_,isDirty:p,isReadonly:le,isValid:ne,hasDetails:oe}=i;return A(j,z({ref:b,style:{"--v-textarea-control-height":T.value},onClick:Z,onMousedown:ee,"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"]},d,{id:g.value,active:Y.value||p.value,labelId:`${g.value}-label`,centerAffix:y.value===1&&!S.value,dirty:p.value||e.dirty,disabled:_.value,focused:V.value,details:oe.value,error:ne.value===!1}),{...o,default:ue=>{let{props:{class:G,...E},controlRef:ie}=ue;return r(M,null,[e.prefix&&r("span",{class:"v-text-field__prefix"},[e.prefix]),U(r("textarea",z({ref:H=>v.value=ie.value=H,class:G,value:l.value,onInput:ae,autofocus:e.autofocus,readonly:le.value,disabled:_.value,placeholder:e.placeholder,rows:e.rows,name:C.fieldName.value,autocomplete:C.fieldAutocomplete.value,onFocus:N,onBlur:J,"aria-labelledby":`${g.value}-label`},E,x),null),[[O,{handler:K},null,{once:!0}]]),e.autoGrow&&U(r("textarea",{class:fe([G,"v-textarea__sizer"]),id:`${E.id}-sizer`,"onUpdate:modelValue":H=>l.value=H,ref:m,readonly:!0,"aria-hidden":"true"},null),[[de,l.value]]),e.suffix&&r("span",{class:"v-text-field__suffix"},[e.suffix])])}})},details:a?i=>{var g;return r(M,null,[(g=o.details)==null?void 0:g.call(o,i),t&&r(M,null,[r("span",null,null),A(he,{active:e.persistentCounter||V.value,value:L.value,max:Q.value,disabled:e.disabled},o.counter)])])}:void 0})}),be({},D,b,v)}});export{Te as V}; diff --git a/assets/VTooltip-C2Bprg_f.js b/assets/VTooltip-CbK3h4lM.js similarity index 62% rename from assets/VTooltip-C2Bprg_f.js rename to assets/VTooltip-CbK3h4lM.js index f85901c..0b93336 100644 --- a/assets/VTooltip-C2Bprg_f.js +++ b/assets/VTooltip-CbK3h4lM.js @@ -1 +1 @@ -import{H as h,A as u,C as O,M as p}from"./index-_6IQhlPZ.js";import{f as x,n as F,u as I,p as T,a5 as A}from"./vendor-vuetify-ChAgIwn2.js";import{E as C,j as R,m as d,e as n,t as v,b as k}from"./vendor-vue-H0jQBZ7T.js";const w=T({id:String,interactive:Boolean,text:String,...A(p({closeOnBack:!1,location:"end",locationStrategy:"connected",eager:!0,minWidth:0,offset:10,openOnClick:!1,openOnHover:!0,origin:"auto",scrim:!1,scrollStrategy:"reposition",transition:null}),["absolute","retainFocus","captureFocus","disableInitialFocus"])},"VTooltip"),j=x()({name:"VTooltip",props:w(),emits:{"update:modelValue":t=>!0},setup(t,m){let{slots:e}=m;const i=F(t,"modelValue"),{scopeId:f}=h(),g=C(),r=v(()=>t.id||`v-tooltip-${g}`),l=k(),V=n(()=>t.location.split(" ").length>1?t.location:t.location+" center"),P=n(()=>t.origin==="auto"||t.origin==="overlap"||t.origin.split(" ").length>1||t.location.split(" ").length>1?t.origin:t.origin+" center"),b=v(()=>t.transition!=null?t.transition:i.value?"scale-transition":"fade-transition"),y=n(()=>d({"aria-describedby":r.value},t.activatorProps));return I(()=>{const S=u.filterProps(t);return R(u,d({ref:l,class:["v-tooltip",{"v-tooltip--interactive":t.interactive},t.class],style:t.style,id:r.value},S,{modelValue:i.value,"onUpdate:modelValue":o=>i.value=o,transition:b.value,absolute:!0,location:V.value,origin:P.value,role:"tooltip",activatorProps:y.value,_disableGlobalStack:!0},f),{activator:e.activator,default:function(){var c;for(var o=arguments.length,s=new Array(o),a=0;a!0},setup(t,m){let{slots:e}=m;const i=F(t,"modelValue"),{scopeId:f}=h(),g=R(),r=v(()=>t.id||`v-tooltip-${g}`),l=w(),V=n(()=>t.location.split(" ").length>1?t.location:t.location+" center"),P=n(()=>t.origin==="auto"||t.origin==="overlap"||t.origin.split(" ").length>1||t.location.split(" ").length>1?t.origin:t.origin+" center"),b=v(()=>t.transition!=null?t.transition:i.value?"scale-transition":"fade-transition"),y=n(()=>d({"aria-describedby":r.value},t.activatorProps));return I(()=>{const S=u.filterProps(t);return k(u,d({ref:l,class:["v-tooltip",{"v-tooltip--interactive":t.interactive},t.class],style:t.style,id:r.value},S,{modelValue:i.value,"onUpdate:modelValue":o=>i.value=o,transition:b.value,absolute:!0,location:V.value,origin:P.value,role:"tooltip",activatorProps:y.value,_disableGlobalStack:!0},f),{activator:e.activator,default:function(){var c;for(var o=arguments.length,s=new Array(o),a=0;a[i(_,{elevation:"1"},{prepend:r(()=>[i(n,{icon:"mdi-arrow-left",variant:"text",onClick:t[0]||(t[0]=h=>o.$router.back())})]),default:r(()=>[i(g,{class:"text-h6"},{default:r(()=>[...t[1]||(t[1]=[l(" 编辑考试配置 ",-1)])]),_:1}),i(v),i(n,{loading:a.saving,color:"success","prepend-icon":"mdi-content-save",variant:"outlined",onClick:s.save},{default:r(()=>[...t[2]||(t[2]=[l(" 保存 ",-1)])]),_:1},8,["loading","onClick"])]),_:1}),i(p,{class:"py-4",style:{"max-width":"1200px"}},{default:r(()=>[a.id?(m(),d(c,{key:0,ref:"editor","config-id":a.id,onError:s.onError,onSaved:s.onSaved},null,8,["config-id","onError","onSaved"])):x("",!0)]),_:1})]),_:1})}const L=u(E,[["render",V]]);export{L as default}; diff --git a/assets/_id_-BLE1RHCF.js b/assets/_id_-BLE1RHCF.js new file mode 100644 index 0000000..7886a7f --- /dev/null +++ b/assets/_id_-BLE1RHCF.js @@ -0,0 +1 @@ +import{d as h}from"./dataProvider-bUkzKSNt.js";import{j as i,N as T,n as _,X as d,_ as u,Z as l,Y as p,a1 as o,S as f,k as B,ad as U,F as y,a2 as J,a8 as O,$ as b}from"./vendor-vue-B2vxubPy.js";import{m as F,_ as z,i as r,f as I,e as c,c as D,r as k,F as M,d as V,l as R,n as C,p as v,q as N,k as A,o as S}from"./index-CFUCTEXJ.js";import{V as E,a as P}from"./VAppBarTitle-vVO0I21U.js";import{V as x}from"./VTextField-ByBRYn99.js";import{f as K,u as j,p as q,k as W}from"./vendor-vuetify-s-yw_Hr8.js";import{V as X}from"./VCheckboxBtn-DOw5vjpY.js";import{V as Y}from"./VChip-DR8Ljy6R.js";import{V as Z}from"./VTextarea-BxmmuONa.js";import{V as G}from"./VSwitch-DKh_Uq_M.js";import{V as H}from"./VContainer-RtoBp6rB.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-CdH9Xda8.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";const Q=q({start:Boolean,end:Boolean,...W(),...F()},"VListItemAction"),$=K()({name:"VListItemAction",props:Q(),setup(t,e){let{slots:n}=e;return j(()=>i(t.tag,{class:_(["v-list-item-action",{"v-list-item-action--start":t.start,"v-list-item-action--end":t.end},t.class]),style:T(t.style)},n)),{}}}),ee={data(){return{listId:null,list:null,items:[],originalItems:[],newItemName:"",sortSeed:"1",sortType:"default",isRandomSorted:!1,deleteDialog:{show:!1,title:"",text:"",itemId:null,action:null},isRenaming:!1,newListName:"",itemDialog:{show:!1,item:null,isEditing:!1,editedItem:null}}},computed:{sortedItems(){return this.sortType==="completed"?[...this.items].sort((t,e)=>t.completed===e.completed?0:t.completed?1:-1):this.items},hasCompletedItems(){return this.items.some(t=>t.completed)}},async created(){this.listId=this.$route.params.id,await Promise.all([this.loadListInfo(),this.loadItems()])},methods:{async loadListInfo(){try{const t=await h.loadData("classworks-list-info");t&&Array.isArray(t)&&(this.list=t.find(e=>e.id===this.listId)),this.list||this.$router.push("/list")}catch(t){console.error("Failed to load list info",t),this.$router.push("/list")}},startRenaming(){this.list&&(this.newListName=this.list.name,this.isRenaming=!0)},cancelRenaming(){this.isRenaming=!1,this.newListName=""},async saveListName(){if(this.newListName.trim())try{const t=await h.loadData("classworks-list-info");if(t&&Array.isArray(t)){const e=t.findIndex(n=>n.id===this.listId);e!==-1&&(t[e].name=this.newListName.trim(),await h.saveData("classworks-list-info",t),this.list.name=this.newListName.trim())}this.isRenaming=!1}catch(t){console.error("Failed to update list name",t)}},async loadItems(){try{let t=await h.loadData(`classworks-list-${this.listId}`);(!t||!Array.isArray(t))&&(t=[],await h.saveData(`classworks-list-${this.listId}`,t)),this.items=t.map(e=>typeof e.completed>"u"?{id:e.id||Date.now()+Math.floor(Math.random()*1e3),name:e.name,completed:!1,description:e.description||""}:{...e,description:e.description||""}),this.originalItems=JSON.parse(JSON.stringify(this.items))}catch(t){console.error("Failed to load items",t),this.items=[],this.originalItems=[]}},async addItem(){if(!this.newItemName)return;const t={id:Date.now().toString(),name:this.newItemName,completed:!1,description:""};this.items.push(t),this.originalItems.push(JSON.parse(JSON.stringify(t))),await this.saveItems(),this.newItemName=""},openItemDetails(t){this.itemDialog={show:!0,item:t,isEditing:!1,editedItem:null}},startEditingItem(){this.itemDialog.item&&(this.itemDialog.isEditing=!0,this.itemDialog.editedItem=JSON.parse(JSON.stringify(this.itemDialog.item)))},cancelEditingItem(){this.itemDialog.isEditing=!1,this.itemDialog.editedItem=null},async saveItemChanges(){if(!this.itemDialog.editedItem)return;const t=this.items.findIndex(e=>e.id===this.itemDialog.item.id);if(t!==-1){this.items[t]={...this.itemDialog.editedItem};const e=this.originalItems.findIndex(n=>n.id===this.itemDialog.item.id);e!==-1&&(this.originalItems[e]=JSON.parse(JSON.stringify(this.items[t]))),await this.saveItems(),this.itemDialog.item=this.items[t],this.itemDialog.isEditing=!1,this.itemDialog.editedItem=null}},confirmDeleteItem(t){var n;const e=this.items.find(g=>g.id===t);e&&(this.deleteDialog={show:!0,title:"删除确认",text:`确定要删除 "${e.name}" 吗?`,itemId:t,action:"deleteItem"},this.itemDialog.show&&((n=this.itemDialog.item)==null?void 0:n.id)===t&&(this.itemDialog.show=!1))},confirmDeleteCompleted(){const t=this.items.filter(e=>e.completed).length;this.deleteDialog={show:!0,title:"删除已完成项目",text:`确定要删除所有已完成的项目吗?(共 ${t} 项)`,action:"deleteCompleted"}},confirmDelete(){this.deleteDialog.action==="deleteItem"&&this.deleteDialog.itemId?this.deleteItem(this.deleteDialog.itemId):this.deleteDialog.action==="deleteCompleted"&&this.deleteCompletedItems(),this.deleteDialog.show=!1},async deleteItem(t){this.items=this.items.filter(e=>e.id!==t),this.originalItems=this.originalItems.filter(e=>e.id!==t),await this.saveItems()},async deleteCompletedItems(){this.items=this.items.filter(t=>!t.completed),this.originalItems=this.originalItems.filter(t=>!t.completed),await this.saveItems()},async updateItemStatus(t,e){const n=this.items.find(g=>g.id===t);if(n){n.completed=e;const g=this.originalItems.find(s=>s.id===t);g&&(g.completed=e),await this.saveItems()}},async saveItems(){try{await h.saveData(`classworks-list-${this.listId}`,this.items)}catch(t){console.error("Failed to save items",t)}},randomSort(){const t=this.items.map(e=>{const n=this.hashCode(e.id+this.sortSeed);return{...e,randomValue:this.seededRandom(n)}});t.sort((e,n)=>e.randomValue-n.randomValue),this.items=t.map(e=>{const n={...e};return delete n.randomValue,n}),this.isRandomSorted=!0,this.saveItems()},resetSort(){this.items=JSON.parse(JSON.stringify(this.originalItems)),this.isRandomSorted=!1,this.saveItems()},hashCode(t){let e=0;for(let n=0;n[i(r,{icon:"mdi-arrow-left",variant:"text",onClick:e[0]||(e[0]=a=>t.$router.push("/"))})]),default:l(()=>[s.list&&!s.isRenaming?(d(),p(E,{key:0,class:"text-h6"},{default:l(()=>[o(f(s.list.name),1)]),_:1})):(d(),p(E,{key:1,class:"text-h6"},{default:l(()=>[...e[14]||(e[14]=[o("列表",-1)])]),_:1}))]),_:1}),i(H,null,{default:l(()=>[B("div",te,[i(r,{border:"",class:"mr-2",icon:"",to:"/list"},{default:l(()=>[i(I,null,{default:l(()=>[...e[15]||(e[15]=[o("mdi-arrow-left",-1)])]),_:1})]),_:1}),s.list&&!s.isRenaming?(d(),u("h1",ie,[o(f(s.list.name)+" ",1),i(r,{border:"",icon:"",size:"small",onClick:m.startRenaming},{default:l(()=>[i(I,null,{default:l(()=>[...e[16]||(e[16]=[o("mdi-pencil",-1)])]),_:1})]),_:1},8,["onClick"])])):s.list&&s.isRenaming?(d(),u("div",le,[i(x,{modelValue:s.newListName,"onUpdate:modelValue":e[1]||(e[1]=a=>s.newListName=a),autofocus:"",class:"mr-2",density:"compact","hide-details":"",label:"列表名称",style:{"min-width":"200px"},onKeyup:U(m.saveListName,["enter"])},null,8,["modelValue","onKeyup"]),i(r,{class:"mr-2",color:"primary",size:"small",onClick:m.saveListName},{default:l(()=>[i(I,null,{default:l(()=>[...e[17]||(e[17]=[o("mdi-check",-1)])]),_:1})]),_:1},8,["onClick"]),i(r,{color:"error",size:"small",onClick:m.cancelRenaming},{default:l(()=>[i(I,null,{default:l(()=>[...e[18]||(e[18]=[o("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])])):(d(),u("h1",se," 加载中... "))]),i(c,{border:"",class:"mb-5",rounded:"xl"},{default:l(()=>[i(D,{class:"d-flex align-center"},{default:l(()=>[e[21]||(e[21]=o(" 项目列表 ",-1)),i(k),i(M,{modelValue:s.sortType,"onUpdate:modelValue":e[2]||(e[2]=a=>s.sortType=a),mandatory:""},{default:l(()=>[i(r,{value:"default"},{default:l(()=>[i(I,null,{default:l(()=>[...e[19]||(e[19]=[o("mdi-sort-alphabetical-ascending",-1)])]),_:1})]),_:1}),i(r,{value:"completed"},{default:l(()=>[i(I,null,{default:l(()=>[...e[20]||(e[20]=[o("mdi-check-circle-outline",-1)])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),m.sortedItems.length===0?(d(),p(V,{key:0},{default:l(()=>[...e[22]||(e[22]=[o(" 暂无项目,请添加新项目 ",-1)])]),_:1})):(d(),p(R,{key:1,"select-strategy":"leaf"},{default:l(()=>[(d(!0),u(y,null,J(m.sortedItems,(a,w)=>(d(),p(C,{key:a.id,class:_({"text-decoration-line-through":a.completed}),onClick:L=>m.openItemDetails(a)},{prepend:l(()=>[i($,{start:""},{default:l(()=>[i(X,{"model-value":a.completed,"onUpdate:modelValue":L=>m.updateItemStatus(a.id,L),onClick:e[3]||(e[3]=O(()=>{},["stop"]))},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024)]),append:l(()=>[o(f(w+1),1)]),default:l(()=>[o(" "+f(a.name)+" ",1),i(v,null,{default:l(()=>[o(f(a.description),1)]),_:2},1024)]),_:2},1032,["class","onClick"]))),128))]),_:1})),m.sortedItems.length>0?(d(),p(N,{key:2},{default:l(()=>[i(k),i(r,{disabled:!m.hasCompletedItems,color:"error","prepend-icon":"mdi-delete-sweep",onClick:m.confirmDeleteCompleted},{default:l(()=>[...e[23]||(e[23]=[o(" 删除已完成项目 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})):b("",!0)]),_:1}),i(c,{border:"",class:"mb-5",rounded:"xl"},{default:l(()=>[i(D,null,{default:l(()=>[...e[24]||(e[24]=[o("添加新项目",-1)])]),_:1}),i(V,null,{default:l(()=>[i(x,{modelValue:s.newItemName,"onUpdate:modelValue":e[4]||(e[4]=a=>s.newItemName=a),rules:[a=>!!a||"名称不能为空"],label:"项目名称"},null,8,["modelValue","rules"]),i(r,{disabled:!s.newItemName,color:"primary",onClick:m.addItem},{default:l(()=>[...e[25]||(e[25]=[o(" 添加 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1}),i(c,{border:"",class:"mb-5",rounded:"xl"},{default:l(()=>[i(D,null,{default:l(()=>[...e[26]||(e[26]=[o("列表排序",-1)])]),_:1}),i(V,null,{default:l(()=>[i(x,{modelValue:s.sortSeed,"onUpdate:modelValue":e[5]||(e[5]=a=>s.sortSeed=a),class:"mb-3",hint:"输入相同的种子值可以得到相同的排序结果",label:"排序种子 (任意数字或文本)","persistent-hint":""},null,8,["modelValue"]),i(r,{class:"mr-2",color:"primary",onClick:m.randomSort},{default:l(()=>[...e[27]||(e[27]=[o(" 随机排序 ",-1)])]),_:1},8,["onClick"]),i(r,{variant:"text",onClick:m.resetSort},{default:l(()=>[...e[28]||(e[28]=[o(" 撤销 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1}),i(A,{modelValue:s.deleteDialog.show,"onUpdate:modelValue":e[7]||(e[7]=a=>s.deleteDialog.show=a),"max-width":"500"},{default:l(()=>[i(c,{border:"",rounded:"xl"},{default:l(()=>[i(D,null,{default:l(()=>[o(f(s.deleteDialog.title),1)]),_:1}),i(V,null,{default:l(()=>[o(f(s.deleteDialog.text),1)]),_:1}),i(N,null,{default:l(()=>[i(k),i(r,{color:"primary",variant:"text",onClick:e[6]||(e[6]=a=>s.deleteDialog.show=!1)},{default:l(()=>[...e[29]||(e[29]=[o(" 取消 ",-1)])]),_:1}),i(r,{color:"error",variant:"text",onClick:m.confirmDelete},{default:l(()=>[...e[30]||(e[30]=[o(" 确认删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),i(A,{modelValue:s.itemDialog.show,"onUpdate:modelValue":e[13]||(e[13]=a=>s.itemDialog.show=a),"max-width":"600"},{default:l(()=>[i(c,{border:"",rounded:"xl"},{default:l(()=>[i(D,null,{default:l(()=>[s.itemDialog.isEditing?(d(),u("span",ae,"编辑项目")):(d(),u("span",oe,"项目详情"))]),_:1}),i(V,null,{default:l(()=>[!s.itemDialog.isEditing&&s.itemDialog.item?(d(),u("div",ne,[i(R,null,{default:l(()=>[i(C,null,{default:l(()=>[i(S,{class:"text-subtitle-1 font-weight-bold"},{default:l(()=>[o(f(s.itemDialog.item.name),1)]),_:1}),i(v,null,{default:l(()=>[o(f(s.itemDialog.item.id),1)]),_:1})]),_:1}),i(C,null,{default:l(()=>[i(S,{class:"text-subtitle-1 font-weight-bold"},{default:l(()=>[...e[31]||(e[31]=[o("状态",-1)])]),_:1}),i(v,null,{default:l(()=>[i(Y,{color:s.itemDialog.item.completed?"success":"warning",size:"small"},{default:l(()=>[o(f(s.itemDialog.item.completed?"已完成":"未完成"),1)]),_:1},8,["color"])]),_:1})]),_:1}),s.itemDialog.item.description?(d(),p(C,{key:0},{default:l(()=>[i(S,{class:"text-subtitle-1 font-weight-bold"},{default:l(()=>[...e[32]||(e[32]=[o("描述",-1)])]),_:1}),i(v,null,{default:l(()=>[o(f(s.itemDialog.item.description),1)]),_:1})]),_:1})):b("",!0)]),_:1})])):s.itemDialog.isEditing&&s.itemDialog.item?(d(),u("div",me,[i(x,{modelValue:s.itemDialog.editedItem.name,"onUpdate:modelValue":e[8]||(e[8]=a=>s.itemDialog.editedItem.name=a),class:"mb-3",label:"名称",variant:"outlined"},null,8,["modelValue"]),i(Z,{modelValue:s.itemDialog.editedItem.description,"onUpdate:modelValue":e[9]||(e[9]=a=>s.itemDialog.editedItem.description=a),class:"mb-3",label:"描述",rows:"3",variant:"outlined"},null,8,["modelValue"]),i(G,{modelValue:s.itemDialog.editedItem.completed,"onUpdate:modelValue":e[10]||(e[10]=a=>s.itemDialog.editedItem.completed=a),color:"success","hide-details":"",label:"已完成"},null,8,["modelValue"])])):b("",!0)]),_:1}),i(N,null,{default:l(()=>[i(k),s.itemDialog.isEditing?(d(),u(y,{key:1},[i(r,{color:"success",variant:"text",onClick:m.saveItemChanges},{default:l(()=>[...e[36]||(e[36]=[o(" 保存 ",-1)])]),_:1},8,["onClick"]),i(r,{color:"secondary",variant:"text",onClick:m.cancelEditingItem},{default:l(()=>[...e[37]||(e[37]=[o(" 取消 ",-1)])]),_:1},8,["onClick"])],64)):(d(),u(y,{key:0},[i(r,{color:"primary",variant:"text",onClick:m.startEditingItem},{default:l(()=>[...e[33]||(e[33]=[o(" 编辑 ",-1)])]),_:1},8,["onClick"]),i(r,{color:"error",variant:"text",onClick:e[11]||(e[11]=a=>{var w;return m.confirmDeleteItem((w=s.itemDialog.item)==null?void 0:w.id)})},{default:l(()=>[...e[34]||(e[34]=[o(" 删除 ",-1)])]),_:1}),i(r,{color:"secondary",variant:"text",onClick:e[12]||(e[12]=a=>s.itemDialog.show=!1)},{default:l(()=>[...e[35]||(e[35]=[o(" 关闭 ",-1)])]),_:1})],64))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})],64)}const xe=z(ee,[["render",de]]);export{xe as default}; diff --git a/assets/_id_-BRXvajnS.js b/assets/_id_-BRXvajnS.js deleted file mode 100644 index d19074e..0000000 --- a/assets/_id_-BRXvajnS.js +++ /dev/null @@ -1 +0,0 @@ -import{d as h}from"./dataProvider-BwUtbSl1.js";import{j as i,N as T,n as _,X as d,_ as u,Z as l,Y as p,a1 as o,S as f,k as B,ac as U,F as y,a2 as J,ad as O,$ as b}from"./vendor-vue-H0jQBZ7T.js";import{m as F,_ as z,l as r,h as I,e as c,c as D,o as k,K as M,d as V,j as R,k as C,t as v,q as N,p as A,s as S}from"./index-_6IQhlPZ.js";import{V as E,a as P}from"./VAppBarTitle-Cvegbk0-.js";import{V as x}from"./VTextField-CuXGbmmC.js";import{f as K,u as j,p as q,k as W}from"./vendor-vuetify-ChAgIwn2.js";import{V as X}from"./VCheckboxBtn-DCkgbmVP.js";import{V as Y}from"./VChip-Veb3ShEh.js";import{V as Z}from"./VTextarea-CCCqy4pz.js";import{V as G}from"./VSwitch-CdpUb5tZ.js";import{V as H}from"./VContainer-Bg8RevuO.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-BGVL0kta.js";import"./autofocus-BrMOVHY_.js";const Q=q({start:Boolean,end:Boolean,...W(),...F()},"VListItemAction"),$=K()({name:"VListItemAction",props:Q(),setup(t,e){let{slots:n}=e;return j(()=>i(t.tag,{class:_(["v-list-item-action",{"v-list-item-action--start":t.start,"v-list-item-action--end":t.end},t.class]),style:T(t.style)},n)),{}}}),ee={data(){return{listId:null,list:null,items:[],originalItems:[],newItemName:"",sortSeed:"1",sortType:"default",isRandomSorted:!1,deleteDialog:{show:!1,title:"",text:"",itemId:null,action:null},isRenaming:!1,newListName:"",itemDialog:{show:!1,item:null,isEditing:!1,editedItem:null}}},computed:{sortedItems(){return this.sortType==="completed"?[...this.items].sort((t,e)=>t.completed===e.completed?0:t.completed?1:-1):this.items},hasCompletedItems(){return this.items.some(t=>t.completed)}},async created(){this.listId=this.$route.params.id,await Promise.all([this.loadListInfo(),this.loadItems()])},methods:{async loadListInfo(){try{const t=await h.loadData("classworks-list-info");t&&Array.isArray(t)&&(this.list=t.find(e=>e.id===this.listId)),this.list||this.$router.push("/list")}catch(t){console.error("Failed to load list info",t),this.$router.push("/list")}},startRenaming(){this.list&&(this.newListName=this.list.name,this.isRenaming=!0)},cancelRenaming(){this.isRenaming=!1,this.newListName=""},async saveListName(){if(this.newListName.trim())try{const t=await h.loadData("classworks-list-info");if(t&&Array.isArray(t)){const e=t.findIndex(n=>n.id===this.listId);e!==-1&&(t[e].name=this.newListName.trim(),await h.saveData("classworks-list-info",t),this.list.name=this.newListName.trim())}this.isRenaming=!1}catch(t){console.error("Failed to update list name",t)}},async loadItems(){try{let t=await h.loadData(`classworks-list-${this.listId}`);(!t||!Array.isArray(t))&&(t=[],await h.saveData(`classworks-list-${this.listId}`,t)),this.items=t.map(e=>typeof e.completed>"u"?{id:e.id||Date.now()+Math.floor(Math.random()*1e3),name:e.name,completed:!1,description:e.description||""}:{...e,description:e.description||""}),this.originalItems=JSON.parse(JSON.stringify(this.items))}catch(t){console.error("Failed to load items",t),this.items=[],this.originalItems=[]}},async addItem(){if(!this.newItemName)return;const t={id:Date.now().toString(),name:this.newItemName,completed:!1,description:""};this.items.push(t),this.originalItems.push(JSON.parse(JSON.stringify(t))),await this.saveItems(),this.newItemName=""},openItemDetails(t){this.itemDialog={show:!0,item:t,isEditing:!1,editedItem:null}},startEditingItem(){this.itemDialog.item&&(this.itemDialog.isEditing=!0,this.itemDialog.editedItem=JSON.parse(JSON.stringify(this.itemDialog.item)))},cancelEditingItem(){this.itemDialog.isEditing=!1,this.itemDialog.editedItem=null},async saveItemChanges(){if(!this.itemDialog.editedItem)return;const t=this.items.findIndex(e=>e.id===this.itemDialog.item.id);if(t!==-1){this.items[t]={...this.itemDialog.editedItem};const e=this.originalItems.findIndex(n=>n.id===this.itemDialog.item.id);e!==-1&&(this.originalItems[e]=JSON.parse(JSON.stringify(this.items[t]))),await this.saveItems(),this.itemDialog.item=this.items[t],this.itemDialog.isEditing=!1,this.itemDialog.editedItem=null}},confirmDeleteItem(t){var n;const e=this.items.find(g=>g.id===t);e&&(this.deleteDialog={show:!0,title:"删除确认",text:`确定要删除 "${e.name}" 吗?`,itemId:t,action:"deleteItem"},this.itemDialog.show&&((n=this.itemDialog.item)==null?void 0:n.id)===t&&(this.itemDialog.show=!1))},confirmDeleteCompleted(){const t=this.items.filter(e=>e.completed).length;this.deleteDialog={show:!0,title:"删除已完成项目",text:`确定要删除所有已完成的项目吗?(共 ${t} 项)`,action:"deleteCompleted"}},confirmDelete(){this.deleteDialog.action==="deleteItem"&&this.deleteDialog.itemId?this.deleteItem(this.deleteDialog.itemId):this.deleteDialog.action==="deleteCompleted"&&this.deleteCompletedItems(),this.deleteDialog.show=!1},async deleteItem(t){this.items=this.items.filter(e=>e.id!==t),this.originalItems=this.originalItems.filter(e=>e.id!==t),await this.saveItems()},async deleteCompletedItems(){this.items=this.items.filter(t=>!t.completed),this.originalItems=this.originalItems.filter(t=>!t.completed),await this.saveItems()},async updateItemStatus(t,e){const n=this.items.find(g=>g.id===t);if(n){n.completed=e;const g=this.originalItems.find(s=>s.id===t);g&&(g.completed=e),await this.saveItems()}},async saveItems(){try{await h.saveData(`classworks-list-${this.listId}`,this.items)}catch(t){console.error("Failed to save items",t)}},randomSort(){const t=this.items.map(e=>{const n=this.hashCode(e.id+this.sortSeed);return{...e,randomValue:this.seededRandom(n)}});t.sort((e,n)=>e.randomValue-n.randomValue),this.items=t.map(e=>{const n={...e};return delete n.randomValue,n}),this.isRandomSorted=!0,this.saveItems()},resetSort(){this.items=JSON.parse(JSON.stringify(this.originalItems)),this.isRandomSorted=!1,this.saveItems()},hashCode(t){let e=0;for(let n=0;n[i(r,{icon:"mdi-arrow-left",variant:"text",onClick:e[0]||(e[0]=a=>t.$router.push("/"))})]),default:l(()=>[s.list&&!s.isRenaming?(d(),p(E,{key:0,class:"text-h6"},{default:l(()=>[o(f(s.list.name),1)]),_:1})):(d(),p(E,{key:1,class:"text-h6"},{default:l(()=>[...e[14]||(e[14]=[o("列表",-1)])]),_:1}))]),_:1}),i(H,null,{default:l(()=>[B("div",te,[i(r,{border:"",class:"mr-2",icon:"",to:"/list"},{default:l(()=>[i(I,null,{default:l(()=>[...e[15]||(e[15]=[o("mdi-arrow-left",-1)])]),_:1})]),_:1}),s.list&&!s.isRenaming?(d(),u("h1",ie,[o(f(s.list.name)+" ",1),i(r,{border:"",icon:"",size:"small",onClick:m.startRenaming},{default:l(()=>[i(I,null,{default:l(()=>[...e[16]||(e[16]=[o("mdi-pencil",-1)])]),_:1})]),_:1},8,["onClick"])])):s.list&&s.isRenaming?(d(),u("div",le,[i(x,{modelValue:s.newListName,"onUpdate:modelValue":e[1]||(e[1]=a=>s.newListName=a),autofocus:"",class:"mr-2",density:"compact","hide-details":"",label:"列表名称",style:{"min-width":"200px"},onKeyup:U(m.saveListName,["enter"])},null,8,["modelValue","onKeyup"]),i(r,{class:"mr-2",color:"primary",size:"small",onClick:m.saveListName},{default:l(()=>[i(I,null,{default:l(()=>[...e[17]||(e[17]=[o("mdi-check",-1)])]),_:1})]),_:1},8,["onClick"]),i(r,{color:"error",size:"small",onClick:m.cancelRenaming},{default:l(()=>[i(I,null,{default:l(()=>[...e[18]||(e[18]=[o("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])])):(d(),u("h1",se," 加载中... "))]),i(c,{border:"",class:"mb-5",rounded:"xl"},{default:l(()=>[i(D,{class:"d-flex align-center"},{default:l(()=>[e[21]||(e[21]=o(" 项目列表 ",-1)),i(k),i(M,{modelValue:s.sortType,"onUpdate:modelValue":e[2]||(e[2]=a=>s.sortType=a),mandatory:""},{default:l(()=>[i(r,{value:"default"},{default:l(()=>[i(I,null,{default:l(()=>[...e[19]||(e[19]=[o("mdi-sort-alphabetical-ascending",-1)])]),_:1})]),_:1}),i(r,{value:"completed"},{default:l(()=>[i(I,null,{default:l(()=>[...e[20]||(e[20]=[o("mdi-check-circle-outline",-1)])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),m.sortedItems.length===0?(d(),p(V,{key:0},{default:l(()=>[...e[22]||(e[22]=[o(" 暂无项目,请添加新项目 ",-1)])]),_:1})):(d(),p(R,{key:1,"select-strategy":"leaf"},{default:l(()=>[(d(!0),u(y,null,J(m.sortedItems,(a,w)=>(d(),p(C,{key:a.id,class:_({"text-decoration-line-through":a.completed}),onClick:L=>m.openItemDetails(a)},{prepend:l(()=>[i($,{start:""},{default:l(()=>[i(X,{"model-value":a.completed,"onUpdate:modelValue":L=>m.updateItemStatus(a.id,L),onClick:e[3]||(e[3]=O(()=>{},["stop"]))},null,8,["model-value","onUpdate:modelValue"])]),_:2},1024)]),append:l(()=>[o(f(w+1),1)]),default:l(()=>[o(" "+f(a.name)+" ",1),i(v,null,{default:l(()=>[o(f(a.description),1)]),_:2},1024)]),_:2},1032,["class","onClick"]))),128))]),_:1})),m.sortedItems.length>0?(d(),p(N,{key:2},{default:l(()=>[i(k),i(r,{disabled:!m.hasCompletedItems,color:"error","prepend-icon":"mdi-delete-sweep",onClick:m.confirmDeleteCompleted},{default:l(()=>[...e[23]||(e[23]=[o(" 删除已完成项目 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})):b("",!0)]),_:1}),i(c,{border:"",class:"mb-5",rounded:"xl"},{default:l(()=>[i(D,null,{default:l(()=>[...e[24]||(e[24]=[o("添加新项目",-1)])]),_:1}),i(V,null,{default:l(()=>[i(x,{modelValue:s.newItemName,"onUpdate:modelValue":e[4]||(e[4]=a=>s.newItemName=a),rules:[a=>!!a||"名称不能为空"],label:"项目名称"},null,8,["modelValue","rules"]),i(r,{disabled:!s.newItemName,color:"primary",onClick:m.addItem},{default:l(()=>[...e[25]||(e[25]=[o(" 添加 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1}),i(c,{border:"",class:"mb-5",rounded:"xl"},{default:l(()=>[i(D,null,{default:l(()=>[...e[26]||(e[26]=[o("列表排序",-1)])]),_:1}),i(V,null,{default:l(()=>[i(x,{modelValue:s.sortSeed,"onUpdate:modelValue":e[5]||(e[5]=a=>s.sortSeed=a),class:"mb-3",hint:"输入相同的种子值可以得到相同的排序结果",label:"排序种子 (任意数字或文本)","persistent-hint":""},null,8,["modelValue"]),i(r,{class:"mr-2",color:"primary",onClick:m.randomSort},{default:l(()=>[...e[27]||(e[27]=[o(" 随机排序 ",-1)])]),_:1},8,["onClick"]),i(r,{variant:"text",onClick:m.resetSort},{default:l(()=>[...e[28]||(e[28]=[o(" 撤销 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1}),i(A,{modelValue:s.deleteDialog.show,"onUpdate:modelValue":e[7]||(e[7]=a=>s.deleteDialog.show=a),"max-width":"500"},{default:l(()=>[i(c,{border:"",rounded:"xl"},{default:l(()=>[i(D,null,{default:l(()=>[o(f(s.deleteDialog.title),1)]),_:1}),i(V,null,{default:l(()=>[o(f(s.deleteDialog.text),1)]),_:1}),i(N,null,{default:l(()=>[i(k),i(r,{color:"primary",variant:"text",onClick:e[6]||(e[6]=a=>s.deleteDialog.show=!1)},{default:l(()=>[...e[29]||(e[29]=[o(" 取消 ",-1)])]),_:1}),i(r,{color:"error",variant:"text",onClick:m.confirmDelete},{default:l(()=>[...e[30]||(e[30]=[o(" 确认删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),i(A,{modelValue:s.itemDialog.show,"onUpdate:modelValue":e[13]||(e[13]=a=>s.itemDialog.show=a),"max-width":"600"},{default:l(()=>[i(c,{border:"",rounded:"xl"},{default:l(()=>[i(D,null,{default:l(()=>[s.itemDialog.isEditing?(d(),u("span",ae,"编辑项目")):(d(),u("span",oe,"项目详情"))]),_:1}),i(V,null,{default:l(()=>[!s.itemDialog.isEditing&&s.itemDialog.item?(d(),u("div",ne,[i(R,null,{default:l(()=>[i(C,null,{default:l(()=>[i(S,{class:"text-subtitle-1 font-weight-bold"},{default:l(()=>[o(f(s.itemDialog.item.name),1)]),_:1}),i(v,null,{default:l(()=>[o(f(s.itemDialog.item.id),1)]),_:1})]),_:1}),i(C,null,{default:l(()=>[i(S,{class:"text-subtitle-1 font-weight-bold"},{default:l(()=>[...e[31]||(e[31]=[o("状态",-1)])]),_:1}),i(v,null,{default:l(()=>[i(Y,{color:s.itemDialog.item.completed?"success":"warning",size:"small"},{default:l(()=>[o(f(s.itemDialog.item.completed?"已完成":"未完成"),1)]),_:1},8,["color"])]),_:1})]),_:1}),s.itemDialog.item.description?(d(),p(C,{key:0},{default:l(()=>[i(S,{class:"text-subtitle-1 font-weight-bold"},{default:l(()=>[...e[32]||(e[32]=[o("描述",-1)])]),_:1}),i(v,null,{default:l(()=>[o(f(s.itemDialog.item.description),1)]),_:1})]),_:1})):b("",!0)]),_:1})])):s.itemDialog.isEditing&&s.itemDialog.item?(d(),u("div",me,[i(x,{modelValue:s.itemDialog.editedItem.name,"onUpdate:modelValue":e[8]||(e[8]=a=>s.itemDialog.editedItem.name=a),class:"mb-3",label:"名称",variant:"outlined"},null,8,["modelValue"]),i(Z,{modelValue:s.itemDialog.editedItem.description,"onUpdate:modelValue":e[9]||(e[9]=a=>s.itemDialog.editedItem.description=a),class:"mb-3",label:"描述",rows:"3",variant:"outlined"},null,8,["modelValue"]),i(G,{modelValue:s.itemDialog.editedItem.completed,"onUpdate:modelValue":e[10]||(e[10]=a=>s.itemDialog.editedItem.completed=a),color:"success","hide-details":"",label:"已完成"},null,8,["modelValue"])])):b("",!0)]),_:1}),i(N,null,{default:l(()=>[i(k),s.itemDialog.isEditing?(d(),u(y,{key:1},[i(r,{color:"success",variant:"text",onClick:m.saveItemChanges},{default:l(()=>[...e[36]||(e[36]=[o(" 保存 ",-1)])]),_:1},8,["onClick"]),i(r,{color:"secondary",variant:"text",onClick:m.cancelEditingItem},{default:l(()=>[...e[37]||(e[37]=[o(" 取消 ",-1)])]),_:1},8,["onClick"])],64)):(d(),u(y,{key:0},[i(r,{color:"primary",variant:"text",onClick:m.startEditingItem},{default:l(()=>[...e[33]||(e[33]=[o(" 编辑 ",-1)])]),_:1},8,["onClick"]),i(r,{color:"error",variant:"text",onClick:e[11]||(e[11]=a=>{var w;return m.confirmDeleteItem((w=s.itemDialog.item)==null?void 0:w.id)})},{default:l(()=>[...e[34]||(e[34]=[o(" 删除 ",-1)])]),_:1}),i(r,{color:"secondary",variant:"text",onClick:e[12]||(e[12]=a=>s.itemDialog.show=!1)},{default:l(()=>[...e[35]||(e[35]=[o(" 关闭 ",-1)])]),_:1})],64))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})],64)}const ve=z(ee,[["render",de]]);export{ve as default}; diff --git a/assets/_id_-CM4di5Oi.js b/assets/_id_-CM4di5Oi.js new file mode 100644 index 0000000..8c19573 --- /dev/null +++ b/assets/_id_-CM4di5Oi.js @@ -0,0 +1 @@ +import f from"./ExamConfigEditor-wXpc4eEz.js";import{_ as u,r as v,i as n}from"./index-CFUCTEXJ.js";import{a as _,V as g}from"./VAppBarTitle-vVO0I21U.js";import{V as p}from"./VContainer-RtoBp6rB.js";import{X as m,Y as d,Z as o,j as i,a1 as l,$ as x}from"./vendor-vue-B2vxubPy.js";import"./dataProvider-bUkzKSNt.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-CdH9Xda8.js";import"./VAlert-DO0N7oM6.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./VSkeletonLoader-AysIn-20.js";import"./VTooltip-CbK3h4lM.js";import"./VChip-DR8Ljy6R.js";import"./VRow-Dw4j2TKL.js";import"./VTextField-ByBRYn99.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";import"./VTextarea-BxmmuONa.js";import"./VSwitch-DKh_Uq_M.js";import"./VAutocomplete-CrWVUMTj.js";import"./VSelect-Fp4MUhJW.js";import"./VSheet-B8D7XEg5.js";import"./VCheckboxBtn-DOw5vjpY.js";import"./VDatePicker-BWfVQdXc.js";import"./VBadge-C7i5WU2T.js";const E={name:"ExamEditorPage",components:{ExamConfigEditor:f},data(){return{id:this.$route.params.id,saving:!1}},watch:{"$route.params.id"(r){this.id=r}},methods:{async save(){if(this.$refs.editor){this.saving=!0;try{await this.$refs.editor.saveConfig()}finally{this.saving=!1}}},onSaved(){var r,t;(t=(r=this.$toast)==null?void 0:r.success)==null||t.call(r,"保存成功")},onError(r){var t,e;(e=(t=this.$toast)==null?void 0:t.error)==null||e.call(t,r||"保存失败")}}};function V(r,t,e,C,a,s){const c=f;return m(),d(p,{class:"pa-0"},{default:o(()=>[i(_,{elevation:"1"},{prepend:o(()=>[i(n,{icon:"mdi-arrow-left",variant:"text",onClick:t[0]||(t[0]=h=>r.$router.back())})]),default:o(()=>[i(g,{class:"text-h6"},{default:o(()=>[...t[1]||(t[1]=[l(" 编辑考试配置 ",-1)])]),_:1}),i(v),i(n,{loading:a.saving,color:"success","prepend-icon":"mdi-content-save",variant:"outlined",onClick:s.save},{default:o(()=>[...t[2]||(t[2]=[l(" 保存 ",-1)])]),_:1},8,["loading","onClick"])]),_:1}),i(p,{class:"py-4",style:{"max-width":"1200px"}},{default:o(()=>[a.id?(m(),d(c,{key:0,ref:"editor","config-id":a.id,onError:s.onError,onSaved:s.onSaved},null,8,["config-id","onError","onSaved"])):x("",!0)]),_:1})]),_:1})}const M=u(E,[["render",V]]);export{M as default}; diff --git a/assets/authorize-D748DFqj.js b/assets/authorize-D748DFqj.js new file mode 100644 index 0000000..529f7fa --- /dev/null +++ b/assets/authorize-D748DFqj.js @@ -0,0 +1 @@ +import{aa as V,ab as g,D as _,X as u,Y as l,Z as e,j as a,a1 as c,S as i,$ as d,k,b as m}from"./vendor-vue-B2vxubPy.js";import{s as p,g as y,e as C,c as h,d as x,h as S,q as T,r as B,i as N}from"./index-CFUCTEXJ.js";import{V as b,a as R}from"./VRow-Dw4j2TKL.js";import{V as j}from"./VContainer-RtoBp6rB.js";import"./vendor-vuetify-s-yw_Hr8.js";const H={__name:"authorize",setup(q){const f=V(),n=g(),s=m("processing"),r=m("正在验证授权信息...");_(async()=>{try{const t=f.query.token;if(!t){s.value="error",r.value="未获取到授权令牌";return}p("server.kvToken",t);const o=y("device.uuid");o&&o!=="00000000-0000-4000-8000-000000000000"?(p("device.uuid","00000000-0000-4000-8000-000000000000"),r.value="授权成功!已完成数据迁移。"):r.value="授权成功!",s.value="success",n.push("/")}catch(t){console.error("授权处理失败:",t),s.value="error",r.value=`授权失败: ${t.message}`}});const v=()=>{n.push("/")};return(t,o)=>(u(),l(j,{class:"fill-height",fluid:""},{default:e(()=>[a(b,{align:"center",justify:"center"},{default:e(()=>[a(R,{cols:"12",md:"6",sm:"8"},{default:e(()=>[a(C,null,{default:e(()=>[a(h,{class:"text-h5"},{default:e(()=>[c(i(s.value==="processing"?"正在处理授权...":s.value==="success"?"授权成功":"授权失败"),1)]),_:1}),a(x,null,{default:e(()=>[s.value==="processing"?(u(),l(S,{key:0,class:"mb-4",color:"primary",indeterminate:""})):d("",!0),k("p",null,i(r.value),1)]),_:1}),s.value!=="processing"?(u(),l(T,{key:0},{default:e(()=>[a(B),a(N,{color:"primary",onClick:v},{default:e(()=>[...o[0]||(o[0]=[c("返回首页",-1)])]),_:1})]),_:1})):d("",!0)]),_:1})]),_:1})]),_:1})]),_:1}))}};export{H as default}; diff --git a/assets/authorize-TN65-hp6.js b/assets/authorize-TN65-hp6.js deleted file mode 100644 index 0cc2094..0000000 --- a/assets/authorize-TN65-hp6.js +++ /dev/null @@ -1 +0,0 @@ -import{a9 as V,aa as g,D as _,X as u,Y as l,Z as e,j as s,a1 as c,S as i,$ as d,k,b as m}from"./vendor-vue-H0jQBZ7T.js";import{v as p,g as y,e as C,c as h,d as x,B,q as S,o as T,l as N}from"./index-_6IQhlPZ.js";import{V as R,a as b}from"./VRow-WkEz3xRr.js";import{V as j}from"./VContainer-Bg8RevuO.js";import"./vendor-vuetify-ChAgIwn2.js";const H={__name:"authorize",setup(q){const f=V(),n=g(),a=m("processing"),r=m("正在验证授权信息...");_(async()=>{try{const t=f.query.token;if(!t){a.value="error",r.value="未获取到授权令牌";return}p("server.kvToken",t);const o=y("device.uuid");o&&o!=="00000000-0000-4000-8000-000000000000"?(p("device.uuid","00000000-0000-4000-8000-000000000000"),r.value="授权成功!已完成数据迁移。"):r.value="授权成功!",a.value="success",n.push("/")}catch(t){console.error("授权处理失败:",t),a.value="error",r.value=`授权失败: ${t.message}`}});const v=()=>{n.push("/")};return(t,o)=>(u(),l(j,{class:"fill-height",fluid:""},{default:e(()=>[s(R,{align:"center",justify:"center"},{default:e(()=>[s(b,{cols:"12",md:"6",sm:"8"},{default:e(()=>[s(C,null,{default:e(()=>[s(h,{class:"text-h5"},{default:e(()=>[c(i(a.value==="processing"?"正在处理授权...":a.value==="success"?"授权成功":"授权失败"),1)]),_:1}),s(x,null,{default:e(()=>[a.value==="processing"?(u(),l(B,{key:0,class:"mb-4",color:"primary",indeterminate:""})):d("",!0),k("p",null,i(r.value),1)]),_:1}),a.value!=="processing"?(u(),l(S,{key:0},{default:e(()=>[s(T),s(N,{color:"primary",onClick:v},{default:e(()=>[...o[0]||(o[0]=[c("返回首页",-1)])]),_:1})]),_:1})):d("",!0)]),_:1})]),_:1})]),_:1})]),_:1}))}};export{H as default}; diff --git a/assets/autofocus-BAgnxQiD.js b/assets/autofocus-BAgnxQiD.js new file mode 100644 index 0000000..7e25a01 --- /dev/null +++ b/assets/autofocus-BAgnxQiD.js @@ -0,0 +1 @@ +import{j as t,R as X,V as Z,k as l,N as A,n as E,t as s,E as J,o as ve,m as C,F as fe,b as $,e as h,s as me}from"./vendor-vue-B2vxubPy.js";import{a3 as ge,au as be,j as ye,Y as Ce,a8 as he,H as Ie,G as ke,Z as _e,a9 as xe,ar as Ve,ab as Pe,$ as Se}from"./index-CFUCTEXJ.js";import{f as D,u as N,p as F,k as M,h as Fe,A as Be,P as Le,T as Re,a4 as $e,s as we,I as w,m as Te,ag as T,a6 as Ae}from"./vendor-vuetify-s-yw_Hr8.js";import{a as Ee,u as De,b as Ne,f as Me}from"./VLabel-CU-8PdVS.js";const Oe=F({active:Boolean,disabled:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...M(),...be({transition:{component:ye}})},"VCounter"),Ye=D()({name:"VCounter",functional:!0,props:Oe(),setup(e,r){let{slots:o}=r;const d=s(()=>e.max?`${e.value} / ${e.max}`:String(e.value));return N(()=>t(ge,{transition:e.transition},{default:()=>[X(l("div",{class:E(["v-counter",{"text-error":e.max&&!e.disabled&&parseFloat(e.value)>parseFloat(e.max)},e.class]),style:A(e.style)},[o.default?o.default({counter:d.value,max:e.max,value:e.value}):d.value]),[[Z,e.active]])]})),{}}}),qe=F({floating:Boolean,...M()},"VFieldLabel"),S=D()({name:"VFieldLabel",props:qe(),setup(e,r){let{slots:o}=r;return N(()=>t(Ee,{class:E(["v-field-label",{"v-field-label--floating":e.floating},e.class]),style:A(e.style)},o)),{}}}),He=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],Ue=F({appendInnerIcon:w,bgColor:String,clearable:Boolean,clearIcon:{type:w,default:"$clear"},active:Boolean,centerAffix:{type:Boolean,default:void 0},color:String,baseColor:String,dirty:Boolean,disabled:{type:Boolean,default:null},glow:Boolean,error:Boolean,flat:Boolean,iconColor:[Boolean,String],label:String,persistentClear:Boolean,prependInnerIcon:w,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:e=>He.includes(e)},"onClick:clear":T(),"onClick:appendInner":T(),"onClick:prependInner":T(),...M(),...Se(),...Pe(),...Te()},"VField"),Ge=D()({name:"VField",inheritAttrs:!1,props:{id:String,details:Boolean,labelId:String,...Me(),...Ue()},emits:{"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,r){let{attrs:o,emit:d,slots:a}=r;const{themeClasses:c}=Fe(e),{loaderClasses:K}=Ce(e),{focusClasses:Q,isFocused:B,focus:I,blur:k}=De(e),{InputIcon:L}=Ne(e),{roundedClasses:ee}=he(e),{rtlClasses:ae}=Be(),m=s(()=>e.dirty||e.active),O=s(()=>!!(e.label||a.label)),b=s(()=>!e.singleLine&&O.value),le=J(),g=h(()=>e.id||`input-${le}`),q=s(()=>e.details?`${g.value}-messages`:void 0),H=$(),_=$(),U=$(),j=h(()=>["plain","underlined"].includes(e.variant)),p=h(()=>e.error||e.disabled?void 0:m.value&&B.value?e.color:e.baseColor),x=h(()=>{if(!(!e.iconColor||e.glow&&!B.value))return e.iconColor===!0?p.value:e.iconColor}),{backgroundColorClasses:ne,backgroundColorStyles:te}=Ie(()=>e.bgColor),{textColorClasses:z,textColorStyles:W}=ke(p);ve(m,n=>{if(b.value&&!Le()){const u=H.value.$el,v=_.value.$el;requestAnimationFrame(()=>{const f=Re(u),i=v.getBoundingClientRect(),V=i.x-f.x,P=i.y-f.y-(f.height/2-i.height/2),Y=i.width/.75,se=Math.abs(Y-f.width)>1?{maxWidth:we(Y)}:void 0,re=getComputedStyle(u),G=getComputedStyle(v),de=parseFloat(re.transitionDuration)*1e3||150,ue=parseFloat(G.getPropertyValue("--v-field-label-scale")),ce=G.getPropertyValue("color");u.style.visibility="visible",v.style.visibility="hidden",$e(u,{transform:`translate(${V}px, ${P}px) scale(${ue})`,color:ce,...se},{duration:de,easing:Ae,direction:n?"normal":"reverse"}).finished.then(()=>{u.style.removeProperty("visibility"),v.style.removeProperty("visibility")})})}},{flush:"post"});const y=h(()=>({isActive:m,isFocused:B,controlRef:U,iconColor:x,blur:k,focus:I})),R=s(()=>{const n=!m.value;return{"aria-hidden":n,for:n?void 0:g.value}}),oe=s(()=>{const n=b.value&&m.value;return{"aria-hidden":n,for:n?void 0:g.value}});function ie(n){n.target!==document.activeElement&&n.preventDefault()}return N(()=>{var V;const n=e.variant==="outlined",u=!!(a["prepend-inner"]||e.prependInnerIcon),v=!!(e.clearable||a.clear)&&!e.disabled,f=!!(a["append-inner"]||e.appendInnerIcon||v),i=()=>a.label?a.label({...y.value,label:e.label,props:{for:g.value}}):e.label;return l("div",C({class:["v-field",{"v-field--active":m.value,"v-field--appended":f,"v-field--center-affix":e.centerAffix??!j.value,"v-field--disabled":e.disabled,"v-field--dirty":e.dirty,"v-field--error":e.error,"v-field--glow":e.glow,"v-field--flat":e.flat,"v-field--has-background":!!e.bgColor,"v-field--persistent-clear":e.persistentClear,"v-field--prepended":u,"v-field--reverse":e.reverse,"v-field--single-line":e.singleLine,"v-field--no-label":!i(),[`v-field--variant-${e.variant}`]:!0},c.value,ne.value,Q.value,K.value,ee.value,ae.value,e.class],style:[te.value,e.style],onClick:ie},o),[l("div",{class:"v-field__overlay"},null),t(_e,{name:"v-field",active:!!e.loading,color:e.error?"error":typeof e.loading=="string"?e.loading:e.color},{default:a.loader}),u&&l("div",{key:"prepend",class:"v-field__prepend-inner"},[a["prepend-inner"]?a["prepend-inner"](y.value):e.prependInnerIcon&&t(L,{key:"prepend-icon",name:"prependInner",color:x.value},null)]),l("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(e.variant)&&b.value&&t(S,C({key:"floating-label",ref:_,class:[z.value],floating:!0},R.value,{style:W.value}),{default:()=>[i()]}),O.value&&t(S,C({key:"label",ref:H,id:e.labelId},oe.value),{default:()=>[i()]}),((V=a.default)==null?void 0:V.call(a,{...y.value,props:{id:g.value,class:"v-field__input","aria-describedby":q.value},focus:I,blur:k}))??l("div",{id:g.value,class:"v-field__input","aria-describedby":q.value},null)]),v&&t(Ve,{key:"clear"},{default:()=>[X(l("div",{class:"v-field__clearable",onMousedown:P=>{P.preventDefault(),P.stopPropagation()}},[t(xe,{defaults:{VIcon:{icon:e.clearIcon}}},{default:()=>[a.clear?a.clear({...y.value,props:{onFocus:I,onBlur:k,onClick:e["onClick:clear"],tabindex:-1}}):t(L,{name:"clear",onFocus:I,onBlur:k,tabindex:-1},null)]})]),[[Z,e.dirty]])]}),f&&l("div",{key:"append",class:"v-field__append-inner"},[a["append-inner"]?a["append-inner"](y.value):e.appendInnerIcon&&t(L,{key:"append-icon",name:"appendInner",color:x.value},null)]),l("div",{class:E(["v-field__outline",z.value]),style:A(W.value)},[n&&l(fe,null,[l("div",{class:"v-field__outline__start"},null),b.value&&l("div",{class:"v-field__outline__notch"},[t(S,C({ref:_,floating:!0},R.value),{default:()=>[i()]})]),l("div",{class:"v-field__outline__end"},null)]),j.value&&b.value&&t(S,C({ref:_,floating:!0},R.value),{default:()=>[i()]})])])}),{controlRef:U,fieldIconColor:x}}}),Xe=F({autocomplete:String},"autocomplete");function Ze(e){const r=J(),o=me(0),d=s(()=>e.autocomplete==="suppress"),a=s(()=>{if(e.name)return d.value?`${e.name}-${r}-${o.value}`:e.name}),c=s(()=>d.value?"off":e.autocomplete);return{isSuppressing:d,fieldAutocomplete:c,fieldName:a,update:()=>o.value=new Date().getTime()}}function Je(e){function r(o,d){if(!e.autofocus||!o)return;const a=d[0].target,c=a.matches("input,textarea")?a:a.querySelector("input,textarea");c==null||c.focus()}return{onIntersect:r}}export{Ge as V,Ye as a,Je as b,Xe as c,Ue as m,Ze as u}; diff --git a/assets/autofocus-BrMOVHY_.js b/assets/autofocus-BrMOVHY_.js deleted file mode 100644 index 517ca0d..0000000 --- a/assets/autofocus-BrMOVHY_.js +++ /dev/null @@ -1 +0,0 @@ -import{h as Fe,D as ce,a2 as ve,aD as fe,aw as ge,G as De,b as $e,a as Me,I as Re,X as Ae,a7 as Ee,E as Le,Y as Te,a8 as pe,ap as ze,aa as Ne,Z as Oe}from"./index-_6IQhlPZ.js";import{f as j,u as U,p as F,m as se,k as H,ag as L,an as je,ap as Ue,w as le,g as me,n as oe,l as He,C as de,h as ye,A as be,I as Y,aj as Ke,P as We,T as qe,a4 as Xe,s as Ye,a6 as Ge}from"./vendor-vuetify-ChAgIwn2.js";import{k as v,N as K,n as W,j as y,m as z,e as f,t as g,o as N,d as he,b as O,s as te,p as Ze,aj as Je,E as ie,a0 as Qe,A as ea,D as aa,I as na,u as la,R as Ce,V as Ve,F as ta}from"./vendor-vue-H0jQBZ7T.js";const ia=F({text:String,onClick:L(),...H(),...se()},"VLabel"),sa=j()({name:"VLabel",props:ia(),setup(e,l){let{slots:o}=l;return U(()=>{var n;return v("label",{class:W(["v-label",{"v-label--clickable":!!e.onClick},e.class]),style:K(e.style),onClick:e.onClick},[e.text,(n=o.default)==null?void 0:n.call(o)])}),{}}});function ke(e){const{t:l}=je();function o(n){let{name:t,color:a,...b}=n;const m={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[t],h=e[`onClick:${t}`];function V(s){s.key!=="Enter"&&s.key!==" "||(s.preventDefault(),s.stopPropagation(),Ue(h,new PointerEvent("click",s)))}const u=h&&m?l(`$vuetify.input.${m}`,e.label??""):void 0;return y(Fe,z({icon:e[`${t}Icon`],"aria-label":u,onClick:h,onKeydown:V,color:a},b),null)}return{InputIcon:o}}const oa=F({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...H(),...fe({transition:{component:ge,leaveAbsolute:!0,group:!0}})},"VMessages"),ua=j()({name:"VMessages",props:oa(),setup(e,l){let{slots:o}=l;const n=f(()=>le(e.messages)),{textColorClasses:t,textColorStyles:a}=ce(()=>e.color);return U(()=>y(ve,{transition:e.transition,tag:"div",class:W(["v-messages",t.value,e.class]),style:K([a.value,e.style])},{default:()=>[e.active&&n.value.map((b,m)=>v("div",{class:"v-messages__message",key:`${m}-${n.value}`},[o.message?o.message({message:b}):b]))]})),{}}}),Ie=F({focused:Boolean,"onUpdate:focused":L()},"focus");function ra(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:me();const o=oe(e,"focused"),n=g(()=>({[`${l}--focused`]:o.value}));function t(){o.value=!0}function a(){o.value=!1}return{focusClasses:n,isFocused:o,focus:t,blur:a}}const Se=Symbol.for("vuetify:form"),Sa=F({disabled:Boolean,fastFail:Boolean,readonly:Boolean,modelValue:{type:Boolean,default:null},validateOn:{type:String,default:"input"}},"form");function xa(e){const l=oe(e,"modelValue"),o=g(()=>e.disabled),n=g(()=>e.readonly),t=te(!1),a=O([]),b=O([]);async function m(){const u=[];let s=!0;b.value=[],t.value=!0;for(const r of a.value){const d=await r.validate();if(d.length>0&&(s=!1,u.push({id:r.id,errorMessages:d})),!s&&e.fastFail)break}return b.value=u,t.value=!1,{valid:s,errors:b.value}}function h(){a.value.forEach(u=>u.reset())}function V(){a.value.forEach(u=>u.resetValidation())}return N(a,()=>{let u=0,s=0;const r=[];for(const d of a.value)d.isValid===!1?(s++,r.push({id:d.id,errorMessages:d.errorMessages})):d.isValid===!0&&u++;b.value=r,l.value=s>0?!1:u===a.value.length?!0:null},{deep:!0,flush:"post"}),Ze(Se,{register:u=>{let{id:s,vm:r,validate:d,reset:k,resetValidation:D}=u;a.value.some(C=>C.id===s),a.value.push({id:s,validate:d,reset:k,resetValidation:D,vm:Je(r),isValid:null,errorMessages:[]})},unregister:u=>{a.value=a.value.filter(s=>s.id!==u)},update:(u,s,r)=>{const d=a.value.find(k=>k.id===u);d&&(d.isValid=s,d.errorMessages=r)},isDisabled:o,isReadonly:n,isValidating:t,isValid:l,items:a,validateOn:g(()=>e.validateOn)}),{errors:b,isDisabled:o,isReadonly:n,isValidating:t,isValid:l,items:a,validate:m,reset:h,resetValidation:V}}function da(e){const l=he(Se,null);return{...l,isReadonly:f(()=>!!((e==null?void 0:e.readonly)??(l==null?void 0:l.isReadonly.value))),isDisabled:f(()=>!!((e==null?void 0:e.disabled)??(l==null?void 0:l.isDisabled.value)))}}const ca=Symbol.for("vuetify:rules");function va(e){const l=he(ca,null);if(!e){if(!l)throw new Error("Could not find Vuetify rules injection");return l.aliases}return(l==null?void 0:l.resolve(e))??g(e)}const fa=F({disabled:{type:Boolean,default:null},error:Boolean,errorMessages:{type:[Array,String],default:()=>[]},maxErrors:{type:[Number,String],default:1},name:String,label:String,readonly:{type:Boolean,default:null},rules:{type:Array,default:()=>[]},modelValue:null,validateOn:String,validationValue:null,...Ie()},"validation");function ga(e){let l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:me(),o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ie();const n=oe(e,"modelValue"),t=f(()=>e.validationValue===void 0?n.value:e.validationValue),a=da(e),b=va(()=>e.rules),m=O([]),h=te(!0),V=f(()=>!!(le(n.value===""?null:n.value).length||le(t.value===""?null:t.value).length)),u=f(()=>{var i;return(i=e.errorMessages)!=null&&i.length?le(e.errorMessages).concat(m.value).slice(0,Math.max(0,Number(e.maxErrors))):m.value}),s=f(()=>{var B;let i=(e.validateOn??((B=a.validateOn)==null?void 0:B.value))||"input";i==="lazy"&&(i="input lazy"),i==="eager"&&(i="input eager");const c=new Set((i==null?void 0:i.split(" "))??[]);return{input:c.has("input"),blur:c.has("blur")||c.has("input")||c.has("invalid-input"),invalidInput:c.has("invalid-input"),lazy:c.has("lazy"),eager:c.has("eager")}}),r=f(()=>{var i;return e.error||(i=e.errorMessages)!=null&&i.length?!1:e.rules.length?h.value?m.value.length||s.value.lazy?null:!0:!m.value.length:!0}),d=te(!1),k=f(()=>({[`${l}--error`]:r.value===!1,[`${l}--dirty`]:V.value,[`${l}--disabled`]:a.isDisabled.value,[`${l}--readonly`]:a.isReadonly.value})),D=He("validation"),C=f(()=>e.name??la(o));Qe(()=>{var i;(i=a.register)==null||i.call(a,{id:C.value,vm:D,validate:I,reset:R,resetValidation:S})}),ea(()=>{var i;(i=a.unregister)==null||i.call(a,C.value)}),aa(async()=>{var i;s.value.lazy||await I(!s.value.eager),(i=a.update)==null||i.call(a,C.value,r.value,u.value)}),de(()=>s.value.input||s.value.invalidInput&&r.value===!1,()=>{N(t,()=>{if(t.value!=null)I();else if(e.focused){const i=N(()=>e.focused,c=>{c||I(),i()})}})}),de(()=>s.value.blur,()=>{N(()=>e.focused,i=>{i||I()})}),N([r,u],()=>{var i;(i=a.update)==null||i.call(a,C.value,r.value,u.value)});async function R(){n.value=null,await na(),await S()}async function S(){h.value=!0,s.value.lazy?m.value=[]:await I(!s.value.eager)}async function I(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const c=[];d.value=!0;for(const B of b.value){if(c.length>=Number(e.maxErrors??1))break;const _=await(typeof B=="function"?B:()=>B)(t.value);if(_!==!0){if(_!==!1&&typeof _!="string"){console.warn(`${_} is not a valid value. Rule functions must return boolean true or a string.`);continue}c.push(_||"")}}return m.value=c,d.value=!1,h.value=i,m.value}return{errorMessages:u,isDirty:V,isDisabled:a.isDisabled,isReadonly:a.isReadonly,isPristine:h,isValid:r,isValidating:d,reset:R,resetValidation:S,validate:I,validationClasses:k}}const ma=F({id:String,appendIcon:Y,baseColor:String,centerAffix:{type:Boolean,default:!0},color:String,glow:Boolean,iconColor:[Boolean,String],prependIcon:Y,hideDetails:[Boolean,String],hideSpinButtons:Boolean,hint:String,persistentHint:Boolean,messages:{type:[Array,String],default:()=>[]},direction:{type:String,default:"horizontal",validator:e=>["horizontal","vertical"].includes(e)},"onClick:prepend":L(),"onClick:append":L(),...H(),...Re(),...Ke(Me(),["maxWidth","minWidth","width"]),...se(),...fa()},"VInput"),Ba=j()({name:"VInput",props:{...ma()},emits:{"update:modelValue":e=>!0},setup(e,l){let{attrs:o,slots:n,emit:t}=l;const{densityClasses:a}=De(e),{dimensionStyles:b}=$e(e),{themeClasses:m}=ye(e),{rtlClasses:h}=be(),{InputIcon:V}=ke(e),u=ie(),s=f(()=>e.id||`input-${u}`),{errorMessages:r,isDirty:d,isDisabled:k,isReadonly:D,isPristine:C,isValid:R,isValidating:S,reset:I,resetValidation:i,validate:c,validationClasses:B}=ga(e,"v-input",s),T=f(()=>{var P;return(P=e.errorMessages)!=null&&P.length||!C.value&&r.value.length?r.value:e.hint&&(e.persistentHint||e.focused)?e.hint:e.messages}),_=g(()=>T.value.length>0),$=g(()=>!e.hideDetails||e.hideDetails==="auto"&&(_.value||!!n.details)),G=f(()=>$.value?`${s.value}-messages`:void 0),p=f(()=>({id:s,messagesId:G,isDirty:d,isDisabled:k,isReadonly:D,isPristine:C,isValid:R,isValidating:S,hasDetails:$,reset:I,resetValidation:i,validate:c})),Z=g(()=>e.error||e.disabled?void 0:e.focused?e.color:e.baseColor),q=g(()=>{if(e.iconColor)return e.iconColor===!0?Z.value:e.iconColor});return U(()=>{var J,Q;const P=!!(n.prepend||e.prependIcon),X=!!(n.append||e.appendIcon);return v("div",{class:W(["v-input",`v-input--${e.direction}`,{"v-input--center-affix":e.centerAffix,"v-input--focused":e.focused,"v-input--glow":e.glow,"v-input--hide-spin-buttons":e.hideSpinButtons},a.value,m.value,h.value,B.value,e.class]),style:K([b.value,e.style])},[P&&v("div",{key:"prepend",class:"v-input__prepend"},[n.prepend?n.prepend(p.value):e.prependIcon&&y(V,{key:"prepend-icon",name:"prepend",color:q.value},null)]),n.default&&v("div",{class:"v-input__control"},[(J=n.default)==null?void 0:J.call(n,p.value)]),X&&v("div",{key:"append",class:"v-input__append"},[n.append?n.append(p.value):e.appendIcon&&y(V,{key:"append-icon",name:"append",color:q.value},null)]),$.value&&v("div",{id:G.value,class:"v-input__details",role:"alert","aria-live":"polite"},[y(ua,{active:_.value,messages:T.value},{message:n.message}),(Q=n.details)==null?void 0:Q.call(n,p.value)])])}),{reset:I,resetValidation:i,validate:c,isValid:R,errorMessages:r}}}),ya=F({active:Boolean,disabled:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...H(),...fe({transition:{component:ge}})},"VCounter"),_a=j()({name:"VCounter",functional:!0,props:ya(),setup(e,l){let{slots:o}=l;const n=g(()=>e.max?`${e.value} / ${e.max}`:String(e.value));return U(()=>y(ve,{transition:e.transition},{default:()=>[Ce(v("div",{class:W(["v-counter",{"text-error":e.max&&!e.disabled&&parseFloat(e.value)>parseFloat(e.max)},e.class]),style:K(e.style)},[o.default?o.default({counter:n.value,max:e.max,value:e.value}):n.value]),[[Ve,e.active]])]})),{}}}),ba=F({floating:Boolean,...H()},"VFieldLabel"),ne=j()({name:"VFieldLabel",props:ba(),setup(e,l){let{slots:o}=l;return U(()=>y(sa,{class:W(["v-field-label",{"v-field-label--floating":e.floating},e.class]),style:K(e.style)},o)),{}}}),ha=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],Ca=F({appendInnerIcon:Y,bgColor:String,clearable:Boolean,clearIcon:{type:Y,default:"$clear"},active:Boolean,centerAffix:{type:Boolean,default:void 0},color:String,baseColor:String,dirty:Boolean,disabled:{type:Boolean,default:null},glow:Boolean,error:Boolean,flat:Boolean,iconColor:[Boolean,String],label:String,persistentClear:Boolean,prependInnerIcon:Y,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:e=>ha.includes(e)},"onClick:clear":L(),"onClick:appendInner":L(),"onClick:prependInner":L(),...H(),...Oe(),...Ne(),...se()},"VField"),Pa=j()({name:"VField",inheritAttrs:!1,props:{id:String,details:Boolean,labelId:String,...Ie(),...Ca()},emits:{"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,l){let{attrs:o,emit:n,slots:t}=l;const{themeClasses:a}=ye(e),{loaderClasses:b}=Ae(e),{focusClasses:m,isFocused:h,focus:V,blur:u}=ra(e),{InputIcon:s}=ke(e),{roundedClasses:r}=Ee(e),{rtlClasses:d}=be(),k=g(()=>e.dirty||e.active),D=g(()=>!!(e.label||t.label)),C=g(()=>!e.singleLine&&D.value),R=ie(),S=f(()=>e.id||`input-${R}`),I=g(()=>e.details?`${S.value}-messages`:void 0),i=O(),c=O(),B=O(),T=f(()=>["plain","underlined"].includes(e.variant)),_=f(()=>e.error||e.disabled?void 0:k.value&&h.value?e.color:e.baseColor),$=f(()=>{if(!(!e.iconColor||e.glow&&!h.value))return e.iconColor===!0?_.value:e.iconColor}),{backgroundColorClasses:G,backgroundColorStyles:p}=Le(()=>e.bgColor),{textColorClasses:Z,textColorStyles:q}=ce(_);N(k,x=>{if(C.value&&!We()){const M=i.value.$el,A=c.value.$el;requestAnimationFrame(()=>{const E=qe(M),w=A.getBoundingClientRect(),ee=w.x-E.x,ae=w.y-E.y-(E.height/2-w.height/2),ue=w.width/.75,xe=Math.abs(ue-E.width)>1?{maxWidth:Ye(ue)}:void 0,Be=getComputedStyle(M),re=getComputedStyle(A),_e=parseFloat(Be.transitionDuration)*1e3||150,Pe=parseFloat(re.getPropertyValue("--v-field-label-scale")),we=re.getPropertyValue("color");M.style.visibility="visible",A.style.visibility="hidden",Xe(M,{transform:`translate(${ee}px, ${ae}px) scale(${Pe})`,color:we,...xe},{duration:_e,easing:Ge,direction:x?"normal":"reverse"}).finished.then(()=>{M.style.removeProperty("visibility"),A.style.removeProperty("visibility")})})}},{flush:"post"});const P=f(()=>({isActive:k,isFocused:h,controlRef:B,iconColor:$,blur:u,focus:V})),X=g(()=>{const x=!k.value;return{"aria-hidden":x,for:x?void 0:S.value}}),J=g(()=>{const x=C.value&&k.value;return{"aria-hidden":x,for:x?void 0:S.value}});function Q(x){x.target!==document.activeElement&&x.preventDefault()}return U(()=>{var ee;const x=e.variant==="outlined",M=!!(t["prepend-inner"]||e.prependInnerIcon),A=!!(e.clearable||t.clear)&&!e.disabled,E=!!(t["append-inner"]||e.appendInnerIcon||A),w=()=>t.label?t.label({...P.value,label:e.label,props:{for:S.value}}):e.label;return v("div",z({class:["v-field",{"v-field--active":k.value,"v-field--appended":E,"v-field--center-affix":e.centerAffix??!T.value,"v-field--disabled":e.disabled,"v-field--dirty":e.dirty,"v-field--error":e.error,"v-field--glow":e.glow,"v-field--flat":e.flat,"v-field--has-background":!!e.bgColor,"v-field--persistent-clear":e.persistentClear,"v-field--prepended":M,"v-field--reverse":e.reverse,"v-field--single-line":e.singleLine,"v-field--no-label":!w(),[`v-field--variant-${e.variant}`]:!0},a.value,G.value,m.value,b.value,r.value,d.value,e.class],style:[p.value,e.style],onClick:Q},o),[v("div",{class:"v-field__overlay"},null),y(Te,{name:"v-field",active:!!e.loading,color:e.error?"error":typeof e.loading=="string"?e.loading:e.color},{default:t.loader}),M&&v("div",{key:"prepend",class:"v-field__prepend-inner"},[t["prepend-inner"]?t["prepend-inner"](P.value):e.prependInnerIcon&&y(s,{key:"prepend-icon",name:"prependInner",color:$.value},null)]),v("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(e.variant)&&C.value&&y(ne,z({key:"floating-label",ref:c,class:[Z.value],floating:!0},X.value,{style:q.value}),{default:()=>[w()]}),D.value&&y(ne,z({key:"label",ref:i,id:e.labelId},J.value),{default:()=>[w()]}),((ee=t.default)==null?void 0:ee.call(t,{...P.value,props:{id:S.value,class:"v-field__input","aria-describedby":I.value},focus:V,blur:u}))??v("div",{id:S.value,class:"v-field__input","aria-describedby":I.value},null)]),A&&y(ze,{key:"clear"},{default:()=>[Ce(v("div",{class:"v-field__clearable",onMousedown:ae=>{ae.preventDefault(),ae.stopPropagation()}},[y(pe,{defaults:{VIcon:{icon:e.clearIcon}}},{default:()=>[t.clear?t.clear({...P.value,props:{onFocus:V,onBlur:u,onClick:e["onClick:clear"],tabindex:-1}}):y(s,{name:"clear",onFocus:V,onBlur:u,tabindex:-1},null)]})]),[[Ve,e.dirty]])]}),E&&v("div",{key:"append",class:"v-field__append-inner"},[t["append-inner"]?t["append-inner"](P.value):e.appendInnerIcon&&y(s,{key:"append-icon",name:"appendInner",color:$.value},null)]),v("div",{class:W(["v-field__outline",Z.value]),style:K(q.value)},[x&&v(ta,null,[v("div",{class:"v-field__outline__start"},null),C.value&&v("div",{class:"v-field__outline__notch"},[y(ne,z({ref:c,floating:!0},X.value),{default:()=>[w()]})]),v("div",{class:"v-field__outline__end"},null)]),T.value&&C.value&&y(ne,z({ref:c,floating:!0},X.value),{default:()=>[w()]})])])}),{controlRef:B,fieldIconColor:$}}}),wa=F({autocomplete:String},"autocomplete");function Fa(e){const l=ie(),o=te(0),n=g(()=>e.autocomplete==="suppress"),t=g(()=>{if(e.name)return n.value?`${e.name}-${l}-${o.value}`:e.name}),a=g(()=>n.value?"off":e.autocomplete);return{isSuppressing:n,fieldAutocomplete:a,fieldName:t,update:()=>o.value=new Date().getTime()}}function Da(e){function l(o,n){if(!e.autofocus||!o)return;const t=n[0].target,a=t.matches("input,textarea")?t:t.querySelector("input,textarea");a==null||a.focus()}return{onIntersect:l}}export{Ba as V,Pa as a,_a as b,ma as c,ke as d,da as e,xa as f,Sa as g,Fa as h,wa as i,Da as j,sa as k,Ca as m,ra as u}; diff --git a/assets/autofocus-D1VSzmed.css b/assets/autofocus-D1VSzmed.css deleted file mode 100644 index 546fc0e..0000000 --- a/assets/autofocus-D1VSzmed.css +++ /dev/null @@ -1 +0,0 @@ -.v-label{align-items:center;color:inherit;display:inline-flex;font-size:1rem;letter-spacing:.009375em;min-width:0;opacity:var(--v-medium-emphasis-opacity);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-label--clickable{cursor:pointer}.v-input{display:grid;flex:1 1 auto;font-size:1rem;font-weight:400;line-height:1.5}.v-input--disabled{pointer-events:none}.v-input--density-default{--v-input-control-height: 56px;--v-input-padding-top: 16px}.v-input--density-comfortable{--v-input-control-height: 48px;--v-input-padding-top: 12px}.v-input--density-compact{--v-input-control-height: 40px;--v-input-padding-top: 8px}.v-input--vertical{grid-template-areas:"append" "control" "prepend";grid-template-rows:max-content auto max-content;grid-template-columns:min-content}.v-input--vertical .v-input__prepend{margin-block-start:16px}.v-input--vertical .v-input__append{margin-block-end:16px}.v-input--horizontal{grid-template-areas:"prepend control append" "a messages b";grid-template-columns:max-content minmax(0,1fr) max-content;grid-template-rows:1fr auto}.v-input--horizontal .v-input__prepend{margin-inline-end:16px}.v-input--horizontal .v-input__append{margin-inline-start:16px}.v-input__details{align-items:flex-end;display:flex;font-size:.75rem;font-weight:400;grid-area:messages;letter-spacing:.0333333333em;line-height:normal;min-height:22px;padding-top:6px;overflow:hidden;justify-content:space-between}.v-input__details>.v-icon,.v-input__prepend>.v-icon,.v-input__append>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-input--disabled .v-input__details>.v-icon,.v-input--disabled .v-input__details .v-messages,.v-input--error .v-input__details>.v-icon,.v-input--error .v-input__details .v-messages,.v-input--disabled .v-input__prepend>.v-icon,.v-input--disabled .v-input__prepend .v-messages,.v-input--error .v-input__prepend>.v-icon,.v-input--error .v-input__prepend .v-messages,.v-input--disabled .v-input__append>.v-icon,.v-input--disabled .v-input__append .v-messages,.v-input--error .v-input__append>.v-icon,.v-input--error .v-input__append .v-messages{opacity:1}.v-input--glow.v-input--focused .v-input__details>.v-icon,.v-input--glow.v-input--focused .v-input__prepend>.v-icon,.v-input--glow.v-input--focused .v-input__append>.v-icon{opacity:1}.v-input--disabled .v-input__details,.v-input--disabled .v-input__prepend,.v-input--disabled .v-input__append{opacity:var(--v-disabled-opacity)}.v-input--error:not(.v-input--disabled) .v-input__details>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__details .v-messages,.v-input--error:not(.v-input--disabled) .v-input__prepend>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__prepend .v-messages,.v-input--error:not(.v-input--disabled) .v-input__append>.v-icon,.v-input--error:not(.v-input--disabled) .v-input__append .v-messages{color:rgb(var(--v-theme-error))}.v-input__prepend,.v-input__append{display:flex;align-items:flex-start;padding-top:var(--v-input-padding-top)}.v-input--center-affix .v-input__prepend,.v-input--center-affix .v-input__append{align-items:center;padding-top:0}.v-input__prepend{grid-area:prepend}.v-input__append{grid-area:append}.v-input__control{display:flex;grid-area:control}.v-input--hide-spin-buttons input::-webkit-outer-spin-button,.v-input--hide-spin-buttons input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.v-input--hide-spin-buttons input[type=number]{-moz-appearance:textfield}.v-input--plain-underlined .v-input__prepend,.v-input--plain-underlined .v-input__append{align-items:flex-start}.v-input--density-default.v-input--plain-underlined .v-input__prepend,.v-input--density-default.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 4px)}.v-input--density-comfortable.v-input--plain-underlined .v-input__prepend,.v-input--density-comfortable.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 2px)}.v-input--density-compact.v-input--plain-underlined .v-input__prepend,.v-input--density-compact.v-input--plain-underlined .v-input__append{padding-top:calc(var(--v-input-padding-top) + 0px)}.v-messages{flex:1 1 auto;font-size:12px;min-height:14px;min-width:1px;opacity:var(--v-medium-emphasis-opacity);position:relative}.v-messages__message{line-height:12px;word-break:break-word;overflow-wrap:break-word;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;transition-duration:.15s}.v-text-field input{color:inherit;flex:1;transition:.15s opacity cubic-bezier(.4,0,.2,1);min-width:0}.v-text-field input:focus,.v-text-field input:active{outline:none}.v-text-field input:invalid{box-shadow:none}.v-text-field .v-field{cursor:text}.v-text-field--prefixed.v-text-field .v-field:not(.v-field--reverse) .v-field__input{--v-field-padding-start: 6px}.v-text-field--suffixed.v-text-field .v-field:not(.v-field--reverse) .v-field__input{--v-field-padding-end: 0}.v-text-field--prefixed.v-text-field .v-field.v-field--reverse .v-field__input{--v-field-padding-end: 6px}.v-text-field--suffixed.v-text-field .v-field.v-field--reverse .v-field__input{--v-field-padding-start: 0}.v-text-field .v-field:not(.v-field--no-label,.v-field--active) input::placeholder{opacity:0}.v-text-field .v-input__details{padding-inline:16px}.v-input--plain-underlined.v-text-field .v-input__details{padding-inline:0}.v-text-field .v-field--single-line input{transition:none}.v-text-field__prefix,.v-text-field__suffix{align-items:center;color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity));cursor:default;display:flex;opacity:0;transition:inherit;white-space:nowrap;min-height:max(var(--v-input-control-height, 56px),1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom));padding-top:calc(var(--v-field-padding-top, 4px) + var(--v-input-padding-top, 0));padding-bottom:var(--v-field-padding-bottom, 6px)}.v-field--active .v-text-field__prefix,.v-field--active .v-text-field__suffix{opacity:1}.v-field--disabled .v-text-field__prefix,.v-field--disabled .v-text-field__suffix{color:rgba(var(--v-theme-on-surface),var(--v-disabled-opacity))}.v-field:not(.v-field--reverse) .v-text-field__prefix{padding-inline-start:var(--v-field-padding-start)}.v-field.v-field--reverse .v-text-field__prefix{padding-inline-end:var(--v-field-padding-end)}.v-field:not(.v-field--reverse) .v-text-field__suffix{padding-inline-end:var(--v-field-padding-end)}.v-field.v-field--reverse .v-text-field__suffix{padding-inline-start:var(--v-field-padding-start)}.v-counter{color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity));flex:0 1 auto;font-size:12px;transition-duration:.15s;white-space:nowrap}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-field{display:grid;grid-template-areas:"prepend-inner field clear append-inner";grid-template-columns:min-content minmax(0,1fr) min-content min-content;font-size:16px;letter-spacing:.009375em;max-width:100%;border-radius:4px;contain:layout;flex:1 0;grid-area:control;position:relative;--v-theme-overlay-multiplier: 1;--v-field-padding-start: 16px;--v-field-padding-end: 16px;--v-field-padding-top: 8px;--v-field-padding-bottom: 4px;--v-field-input-padding-top: calc(var(--v-field-padding-top, 8px) + var(--v-input-padding-top, 0px));--v-field-input-padding-bottom: var(--v-field-padding-bottom, 4px)}.v-field--disabled{opacity:var(--v-disabled-opacity);pointer-events:none}.v-field .v-chip{--v-chip-height: 24px}.v-field--prepended{padding-inline-start:12px}.v-field--appended{padding-inline-end:12px}.v-field--variant-solo,.v-field--variant-solo-filled{background:rgb(var(--v-theme-surface));border-color:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-field--variant-solo,.v-field--variant-solo-filled{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-field--variant-solo-inverted{background:rgb(var(--v-theme-surface));border-color:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-field--variant-solo-inverted{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-field--variant-solo-inverted.v-field--focused{color:rgb(var(--v-theme-on-surface-variant))}.v-field--variant-filled{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-input--density-default .v-field--variant-solo,.v-input--density-default .v-field--variant-solo-inverted,.v-input--density-default .v-field--variant-solo-filled,.v-input--density-default .v-field--variant-filled{--v-input-control-height: 56px;--v-field-padding-bottom: 4px}.v-input--density-comfortable .v-field--variant-solo,.v-input--density-comfortable .v-field--variant-solo-inverted,.v-input--density-comfortable .v-field--variant-solo-filled,.v-input--density-comfortable .v-field--variant-filled{--v-input-control-height: 48px;--v-field-padding-bottom: 0px}.v-input--density-compact .v-field--variant-solo,.v-input--density-compact .v-field--variant-solo-inverted,.v-input--density-compact .v-field--variant-solo-filled,.v-input--density-compact .v-field--variant-filled{--v-input-control-height: 40px;--v-field-padding-bottom: 0px}.v-field--variant-outlined,.v-field--single-line,.v-field--no-label{--v-field-padding-top: 0px}.v-input--density-default .v-field--variant-outlined,.v-input--density-default .v-field--single-line,.v-input--density-default .v-field--no-label{--v-field-padding-bottom: 16px}.v-input--density-comfortable .v-field--variant-outlined,.v-input--density-comfortable .v-field--single-line,.v-input--density-comfortable .v-field--no-label{--v-field-padding-bottom: 12px}.v-input--density-compact .v-field--variant-outlined,.v-input--density-compact .v-field--single-line,.v-input--density-compact .v-field--no-label{--v-field-padding-bottom: 8px}.v-field--variant-plain,.v-field--variant-underlined{border-radius:0;padding:0}.v-field--variant-plain.v-field,.v-field--variant-underlined.v-field{--v-field-padding-start: 0px;--v-field-padding-end: 0px}.v-input--density-default .v-field--variant-plain,.v-input--density-default .v-field--variant-underlined{--v-input-control-height: 48px;--v-field-padding-top: 4px;--v-field-padding-bottom: 4px}.v-input--density-comfortable .v-field--variant-plain,.v-input--density-comfortable .v-field--variant-underlined{--v-input-control-height: 40px;--v-field-padding-top: 2px;--v-field-padding-bottom: 0px}.v-input--density-compact .v-field--variant-plain,.v-input--density-compact .v-field--variant-underlined{--v-input-control-height: 32px;--v-field-padding-top: 0px;--v-field-padding-bottom: 0px}.v-field--flat{box-shadow:none}.v-field--rounded{border-radius:24px}.v-field.v-field--prepended{--v-field-padding-start: 6px}.v-field.v-field--appended{--v-field-padding-end: 6px}.v-field__input{align-items:center;color:inherit;column-gap:2px;display:flex;flex-wrap:wrap;letter-spacing:.009375em;opacity:var(--v-high-emphasis-opacity);min-height:max(var(--v-input-control-height, 56px),1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom));min-width:0;padding-inline:var(--v-field-padding-start) var(--v-field-padding-end);padding-top:var(--v-field-input-padding-top);padding-bottom:var(--v-field-input-padding-bottom);position:relative;width:100%}.v-input--density-default .v-field__input{row-gap:8px}.v-input--density-comfortable .v-field__input{row-gap:6px}.v-input--density-compact .v-field__input{row-gap:4px}.v-field__input input{letter-spacing:inherit}.v-field__input input::placeholder,input.v-field__input::placeholder,textarea.v-field__input::placeholder{color:currentColor;opacity:var(--v-disabled-opacity)}.v-field__input:focus,.v-field__input:active{outline:none}.v-field__input:invalid{box-shadow:none}.v-field__field{flex:1 0;grid-area:field;position:relative;align-items:flex-start;display:flex}.v-field__prepend-inner{grid-area:prepend-inner;padding-inline-end:var(--v-field-padding-after)}.v-field__clearable{grid-area:clear}.v-field__append-inner{grid-area:append-inner;padding-inline-start:var(--v-field-padding-after)}.v-field__append-inner,.v-field__clearable,.v-field__prepend-inner{display:flex;align-items:flex-start;padding-top:var(--v-input-padding-top, 8px)}.v-field--center-affix .v-field__append-inner,.v-field--center-affix .v-field__clearable,.v-field--center-affix .v-field__prepend-inner{align-items:center;padding-top:0}.v-field.v-field--variant-underlined .v-field__append-inner,.v-field.v-field--variant-underlined .v-field__clearable,.v-field.v-field--variant-underlined .v-field__prepend-inner,.v-field.v-field--variant-plain .v-field__append-inner,.v-field.v-field--variant-plain .v-field__clearable,.v-field.v-field--variant-plain .v-field__prepend-inner{align-items:flex-start;padding-top:calc(var(--v-field-padding-top, 8px) + var(--v-input-padding-top, 0px));padding-bottom:var(--v-field-padding-bottom, 4px)}.v-field--focused .v-field__prepend-inner,.v-field--focused .v-field__append-inner{opacity:1}.v-field__prepend-inner>.v-icon,.v-field__append-inner>.v-icon,.v-field__clearable>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-field--disabled .v-field__prepend-inner>.v-icon,.v-field--error .v-field__prepend-inner>.v-icon,.v-field--glow.v-field--focused .v-field__prepend-inner>.v-icon,.v-field--disabled .v-field__append-inner>.v-icon,.v-field--error .v-field__append-inner>.v-icon,.v-field--glow.v-field--focused .v-field__append-inner>.v-icon,.v-field--disabled .v-field__clearable>.v-icon,.v-field--error .v-field__clearable>.v-icon,.v-field--glow.v-field--focused .v-field__clearable>.v-icon{opacity:1}.v-field--error:not(.v-field--disabled) .v-field__prepend-inner>.v-icon,.v-field--error:not(.v-field--disabled) .v-field__append-inner>.v-icon,.v-field--error:not(.v-field--disabled) .v-field__clearable>.v-icon{color:rgb(var(--v-theme-error))}.v-field__clearable{cursor:pointer;opacity:0;overflow:hidden;margin-inline:4px;transition:.15s cubic-bezier(.4,0,.2,1);transition-property:opacity,transform,width}@media (prefers-reduced-motion: reduce){.v-field__clearable{transition-property:opacity}}.v-field--focused .v-field__clearable,.v-field--persistent-clear .v-field__clearable{opacity:1}@media (hover: hover){.v-field:hover .v-field__clearable{opacity:1}}@media (hover: none){.v-field__clearable{opacity:1}}.v-label.v-field-label{contain:layout paint;display:block;margin-inline-start:var(--v-field-padding-start);margin-inline-end:var(--v-field-padding-end);max-width:calc(100% - var(--v-field-padding-start) - var(--v-field-padding-end));pointer-events:none;position:absolute;top:var(--v-input-padding-top);transform-origin:left center;z-index:1}@media (prefers-reduced-motion: no-preference){.v-label.v-field-label{transition:.15s cubic-bezier(.4,0,.2,1);transition-property:opacity,transform}}.v-field--variant-underlined .v-label.v-field-label,.v-field--variant-plain .v-label.v-field-label{top:calc(var(--v-input-padding-top) + var(--v-field-padding-top))}.v-field--center-affix .v-label.v-field-label{top:50%;transform:translateY(-50%)}.v-field--active .v-label.v-field-label{visibility:hidden}.v-field--focused .v-label.v-field-label,.v-field--error .v-label.v-field-label{opacity:1}.v-field--error:not(.v-field--disabled) .v-label.v-field-label{color:rgb(var(--v-theme-error))}.v-label.v-field-label--floating{--v-field-label-scale: .75em;font-size:var(--v-field-label-scale);visibility:hidden}.v-field--variant-outlined .v-label.v-field-label--floating{max-width:100%}.v-field--center-affix .v-label.v-field-label--floating{transform:none}.v-field.v-field--active .v-label.v-field-label--floating{visibility:unset}.v-input--density-default .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-solo-filled .v-label.v-field-label--floating{top:7px}.v-input--density-comfortable .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-solo-filled .v-label.v-field-label--floating{top:5px}.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:3px}.v-field--variant-plain .v-label.v-field-label--floating,.v-field--variant-underlined .v-label.v-field-label--floating{transform:translateY(-16px);margin:0;top:var(--v-input-padding-top)}.v-field--variant-outlined .v-label.v-field-label--floating{transform:translateY(-50%);transform-origin:center;position:static;margin:0 4px}.v-field__outline{--v-field-border-width: 1px;--v-field-border-opacity: .38;align-items:stretch;contain:layout;display:flex;height:100%;left:0;pointer-events:none;position:absolute;right:0;width:100%}@media (hover: hover){.v-field:hover .v-field__outline{--v-field-border-opacity: var(--v-high-emphasis-opacity)}}.v-field--error:not(.v-field--disabled) .v-field__outline{color:rgb(var(--v-theme-error))}.v-field.v-field--focused .v-field__outline,.v-input.v-input--error .v-field__outline{--v-field-border-opacity: 1}.v-field--variant-outlined.v-field--focused .v-field__outline{--v-field-border-width: 2px}.v-field--variant-filled .v-field__outline:before,.v-field--variant-underlined .v-field__outline:before{border-color:currentColor;border-style:solid;border-width:0 0 var(--v-field-border-width);opacity:var(--v-field-border-opacity);transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-filled .v-field__outline:before,.v-field--variant-underlined .v-field__outline:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-filled .v-field__outline:after,.v-field--variant-underlined .v-field__outline:after{border-color:currentColor;border-style:solid;border-width:0 0 2px;transform:scaleX(0);transition:transform .15s cubic-bezier(.4,0,.2,1)}.v-field--variant-filled .v-field__outline:after,.v-field--variant-underlined .v-field__outline:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--focused.v-field--variant-filled .v-field__outline:after,.v-field--focused.v-field--variant-underlined .v-field__outline:after{transform:scaleX(1)}.v-field--variant-outlined .v-field__outline{border-radius:inherit}.v-field--variant-outlined .v-field__outline__start,.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after,.v-field--variant-outlined .v-field__outline__end{border:0 solid currentColor;opacity:var(--v-field-border-opacity)}@media (prefers-reduced-motion: no-preference){.v-field--variant-outlined .v-field__outline__start,.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after,.v-field--variant-outlined .v-field__outline__end{transition:opacity .25s cubic-bezier(.4,0,.2,1)}}.v-field--variant-outlined .v-field__outline__start{flex:0 0 12px;border-top-width:var(--v-field-border-width);border-bottom-width:var(--v-field-border-width);border-inline-start-width:var(--v-field-border-width);border-start-start-radius:inherit;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:inherit}.v-field--rounded.v-field--variant-outlined .v-field__outline__start,[class^=rounded-].v-field--variant-outlined .v-field__outline__start,[class*=" rounded-"].v-field--variant-outlined .v-field__outline__start{flex-basis:calc(var(--v-input-control-height) / 2 + 2px)}.v-field--reverse.v-field--variant-outlined .v-field__outline__start{border-start-start-radius:0;border-start-end-radius:inherit;border-end-end-radius:inherit;border-end-start-radius:0;border-inline-end-width:var(--v-field-border-width);border-inline-start-width:0}.v-field--variant-outlined .v-field__outline__notch{flex:none;position:relative;max-width:calc(100% - 24px)}.v-field--rounded.v-field--variant-outlined .v-field__outline__notch,[class^=rounded-].v-field--variant-outlined .v-field__outline__notch,[class*=" rounded-"].v-field--variant-outlined .v-field__outline__notch{max-width:calc(100% - var(--v-input-control-height))}.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after{opacity:var(--v-field-border-opacity)}.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-outlined .v-field__outline__notch:before{border-width:var(--v-field-border-width) 0 0}.v-field--variant-outlined .v-field__outline__notch:after{bottom:0;border-width:0 0 var(--v-field-border-width)}.v-field--active.v-field--variant-outlined .v-field__outline__notch:before{opacity:0}.v-field--variant-outlined .v-field__outline__end{flex:1;border-top-width:var(--v-field-border-width);border-bottom-width:var(--v-field-border-width);border-inline-end-width:var(--v-field-border-width);border-start-start-radius:0;border-start-end-radius:inherit;border-end-end-radius:inherit;border-end-start-radius:0}.v-field--reverse.v-field--variant-outlined .v-field__outline__end{border-start-start-radius:inherit;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:inherit;border-inline-end-width:0;border-inline-start-width:var(--v-field-border-width)}.v-field__loader{top:calc(100% - 2px);left:0;position:absolute;right:0;width:100%;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;overflow:hidden}.v-field--variant-outlined .v-field__loader{top:calc(100% - 3px);width:calc(100% - 2px);left:1px}.v-field__overlay{border-radius:inherit;pointer-events:none}.v-field__overlay{position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-filled .v-field__overlay{background-color:currentColor;opacity:.04;transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-filled.v-field--has-background .v-field__overlay{opacity:0}@media (hover: hover){.v-field--variant-filled:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-filled.v-field--focused .v-field__overlay{opacity:calc((.04 + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}.v-field--variant-solo-filled .v-field__overlay{background-color:currentColor;opacity:.04;transition:opacity .25s cubic-bezier(.4,0,.2,1)}@media (hover: hover){.v-field--variant-solo-filled:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-solo-filled.v-field--focused .v-field__overlay{opacity:calc((.04 + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}.v-field--variant-solo-inverted .v-field__overlay{transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-solo-inverted.v-field--has-background .v-field__overlay{opacity:0}@media (hover: hover){.v-field--variant-solo-inverted:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-solo-inverted.v-field--focused .v-field__overlay{background-color:rgb(var(--v-theme-surface-variant));opacity:1}.v-field--reverse .v-field__field,.v-field--reverse .v-field__input,.v-field--reverse .v-field__outline{flex-direction:row-reverse}.v-field--reverse .v-field__input,.v-field--reverse input{text-align:end}.v-input--disabled .v-field--variant-filled .v-field__outline:before,.v-input--disabled .v-field--variant-underlined .v-field__outline:before{border-image:repeating-linear-gradient(to right,rgba(var(--v-theme-on-surface),var(--v-disabled-opacity)) 0px,rgba(var(--v-theme-on-surface),var(--v-disabled-opacity)) 2px,transparent 2px,transparent 4px) 1 repeat}.v-field--loading .v-field__outline:after,.v-field--loading .v-field__outline:before{opacity:0}@media (forced-colors: active){.v-field .v-progress-linear{border:none}} diff --git a/assets/autofocus-Gei3DjNm.css b/assets/autofocus-Gei3DjNm.css new file mode 100644 index 0000000..ce412c7 --- /dev/null +++ b/assets/autofocus-Gei3DjNm.css @@ -0,0 +1 @@ +.v-text-field input{color:inherit;flex:1;transition:.15s opacity cubic-bezier(.4,0,.2,1);min-width:0}.v-text-field input:focus,.v-text-field input:active{outline:none}.v-text-field input:invalid{box-shadow:none}.v-text-field .v-field{cursor:text}.v-text-field--prefixed.v-text-field .v-field:not(.v-field--reverse) .v-field__input{--v-field-padding-start: 6px}.v-text-field--suffixed.v-text-field .v-field:not(.v-field--reverse) .v-field__input{--v-field-padding-end: 0}.v-text-field--prefixed.v-text-field .v-field.v-field--reverse .v-field__input{--v-field-padding-end: 6px}.v-text-field--suffixed.v-text-field .v-field.v-field--reverse .v-field__input{--v-field-padding-start: 0}.v-text-field .v-field:not(.v-field--no-label,.v-field--active) input::placeholder{opacity:0}.v-text-field .v-input__details{padding-inline:16px}.v-input--plain-underlined.v-text-field .v-input__details{padding-inline:0}.v-text-field .v-field--single-line input{transition:none}.v-text-field__prefix,.v-text-field__suffix{align-items:center;color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity));cursor:default;display:flex;opacity:0;transition:inherit;white-space:nowrap;min-height:max(var(--v-input-control-height, 56px),1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom));padding-top:calc(var(--v-field-padding-top, 4px) + var(--v-input-padding-top, 0));padding-bottom:var(--v-field-padding-bottom, 6px)}.v-field--active .v-text-field__prefix,.v-field--active .v-text-field__suffix{opacity:1}.v-field--disabled .v-text-field__prefix,.v-field--disabled .v-text-field__suffix{color:rgba(var(--v-theme-on-surface),var(--v-disabled-opacity))}.v-field:not(.v-field--reverse) .v-text-field__prefix{padding-inline-start:var(--v-field-padding-start)}.v-field.v-field--reverse .v-text-field__prefix{padding-inline-end:var(--v-field-padding-end)}.v-field:not(.v-field--reverse) .v-text-field__suffix{padding-inline-end:var(--v-field-padding-end)}.v-field.v-field--reverse .v-text-field__suffix{padding-inline-start:var(--v-field-padding-start)}.v-counter{color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity));flex:0 1 auto;font-size:12px;transition-duration:.15s;white-space:nowrap}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-field{display:grid;grid-template-areas:"prepend-inner field clear append-inner";grid-template-columns:min-content minmax(0,1fr) min-content min-content;font-size:16px;letter-spacing:.009375em;max-width:100%;border-radius:4px;contain:layout;flex:1 0;grid-area:control;position:relative;--v-theme-overlay-multiplier: 1;--v-field-padding-start: 16px;--v-field-padding-end: 16px;--v-field-padding-top: 8px;--v-field-padding-bottom: 4px;--v-field-input-padding-top: calc(var(--v-field-padding-top, 8px) + var(--v-input-padding-top, 0px));--v-field-input-padding-bottom: var(--v-field-padding-bottom, 4px)}.v-field--disabled{opacity:var(--v-disabled-opacity);pointer-events:none}.v-field .v-chip{--v-chip-height: 24px}.v-field--prepended{padding-inline-start:12px}.v-field--appended{padding-inline-end:12px}.v-field--variant-solo,.v-field--variant-solo-filled{background:rgb(var(--v-theme-surface));border-color:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-field--variant-solo,.v-field--variant-solo-filled{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-field--variant-solo-inverted{background:rgb(var(--v-theme-surface));border-color:transparent;color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-field--variant-solo-inverted{box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 1px 5px 0 var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.v-field--variant-solo-inverted.v-field--focused{color:rgb(var(--v-theme-on-surface-variant))}.v-field--variant-filled{border-bottom-left-radius:0;border-bottom-right-radius:0}.v-input--density-default .v-field--variant-solo,.v-input--density-default .v-field--variant-solo-inverted,.v-input--density-default .v-field--variant-solo-filled,.v-input--density-default .v-field--variant-filled{--v-input-control-height: 56px;--v-field-padding-bottom: 4px}.v-input--density-comfortable .v-field--variant-solo,.v-input--density-comfortable .v-field--variant-solo-inverted,.v-input--density-comfortable .v-field--variant-solo-filled,.v-input--density-comfortable .v-field--variant-filled{--v-input-control-height: 48px;--v-field-padding-bottom: 0px}.v-input--density-compact .v-field--variant-solo,.v-input--density-compact .v-field--variant-solo-inverted,.v-input--density-compact .v-field--variant-solo-filled,.v-input--density-compact .v-field--variant-filled{--v-input-control-height: 40px;--v-field-padding-bottom: 0px}.v-field--variant-outlined,.v-field--single-line,.v-field--no-label{--v-field-padding-top: 0px}.v-input--density-default .v-field--variant-outlined,.v-input--density-default .v-field--single-line,.v-input--density-default .v-field--no-label{--v-field-padding-bottom: 16px}.v-input--density-comfortable .v-field--variant-outlined,.v-input--density-comfortable .v-field--single-line,.v-input--density-comfortable .v-field--no-label{--v-field-padding-bottom: 12px}.v-input--density-compact .v-field--variant-outlined,.v-input--density-compact .v-field--single-line,.v-input--density-compact .v-field--no-label{--v-field-padding-bottom: 8px}.v-field--variant-plain,.v-field--variant-underlined{border-radius:0;padding:0}.v-field--variant-plain.v-field,.v-field--variant-underlined.v-field{--v-field-padding-start: 0px;--v-field-padding-end: 0px}.v-input--density-default .v-field--variant-plain,.v-input--density-default .v-field--variant-underlined{--v-input-control-height: 48px;--v-field-padding-top: 4px;--v-field-padding-bottom: 4px}.v-input--density-comfortable .v-field--variant-plain,.v-input--density-comfortable .v-field--variant-underlined{--v-input-control-height: 40px;--v-field-padding-top: 2px;--v-field-padding-bottom: 0px}.v-input--density-compact .v-field--variant-plain,.v-input--density-compact .v-field--variant-underlined{--v-input-control-height: 32px;--v-field-padding-top: 0px;--v-field-padding-bottom: 0px}.v-field--flat{box-shadow:none}.v-field--rounded{border-radius:24px}.v-field.v-field--prepended{--v-field-padding-start: 6px}.v-field.v-field--appended{--v-field-padding-end: 6px}.v-field__input{align-items:center;color:inherit;column-gap:2px;display:flex;flex-wrap:wrap;letter-spacing:.009375em;opacity:var(--v-high-emphasis-opacity);min-height:max(var(--v-input-control-height, 56px),1.5rem + var(--v-field-input-padding-top) + var(--v-field-input-padding-bottom));min-width:0;padding-inline:var(--v-field-padding-start) var(--v-field-padding-end);padding-top:var(--v-field-input-padding-top);padding-bottom:var(--v-field-input-padding-bottom);position:relative;width:100%}.v-input--density-default .v-field__input{row-gap:8px}.v-input--density-comfortable .v-field__input{row-gap:6px}.v-input--density-compact .v-field__input{row-gap:4px}.v-field__input input{letter-spacing:inherit}.v-field__input input::placeholder,input.v-field__input::placeholder,textarea.v-field__input::placeholder{color:currentColor;opacity:var(--v-disabled-opacity)}.v-field__input:focus,.v-field__input:active{outline:none}.v-field__input:invalid{box-shadow:none}.v-field__field{flex:1 0;grid-area:field;position:relative;align-items:flex-start;display:flex}.v-field__prepend-inner{grid-area:prepend-inner;padding-inline-end:var(--v-field-padding-after)}.v-field__clearable{grid-area:clear}.v-field__append-inner{grid-area:append-inner;padding-inline-start:var(--v-field-padding-after)}.v-field__append-inner,.v-field__clearable,.v-field__prepend-inner{display:flex;align-items:flex-start;padding-top:var(--v-input-padding-top, 8px)}.v-field--center-affix .v-field__append-inner,.v-field--center-affix .v-field__clearable,.v-field--center-affix .v-field__prepend-inner{align-items:center;padding-top:0}.v-field.v-field--variant-underlined .v-field__append-inner,.v-field.v-field--variant-underlined .v-field__clearable,.v-field.v-field--variant-underlined .v-field__prepend-inner,.v-field.v-field--variant-plain .v-field__append-inner,.v-field.v-field--variant-plain .v-field__clearable,.v-field.v-field--variant-plain .v-field__prepend-inner{align-items:flex-start;padding-top:calc(var(--v-field-padding-top, 8px) + var(--v-input-padding-top, 0px));padding-bottom:var(--v-field-padding-bottom, 4px)}.v-field--focused .v-field__prepend-inner,.v-field--focused .v-field__append-inner{opacity:1}.v-field__prepend-inner>.v-icon,.v-field__append-inner>.v-icon,.v-field__clearable>.v-icon{opacity:var(--v-medium-emphasis-opacity)}.v-field--disabled .v-field__prepend-inner>.v-icon,.v-field--error .v-field__prepend-inner>.v-icon,.v-field--glow.v-field--focused .v-field__prepend-inner>.v-icon,.v-field--disabled .v-field__append-inner>.v-icon,.v-field--error .v-field__append-inner>.v-icon,.v-field--glow.v-field--focused .v-field__append-inner>.v-icon,.v-field--disabled .v-field__clearable>.v-icon,.v-field--error .v-field__clearable>.v-icon,.v-field--glow.v-field--focused .v-field__clearable>.v-icon{opacity:1}.v-field--error:not(.v-field--disabled) .v-field__prepend-inner>.v-icon,.v-field--error:not(.v-field--disabled) .v-field__append-inner>.v-icon,.v-field--error:not(.v-field--disabled) .v-field__clearable>.v-icon{color:rgb(var(--v-theme-error))}.v-field__clearable{cursor:pointer;opacity:0;overflow:hidden;margin-inline:4px;transition:.15s cubic-bezier(.4,0,.2,1);transition-property:opacity,transform,width}@media (prefers-reduced-motion: reduce){.v-field__clearable{transition-property:opacity}}.v-field--focused .v-field__clearable,.v-field--persistent-clear .v-field__clearable{opacity:1}@media (hover: hover){.v-field:hover .v-field__clearable{opacity:1}}@media (hover: none){.v-field__clearable{opacity:1}}.v-label.v-field-label{contain:layout paint;display:block;margin-inline-start:var(--v-field-padding-start);margin-inline-end:var(--v-field-padding-end);max-width:calc(100% - var(--v-field-padding-start) - var(--v-field-padding-end));pointer-events:none;position:absolute;top:var(--v-input-padding-top);transform-origin:left center;z-index:1}@media (prefers-reduced-motion: no-preference){.v-label.v-field-label{transition:.15s cubic-bezier(.4,0,.2,1);transition-property:opacity,transform}}.v-field--variant-underlined .v-label.v-field-label,.v-field--variant-plain .v-label.v-field-label{top:calc(var(--v-input-padding-top) + var(--v-field-padding-top))}.v-field--center-affix .v-label.v-field-label{top:50%;transform:translateY(-50%)}.v-field--active .v-label.v-field-label{visibility:hidden}.v-field--focused .v-label.v-field-label,.v-field--error .v-label.v-field-label{opacity:1}.v-field--error:not(.v-field--disabled) .v-label.v-field-label{color:rgb(var(--v-theme-error))}.v-label.v-field-label--floating{--v-field-label-scale: .75em;font-size:var(--v-field-label-scale);visibility:hidden}.v-field--variant-outlined .v-label.v-field-label--floating{max-width:100%}.v-field--center-affix .v-label.v-field-label--floating{transform:none}.v-field.v-field--active .v-label.v-field-label--floating{visibility:unset}.v-input--density-default .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-default .v-field--variant-solo-filled .v-label.v-field-label--floating{top:7px}.v-input--density-comfortable .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-comfortable .v-field--variant-solo-filled .v-label.v-field-label--floating{top:5px}.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:3px}.v-field--variant-plain .v-label.v-field-label--floating,.v-field--variant-underlined .v-label.v-field-label--floating{transform:translateY(-16px);margin:0;top:var(--v-input-padding-top)}.v-field--variant-outlined .v-label.v-field-label--floating{transform:translateY(-50%);transform-origin:center;position:static;margin:0 4px}.v-field__outline{--v-field-border-width: 1px;--v-field-border-opacity: .38;align-items:stretch;contain:layout;display:flex;height:100%;left:0;pointer-events:none;position:absolute;right:0;width:100%}@media (hover: hover){.v-field:hover .v-field__outline{--v-field-border-opacity: var(--v-high-emphasis-opacity)}}.v-field--error:not(.v-field--disabled) .v-field__outline{color:rgb(var(--v-theme-error))}.v-field.v-field--focused .v-field__outline,.v-input.v-input--error .v-field__outline{--v-field-border-opacity: 1}.v-field--variant-outlined.v-field--focused .v-field__outline{--v-field-border-width: 2px}.v-field--variant-filled .v-field__outline:before,.v-field--variant-underlined .v-field__outline:before{border-color:currentColor;border-style:solid;border-width:0 0 var(--v-field-border-width);opacity:var(--v-field-border-opacity);transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-filled .v-field__outline:before,.v-field--variant-underlined .v-field__outline:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-filled .v-field__outline:after,.v-field--variant-underlined .v-field__outline:after{border-color:currentColor;border-style:solid;border-width:0 0 2px;transform:scaleX(0);transition:transform .15s cubic-bezier(.4,0,.2,1)}.v-field--variant-filled .v-field__outline:after,.v-field--variant-underlined .v-field__outline:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--focused.v-field--variant-filled .v-field__outline:after,.v-field--focused.v-field--variant-underlined .v-field__outline:after{transform:scaleX(1)}.v-field--variant-outlined .v-field__outline{border-radius:inherit}.v-field--variant-outlined .v-field__outline__start,.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after,.v-field--variant-outlined .v-field__outline__end{border:0 solid currentColor;opacity:var(--v-field-border-opacity)}@media (prefers-reduced-motion: no-preference){.v-field--variant-outlined .v-field__outline__start,.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after,.v-field--variant-outlined .v-field__outline__end{transition:opacity .25s cubic-bezier(.4,0,.2,1)}}.v-field--variant-outlined .v-field__outline__start{flex:0 0 12px;border-top-width:var(--v-field-border-width);border-bottom-width:var(--v-field-border-width);border-inline-start-width:var(--v-field-border-width);border-start-start-radius:inherit;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:inherit}.v-field--rounded.v-field--variant-outlined .v-field__outline__start,[class^=rounded-].v-field--variant-outlined .v-field__outline__start,[class*=" rounded-"].v-field--variant-outlined .v-field__outline__start{flex-basis:calc(var(--v-input-control-height) / 2 + 2px)}.v-field--reverse.v-field--variant-outlined .v-field__outline__start{border-start-start-radius:0;border-start-end-radius:inherit;border-end-end-radius:inherit;border-end-start-radius:0;border-inline-end-width:var(--v-field-border-width);border-inline-start-width:0}.v-field--variant-outlined .v-field__outline__notch{flex:none;position:relative;max-width:calc(100% - 24px)}.v-field--rounded.v-field--variant-outlined .v-field__outline__notch,[class^=rounded-].v-field--variant-outlined .v-field__outline__notch,[class*=" rounded-"].v-field--variant-outlined .v-field__outline__notch{max-width:calc(100% - var(--v-input-control-height))}.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after{opacity:var(--v-field-border-opacity)}.v-field--variant-outlined .v-field__outline__notch:before,.v-field--variant-outlined .v-field__outline__notch:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-outlined .v-field__outline__notch:before{border-width:var(--v-field-border-width) 0 0}.v-field--variant-outlined .v-field__outline__notch:after{bottom:0;border-width:0 0 var(--v-field-border-width)}.v-field--active.v-field--variant-outlined .v-field__outline__notch:before{opacity:0}.v-field--variant-outlined .v-field__outline__end{flex:1;border-top-width:var(--v-field-border-width);border-bottom-width:var(--v-field-border-width);border-inline-end-width:var(--v-field-border-width);border-start-start-radius:0;border-start-end-radius:inherit;border-end-end-radius:inherit;border-end-start-radius:0}.v-field--reverse.v-field--variant-outlined .v-field__outline__end{border-start-start-radius:inherit;border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:inherit;border-inline-end-width:0;border-inline-start-width:var(--v-field-border-width)}.v-field__loader{top:calc(100% - 2px);left:0;position:absolute;right:0;width:100%;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;overflow:hidden}.v-field--variant-outlined .v-field__loader{top:calc(100% - 3px);width:calc(100% - 2px);left:1px}.v-field__overlay{border-radius:inherit;pointer-events:none}.v-field__overlay{position:absolute;top:0;left:0;width:100%;height:100%}.v-field--variant-filled .v-field__overlay{background-color:currentColor;opacity:.04;transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-filled.v-field--has-background .v-field__overlay{opacity:0}@media (hover: hover){.v-field--variant-filled:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-filled.v-field--focused .v-field__overlay{opacity:calc((.04 + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}.v-field--variant-solo-filled .v-field__overlay{background-color:currentColor;opacity:.04;transition:opacity .25s cubic-bezier(.4,0,.2,1)}@media (hover: hover){.v-field--variant-solo-filled:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-solo-filled.v-field--focused .v-field__overlay{opacity:calc((.04 + var(--v-focus-opacity)) * var(--v-theme-overlay-multiplier))}.v-field--variant-solo-inverted .v-field__overlay{transition:opacity .25s cubic-bezier(.4,0,.2,1)}.v-field--variant-solo-inverted.v-field--has-background .v-field__overlay{opacity:0}@media (hover: hover){.v-field--variant-solo-inverted:hover .v-field__overlay{opacity:calc((.04 + var(--v-hover-opacity)) * var(--v-theme-overlay-multiplier))}}.v-field--variant-solo-inverted.v-field--focused .v-field__overlay{background-color:rgb(var(--v-theme-surface-variant));opacity:1}.v-field--reverse .v-field__field,.v-field--reverse .v-field__input,.v-field--reverse .v-field__outline{flex-direction:row-reverse}.v-field--reverse .v-field__input,.v-field--reverse input{text-align:end}.v-input--disabled .v-field--variant-filled .v-field__outline:before,.v-input--disabled .v-field--variant-underlined .v-field__outline:before{border-image:repeating-linear-gradient(to right,rgba(var(--v-theme-on-surface),var(--v-disabled-opacity)) 0px,rgba(var(--v-theme-on-surface),var(--v-disabled-opacity)) 2px,transparent 2px,transparent 4px) 1 repeat}.v-field--loading .v-field__outline:after,.v-field--loading .v-field__outline:before{opacity:0}@media (forced-colors: active){.v-field .v-progress-linear{border:none}} diff --git a/assets/cses2wakeup-BDtPgT2c.css b/assets/cses2wakeup-BDtPgT2c.css deleted file mode 100644 index 0c8dc68..0000000 --- a/assets/cses2wakeup-BDtPgT2c.css +++ /dev/null @@ -1 +0,0 @@ -.v-chip--selected[data-v-c07f22af]{font-weight:700}.v-chip .v-badge[data-v-c07f22af]{margin-left:4px}.time-chip[data-v-c07f22af]{font-size:.75rem}.course-cell[data-v-c07f22af]{padding:4px;font-size:.85rem;white-space:pre-line}.course-item[data-v-c07f22af]{padding:2px 0;border-bottom:1px dashed rgba(0,0,0,.1)}.course-item[data-v-c07f22af]:last-child{border-bottom:none}.week-type[data-v-c07f22af]{font-size:.7rem;background-color:#0000000d;padding:1px 3px;border-radius:2px;margin-left:2px}.filter-chip[data-v-c07f22af]{min-width:60px;justify-content:center;transition:all .2s ease}.filter-chip.v-chip--selected[data-v-c07f22af]{transform:scale(1.05);font-weight:700}.v-data-table[data-v-c07f22af]{border-radius:8px;overflow:hidden}.v-card[data-v-c07f22af]{border-radius:12px;overflow:hidden}.v-btn[data-v-c07f22af]{transition:transform .2s ease}.v-btn[data-v-c07f22af]:not(:disabled):hover{transform:translateY(-2px)}.v-file-input--hide.v-input .v-field,.v-file-input--hide.v-input .v-input__control,.v-file-input--hide.v-input .v-input__details{display:none}.v-file-input--hide.v-input .v-input__prepend{grid-area:control;margin:0 auto}.v-file-input--chips.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-file-input--chips.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-file-input--chips.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-file-input--chips.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:0}.v-file-input .v-field__input{word-break:break-word}.v-file-input input[type=file]{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:0}.v-file-input--dragging input[type=file]{z-index:1}.v-file-input .v-input__details{padding-inline:16px}.v-input--plain-underlined.v-file-input .v-input__details{padding-inline:0}.v-tab.v-tab.v-btn{height:var(--v-tabs-height);border-radius:0;min-width:90px}.v-slide-group--horizontal .v-tab{max-width:360px}.v-slide-group--vertical .v-tab{justify-content:start}.v-tab__slider{position:absolute;bottom:0;left:0;height:2px;width:100%;background:currentColor;pointer-events:none;opacity:0}.v-tab--selected .v-tab__slider{opacity:1}.v-slide-group--vertical .v-tab__slider{top:0;height:100%;width:2px}@media (forced-colors: active){.v-tab--selected.v-btn{color:highlight!important}.v-tab__slider{background:highlight!important}}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-tabs{display:flex;height:var(--v-tabs-height)}.v-tabs--density-default{--v-tabs-height: 48px}.v-tabs--density-default.v-tabs--stacked{--v-tabs-height: 72px}.v-tabs--density-comfortable{--v-tabs-height: 44px}.v-tabs--density-comfortable.v-tabs--stacked{--v-tabs-height: 68px}.v-tabs--density-compact{--v-tabs-height: 36px}.v-tabs--density-compact.v-tabs--stacked{--v-tabs-height: 60px}.v-tabs.v-slide-group--vertical{height:auto;flex:none;--v-tabs-height: 48px}.v-tabs--align-tabs-title:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:42px}.v-tabs--fixed-tabs .v-slide-group__content>*:last-child,.v-tabs--align-tabs-center .v-slide-group__content>*:last-child{margin-inline-end:auto}.v-tabs--fixed-tabs .v-slide-group__content>*:first-child,.v-tabs--align-tabs-center .v-slide-group__content>*:first-child{margin-inline-start:auto}.v-tabs--grow{flex-grow:1}.v-tabs--grow .v-tab{flex:1 0 auto;max-width:none}.v-tabs--align-tabs-end .v-tab:first-child{margin-inline-start:auto}.v-tabs--align-tabs-end .v-tab:last-child{margin-inline-end:0}.v-tabs--inset{--v-tabs-inset-radius: 4px;--v-tabs-inset-padding: 4px;--v-tabs-slider-background: rgba(var(--v-theme-on-surface), .2);background:rgba(var(--v-theme-on-surface),.06);box-shadow:inset 0 0 0 2px rgba(var(--v-border-color),var(--v-border-opacity));border-radius:calc(var(--v-tabs-inset-radius) + var(--v-tabs-inset-padding))}.v-tabs--inset .v-tab{margin:var(--v-tabs-inset-padding);transition-property:box-shadow,transform,opacity,background,color}.v-tabs--inset .v-tab.v-tab.v-btn{border-radius:var(--v-tabs-inset-radius)}.v-tabs--inset .v-tab:focus-visible{outline:2px solid rgb(var(--v-border-color));outline-offset:2px}.v-tabs--inset .v-tab:focus-visible:after{opacity:0}.v-tabs--inset:not(.v-tabs--fixed-tabs,.v-tabs--grow){max-width:max-content}.v-tabs--inset.v-tabs--fixed-tabs .v-slide-group__content{padding-inline:var(--v-tabs-inset-padding)}.v-tabs--inset .v-tab__slider{background:var(--v-tabs-slider-background);top:0;right:0;bottom:0;left:0;border-radius:var(--v-tabs-inset-radius);z-index:-1;width:auto}.v-tabs--inset.v-tabs--horizontal{height:calc(var(--v-tabs-height) + var(--v-tabs-inset-padding) * 2);--v-tabs-inset-tab-radius: calc(var(--v-tabs-outer-radius) - var(--v-tabs-inset-padding) + 4px)}.v-tabs--inset.v-tabs--horizontal .v-tab__slider{height:auto}.v-tabs--inset .v-btn__overlay{display:none}.v-tabs--inset.v-tabs--vertical .v-tab{grid-template-columns:max-content 1fr max-content}.v-tabs--inset.v-tabs--vertical .v-tab>.v-btn__content{justify-content:start}.v-tabs--inset.v-tabs--vertical .v-tab .v-tab__slider{width:auto}@media (max-width: 1279.98px){.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:first-child{margin-inline-start:52px}.v-tabs.v-slide-group--is-overflowing.v-slide-group--horizontal:not(.v-slide-group--has-affixes) .v-tab:last-child{margin-inline-end:52px}} diff --git a/assets/cses2wakeup-BEXP6Tqz.css b/assets/cses2wakeup-BEXP6Tqz.css new file mode 100644 index 0000000..f63188f --- /dev/null +++ b/assets/cses2wakeup-BEXP6Tqz.css @@ -0,0 +1 @@ +.v-chip--selected[data-v-c07f22af]{font-weight:700}.v-chip .v-badge[data-v-c07f22af]{margin-left:4px}.time-chip[data-v-c07f22af]{font-size:.75rem}.course-cell[data-v-c07f22af]{padding:4px;font-size:.85rem;white-space:pre-line}.course-item[data-v-c07f22af]{padding:2px 0;border-bottom:1px dashed rgba(0,0,0,.1)}.course-item[data-v-c07f22af]:last-child{border-bottom:none}.week-type[data-v-c07f22af]{font-size:.7rem;background-color:#0000000d;padding:1px 3px;border-radius:2px;margin-left:2px}.filter-chip[data-v-c07f22af]{min-width:60px;justify-content:center;transition:all .2s ease}.filter-chip.v-chip--selected[data-v-c07f22af]{transform:scale(1.05);font-weight:700}.v-data-table[data-v-c07f22af]{border-radius:8px;overflow:hidden}.v-card[data-v-c07f22af]{border-radius:12px;overflow:hidden}.v-btn[data-v-c07f22af]{transition:transform .2s ease}.v-btn[data-v-c07f22af]:not(:disabled):hover{transform:translateY(-2px)}.student-card{transition:all .2s cubic-bezier(.4,0,.2,1)}.bg-primary-subtle{background-color:rgb(var(--v-theme-primary),.05)}.action-buttons{transition:opacity .2s ease;opacity:0}.gap-1{gap:4px}.gap-2{gap:8px}.student-card .v-text-field{margin:0;padding:0}@media (max-width: 600px){.v-container{padding:12px}.v-col{padding:8px}}.student-card.mobile{margin-bottom:8px}.student-card.mobile .v-btn{min-width:40px;min-height:40px}.student-card.mobile .v-text-field{font-size:16px}@media (max-width: 600px){.v-col{padding:6px!important}.student-card{margin-bottom:4px}.action-buttons{opacity:1}}.student-card{-webkit-tap-highlight-color:transparent}.student-card:active{background-color:rgb(var(--v-theme-primary),.05)}.v-file-input--hide.v-input .v-field,.v-file-input--hide.v-input .v-input__control,.v-file-input--hide.v-input .v-input__details{display:none}.v-file-input--hide.v-input .v-input__prepend{grid-area:control;margin:0 auto}.v-file-input--chips.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-file-input--chips.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-file-input--chips.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-file-input--chips.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:0}.v-file-input .v-field__input{word-break:break-word}.v-file-input input[type=file]{height:100%;left:0;opacity:0;position:absolute;top:0;width:100%;z-index:0}.v-file-input--dragging input[type=file]{z-index:1}.v-file-input .v-input__details{padding-inline:16px}.v-input--plain-underlined.v-file-input .v-input__details{padding-inline:0} diff --git a/assets/cses2wakeup-BI06cWgi.js b/assets/cses2wakeup-BI06cWgi.js new file mode 100644 index 0000000..2becfb9 --- /dev/null +++ b/assets/cses2wakeup-BI06cWgi.js @@ -0,0 +1,7 @@ +import{D as Oe,_ as Ye,e as L,c as G,f as D,E as He,d as O,F as Je,i as A,q as qe,r as Ge}from"./index-CFUCTEXJ.js";import{V as ie,a as M}from"./VRow-Dw4j2TKL.js";import{V as I}from"./VAlert-DO0N7oM6.js";import{V as oe,a as Z}from"./VTabs-D8mV99Hb.js";import{V as K}from"./VTooltip-CbK3h4lM.js";import{c as ne,d as X,b as Ze}from"./VTabsWindowItem-CU31Uty7.js";import{V as Ke}from"./VTextarea-BxmmuONa.js";import{V as de,a as Xe,m as Qe}from"./autofocus-BAgnxQiD.js";import{u as $e,V as ue,m as et}from"./VLabel-CU-8PdVS.js";import{p as ye,f as tt,an as st,n as lt,w as be,u as rt,ao as at,ap as it,aq as ce,a5 as ot}from"./vendor-vuetify-s-yw_Hr8.js";import{e as N,o as nt,j as o,k as p,F as T,m as z,n as dt,b as Q,t as ut,I as ct,s as mt,X as m,Y as v,Z as i,a1 as c,S as y,$ as k,_ as b,a2 as C,ac as ft}from"./vendor-vue-B2vxubPy.js";import{V as j,a as pt}from"./VChip-DR8Ljy6R.js";import{V as me}from"./VBadge-C7i5WU2T.js";import{V as fe}from"./VSwitch-DKh_Uq_M.js";import{V as ht}from"./VTextField-ByBRYn99.js";import{V as yt}from"./VSkeletonLoader-AysIn-20.js";import{V as bt}from"./VDataTable-B9bubX3K.js";import{V as gt}from"./VCheckbox-iNdH9PmZ.js";import{V as kt}from"./VContainer-RtoBp6rB.js";import"./VPagination-D-juuf4L.js";import"./VSelect-Fp4MUhJW.js";import"./VSheet-B8D7XEg5.js";import"./VCheckboxBtn-DOw5vjpY.js";function vt(){function s(n){var t,r;return[...((t=n.dataTransfer)==null?void 0:t.items)??[]].filter(l=>l.kind==="file").map(l=>l.webkitGetAsEntry()).filter(Boolean).length>0||[...((r=n.dataTransfer)==null?void 0:r.files)??[]].length>0}async function e(n){var r,l;const a=[],t=[...((r=n.dataTransfer)==null?void 0:r.items)??[]].filter(d=>d.kind==="file").map(d=>d.webkitGetAsEntry()).filter(Boolean);if(t.length)for(const d of t){const f=await ge(d,ke(".",d));a.push(...f.map(h=>h.file))}else a.push(...((l=n.dataTransfer)==null?void 0:l.files)??[]);return a}return{handleDrop:e,hasFilesOrFolders:s}}function ge(s){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return new Promise((n,a)=>{s.isFile?s.file(r=>n([{file:r,path:e}]),a):s.isDirectory&&s.createReader().readEntries(async r=>{const l=[];for(const d of r)l.push(...await ge(d,ke(e,d)));n(l)})})}function ke(s,e){return e.isDirectory?`${s}/${e.name}`:s}const Tt=ye({filterByType:String},"file-accept");function wt(s){const e=N(()=>s.filterByType?Dt(s.filterByType):null);function n(a){if(e.value){const t=a.filter(e.value);return{accepted:t,rejected:a.filter(r=>!t.includes(r))}}return{accepted:a,rejected:[]}}return{filterAccepted:n}}function Dt(s){const e=s.split(",").map(r=>r.trim().toLowerCase()),n=e.filter(r=>r.startsWith(".")),a=e.filter(r=>r.endsWith("/*")),t=e.filter(r=>!n.includes(r)&&!a.includes(r));return r=>{var f,h;const l=((f=r.name.split(".").at(-1))==null?void 0:f.toLowerCase())??"",d=((h=r.type.split("/").at(0))==null?void 0:h.toLowerCase())??"";return t.includes(r.type)||n.includes(`.${l}`)||a.includes(`${d}/*`)}}const Vt=ye({chips:Boolean,counter:Boolean,counterSizeString:{type:String,default:"$vuetify.fileInput.counterSize"},counterString:{type:String,default:"$vuetify.fileInput.counter"},hideInput:Boolean,multiple:Boolean,showSize:{type:[Boolean,Number,String],default:!1,validator:s=>typeof s=="boolean"||[1e3,1024].includes(Number(s))},truncateLength:{type:[Number,String],default:22},...ot(et({prependIcon:"$file"}),["direction"]),modelValue:{type:[Array,Object],default:s=>s.multiple?[]:null,validator:s=>be(s).every(e=>e!=null&&typeof e=="object")},...Tt(),...Qe({clearable:!0})},"VFileInput"),xt=tt()({name:"VFileInput",inheritAttrs:!1,props:Vt(),emits:{"click:control":s=>!0,"mousedown:control":s=>!0,"update:focused":s=>!0,"update:modelValue":s=>!0,rejected:s=>!0},setup(s,e){let{attrs:n,emit:a,slots:t}=e;const{t:r}=st(),{filterAccepted:l}=wt(s),d=lt(s,"modelValue",s.modelValue,u=>be(u),u=>!s.multiple&&Array.isArray(u)?u[0]:u),{isFocused:f,focus:h,blur:w}=$e(s),V=N(()=>typeof s.showSize!="boolean"?s.showSize:void 0),W=N(()=>(d.value??[]).reduce((u,g)=>{let{size:E=0}=g;return u+E},0)),P=N(()=>ce(W.value,V.value)),S=N(()=>(d.value??[]).map(u=>{const{name:g="",size:E=0}=u,F=je(g);return s.showSize?`${F} (${ce(E,V.value)})`:F})),ve=N(()=>{var g;const u=((g=d.value)==null?void 0:g.length)??0;return s.showSize?r(s.counterSizeString,u,P.value):r(s.counterString,u)}),$=Q(),ee=Q(),x=Q(),Te=ut(()=>f.value||s.active),te=N(()=>["plain","underlined"].includes(s.variant)),_=mt(!1),{handleDrop:we,hasFilesOrFolders:De}=vt();function Y(){var u;x.value!==document.activeElement&&((u=x.value)==null||u.focus()),f.value||h()}function Ve(u){var g;(g=x.value)==null||g.click()}function xe(u){a("mousedown:control",u)}function Ce(u){var g;(g=x.value)==null||g.click(),a("click:control",u)}function Se(u){u.stopPropagation(),Y(),ct(()=>{d.value=[],it(s["onClick:clear"],u)})}function je(u){if(u.length{(!Array.isArray(u)||!u.length)&&x.value&&(x.value.value="")}),rt(()=>{const u=!!(t.counter||s.counter),g=!!(u||t.details),[E,F]=at(n),{modelValue:H,...J}=ue.filterProps(s),Re={...de.filterProps(s),"onClick:clear":Se},Ne=n.webkitdirectory!==void 0&&n.webkitdirectory!==!1,Le=n.accept?String(n.accept):void 0,Me=Ne?void 0:s.filterByType??Le;return o(ue,z({ref:$,modelValue:s.multiple?d.value:d.value[0],class:["v-file-input",{"v-file-input--chips":!!s.chips,"v-file-input--dragging":_.value,"v-file-input--hide":s.hideInput,"v-input--plain-underlined":te.value},s.class],style:s.style,"onClick:prepend":Ve},E,J,{centerAffix:!te.value,focused:f.value}),{...t,default:q=>{let{id:U,isDisabled:B,isDirty:le,isReadonly:re,isValid:We,hasDetails:Be}=q;return o(de,z({ref:ee,prependIcon:s.prependIcon,onMousedown:xe,onClick:Ce,"onClick:prependInner":s["onClick:prependInner"],"onClick:appendInner":s["onClick:appendInner"]},Re,{id:U.value,active:Te.value||le.value,dirty:le.value||s.dirty,disabled:B.value,focused:f.value,details:Be.value,error:We.value===!1,onDragover:Ae,onDrop:Ee}),{...t,default:Ie=>{var ae;let{props:{class:ze,..._e},controlRef:Ue}=Ie;return p(T,null,[p("input",z({ref:R=>x.value=Ue.value=R,type:"file",accept:Me,readonly:re.value,disabled:B.value,multiple:s.multiple,name:s.name,onClick:R=>{R.stopPropagation(),re.value&&R.preventDefault(),Y()},onChange:Fe,onDragleave:Pe,onFocus:Y,onBlur:w},_e,F),null),p("div",{class:dt(ze)},[!!((ae=d.value)!=null&&ae.length)&&!s.hideInput&&(t.selection?t.selection({fileNames:S.value,totalBytes:W.value,totalBytesReadable:P.value}):s.chips?S.value.map(R=>o(j,{key:R,size:"small",text:R},null)):S.value.join(", "))])])}})},details:g?q=>{var U,B;return p(T,null,[(U=t.details)==null?void 0:U.call(t,q),u&&p(T,null,[p("span",null,null),o(Xe,{active:!!((B=d.value)!=null&&B.length),value:ve.value,disabled:s.disabled},t.counter)])])}:void 0})}),Oe({},$,ee,x)}}),pe=()=>new Promise((s,e)=>{if(typeof window.jsyaml<"u")return s(window.jsyaml);const n=document.createElement("script");n.src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.1.0/js-yaml.min.js",n.async=!0,n.onload=()=>s(window.jsyaml),n.onerror=()=>e(new Error("无法加载YAML解析库")),document.head.appendChild(n)});class he{constructor(e){this.data=e,this.version=null,this.subjects=[],this.schedules=[],this._parseData()}_parseData(){if(!this.data)return;this.version=this.data.version||1;const e=this.data.subjects||[];for(const a of e)this.subjects.push({name:a.name,simplified_name:a.simplified_name||null,teacher:a.teacher||null,room:a.room||null});const n=this.data.schedules||[];for(const a of n){const t=[];for(const r of a.classes||[])t.push({subject:r.subject,start_time:r.start_time,end_time:r.end_time});this.schedules.push({name:a.name,enable_day:a.enable_day,weeks:a.weeks||"all",classes:t})}}getSubjects(){return this.subjects}getSchedules(){return this.schedules}getScheduleByDay(e){const n=this.schedules.find(a=>a.enable_day===e);return n?n.classes:[]}toCsesData(){return{version:this.version,subjects:this.subjects,schedules:this.schedules}}}const Ct={name:"Cses2Wakeup",data(){return{activeTab:"text",file:null,jsonText:"",loading:!1,error:"",success:"",processedData:null,selectedRows:[],exportPeriods:[],selectedDays:[1,2,3,4,5,6,7],formatMode:"auto",yamlLibLoaded:!1,activeDay:null,subjectColors:{数学:"blue",语文:"red",英语:"green",物理:"purple",化学:"orange",生物:"teal",历史:"brown",地理:"indigo",政治:"pink",体育:"cyan",自习:"grey",早读:"amber",班会:"deep-purple",听力:"light-blue",信息技术:"light-green"},settings:{hideTeacherName:!1,hideRoom:!1,totalWeeks:30},tableHeaders:[{title:"",key:"data-table-select"},{title:"节次",key:"period"},{title:"周一",key:"1"},{title:"周二",key:"2"},{title:"周三",key:"3"},{title:"周四",key:"4"},{title:"周五",key:"5"},{title:"周六",key:"6"},{title:"周日",key:"7"}],timeTableHeaders:[{title:"节次",key:"period"},{title:"课程",key:"subject"},{title:"星期",key:"day"},{title:"开始时间",key:"startTime"},{title:"结束时间",key:"endTime"},{title:"教师",key:"teacher"},{title:"教室",key:"room"},{title:"周次",key:"weeks"}],dayNames:{1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六",7:"周日"}}},computed:{timeTableData(){if(!this.processedData||!this.processedData.tableData)return[];const s=[],e=this.processedData.tableData.filter(a=>this.exportPeriods.includes(a.period)),n={};return e.sort((a,t)=>a.period-t.period).forEach((a,t)=>{n[a.period]=t+1}),e.forEach(a=>{for(let t=1;t<=7;t++){if(!this.selectedDays.includes(t))continue;const r=a[t];if(r)if(Array.isArray(r))r.forEach(l=>{!l||!l.name||s.push({originalPeriod:a.period,period:n[a.period],subject:l.name,day:this.dayNames[t],startTime:l.startTime,endTime:l.endTime,teacher:this.settings.hideTeacherName?"":l.teacher||"",room:this.settings.hideRoom?"":l.room||"",weeks:l.weekType?`1-${this.settings.totalWeeks}${l.weekType}`:`1-${this.settings.totalWeeks}`})});else{if(!r.name)continue;s.push({originalPeriod:a.period,period:n[a.period],subject:r.name,day:this.dayNames[t],startTime:r.startTime,endTime:r.endTime,teacher:this.settings.hideTeacherName?"":r.teacher||"",room:this.settings.hideRoom?"":r.room||"",weeks:r.weekType?`1-${this.settings.totalWeeks}${r.weekType}`:`1-${this.settings.totalWeeks}`})}}}),s.sort((a,t)=>{if(a.period!==t.period)return a.period-t.period;const r={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return r[a.day]-r[t.day]})},hasExportData(){return this.processedData&&this.exportPeriods.length>0},totalClassHours(){return this.timeTableData.length},daysWithSchedule(){const s=[];for(let e=1;e<=7;e++)this.selectedDays.includes(e)&&this.getDaySchedule(e).length>0&&s.push(e);return s}},methods:{async handleFileChange(){if(this.resetData(),!this.file)return;const s=this.file.name.toLowerCase();if(s.endsWith(".json")||s.endsWith(".js"))this.formatMode="json";else if((s.endsWith(".yml")||s.endsWith(".yaml"))&&(this.formatMode="yaml",!this.yamlLibLoaded))try{await pe(),this.yamlLibLoaded=!0}catch(e){this.error=`无法加载YAML解析库: ${e.message}`;return}try{const e=new FileReader;e.onload=async n=>{try{this.jsonText=n.target.result,await this.processInput()}catch(a){this.error=`文件读取失败: ${a.message}`}},e.onerror=()=>{this.error="文件读取失败"},e.readAsText(this.file)}catch(e){this.error=`文件处理失败: ${e.message}`}},handleTextChange(){this.resetData()},resetData(){this.error="",this.success="",this.processedData=null,this.selectedRows=[],this.exportPeriods=[]},async processInput(){if(!this.jsonText&&!this.file){this.error="请粘贴文本或上传文件";return}this.loading=!0,this.error="",this.success="";try{await this.$nextTick();let s;try{if(this.formatMode==="yaml"||this.formatMode==="auto"&&this.isYaml(this.jsonText)){const n=this.parseYaml(this.jsonText);s=new he(n).toCsesData()}else s=JSON.parse(this.jsonText)}catch(n){throw new Error(`格式解析错误: ${n.message}`)}if(!this.validateCsesFormat(s))throw new Error("不是有效的CSES格式数据");const e=this.processCsesData(s);this.processedData=e,this.selectedDays=[1,2,3,4,5],this.success="数据处理成功!",e.tableData&&e.tableData.length>0&&(this.selectedRows=[...e.tableData],this.exportPeriods=e.tableData.map(n=>n.period))}catch(s){this.error="数据处理失败:"+s.message,console.error(s)}finally{this.loading=!1}},validateCsesFormat(s){return s instanceof he?s.version===1&&Array.isArray(s.subjects)&&Array.isArray(s.schedules):!(!s||typeof s!="object"||s.version!==1||!Array.isArray(s.subjects)||!Array.isArray(s.schedules))},processCsesData(s){const{schedules:e,subjects:n}=s,a=Object.fromEntries(n.map(l=>[l.name,l])),t=[];let r=0;e.forEach(l=>{l.classes&&l.classes.length>r&&(r=l.classes.length)});for(let l=1;l<=r;l++)t.push({period:l,1:null,2:null,3:null,4:null,5:null,6:null,7:null});return e.forEach(l=>{const d=l.enable_day;if(!d||d<1||d>7)return;let f="";l.weeks==="odd"?f="单":l.weeks==="even"&&(f="双"),l.classes.forEach((h,w)=>{if(!h.subject)return;const V=w+1;if(V>r)return;const W=a[h.subject]||{},P={name:h.subject,teacher:W.teacher||"",room:W.room||"",period:V,startTime:h.start_time,endTime:h.end_time,day:d,weekType:f},S=t[V-1][d];S?f&&S.weekType&&f!==S.weekType?(Array.isArray(t[V-1][d])||(t[V-1][d]=[S]),t[V-1][d].push(P)):f===S.weekType?t[V-1][d]=P:f||(t[V-1][d]=P):t[V-1][d]=P})}),{tableData:t,originalData:s}},updateSelectedPeriods(s){this.exportPeriods=[],s&&s.length>0&&(this.exportPeriods=[...new Set(s.filter(e=>e&&typeof e.period=="number").map(e=>e.period))])},getTimeTableData(){return this.timeTableData},downloadCSV(){var t;if(!((t=this.processedData)!=null&&t.tableData)){this.error="没有可下载的数据";return}if(this.exportPeriods.length===0){this.error="请至少选择一节要导出的课";return}if(this.daysWithSchedule.length===0||this.totalClassHours===0){this.error="没有课程数据可导出";return}let s=`课程名称,星期,开始节数,结束节数,老师,地点,周数 +`;for(const r of this.daysWithSchedule){const l=this.groupByPeriod(this.getDaySchedule(r));for(const d of l)for(const f of d.items){const h={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7}[f.day],w=this.settings.hideTeacherName?"":f.teacher||"",V=this.settings.hideRoom?"":f.room||"";s+=`${f.subject},${h},${f.period},${f.period},${w},${V},${f.weeks} +`}}const e="\uFEFF",n=new Blob([e+s],{type:"text/csv;charset=utf-8"}),a=document.createElement("a");a.href=URL.createObjectURL(n),a.download=`course_schedule_${this.totalClassHours}课时.csv`,a.click(),URL.revokeObjectURL(a.href),this.success=`导出成功!共计 ${this.totalClassHours} 课时`},showExportPreview(){if(!this.hasExportData){this.error="请先选择要导出的节次";return}const s=this.timeTableData.slice(0,5).map(e=>`${e.subject} (${e.day} 第${e.period}节)`).join(` +`);this.timeTableData.length>5?this.success=`导出预览 (共${this.totalClassHours}课时): +${s} +...等${this.totalClassHours-5}节课程`:this.success=`导出预览 (共${this.totalClassHours}课时): +${s}`,this.$nextTick(()=>{this.daysWithSchedule.length>0&&!this.activeDay&&(this.activeDay=this.daysWithSchedule[0])})},isYaml(s){const e=s.trim();if(e.startsWith("{")||e.startsWith("["))try{return JSON.parse(e),!1}catch{}return/^\s*[a-zA-Z0-9_-]+\s*:/.test(e)||/\n\s*[a-zA-Z0-9_-]+\s*:/.test(e)},parseYaml(s){try{if(typeof window.jsyaml<"u")return window.jsyaml.load(s);throw new Error("YAML解析器未加载")}catch(e){throw new Error(`YAML解析错误: ${e.message}`)}},getDaySchedule(s){return this.timeTableData?this.getUnfilteredTimeTableData().filter(n=>({周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7})[n.day]===s):[]},getUnfilteredTimeTableData(){if(!this.processedData||!this.processedData.tableData)return[];const s=[],e=this.processedData.tableData.filter(a=>this.exportPeriods.includes(a.period)),n={};return e.sort((a,t)=>a.period-t.period).forEach((a,t)=>{n[a.period]=t+1}),e.forEach(a=>{for(let t=1;t<=7;t++){const r=a[t];if(r)if(Array.isArray(r))r.forEach(l=>{!l||!l.name||s.push({originalPeriod:a.period,period:n[a.period],subject:l.name,day:this.dayNames[t],startTime:l.startTime,endTime:l.endTime,teacher:this.settings.hideTeacherName?"":l.teacher||"",room:this.settings.hideRoom?"":l.room||"",weeks:l.weekType?`1-${this.settings.totalWeeks}${l.weekType}`:`1-${this.settings.totalWeeks}`})});else{if(!r.name)continue;s.push({originalPeriod:a.period,period:n[a.period],subject:r.name,day:this.dayNames[t],startTime:r.startTime,endTime:r.endTime,teacher:this.settings.hideTeacherName?"":r.teacher||"",room:this.settings.hideRoom?"":r.room||"",weeks:r.weekType?`1-${this.settings.totalWeeks}${r.weekType}`:`1-${this.settings.totalWeeks}`})}}}),s.sort((a,t)=>{if(a.period!==t.period)return a.period-t.period;const r={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return r[a.day]-r[t.day]})},groupByPeriod(s){const e={};return s.forEach(n=>{e[n.period]||(e[n.period]={period:n.period,originalPeriod:n.originalPeriod,items:[],timeSlots:[]}),e[n.period].items.push(n),e[n.period].timeSlots.push({startTime:n.startTime,endTime:n.endTime})}),Object.values(e).forEach(n=>{n.uniqueTimeSlots=[],n.timeSlots.forEach(a=>{n.uniqueTimeSlots.some(t=>t.startTime===a.startTime&&t.endTime===a.endTime)||n.uniqueTimeSlots.push(a)}),n.uniqueTimeSlots.sort((a,t)=>a.startTime.localeCompare(t.startTime))}),Object.values(e).sort((n,a)=>n.period-a.period)},formatTime(s){return s?s.substring(0,5):""},getSubjectColor(s){return this.subjectColors[s]||"grey"},selectAllDays(){this.selectedDays=[1,2,3,4,5,6,7]},clearSelectedDays(){this.selectedDays=[]}},async mounted(){try{await pe(),this.yamlLibLoaded=!0}catch(s){this.error=s.message}this.$watch("daysWithSchedule",s=>{s.length>0&&!this.activeDay&&(this.activeDay=s[0])})}},St={class:"d-flex align-center"},jt={class:"d-flex align-center"},At={key:2,class:"text-caption mb-2"},Pt={class:"d-flex align-center mb-2"},Et={class:"d-flex align-center mb-3"},Ft={class:"d-flex align-center mb-3"},Rt={key:0,class:"course-cell"},Nt={key:0},Lt={key:1},Mt={key:2,class:"week-type"},Wt={key:0},Bt={key:1},It={key:2,class:"week-type"},zt={class:"text-center font-weight-bold"};function _t(s,e,n,a,t,r){return m(),v(kt,{class:"fill-height"},{default:i(()=>[o(ie,null,{default:i(()=>[o(M,{cols:"12"},{default:i(()=>[o(L,{class:"elevation-12",border:""},{default:i(()=>[o(G,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:i(()=>[o(D,{color:"white",class:"mr-2"},{default:i(()=>[...e[15]||(e[15]=[c("mdi-swap-horizontal",-1)])]),_:1}),e[16]||(e[16]=c(" 课程表转换工具 ",-1))]),_:1}),o(He,null,{default:i(()=>[...e[17]||(e[17]=[c(" 将CSES格式的JSON或YAML文本转换为WakeUp软件使用的课程表 ",-1)])]),_:1}),o(O,null,{default:i(()=>[t.error?(m(),v(I,{key:0,type:"error",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":e[0]||(e[0]=l=>t.error="")},{default:i(()=>[p("div",St,[o(D,{class:"mr-2"},{default:i(()=>[...e[18]||(e[18]=[c("mdi-alert-circle",-1)])]),_:1}),c(" "+y(t.error),1)])]),_:1})):k("",!0),t.success?(m(),v(I,{key:1,type:"success",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":e[1]||(e[1]=l=>t.success="")},{default:i(()=>[p("div",jt,[o(D,{class:"mr-2"},{default:i(()=>[...e[19]||(e[19]=[c("mdi-check-circle",-1)])]),_:1}),c(" "+y(t.success),1)])]),_:1})):k("",!0),o(oe,{modelValue:t.activeTab,"onUpdate:modelValue":e[2]||(e[2]=l=>t.activeTab=l),class:"mb-4 mx-2",color:"primary",rounded:""},{default:i(()=>[o(Z,{value:"text",class:"px-5"},{default:i(()=>[o(D,{start:""},{default:i(()=>[...e[20]||(e[20]=[c("mdi-text-box",-1)])]),_:1}),e[21]||(e[21]=c(" 文本粘贴 ",-1))]),_:1}),o(Z,{value:"file",class:"px-5"},{default:i(()=>[o(D,{start:""},{default:i(()=>[...e[22]||(e[22]=[c("mdi-file-upload",-1)])]),_:1}),e[23]||(e[23]=c(" 文件上传 ",-1))]),_:1})]),_:1},8,["modelValue"]),o(Je,{modelValue:t.formatMode,"onUpdate:modelValue":e[3]||(e[3]=l=>t.formatMode=l),color:"primary",class:"mb-4 mx-2",mandatory:"",density:"comfortable",border:"",rounded:""},{default:i(()=>[o(A,{value:"auto"},{default:i(()=>[...e[24]||(e[24]=[c("自动检测",-1)])]),_:1}),o(A,{value:"json"},{default:i(()=>[...e[25]||(e[25]=[c("JSON",-1)])]),_:1}),o(A,{value:"yaml",disabled:!t.yamlLibLoaded},{default:i(()=>[e[26]||(e[26]=c(" YAML ",-1)),o(K,{activator:"parent",location:"bottom"},{default:i(()=>[c(y(t.yamlLibLoaded?"YAML解析库已加载":"正在加载YAML解析库..."),1)]),_:1})]),_:1},8,["disabled"])]),_:1},8,["modelValue"]),t.jsonText&&t.formatMode==="auto"?(m(),b("div",At," 检测到的格式: "+y(r.isYaml(t.jsonText)?"YAML":"JSON"),1)):k("",!0),o(ne,{modelValue:t.activeTab,"onUpdate:modelValue":e[6]||(e[6]=l=>t.activeTab=l)},{default:i(()=>[o(X,{value:"text"},{default:i(()=>[p("div",Pt,[o(Ke,{modelValue:t.jsonText,"onUpdate:modelValue":e[4]||(e[4]=l=>t.jsonText=l),label:"粘贴JSON或YAML文本",loading:t.loading,disabled:t.loading,"row-height":"25",rows:"6",placeholder:"请在此粘贴CSES格式的数据...",onInput:r.handleTextChange},null,8,["modelValue","loading","disabled","onInput"])])]),_:1}),o(X,{value:"file"},{default:i(()=>[o(xt,{modelValue:t.file,"onUpdate:modelValue":e[5]||(e[5]=l=>t.file=l),accept:".js,.json,.yml,.yaml",label:"选择课程表文件","prepend-icon":"mdi-file-upload",loading:t.loading,disabled:t.loading,onChange:r.handleFileChange,hint:"支持JSON、YAML格式文件","persistent-hint":"",rules:[l=>!l||l.size<2e6||"文件大小不能超过 2 MB"]},null,8,["modelValue","loading","disabled","onChange","rules"]),t.file&&t.formatMode==="auto"?(m(),v(I,{key:0,type:"info",class:"mb-4",variant:"tonal",density:"compact"},{default:i(()=>[...e[27]||(e[27]=[c(" 将根据文件扩展名自动检测格式 ",-1)])]),_:1})):k("",!0)]),_:1})]),_:1},8,["modelValue"]),o(M,{cols:"12"},{default:i(()=>[o(L,{flat:"",class:"pa-4 rounded-lg",border:""},{default:i(()=>[p("div",Et,[o(D,{color:"primary",class:"mr-2"},{default:i(()=>[...e[28]||(e[28]=[c("mdi-calendar-multiselect",-1)])]),_:1}),e[33]||(e[33]=p("h3",{class:"text-subtitle-1 font-weight-medium mr-auto"},"选择导出天数",-1)),o(A,{variant:"text",color:"primary",class:"ml-2",onClick:r.selectAllDays},{default:i(()=>[o(D,{start:"",size:"small"},{default:i(()=>[...e[29]||(e[29]=[c("mdi-checkbox-multiple-marked",-1)])]),_:1}),e[30]||(e[30]=c(" 全选 ",-1))]),_:1},8,["onClick"]),o(A,{variant:"text",color:"error",class:"ml-2",onClick:r.clearSelectedDays},{default:i(()=>[o(D,{start:"",size:"small"},{default:i(()=>[...e[31]||(e[31]=[c("mdi-checkbox-multiple-blank-outline",-1)])]),_:1}),e[32]||(e[32]=c(" 清除 ",-1))]),_:1},8,["onClick"])]),o(pt,{modelValue:t.selectedDays,"onUpdate:modelValue":e[7]||(e[7]=l=>t.selectedDays=l),multiple:"",class:"mb-2",color:"primary"},{default:i(()=>[(m(),b(T,null,C(7,l=>o(j,{key:l,value:l,filter:"",variant:"tonal",class:"filter-chip",label:""},{default:i(()=>[c(y(t.dayNames[l])+" ",1),r.getDaySchedule(l).length>0?(m(),v(me,{key:0,content:r.getDaySchedule(l).length,color:"primary",inline:""},null,8,["content"])):k("",!0)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(M,{cols:"12"},{default:i(()=>[o(L,{flat:"",class:"pa-4 rounded-lg",border:""},{default:i(()=>[p("div",Ft,[o(D,{color:"primary",class:"mr-2"},{default:i(()=>[...e[34]||(e[34]=[c("mdi-cog",-1)])]),_:1}),e[35]||(e[35]=p("h3",{class:"text-subtitle-1 font-weight-medium"},"显示配置",-1))]),o(ie,null,{default:i(()=>[o(M,{cols:"12",sm:"6"},{default:i(()=>[o(fe,{modelValue:t.settings.hideTeacherName,"onUpdate:modelValue":e[8]||(e[8]=l=>t.settings.hideTeacherName=l),label:"不显示教师姓名",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),o(M,{cols:"12",sm:"6"},{default:i(()=>[o(fe,{modelValue:t.settings.hideRoom,"onUpdate:modelValue":e[9]||(e[9]=l=>t.settings.hideRoom=l),label:"不显示教室信息",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),o(M,{cols:"12",sm:"6"},{default:i(()=>[o(ht,{modelValue:t.settings.totalWeeks,"onUpdate:modelValue":e[10]||(e[10]=l=>t.settings.totalWeeks=l),modelModifiers:{number:!0},label:"总周数",type:"number",min:"1",max:"30",rules:[l=>l>0||"周数必须大于0"],density:"comfortable",variant:"outlined","prepend-inner-icon":"mdi-calendar-week",class:"mt-3"},null,8,["modelValue","rules"])]),_:1})]),_:1})]),_:1})]),_:1}),t.loading?(m(),v(L,{key:3,class:"my-4",outlined:""},{default:i(()=>[o(O,null,{default:i(()=>[o(yt,{type:"table",class:"mx-auto"})]),_:1})]),_:1})):k("",!0),t.processedData?(m(),v(j,{key:4,color:"primary",class:"ml-2","prepend-icon":"mdi-book-open-variant"},{default:i(()=>[c(y(t.processedData.tableData.length)+" 节课程 ",1)]),_:1})):k("",!0),t.processedData&&t.exportPeriods.length===0?(m(),v(I,{key:5,type:"warning",class:"mb-4",closable:""},{default:i(()=>[...e[36]||(e[36]=[c(" 请选择要导出的节次 ",-1)])]),_:1})):k("",!0),t.processedData?(m(),v(L,{key:6,class:"my-4",elevation:"1"},{default:i(()=>[o(G,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:i(()=>[o(D,{color:"primary",class:"mr-2"},{default:i(()=>[...e[37]||(e[37]=[c("mdi-table",-1)])]),_:1}),e[39]||(e[39]=p("span",{class:"font-weight-bold"},"课程表",-1)),o(j,{color:"primary",class:"ml-3",size:"small",pill:""},{default:i(()=>[o(D,{start:"",size:"x-small"},{default:i(()=>[...e[38]||(e[38]=[c("mdi-book-open-variant",-1)])]),_:1}),c(" "+y(t.processedData.tableData.length)+" 节课程 ",1)]),_:1})]),_:1}),o(O,{class:"pa-0"},{default:i(()=>[o(bt,{"items-selected":t.selectedRows,"onUpdate:itemsSelected":[e[12]||(e[12]=l=>t.selectedRows=l),r.updateSelectedPeriods],headers:t.tableHeaders,items:t.processedData.tableData,"hide-default-footer":"",class:"elevation-1","items-per-page":-1,"item-value":"period","show-select":"","select-strategy":"single-independent","sort-by":[],"disable-sort":""},ft({"item.data-table-select":i(({item:l})=>[o(gt,{modelValue:t.exportPeriods,"onUpdate:modelValue":e[11]||(e[11]=d=>t.exportPeriods=d),value:l.period,"hide-details":"",density:"compact"},null,8,["modelValue","value"])]),_:2},[C(7,l=>({name:`item.${l}`,fn:i(({item:d})=>[d[l]?(m(),b("div",Rt,[Array.isArray(d[l])?(m(!0),b(T,{key:0},C(d[l],(f,h)=>(m(),b("div",{key:h,class:"course-item"},[c(y(f.name)+" ",1),!t.settings.hideTeacherName&&f.teacher?(m(),b("span",Nt,[e[40]||(e[40]=p("br",null,null,-1)),c(y(f.teacher),1)])):k("",!0),!t.settings.hideRoom&&f.room?(m(),b("span",Lt,[e[41]||(e[41]=p("br",null,null,-1)),c(y(f.room),1)])):k("",!0),f.weekType?(m(),b("span",Mt,y(f.weekType)+"周 ",1)):k("",!0)]))),128)):(m(),b(T,{key:1},[c(y(d[l].name)+" ",1),!t.settings.hideTeacherName&&d[l].teacher?(m(),b("span",Wt,[e[42]||(e[42]=p("br",null,null,-1)),c(y(d[l].teacher),1)])):k("",!0),!t.settings.hideRoom&&d[l].room?(m(),b("span",Bt,[e[43]||(e[43]=p("br",null,null,-1)),c(y(d[l].room),1)])):k("",!0),d[l].weekType?(m(),b("span",It,y(d[l].weekType)+"周 ",1)):k("",!0)],64))])):k("",!0)])}))]),1032,["items-selected","headers","items","onUpdate:itemsSelected"])]),_:1})]),_:1})):k("",!0),r.hasExportData?(m(),v(L,{key:7,class:"my-4",elevation:"1"},{default:i(()=>[o(G,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:i(()=>[o(D,{color:"primary",class:"mr-2"},{default:i(()=>[...e[44]||(e[44]=[c("mdi-timetable",-1)])]),_:1}),e[48]||(e[48]=p("span",{class:"font-weight-bold"},"每日课程时间表",-1)),o(j,{class:"ml-3",size:"small",color:"primary",pill:""},{default:i(()=>[o(D,{start:"",size:"x-small"},{default:i(()=>[...e[45]||(e[45]=[c("mdi-clock-outline",-1)])]),_:1}),c(" "+y(r.totalClassHours)+" 课时 ",1)]),_:1}),t.exportPeriods.length>0?(m(),v(K,{key:0},{activator:i(({props:l})=>[o(j,z({class:"ml-2",size:"small",color:"info"},l,{pill:""}),{default:i(()=>[o(D,{start:"",size:"x-small"},{default:i(()=>[...e[46]||(e[46]=[c("mdi-information-outline",-1)])]),_:1}),e[47]||(e[47]=c(" 节次已重排 ",-1))]),_:1},16)]),default:i(()=>[p("span",null,"已将选中的节次 "+y(t.exportPeriods.join(", "))+" 重新排序为连续的 1-"+y(t.exportPeriods.length),1)]),_:1})):k("",!0)]),_:1}),o(O,null,{default:i(()=>[r.daysWithSchedule.length>0?(m(),v(oe,{key:0,modelValue:t.activeDay,"onUpdate:modelValue":e[13]||(e[13]=l=>t.activeDay=l),class:"mb-4",color:"primary",grow:"","align-tabs":"center"},{default:i(()=>[(m(!0),b(T,null,C(r.daysWithSchedule,l=>(m(),v(Z,{key:l,value:l,class:"px-2 font-weight-medium"},{default:i(()=>[c(y(t.dayNames[l])+" ",1),o(me,{content:r.getDaySchedule(l).length,color:"primary",inline:""},null,8,["content"])]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])):k("",!0),o(ne,{modelValue:t.activeDay,"onUpdate:modelValue":e[14]||(e[14]=l=>t.activeDay=l)},{default:i(()=>[(m(!0),b(T,null,C(r.daysWithSchedule,l=>(m(),v(X,{key:l,value:l},{default:i(()=>[o(Ze,{density:"compact",class:"rounded","headers-length":6,"disable-sort":""},{default:i(()=>[e[50]||(e[50]=p("thead",null,[p("tr",null,[p("th",{class:"text-center"},"节次"),p("th",null,"课程"),p("th",null,"时间"),p("th",null,"教师"),p("th",null,"教室"),p("th",null,"周次")])],-1)),p("tbody",null,[(m(!0),b(T,null,C(r.groupByPeriod(r.getDaySchedule(l)),(d,f)=>(m(),b("tr",{key:f},[p("td",zt,[c(y(d.period)+" ",1),d.originalPeriod!==d.period?(m(),v(K,{key:0},{activator:i(({props:h})=>[o(D,z({size:"x-small"},{ref_for:!0},h,{color:"info",class:"ml-1"}),{default:i(()=>[...e[49]||(e[49]=[c("mdi-sync",-1)])]),_:1},16)]),default:i(()=>[c(" 原节次: "+y(d.originalPeriod),1)]),_:2},1024)):k("",!0)]),p("td",null,[(m(!0),b(T,null,C(d.items,(h,w)=>(m(),b("div",{key:w,class:"mb-1"},[o(j,{size:"small",color:r.getSubjectColor(h.subject),label:"","text-color":"white",class:"mr-1"},{default:i(()=>[c(y(h.subject),1)]),_:2},1032,["color"]),d.items.length>1?(m(),v(j,{key:0,size:"x-small",class:"ml-1",color:h.weekType==="单"?"warning":"success"},{default:i(()=>[c(y(h.weekType)+"周 ",1)]),_:2},1032,["color"])):k("",!0)]))),128))]),p("td",null,[(m(!0),b(T,null,C(d.uniqueTimeSlots,(h,w)=>(m(),b("div",{key:w,class:"mb-1"},[o(j,{size:"x-small",class:"time-chip"},{default:i(()=>[c(y(r.formatTime(h.startTime))+" - "+y(r.formatTime(h.endTime)),1)]),_:2},1024)]))),128))]),p("td",null,[t.settings.hideTeacherName?(m(),b(T,{key:1},[c("-")],64)):(m(!0),b(T,{key:0},C(d.items,(h,w)=>(m(),b("div",{key:w,class:"mb-1"},y(h.teacher||"-"),1))),128))]),p("td",null,[t.settings.hideRoom?(m(),b(T,{key:1},[c("-")],64)):(m(!0),b(T,{key:0},C(d.items,(h,w)=>(m(),b("div",{key:w,class:"mb-1"},y(h.room||"-"),1))),128))]),p("td",null,[(m(!0),b(T,null,C(d.items,(h,w)=>(m(),b("div",{key:w,class:"mb-1"},y(h.weeks),1))),128))])]))),128))])]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),r.hasExportData&&r.daysWithSchedule.length===0?(m(),v(I,{key:1,type:"info",class:"mt-3"},{default:i(()=>[...e[51]||(e[51]=[c(" 没有找到任何课程数据 ",-1)])]),_:1})):k("",!0)]),_:1})]),_:1})):k("",!0)]),_:1}),o(qe,{class:""},{default:i(()=>[o(Ge),o(A,{color:"primary",variant:"outlined",loading:t.loading,disabled:!t.jsonText&&!t.file||t.loading,onClick:r.processInput,"prepend-icon":"mdi-cog-refresh"},{default:i(()=>[...e[52]||(e[52]=[c(" 处理数据 ",-1)])]),_:1},8,["loading","disabled","onClick"]),o(A,{color:"info",disabled:!r.hasExportData,onClick:r.showExportPreview,class:"ml-2","prepend-icon":"mdi-eye",border:""},{default:i(()=>[...e[53]||(e[53]=[c(" 刷新 ",-1)])]),_:1},8,["disabled","onClick"]),o(A,{color:"success",variant:"outlined",disabled:!r.hasExportData,onClick:r.downloadCSV,class:"ml-2","prepend-icon":"mdi-download",border:""},{default:i(()=>[...e[54]||(e[54]=[c(" 下载CSV ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const cs=Ye(Ct,[["render",_t],["__scopeId","data-v-c07f22af"]]);export{cs as default}; diff --git a/assets/cses2wakeup-DdLKal26.js b/assets/cses2wakeup-DdLKal26.js deleted file mode 100644 index 0b7dd81..0000000 --- a/assets/cses2wakeup-DdLKal26.js +++ /dev/null @@ -1,7 +0,0 @@ -import{C as Ne,D as tt,E as Re,l as L,F as st,G as lt,H as at,m as it,I as rt,_ as nt,e as q,c as ce,h as j,J as ot,d as te,K as dt,q as ut,o as ct}from"./index-_6IQhlPZ.js";import{V as we,a as X}from"./VRow-WkEz3xRr.js";import{V as K}from"./VAlert-D9G_9owC.js";import{V as Fe,a as mt,b as ft,c as xe,d as me,e as ht,f as yt}from"./VTabsWindowItem-DL2r3YhT.js";import{p as le,f as ye,an as pt,n as Me,w as Le,u as pe,ao as bt,ap as gt,aq as De,a5 as We,a4 as vt,a6 as kt,j as Tt,s as fe,aj as wt,F as xt}from"./vendor-vuetify-ChAgIwn2.js";import{e as W,o as Dt,j as n,k as y,F as C,m as z,n as Ie,b as Q,t as M,I as Ct,s as Vt,N as St,X as m,Y as S,Z as r,a1 as c,S as p,$ as w,_ as b,a2 as R,ab as jt}from"./vendor-vue-H0jQBZ7T.js";import{V as I,a as Ce,m as Pt,b as At}from"./VChip-Veb3ShEh.js";import{V as he}from"./VTooltip-C2Bprg_f.js";import{V as Et}from"./VTextarea-CCCqy4pz.js";import{u as Bt,V as Ve,a as Se,b as Nt,m as Rt,c as Ft}from"./autofocus-BrMOVHY_.js";import{V as je}from"./VBadge-VwKD9DDf.js";import{V as Pe}from"./VSwitch-CdpUb5tZ.js";import{V as Mt}from"./VTextField-CuXGbmmC.js";import{V as Lt}from"./VSkeletonLoader-CfCoJRep.js";import{V as Wt}from"./VCheckbox-DhU7h1Z3.js";import{V as It}from"./VContainer-Bg8RevuO.js";import"./VPagination-BiSMksGW.js";import"./VSelect-ANRyd3L-.js";import"./VSheet-U4CNWLuy.js";import"./VCheckboxBtn-DCkgbmVP.js";function zt(){function t(o){var s,i;return[...((s=o.dataTransfer)==null?void 0:s.items)??[]].filter(l=>l.kind==="file").map(l=>l.webkitGetAsEntry()).filter(Boolean).length>0||[...((i=o.dataTransfer)==null?void 0:i.files)??[]].length>0}async function e(o){var i,l;const a=[],s=[...((i=o.dataTransfer)==null?void 0:i.items)??[]].filter(d=>d.kind==="file").map(d=>d.webkitGetAsEntry()).filter(Boolean);if(s.length)for(const d of s){const f=await ze(d,_e(".",d));a.push(...f.map(h=>h.file))}else a.push(...((l=o.dataTransfer)==null?void 0:l.files)??[]);return a}return{handleDrop:e,hasFilesOrFolders:t}}function ze(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return new Promise((o,a)=>{t.isFile?t.file(i=>o([{file:i,path:e}]),a):t.isDirectory&&t.createReader().readEntries(async i=>{const l=[];for(const d of i)l.push(...await ze(d,_e(e,d)));o(l)})})}function _e(t,e){return e.isDirectory?`${t}/${e.name}`:t}const _t=le({filterByType:String},"file-accept");function Ut(t){const e=W(()=>t.filterByType?Ot(t.filterByType):null);function o(a){if(e.value){const s=a.filter(e.value);return{accepted:s,rejected:a.filter(i=>!s.includes(i))}}return{accepted:a,rejected:[]}}return{filterAccepted:o}}function Ot(t){const e=t.split(",").map(i=>i.trim().toLowerCase()),o=e.filter(i=>i.startsWith(".")),a=e.filter(i=>i.endsWith("/*")),s=e.filter(i=>!o.includes(i)&&!a.includes(i));return i=>{var f,h;const l=((f=i.name.split(".").at(-1))==null?void 0:f.toLowerCase())??"",d=((h=i.type.split("/").at(0))==null?void 0:h.toLowerCase())??"";return s.includes(i.type)||o.includes(`.${l}`)||a.includes(`${d}/*`)}}const Yt=le({chips:Boolean,counter:Boolean,counterSizeString:{type:String,default:"$vuetify.fileInput.counterSize"},counterString:{type:String,default:"$vuetify.fileInput.counter"},hideInput:Boolean,multiple:Boolean,showSize:{type:[Boolean,Number,String],default:!1,validator:t=>typeof t=="boolean"||[1e3,1024].includes(Number(t))},truncateLength:{type:[Number,String],default:22},...We(Ft({prependIcon:"$file"}),["direction"]),modelValue:{type:[Array,Object],default:t=>t.multiple?[]:null,validator:t=>Le(t).every(e=>e!=null&&typeof e=="object")},..._t(),...Rt({clearable:!0})},"VFileInput"),Ht=ye()({name:"VFileInput",inheritAttrs:!1,props:Yt(),emits:{"click:control":t=>!0,"mousedown:control":t=>!0,"update:focused":t=>!0,"update:modelValue":t=>!0,rejected:t=>!0},setup(t,e){let{attrs:o,emit:a,slots:s}=e;const{t:i}=pt(),{filterAccepted:l}=Ut(t),d=Me(t,"modelValue",t.modelValue,u=>Le(u),u=>!t.multiple&&Array.isArray(u)?u[0]:u),{isFocused:f,focus:h,blur:v}=Bt(t),k=W(()=>typeof t.showSize!="boolean"?t.showSize:void 0),T=W(()=>(d.value??[]).reduce((u,g)=>{let{size:Y=0}=g;return u+Y},0)),V=W(()=>De(T.value,k.value)),D=W(()=>(d.value??[]).map(u=>{const{name:g="",size:Y=0}=u,H=re(g);return t.showSize?`${H} (${De(Y,k.value)})`:H})),J=W(()=>{var g;const u=((g=d.value)==null?void 0:g.length)??0;return t.showSize?i(t.counterSizeString,u,V.value):i(t.counterString,u)}),A=Q(),P=Q(),x=Q(),B=M(()=>f.value||t.active),N=W(()=>["plain","underlined"].includes(t.variant)),E=Vt(!1),{handleDrop:U,hasFilesOrFolders:F}=zt();function O(){var u;x.value!==document.activeElement&&((u=x.value)==null||u.focus()),f.value||h()}function ae(u){var g;(g=x.value)==null||g.click()}function _(u){a("mousedown:control",u)}function ie(u){var g;(g=x.value)==null||g.click(),a("click:control",u)}function be(u){u.stopPropagation(),O(),Ct(()=>{d.value=[],gt(t["onClick:clear"],u)})}function re(u){if(u.length{(!Array.isArray(u)||!u.length)&&x.value&&(x.value.value="")}),pe(()=>{const u=!!(s.counter||t.counter),g=!!(u||s.details),[Y,H]=bt(o),{modelValue:oe,...de}=Ve.filterProps(t),He={...Se.filterProps(t),"onClick:clear":be},Ge=o.webkitdirectory!==void 0&&o.webkitdirectory!==!1,Je=o.accept?String(o.accept):void 0,qe=Ge?void 0:t.filterByType??Je;return n(Ve,z({ref:A,modelValue:t.multiple?d.value:d.value[0],class:["v-file-input",{"v-file-input--chips":!!t.chips,"v-file-input--dragging":E.value,"v-file-input--hide":t.hideInput,"v-input--plain-underlined":N.value},t.class],style:t.style,"onClick:prepend":ae},Y,de,{centerAffix:!N.value,focused:f.value}),{...s,default:ue=>{let{id:ee,isDisabled:Z,isDirty:ve,isReadonly:ke,isValid:Xe,hasDetails:Ze}=ue;return n(Se,z({ref:P,prependIcon:t.prependIcon,onMousedown:_,onClick:ie,"onClick:prependInner":t["onClick:prependInner"],"onClick:appendInner":t["onClick:appendInner"]},He,{id:ee.value,active:B.value||ve.value,dirty:ve.value||t.dirty,disabled:Z.value,focused:f.value,details:Ze.value,error:Xe.value===!1,onDragover:ne,onDrop:Oe}),{...s,default:Ke=>{var Te;let{props:{class:Qe,...$e},controlRef:et}=Ke;return y(C,null,[y("input",z({ref:G=>x.value=et.value=G,type:"file",accept:qe,readonly:ke.value,disabled:Z.value,multiple:t.multiple,name:t.name,onClick:G=>{G.stopPropagation(),ke.value&&G.preventDefault(),O()},onChange:Ye,onDragleave:$,onFocus:O,onBlur:v},$e,H),null),y("div",{class:Ie(Qe)},[!!((Te=d.value)!=null&&Te.length)&&!t.hideInput&&(s.selection?s.selection({fileNames:D.value,totalBytes:T.value,totalBytesReadable:V.value}):t.chips?D.value.map(G=>n(I,{key:G,size:"small",text:G},null)):D.value.join(", "))])])}})},details:g?ue=>{var ee,Z;return y(C,null,[(ee=s.details)==null?void 0:ee.call(s,ue),u&&y(C,null,[y("span",null,null),n(Nt,{active:!!((Z=d.value)!=null&&Z.length),value:J.value,disabled:t.disabled},s.counter)])])}:void 0})}),Ne({},A,P,x)}}),Ue=le({fixed:Boolean,sliderColor:String,sliderTransition:String,sliderTransitionDuration:[String,Number],hideSlider:Boolean,inset:Boolean,direction:{type:String,default:"horizontal"},...We(st({selectedClass:"v-tab--selected",variant:"text"}),["active","block","flat","location","position","symbol"])},"VTab"),se=ye()({name:"VTab",props:Ue(),setup(t,e){let{slots:o,attrs:a}=e;const{textColorClasses:s,textColorStyles:i}=tt(()=>t.sliderColor),{backgroundColorClasses:l,backgroundColorStyles:d}=Re(()=>t.sliderColor),f=Q(),h=Q(),v=W(()=>t.direction==="horizontal"),k=W(()=>{var A,P;return((P=(A=f.value)==null?void 0:A.group)==null?void 0:P.isSelected.value)??!1});function T(A,P){return{opacity:[0,1]}}function V(A,P){return t.direction==="vertical"?{transform:["scaleY(0)","scaleY(1)"]}:{transform:["scaleX(0)","scaleX(1)"]}}function D(A,P){const x=P.getBoundingClientRect(),B=A.getBoundingClientRect(),N=v.value?"x":"y",E=v.value?"X":"Y",U=v.value?"right":"bottom",F=v.value?"width":"height",O=x[N],ae=B[N],_=O>ae?x[U]-B[U]:x[N]-B[N],ie=Math.sign(_)>0?v.value?"right":"bottom":Math.sign(_)<0?v.value?"left":"top":"center",re=(Math.abs(_)+(Math.sign(_)<0?x[F]:B[F]))/Math.max(x[F],B[F])||0,ne=x[F]/B[F]||0,$=1.5;return{transform:[`translate${E}(${_}px) scale${E}(${ne})`,`translate${E}(${_/$}px) scale${E}(${(re-1)/$+1})`,"none"],transformOrigin:Array(3).fill(ie)}}function J(A){var x,B;let{value:P}=A;if(P){const N=(B=(x=f.value)==null?void 0:x.$el.parentElement)==null?void 0:B.querySelector(".v-tab--selected .v-tab__slider"),E=h.value;if(!N||!E)return;const U=getComputedStyle(N).backgroundColor,F={fade:T,grow:V,shift:D}[t.sliderTransition??"shift"]??D,O=Number(t.sliderTransitionDuration)||({fade:400,grow:350,shift:225}[t.sliderTransition??"shift"]??225);vt(E,{backgroundColor:[U,U],...F(E,N)},{duration:O,easing:kt})}}return pe(()=>{const A=L.filterProps(t);return n(L,z({symbol:Fe,ref:f,class:["v-tab",t.class,k.value&&t.inset?l.value:[]],style:[t.style,k.value&&t.inset?d.value:[],{backgroundColor:k.value&&t.inset?"transparent !important":void 0}],tabindex:k.value?0:-1,role:"tab","aria-selected":String(k.value),active:!1},A,a,{block:t.fixed,maxWidth:t.fixed?300:void 0,"onGroup:selected":J}),{...o,default:()=>{var P;return y(C,null,[((P=o.default)==null?void 0:P.call(o))??t.text,!t.hideSlider&&y("div",{ref:h,class:Ie(["v-tab__slider",t.inset?l.value:s.value]),style:St([i.value,t.inset?d.value:s.value])},null)])}})}),Ne({},f)}});function Gt(t){return t?t.map(e=>xt(e)?e:{text:e,value:e}):[]}const Jt=le({alignTabs:{type:String,default:"start"},color:String,fixedTabs:Boolean,items:{type:Array,default:()=>[]},stacked:Boolean,bgColor:String,grow:Boolean,height:{type:[Number,String],default:void 0},hideSlider:Boolean,inset:Boolean,insetPadding:[String,Number],insetRadius:[String,Number],sliderColor:String,...wt(Ue(),["spaced","sliderTransition","sliderTransitionDuration"]),...Pt({mandatory:"force",selectedClass:"v-tab-item--selected"}),...rt(),...it()},"VTabs"),Ae=ye()({name:"VTabs",props:Jt(),emits:{"update:modelValue":t=>!0},setup(t,e){let{attrs:o,slots:a}=e;const s=Me(t,"modelValue"),i=W(()=>Gt(t.items)),{densityClasses:l}=lt(t),{backgroundColorClasses:d,backgroundColorStyles:f}=Re(()=>t.bgColor),{scopeId:h}=at();return Tt({VTab:{color:M(t,"color"),direction:M(t,"direction"),stacked:M(t,"stacked"),fixed:M(t,"fixedTabs"),inset:M(t,"inset"),sliderColor:M(t,"sliderColor"),sliderTransition:M(t,"sliderTransition"),sliderTransitionDuration:M(t,"sliderTransitionDuration"),hideSlider:M(t,"hideSlider")}}),pe(()=>{const v=Ce.filterProps(t),k=!!(a.window||t.items.length>0);return y(C,null,[n(Ce,z(v,{modelValue:s.value,"onUpdate:modelValue":T=>s.value=T,class:["v-tabs",`v-tabs--${t.direction}`,`v-tabs--align-tabs-${t.alignTabs}`,{"v-tabs--fixed-tabs":t.fixedTabs,"v-tabs--grow":t.grow,"v-tabs--inset":t.inset,"v-tabs--stacked":t.stacked},l.value,d.value,t.class],style:[{"--v-tabs-height":fe(t.height),"--v-tabs-inset-padding":t.inset?fe(t.insetPadding):void 0,"--v-tabs-inset-radius":t.inset?fe(t.insetRadius):void 0},f.value,t.style],role:"tablist",symbol:Fe},h,o),{default:a.default??(()=>i.value.map(T=>{var V;return((V=a.tab)==null?void 0:V.call(a,{item:T}))??n(se,z(T,{key:T.text,value:T.value,spaced:t.spaced}),{default:a[`tab.${T.value}`]?()=>{var D;return(D=a[`tab.${T.value}`])==null?void 0:D.call(a,{item:T})}:void 0})})),prev:a.prev,next:a.next}),k&&n(ft,z({modelValue:s.value,"onUpdate:modelValue":T=>s.value=T,key:"tabs-window"},h),{default:()=>{var T;return[i.value.map(V=>{var D;return((D=a.item)==null?void 0:D.call(a,{item:V}))??n(mt,{value:V.value},{default:()=>{var J;return(J=a[`item.${V.value}`])==null?void 0:J.call(a,{item:V})}})}),(T=a.window)==null?void 0:T.call(a)]}})])}),{}}}),Ee=()=>new Promise((t,e)=>{if(typeof window.jsyaml<"u")return t(window.jsyaml);const o=document.createElement("script");o.src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.1.0/js-yaml.min.js",o.async=!0,o.onload=()=>t(window.jsyaml),o.onerror=()=>e(new Error("无法加载YAML解析库")),document.head.appendChild(o)});class Be{constructor(e){this.data=e,this.version=null,this.subjects=[],this.schedules=[],this._parseData()}_parseData(){if(!this.data)return;this.version=this.data.version||1;const e=this.data.subjects||[];for(const a of e)this.subjects.push({name:a.name,simplified_name:a.simplified_name||null,teacher:a.teacher||null,room:a.room||null});const o=this.data.schedules||[];for(const a of o){const s=[];for(const i of a.classes||[])s.push({subject:i.subject,start_time:i.start_time,end_time:i.end_time});this.schedules.push({name:a.name,enable_day:a.enable_day,weeks:a.weeks||"all",classes:s})}}getSubjects(){return this.subjects}getSchedules(){return this.schedules}getScheduleByDay(e){const o=this.schedules.find(a=>a.enable_day===e);return o?o.classes:[]}toCsesData(){return{version:this.version,subjects:this.subjects,schedules:this.schedules}}}const qt={name:"Cses2Wakeup",data(){return{activeTab:"text",file:null,jsonText:"",loading:!1,error:"",success:"",processedData:null,selectedRows:[],exportPeriods:[],selectedDays:[1,2,3,4,5,6,7],formatMode:"auto",yamlLibLoaded:!1,activeDay:null,subjectColors:{数学:"blue",语文:"red",英语:"green",物理:"purple",化学:"orange",生物:"teal",历史:"brown",地理:"indigo",政治:"pink",体育:"cyan",自习:"grey",早读:"amber",班会:"deep-purple",听力:"light-blue",信息技术:"light-green"},settings:{hideTeacherName:!1,hideRoom:!1,totalWeeks:30},tableHeaders:[{title:"",key:"data-table-select"},{title:"节次",key:"period"},{title:"周一",key:"1"},{title:"周二",key:"2"},{title:"周三",key:"3"},{title:"周四",key:"4"},{title:"周五",key:"5"},{title:"周六",key:"6"},{title:"周日",key:"7"}],timeTableHeaders:[{title:"节次",key:"period"},{title:"课程",key:"subject"},{title:"星期",key:"day"},{title:"开始时间",key:"startTime"},{title:"结束时间",key:"endTime"},{title:"教师",key:"teacher"},{title:"教室",key:"room"},{title:"周次",key:"weeks"}],dayNames:{1:"周一",2:"周二",3:"周三",4:"周四",5:"周五",6:"周六",7:"周日"}}},computed:{timeTableData(){if(!this.processedData||!this.processedData.tableData)return[];const t=[],e=this.processedData.tableData.filter(a=>this.exportPeriods.includes(a.period)),o={};return e.sort((a,s)=>a.period-s.period).forEach((a,s)=>{o[a.period]=s+1}),e.forEach(a=>{for(let s=1;s<=7;s++){if(!this.selectedDays.includes(s))continue;const i=a[s];if(i)if(Array.isArray(i))i.forEach(l=>{!l||!l.name||t.push({originalPeriod:a.period,period:o[a.period],subject:l.name,day:this.dayNames[s],startTime:l.startTime,endTime:l.endTime,teacher:this.settings.hideTeacherName?"":l.teacher||"",room:this.settings.hideRoom?"":l.room||"",weeks:l.weekType?`1-${this.settings.totalWeeks}${l.weekType}`:`1-${this.settings.totalWeeks}`})});else{if(!i.name)continue;t.push({originalPeriod:a.period,period:o[a.period],subject:i.name,day:this.dayNames[s],startTime:i.startTime,endTime:i.endTime,teacher:this.settings.hideTeacherName?"":i.teacher||"",room:this.settings.hideRoom?"":i.room||"",weeks:i.weekType?`1-${this.settings.totalWeeks}${i.weekType}`:`1-${this.settings.totalWeeks}`})}}}),t.sort((a,s)=>{if(a.period!==s.period)return a.period-s.period;const i={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return i[a.day]-i[s.day]})},hasExportData(){return this.processedData&&this.exportPeriods.length>0},totalClassHours(){return this.timeTableData.length},daysWithSchedule(){const t=[];for(let e=1;e<=7;e++)this.selectedDays.includes(e)&&this.getDaySchedule(e).length>0&&t.push(e);return t}},methods:{async handleFileChange(){if(this.resetData(),!this.file)return;const t=this.file.name.toLowerCase();if(t.endsWith(".json")||t.endsWith(".js"))this.formatMode="json";else if((t.endsWith(".yml")||t.endsWith(".yaml"))&&(this.formatMode="yaml",!this.yamlLibLoaded))try{await Ee(),this.yamlLibLoaded=!0}catch(e){this.error=`无法加载YAML解析库: ${e.message}`;return}try{const e=new FileReader;e.onload=async o=>{try{this.jsonText=o.target.result,await this.processInput()}catch(a){this.error=`文件读取失败: ${a.message}`}},e.onerror=()=>{this.error="文件读取失败"},e.readAsText(this.file)}catch(e){this.error=`文件处理失败: ${e.message}`}},handleTextChange(){this.resetData()},resetData(){this.error="",this.success="",this.processedData=null,this.selectedRows=[],this.exportPeriods=[]},async processInput(){if(!this.jsonText&&!this.file){this.error="请粘贴文本或上传文件";return}this.loading=!0,this.error="",this.success="";try{await this.$nextTick();let t;try{if(this.formatMode==="yaml"||this.formatMode==="auto"&&this.isYaml(this.jsonText)){const o=this.parseYaml(this.jsonText);t=new Be(o).toCsesData()}else t=JSON.parse(this.jsonText)}catch(o){throw new Error(`格式解析错误: ${o.message}`)}if(!this.validateCsesFormat(t))throw new Error("不是有效的CSES格式数据");const e=this.processCsesData(t);this.processedData=e,this.selectedDays=[1,2,3,4,5],this.success="数据处理成功!",e.tableData&&e.tableData.length>0&&(this.selectedRows=[...e.tableData],this.exportPeriods=e.tableData.map(o=>o.period))}catch(t){this.error="数据处理失败:"+t.message,console.error(t)}finally{this.loading=!1}},validateCsesFormat(t){return t instanceof Be?t.version===1&&Array.isArray(t.subjects)&&Array.isArray(t.schedules):!(!t||typeof t!="object"||t.version!==1||!Array.isArray(t.subjects)||!Array.isArray(t.schedules))},processCsesData(t){const{schedules:e,subjects:o}=t,a=Object.fromEntries(o.map(l=>[l.name,l])),s=[];let i=0;e.forEach(l=>{l.classes&&l.classes.length>i&&(i=l.classes.length)});for(let l=1;l<=i;l++)s.push({period:l,1:null,2:null,3:null,4:null,5:null,6:null,7:null});return e.forEach(l=>{const d=l.enable_day;if(!d||d<1||d>7)return;let f="";l.weeks==="odd"?f="单":l.weeks==="even"&&(f="双"),l.classes.forEach((h,v)=>{if(!h.subject)return;const k=v+1;if(k>i)return;const T=a[h.subject]||{},V={name:h.subject,teacher:T.teacher||"",room:T.room||"",period:k,startTime:h.start_time,endTime:h.end_time,day:d,weekType:f},D=s[k-1][d];D?f&&D.weekType&&f!==D.weekType?(Array.isArray(s[k-1][d])||(s[k-1][d]=[D]),s[k-1][d].push(V)):f===D.weekType?s[k-1][d]=V:f||(s[k-1][d]=V):s[k-1][d]=V})}),{tableData:s,originalData:t}},updateSelectedPeriods(t){this.exportPeriods=[],t&&t.length>0&&(this.exportPeriods=[...new Set(t.filter(e=>e&&typeof e.period=="number").map(e=>e.period))])},getTimeTableData(){return this.timeTableData},downloadCSV(){var s;if(!((s=this.processedData)!=null&&s.tableData)){this.error="没有可下载的数据";return}if(this.exportPeriods.length===0){this.error="请至少选择一节要导出的课";return}if(this.daysWithSchedule.length===0||this.totalClassHours===0){this.error="没有课程数据可导出";return}let t=`课程名称,星期,开始节数,结束节数,老师,地点,周数 -`;for(const i of this.daysWithSchedule){const l=this.groupByPeriod(this.getDaySchedule(i));for(const d of l)for(const f of d.items){const h={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7}[f.day],v=this.settings.hideTeacherName?"":f.teacher||"",k=this.settings.hideRoom?"":f.room||"";t+=`${f.subject},${h},${f.period},${f.period},${v},${k},${f.weeks} -`}}const e="\uFEFF",o=new Blob([e+t],{type:"text/csv;charset=utf-8"}),a=document.createElement("a");a.href=URL.createObjectURL(o),a.download=`course_schedule_${this.totalClassHours}课时.csv`,a.click(),URL.revokeObjectURL(a.href),this.success=`导出成功!共计 ${this.totalClassHours} 课时`},showExportPreview(){if(!this.hasExportData){this.error="请先选择要导出的节次";return}const t=this.timeTableData.slice(0,5).map(e=>`${e.subject} (${e.day} 第${e.period}节)`).join(` -`);this.timeTableData.length>5?this.success=`导出预览 (共${this.totalClassHours}课时): -${t} -...等${this.totalClassHours-5}节课程`:this.success=`导出预览 (共${this.totalClassHours}课时): -${t}`,this.$nextTick(()=>{this.daysWithSchedule.length>0&&!this.activeDay&&(this.activeDay=this.daysWithSchedule[0])})},isYaml(t){const e=t.trim();if(e.startsWith("{")||e.startsWith("["))try{return JSON.parse(e),!1}catch{}return/^\s*[a-zA-Z0-9_-]+\s*:/.test(e)||/\n\s*[a-zA-Z0-9_-]+\s*:/.test(e)},parseYaml(t){try{if(typeof window.jsyaml<"u")return window.jsyaml.load(t);throw new Error("YAML解析器未加载")}catch(e){throw new Error(`YAML解析错误: ${e.message}`)}},getDaySchedule(t){return this.timeTableData?this.getUnfilteredTimeTableData().filter(o=>({周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7})[o.day]===t):[]},getUnfilteredTimeTableData(){if(!this.processedData||!this.processedData.tableData)return[];const t=[],e=this.processedData.tableData.filter(a=>this.exportPeriods.includes(a.period)),o={};return e.sort((a,s)=>a.period-s.period).forEach((a,s)=>{o[a.period]=s+1}),e.forEach(a=>{for(let s=1;s<=7;s++){const i=a[s];if(i)if(Array.isArray(i))i.forEach(l=>{!l||!l.name||t.push({originalPeriod:a.period,period:o[a.period],subject:l.name,day:this.dayNames[s],startTime:l.startTime,endTime:l.endTime,teacher:this.settings.hideTeacherName?"":l.teacher||"",room:this.settings.hideRoom?"":l.room||"",weeks:l.weekType?`1-${this.settings.totalWeeks}${l.weekType}`:`1-${this.settings.totalWeeks}`})});else{if(!i.name)continue;t.push({originalPeriod:a.period,period:o[a.period],subject:i.name,day:this.dayNames[s],startTime:i.startTime,endTime:i.endTime,teacher:this.settings.hideTeacherName?"":i.teacher||"",room:this.settings.hideRoom?"":i.room||"",weeks:i.weekType?`1-${this.settings.totalWeeks}${i.weekType}`:`1-${this.settings.totalWeeks}`})}}}),t.sort((a,s)=>{if(a.period!==s.period)return a.period-s.period;const i={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return i[a.day]-i[s.day]})},groupByPeriod(t){const e={};return t.forEach(o=>{e[o.period]||(e[o.period]={period:o.period,originalPeriod:o.originalPeriod,items:[],timeSlots:[]}),e[o.period].items.push(o),e[o.period].timeSlots.push({startTime:o.startTime,endTime:o.endTime})}),Object.values(e).forEach(o=>{o.uniqueTimeSlots=[],o.timeSlots.forEach(a=>{o.uniqueTimeSlots.some(s=>s.startTime===a.startTime&&s.endTime===a.endTime)||o.uniqueTimeSlots.push(a)}),o.uniqueTimeSlots.sort((a,s)=>a.startTime.localeCompare(s.startTime))}),Object.values(e).sort((o,a)=>o.period-a.period)},formatTime(t){return t?t.substring(0,5):""},getSubjectColor(t){return this.subjectColors[t]||"grey"},selectAllDays(){this.selectedDays=[1,2,3,4,5,6,7]},clearSelectedDays(){this.selectedDays=[]}},async mounted(){try{await Ee(),this.yamlLibLoaded=!0}catch(t){this.error=t.message}this.$watch("daysWithSchedule",t=>{t.length>0&&!this.activeDay&&(this.activeDay=t[0])})}},Xt={class:"d-flex align-center"},Zt={class:"d-flex align-center"},Kt={key:2,class:"text-caption mb-2"},Qt={class:"d-flex align-center mb-2"},$t={class:"d-flex align-center mb-3"},es={class:"d-flex align-center mb-3"},ts={key:0,class:"course-cell"},ss={key:0},ls={key:1},as={key:2,class:"week-type"},is={key:0},rs={key:1},ns={key:2,class:"week-type"},os={class:"text-center font-weight-bold"};function ds(t,e,o,a,s,i){return m(),S(It,{class:"fill-height"},{default:r(()=>[n(we,null,{default:r(()=>[n(X,{cols:"12"},{default:r(()=>[n(q,{class:"elevation-12",border:""},{default:r(()=>[n(ce,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:r(()=>[n(j,{color:"white",class:"mr-2"},{default:r(()=>[...e[15]||(e[15]=[c("mdi-swap-horizontal",-1)])]),_:1}),e[16]||(e[16]=c(" 课程表转换工具 ",-1))]),_:1}),n(ot,null,{default:r(()=>[...e[17]||(e[17]=[c(" 将CSES格式的JSON或YAML文本转换为WakeUp软件使用的课程表 ",-1)])]),_:1}),n(te,null,{default:r(()=>[s.error?(m(),S(K,{key:0,type:"error",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":e[0]||(e[0]=l=>s.error="")},{default:r(()=>[y("div",Xt,[n(j,{class:"mr-2"},{default:r(()=>[...e[18]||(e[18]=[c("mdi-alert-circle",-1)])]),_:1}),c(" "+p(s.error),1)])]),_:1})):w("",!0),s.success?(m(),S(K,{key:1,type:"success",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":e[1]||(e[1]=l=>s.success="")},{default:r(()=>[y("div",Zt,[n(j,{class:"mr-2"},{default:r(()=>[...e[19]||(e[19]=[c("mdi-check-circle",-1)])]),_:1}),c(" "+p(s.success),1)])]),_:1})):w("",!0),n(Ae,{modelValue:s.activeTab,"onUpdate:modelValue":e[2]||(e[2]=l=>s.activeTab=l),class:"mb-4 mx-2",color:"primary",rounded:""},{default:r(()=>[n(se,{value:"text",class:"px-5"},{default:r(()=>[n(j,{start:""},{default:r(()=>[...e[20]||(e[20]=[c("mdi-text-box",-1)])]),_:1}),e[21]||(e[21]=c(" 文本粘贴 ",-1))]),_:1}),n(se,{value:"file",class:"px-5"},{default:r(()=>[n(j,{start:""},{default:r(()=>[...e[22]||(e[22]=[c("mdi-file-upload",-1)])]),_:1}),e[23]||(e[23]=c(" 文件上传 ",-1))]),_:1})]),_:1},8,["modelValue"]),n(dt,{modelValue:s.formatMode,"onUpdate:modelValue":e[3]||(e[3]=l=>s.formatMode=l),color:"primary",class:"mb-4 mx-2",mandatory:"",density:"comfortable",border:"",rounded:""},{default:r(()=>[n(L,{value:"auto"},{default:r(()=>[...e[24]||(e[24]=[c("自动检测",-1)])]),_:1}),n(L,{value:"json"},{default:r(()=>[...e[25]||(e[25]=[c("JSON",-1)])]),_:1}),n(L,{value:"yaml",disabled:!s.yamlLibLoaded},{default:r(()=>[e[26]||(e[26]=c(" YAML ",-1)),n(he,{activator:"parent",location:"bottom"},{default:r(()=>[c(p(s.yamlLibLoaded?"YAML解析库已加载":"正在加载YAML解析库..."),1)]),_:1})]),_:1},8,["disabled"])]),_:1},8,["modelValue"]),s.jsonText&&s.formatMode==="auto"?(m(),b("div",Kt," 检测到的格式: "+p(i.isYaml(s.jsonText)?"YAML":"JSON"),1)):w("",!0),n(xe,{modelValue:s.activeTab,"onUpdate:modelValue":e[6]||(e[6]=l=>s.activeTab=l)},{default:r(()=>[n(me,{value:"text"},{default:r(()=>[y("div",Qt,[n(Et,{modelValue:s.jsonText,"onUpdate:modelValue":e[4]||(e[4]=l=>s.jsonText=l),label:"粘贴JSON或YAML文本",loading:s.loading,disabled:s.loading,"row-height":"25",rows:"6",placeholder:"请在此粘贴CSES格式的数据...",onInput:i.handleTextChange},null,8,["modelValue","loading","disabled","onInput"])])]),_:1}),n(me,{value:"file"},{default:r(()=>[n(Ht,{modelValue:s.file,"onUpdate:modelValue":e[5]||(e[5]=l=>s.file=l),accept:".js,.json,.yml,.yaml",label:"选择课程表文件","prepend-icon":"mdi-file-upload",loading:s.loading,disabled:s.loading,onChange:i.handleFileChange,hint:"支持JSON、YAML格式文件","persistent-hint":"",rules:[l=>!l||l.size<2e6||"文件大小不能超过 2 MB"]},null,8,["modelValue","loading","disabled","onChange","rules"]),s.file&&s.formatMode==="auto"?(m(),S(K,{key:0,type:"info",class:"mb-4",variant:"tonal",density:"compact"},{default:r(()=>[...e[27]||(e[27]=[c(" 将根据文件扩展名自动检测格式 ",-1)])]),_:1})):w("",!0)]),_:1})]),_:1},8,["modelValue"]),n(X,{cols:"12"},{default:r(()=>[n(q,{flat:"",class:"pa-4 rounded-lg",border:""},{default:r(()=>[y("div",$t,[n(j,{color:"primary",class:"mr-2"},{default:r(()=>[...e[28]||(e[28]=[c("mdi-calendar-multiselect",-1)])]),_:1}),e[33]||(e[33]=y("h3",{class:"text-subtitle-1 font-weight-medium mr-auto"},"选择导出天数",-1)),n(L,{variant:"text",color:"primary",class:"ml-2",onClick:i.selectAllDays},{default:r(()=>[n(j,{start:"",size:"small"},{default:r(()=>[...e[29]||(e[29]=[c("mdi-checkbox-multiple-marked",-1)])]),_:1}),e[30]||(e[30]=c(" 全选 ",-1))]),_:1},8,["onClick"]),n(L,{variant:"text",color:"error",class:"ml-2",onClick:i.clearSelectedDays},{default:r(()=>[n(j,{start:"",size:"small"},{default:r(()=>[...e[31]||(e[31]=[c("mdi-checkbox-multiple-blank-outline",-1)])]),_:1}),e[32]||(e[32]=c(" 清除 ",-1))]),_:1},8,["onClick"])]),n(At,{modelValue:s.selectedDays,"onUpdate:modelValue":e[7]||(e[7]=l=>s.selectedDays=l),multiple:"",class:"mb-2",color:"primary"},{default:r(()=>[(m(),b(C,null,R(7,l=>n(I,{key:l,value:l,filter:"",variant:"tonal",class:"filter-chip",label:""},{default:r(()=>[c(p(s.dayNames[l])+" ",1),i.getDaySchedule(l).length>0?(m(),S(je,{key:0,content:i.getDaySchedule(l).length,color:"primary",inline:""},null,8,["content"])):w("",!0)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1}),n(X,{cols:"12"},{default:r(()=>[n(q,{flat:"",class:"pa-4 rounded-lg",border:""},{default:r(()=>[y("div",es,[n(j,{color:"primary",class:"mr-2"},{default:r(()=>[...e[34]||(e[34]=[c("mdi-cog",-1)])]),_:1}),e[35]||(e[35]=y("h3",{class:"text-subtitle-1 font-weight-medium"},"显示配置",-1))]),n(we,null,{default:r(()=>[n(X,{cols:"12",sm:"6"},{default:r(()=>[n(Pe,{modelValue:s.settings.hideTeacherName,"onUpdate:modelValue":e[8]||(e[8]=l=>s.settings.hideTeacherName=l),label:"不显示教师姓名",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),n(X,{cols:"12",sm:"6"},{default:r(()=>[n(Pe,{modelValue:s.settings.hideRoom,"onUpdate:modelValue":e[9]||(e[9]=l=>s.settings.hideRoom=l),label:"不显示教室信息",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),n(X,{cols:"12",sm:"6"},{default:r(()=>[n(Mt,{modelValue:s.settings.totalWeeks,"onUpdate:modelValue":e[10]||(e[10]=l=>s.settings.totalWeeks=l),modelModifiers:{number:!0},label:"总周数",type:"number",min:"1",max:"30",rules:[l=>l>0||"周数必须大于0"],density:"comfortable",variant:"outlined","prepend-inner-icon":"mdi-calendar-week",class:"mt-3"},null,8,["modelValue","rules"])]),_:1})]),_:1})]),_:1})]),_:1}),s.loading?(m(),S(q,{key:3,class:"my-4",outlined:""},{default:r(()=>[n(te,null,{default:r(()=>[n(Lt,{type:"table",class:"mx-auto"})]),_:1})]),_:1})):w("",!0),s.processedData?(m(),S(I,{key:4,color:"primary",class:"ml-2","prepend-icon":"mdi-book-open-variant"},{default:r(()=>[c(p(s.processedData.tableData.length)+" 节课程 ",1)]),_:1})):w("",!0),s.processedData&&s.exportPeriods.length===0?(m(),S(K,{key:5,type:"warning",class:"mb-4",closable:""},{default:r(()=>[...e[36]||(e[36]=[c(" 请选择要导出的节次 ",-1)])]),_:1})):w("",!0),s.processedData?(m(),S(q,{key:6,class:"my-4",elevation:"1"},{default:r(()=>[n(ce,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:r(()=>[n(j,{color:"primary",class:"mr-2"},{default:r(()=>[...e[37]||(e[37]=[c("mdi-table",-1)])]),_:1}),e[39]||(e[39]=y("span",{class:"font-weight-bold"},"课程表",-1)),n(I,{color:"primary",class:"ml-3",size:"small",pill:""},{default:r(()=>[n(j,{start:"",size:"x-small"},{default:r(()=>[...e[38]||(e[38]=[c("mdi-book-open-variant",-1)])]),_:1}),c(" "+p(s.processedData.tableData.length)+" 节课程 ",1)]),_:1})]),_:1}),n(te,{class:"pa-0"},{default:r(()=>[n(ht,{"items-selected":s.selectedRows,"onUpdate:itemsSelected":[e[12]||(e[12]=l=>s.selectedRows=l),i.updateSelectedPeriods],headers:s.tableHeaders,items:s.processedData.tableData,"hide-default-footer":"",class:"elevation-1","items-per-page":-1,"item-value":"period","show-select":"","select-strategy":"single-independent","sort-by":[],"disable-sort":""},jt({"item.data-table-select":r(({item:l})=>[n(Wt,{modelValue:s.exportPeriods,"onUpdate:modelValue":e[11]||(e[11]=d=>s.exportPeriods=d),value:l.period,"hide-details":"",density:"compact"},null,8,["modelValue","value"])]),_:2},[R(7,l=>({name:`item.${l}`,fn:r(({item:d})=>[d[l]?(m(),b("div",ts,[Array.isArray(d[l])?(m(!0),b(C,{key:0},R(d[l],(f,h)=>(m(),b("div",{key:h,class:"course-item"},[c(p(f.name)+" ",1),!s.settings.hideTeacherName&&f.teacher?(m(),b("span",ss,[e[40]||(e[40]=y("br",null,null,-1)),c(p(f.teacher),1)])):w("",!0),!s.settings.hideRoom&&f.room?(m(),b("span",ls,[e[41]||(e[41]=y("br",null,null,-1)),c(p(f.room),1)])):w("",!0),f.weekType?(m(),b("span",as,p(f.weekType)+"周 ",1)):w("",!0)]))),128)):(m(),b(C,{key:1},[c(p(d[l].name)+" ",1),!s.settings.hideTeacherName&&d[l].teacher?(m(),b("span",is,[e[42]||(e[42]=y("br",null,null,-1)),c(p(d[l].teacher),1)])):w("",!0),!s.settings.hideRoom&&d[l].room?(m(),b("span",rs,[e[43]||(e[43]=y("br",null,null,-1)),c(p(d[l].room),1)])):w("",!0),d[l].weekType?(m(),b("span",ns,p(d[l].weekType)+"周 ",1)):w("",!0)],64))])):w("",!0)])}))]),1032,["items-selected","headers","items","onUpdate:itemsSelected"])]),_:1})]),_:1})):w("",!0),i.hasExportData?(m(),S(q,{key:7,class:"my-4",elevation:"1"},{default:r(()=>[n(ce,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:r(()=>[n(j,{color:"primary",class:"mr-2"},{default:r(()=>[...e[44]||(e[44]=[c("mdi-timetable",-1)])]),_:1}),e[48]||(e[48]=y("span",{class:"font-weight-bold"},"每日课程时间表",-1)),n(I,{class:"ml-3",size:"small",color:"primary",pill:""},{default:r(()=>[n(j,{start:"",size:"x-small"},{default:r(()=>[...e[45]||(e[45]=[c("mdi-clock-outline",-1)])]),_:1}),c(" "+p(i.totalClassHours)+" 课时 ",1)]),_:1}),s.exportPeriods.length>0?(m(),S(he,{key:0},{activator:r(({props:l})=>[n(I,z({class:"ml-2",size:"small",color:"info"},l,{pill:""}),{default:r(()=>[n(j,{start:"",size:"x-small"},{default:r(()=>[...e[46]||(e[46]=[c("mdi-information-outline",-1)])]),_:1}),e[47]||(e[47]=c(" 节次已重排 ",-1))]),_:1},16)]),default:r(()=>[y("span",null,"已将选中的节次 "+p(s.exportPeriods.join(", "))+" 重新排序为连续的 1-"+p(s.exportPeriods.length),1)]),_:1})):w("",!0)]),_:1}),n(te,null,{default:r(()=>[i.daysWithSchedule.length>0?(m(),S(Ae,{key:0,modelValue:s.activeDay,"onUpdate:modelValue":e[13]||(e[13]=l=>s.activeDay=l),class:"mb-4",color:"primary",grow:"","align-tabs":"center"},{default:r(()=>[(m(!0),b(C,null,R(i.daysWithSchedule,l=>(m(),S(se,{key:l,value:l,class:"px-2 font-weight-medium"},{default:r(()=>[c(p(s.dayNames[l])+" ",1),n(je,{content:i.getDaySchedule(l).length,color:"primary",inline:""},null,8,["content"])]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])):w("",!0),n(xe,{modelValue:s.activeDay,"onUpdate:modelValue":e[14]||(e[14]=l=>s.activeDay=l)},{default:r(()=>[(m(!0),b(C,null,R(i.daysWithSchedule,l=>(m(),S(me,{key:l,value:l},{default:r(()=>[n(yt,{density:"compact",class:"rounded","headers-length":6,"disable-sort":""},{default:r(()=>[e[50]||(e[50]=y("thead",null,[y("tr",null,[y("th",{class:"text-center"},"节次"),y("th",null,"课程"),y("th",null,"时间"),y("th",null,"教师"),y("th",null,"教室"),y("th",null,"周次")])],-1)),y("tbody",null,[(m(!0),b(C,null,R(i.groupByPeriod(i.getDaySchedule(l)),(d,f)=>(m(),b("tr",{key:f},[y("td",os,[c(p(d.period)+" ",1),d.originalPeriod!==d.period?(m(),S(he,{key:0},{activator:r(({props:h})=>[n(j,z({size:"x-small"},{ref_for:!0},h,{color:"info",class:"ml-1"}),{default:r(()=>[...e[49]||(e[49]=[c("mdi-sync",-1)])]),_:1},16)]),default:r(()=>[c(" 原节次: "+p(d.originalPeriod),1)]),_:2},1024)):w("",!0)]),y("td",null,[(m(!0),b(C,null,R(d.items,(h,v)=>(m(),b("div",{key:v,class:"mb-1"},[n(I,{size:"small",color:i.getSubjectColor(h.subject),label:"","text-color":"white",class:"mr-1"},{default:r(()=>[c(p(h.subject),1)]),_:2},1032,["color"]),d.items.length>1?(m(),S(I,{key:0,size:"x-small",class:"ml-1",color:h.weekType==="单"?"warning":"success"},{default:r(()=>[c(p(h.weekType)+"周 ",1)]),_:2},1032,["color"])):w("",!0)]))),128))]),y("td",null,[(m(!0),b(C,null,R(d.uniqueTimeSlots,(h,v)=>(m(),b("div",{key:v,class:"mb-1"},[n(I,{size:"x-small",class:"time-chip"},{default:r(()=>[c(p(i.formatTime(h.startTime))+" - "+p(i.formatTime(h.endTime)),1)]),_:2},1024)]))),128))]),y("td",null,[s.settings.hideTeacherName?(m(),b(C,{key:1},[c("-")],64)):(m(!0),b(C,{key:0},R(d.items,(h,v)=>(m(),b("div",{key:v,class:"mb-1"},p(h.teacher||"-"),1))),128))]),y("td",null,[s.settings.hideRoom?(m(),b(C,{key:1},[c("-")],64)):(m(!0),b(C,{key:0},R(d.items,(h,v)=>(m(),b("div",{key:v,class:"mb-1"},p(h.room||"-"),1))),128))]),y("td",null,[(m(!0),b(C,null,R(d.items,(h,v)=>(m(),b("div",{key:v,class:"mb-1"},p(h.weeks),1))),128))])]))),128))])]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),i.hasExportData&&i.daysWithSchedule.length===0?(m(),S(K,{key:1,type:"info",class:"mt-3"},{default:r(()=>[...e[51]||(e[51]=[c(" 没有找到任何课程数据 ",-1)])]),_:1})):w("",!0)]),_:1})]),_:1})):w("",!0)]),_:1}),n(ut,{class:""},{default:r(()=>[n(ct),n(L,{color:"primary",variant:"outlined",loading:s.loading,disabled:!s.jsonText&&!s.file||s.loading,onClick:i.processInput,"prepend-icon":"mdi-cog-refresh"},{default:r(()=>[...e[52]||(e[52]=[c(" 处理数据 ",-1)])]),_:1},8,["loading","disabled","onClick"]),n(L,{color:"info",disabled:!i.hasExportData,onClick:i.showExportPreview,class:"ml-2","prepend-icon":"mdi-eye",border:""},{default:r(()=>[...e[53]||(e[53]=[c(" 刷新 ",-1)])]),_:1},8,["disabled","onClick"]),n(L,{color:"success",variant:"outlined",disabled:!i.hasExportData,onClick:i.downloadCSV,class:"ml-2","prepend-icon":"mdi-download",border:""},{default:r(()=>[...e[54]||(e[54]=[c(" 下载CSV ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const As=nt(qt,[["render",ds],["__scopeId","data-v-c07f22af"]]);export{As as default}; diff --git a/assets/dataProvider-BwUtbSl1.js b/assets/dataProvider-bUkzKSNt.js similarity index 98% rename from assets/dataProvider-BwUtbSl1.js rename to assets/dataProvider-bUkzKSNt.js index e117809..06b4e8b 100644 --- a/assets/dataProvider-BwUtbSl1.js +++ b/assets/dataProvider-bUkzKSNt.js @@ -1 +1 @@ -import{a as X,g as Y}from"./vendor-utils-DDRLRfsI.js";import{g as u,ae as q,v as O}from"./index-_6IQhlPZ.js";import{i as R,t as I,g as j}from"./serverRotation-BGVL0kta.js";const K=(e,r)=>r.some(t=>e instanceof t);let F,V;function ee(){return F||(F=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function re(){return V||(V=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const P=new WeakMap,_=new WeakMap,S=new WeakMap;function te(e){const r=new Promise((t,s)=>{const o=()=>{e.removeEventListener("success",a),e.removeEventListener("error",n)},a=()=>{t(p(e.result)),o()},n=()=>{s(e.error),o()};e.addEventListener("success",a),e.addEventListener("error",n)});return S.set(r,e),r}function se(e){if(P.has(e))return;const r=new Promise((t,s)=>{const o=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",n),e.removeEventListener("abort",n)},a=()=>{t(),o()},n=()=>{s(e.error||new DOMException("AbortError","AbortError")),o()};e.addEventListener("complete",a),e.addEventListener("error",n),e.addEventListener("abort",n)});P.set(e,r)}let L={get(e,r,t){if(e instanceof IDBTransaction){if(r==="done")return P.get(e);if(r==="store")return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return p(e[r])},set(e,r,t){return e[r]=t,!0},has(e,r){return e instanceof IDBTransaction&&(r==="done"||r==="store")?!0:r in e}};function J(e){L=e(L)}function ne(e){return re().includes(e)?function(...r){return e.apply(C(this),r),p(this.request)}:function(...r){return p(e.apply(C(this),r))}}function oe(e){return typeof e=="function"?ne(e):(e instanceof IDBTransaction&&se(e),K(e,ee())?new Proxy(e,L):e)}function p(e){if(e instanceof IDBRequest)return te(e);if(_.has(e))return _.get(e);const r=oe(e);return r!==e&&(_.set(e,r),S.set(r,e)),r}const C=e=>S.get(e);function ae(e,r,{blocked:t,upgrade:s,blocking:o,terminated:a}={}){const n=indexedDB.open(e,r),c=p(n);return s&&n.addEventListener("upgradeneeded",i=>{s(p(n.result),i.oldVersion,i.newVersion,p(n.transaction),i)}),t&&n.addEventListener("blocked",i=>t(i.oldVersion,i.newVersion,i)),c.then(i=>{a&&i.addEventListener("close",()=>a()),o&&i.addEventListener("versionchange",d=>o(d.oldVersion,d.newVersion,d))}).catch(()=>{}),c}const ie=["get","getKey","getAll","getAllKeys","count"],ce=["put","add","delete","clear"],B=new Map;function W(e,r){if(!(e instanceof IDBDatabase&&!(r in e)&&typeof r=="string"))return;if(B.get(r))return B.get(r);const t=r.replace(/FromIndex$/,""),s=r!==t,o=ce.includes(t);if(!(t in(s?IDBIndex:IDBObjectStore).prototype)||!(o||ie.includes(t)))return;const a=async function(n,...c){const i=this.transaction(n,o?"readwrite":"readonly");let d=i.store;return s&&(d=d.index(c.shift())),(await Promise.all([d[t](...c),o&&i.done]))[0]};return B.set(r,a),a}J(e=>({...e,get:(r,t,s)=>W(r,t)||e.get(r,t,s),has:(r,t)=>!!W(r,t)||e.has(r,t)}));const ue=["continue","continuePrimaryKey","advance"],H={},T=new WeakMap,G=new WeakMap,de={get(e,r){if(!ue.includes(r))return e[r];let t=H[r];return t||(t=H[r]=function(...s){T.set(this,G.get(this)[r](...s))}),t}};async function*le(...e){let r=this;if(r instanceof IDBCursor||(r=await r.openCursor(...e)),!r)return;r=r;const t=new Proxy(r,de);for(G.set(t,r),S.set(t,C(r));r;)yield t,r=await(T.get(t)||r.continue()),T.delete(t)}function z(e,r){return r===Symbol.asyncIterator&&K(e,[IDBIndex,IDBObjectStore,IDBCursor])||r==="iterate"&&K(e,[IDBIndex,IDBObjectStore])}J(e=>({...e,get(r,t,s){return z(r,t)?le:e.get(r,t,s)},has(r,t){return z(r,t)||e.has(r,t)}}));const fe="ClassworksDB",ve=2,x=async()=>ae(fe,ve,{upgrade(e){e.objectStoreNames.contains("kv")||e.createObjectStore("kv"),e.objectStoreNames.contains("system")||e.createObjectStore("system")}}),N={async loadData(e){try{const t=await(await x()).get("kv",e);return t?y(JSON.parse(t)):f("数据不存在","NOT_FOUND")}catch(r){return f("读取本地数据失败:"+r)}},async saveData(e,r){try{return await(await x()).put("kv",JSON.stringify(r),e),y(!0)}catch(t){return f("保存本地数据失败:"+t)}},async loadKeys(e={}){try{const o=await(await x()).transaction(["kv"],"readonly").objectStore("kv").getAllKeys(),{sortDir:a="asc",limit:n=100,skip:c=0}=e,i=o.sort((k,l)=>a==="desc"?l.localeCompare(k):k.localeCompare(l)),d=i.length,m=i.slice(c,c+n),w={keys:m,total_rows:d,current_page:{limit:n,skip:c,count:m.length},load_more:null};return y(w)}catch(r){return f("获取本地键名列表失败:"+r.message)}}};function me(e,r){return"headers"in e&&typeof e.headers=="object"&&!Array.isArray(e.headers)?$(e.headers):"getHeaders"in e&&typeof e.getHeaders=="function"?$(e.getHeaders()):$(e)}function $(e,r){const t=h(e,"ratelimit");if(t)return De(t);let s;if(h(e,"ratelimit-remaining"))s="ratelimit-";else if(h(e,"x-ratelimit-remaining"))s="x-ratelimit-";else if(h(e,"x-rate-limit-remaining"))s="x-rate-limit-";else return;const o=g(h(e,`${s}limit`)),a=g(h(e,`${s}used`))||g(h(e,`${s}observed`)),n=g(h(e,`${s}remaining`));let c;const i=h(e,`${s}reset`);switch(void 0){case"date":{c=Z(i??"");break}case"unix":{c=M(i??"");break}case"seconds":{c=Q(i??"");break}case"milliseconds":{c=pe(i??"");break}default:if(i)c=ke(i);else{const m=h(e,"retry-after");m&&(c=M(m))}}return{limit:Number.isNaN(o)?a+n:o,used:Number.isNaN(a)?o-n:a,remaining:n,reset:c}}var ye=/limit\s*=\s*(\d+)/i,ge=/remaining\s*=\s*(\d+)/i,he=/reset\s*=\s*(\d+)/i;function De(e){var r,t,s;const o=g((r=ye.exec(e))==null?void 0:r[1]),a=g((t=ge.exec(e))==null?void 0:t[1]),n=g((s=he.exec(e))==null?void 0:s[1]),c=U(n);return{limit:o,used:o-a,remaining:a,reset:c}}function U(e){const r=new Date;return r.setSeconds(r.getSeconds()+e),r}function g(e){return typeof e=="number"?e:Number.parseInt(e??"",10)}function h(e,r){var t;if("get"in e&&typeof e.get=="function")return(t=e.get(r))!=null?t:void 0;if(r in e&&typeof e[r]=="string")return e[r]}function Z(e){return new Date(e)}function M(e){const r=g(e);return new Date(r*1e3)}function Q(e){const r=g(e);return U(r)}function pe(e){const r=g(e);return U(r/1e3)}var we=/[a-z]/i;function ke(e){if(we.test(e))return Z(e);const r=g(e);return r&&r>1e9?M(r):Q(r)}const v=X.create({timeout:1e4});v.interceptors.request.use(e=>{const r=u("server.provider");if(r==="kv-server"||r==="classworkscloud"){const t=u("server.kvToken");if(t)e.headers["x-app-token"]=t;else{const s=u("server.siteKey");s&&(e.headers["x-site-key"]=Y.encode(s))}}return e},e=>(console.log(e),Promise.reject(e)));v.interceptors.response.use(e=>e,e=>{if(e.response&&e.response.status===429)try{const r=me(e.response);r&&q.show(r.reset,e.config.url,e.config.method.toUpperCase())}catch(r){console.error("解析限速头信息失败:",r)}return Promise.reject(e)});const Ee=Object.freeze(Object.defineProperty({__proto__:null,default:v},Symbol.toStringTag,{value:"Module"})),D=()=>{const e={Accept:"application/json"},r=u("server.kvToken"),t=u("server.siteKey");return r?e["x-app-token"]=r:t&&(e["x-site-key"]=t),e},E={async loadNamespaceInfo(){var e,r;try{if(R())return await I(async o=>{const a=await v.get(`${o}/kv/_info`,{headers:D()});return y(a.data)});const t=u("server.domain"),s=await v.get(`${t}/kv/_info`,{headers:D()});return y(s.data)}catch(t){return console.error("获取命名空间信息失败:",t),f(((r=(e=t.response)==null?void 0:e.data)==null?void 0:r.message)||"获取命名空间信息失败","NAMESPACE_ERROR")}},async updateNamespaceInfo(e){var r,t;try{if(R())return await I(async a=>await v.put(`${a}/kv/_info`,e,{headers:D()}));const s=u("server.domain");return await v.put(`${s}/kv/_info`,e,{headers:D()})}catch(s){return f(((t=(r=s.response)==null?void 0:r.data)==null?void 0:t.message)||"更新命名空间信息失败","NAMESPACE_ERROR")}},async loadData(e){var r,t,s;try{if(R())return await I(async n=>{const c=await v.get(`${n}/kv/${e}`,{headers:D()});return y(c.data)});const o=u("server.domain"),a=await v.get(`${o}/kv/${e}`,{headers:D()});return y(a.data)}catch(o){return((r=o.response)==null?void 0:r.status)===404?f("数据不存在","NOT_FOUND"):(console.log(o),f(((s=(t=o.response)==null?void 0:t.data)==null?void 0:s.message)||"服务器连接失败","NETWORK_ERROR"))}},async saveData(e,r){var t,s;try{if(R())return await I(async a=>(await v.post(`${a}/kv/${e}`,r,{headers:D()}),y(!0)));const o=u("server.domain");return await v.post(`${o}/kv/${e}`,r,{headers:D()}),y(!0)}catch(o){return console.log(o),f(((s=(t=o.response)==null?void 0:t.data)==null?void 0:s.message)||"保存失败","SAVE_ERROR")}},async loadKeys(e={}){var r,t,s,o,a;try{const{sortBy:n="key",sortDir:c="asc",limit:i=100,skip:d=0}=e,m=new URLSearchParams({sortBy:n,sortDir:c,limit:i.toString(),skip:d.toString()});if(R())return await I(async l=>{const b=await v.get(`${l}/kv/_keys?${m}`,{headers:D()});return y(b.data)});const w=u("server.domain"),k=await v.get(`${w}/kv/_keys?${m}`,{headers:D()});return y(k.data)}catch(n){return((r=n.response)==null?void 0:r.status)===404?f("命名空间不存在","NOT_FOUND"):((t=n.response)==null?void 0:t.status)===403?f("无权限访问此命名空间","PERMISSION_DENIED"):((s=n.response)==null?void 0:s.status)===401?f("认证失败","UNAUTHORIZED"):(console.log(n),f(((a=(o=n.response)==null?void 0:o.data)==null?void 0:a.message)||"获取键名列表失败","NETWORK_ERROR"))}}},y=e=>e,f=(e,r="UNKNOWN_ERROR")=>({success:!1,error:{code:r,message:e}}),Ne={loadData:async e=>{const r=u("server.provider");return r==="kv-server"||r==="classworkscloud"?E.loadData(e):N.loadData(e)},saveData:async(e,r)=>{const t=u("server.provider");return t==="kv-server"||t==="classworkscloud"?E.saveData(e,r):N.saveData(e,r)},loadKeys:async(e={})=>{const r=u("server.provider");return r==="kv-server"||r==="classworkscloud"?E.loadKeys(e):N.loadKeys(e)},async getKeyCloudUrl(e,r={}){var o;const{migrateFromLocal:t=!0,autoConfigureCloud:s=!0}=r;try{const a=u("server.provider");let n;a==="classworkscloud"?n=j():n=u("server.domain");let c=u("server.siteKey");const i=u("device.uuid");let d=!1;if(!n||!i)if(s){const l={"server.domain":"https://kv-service.houlang.cloud","server.siteKey":""};n||(O("server.domain",l["server.domain"]),n=l["server.domain"],d=!0),c||(O("server.siteKey",l["server.siteKey"]),c=l["server.siteKey"]),O("server.provider","classworkscloud"),n=j()}else return f("云端配置无效,请检查服务器域名和设备UUID","CONFIG_ERROR");let m=!1;if(t)try{const l=await N.loadData(e);if(l&&l.success!==!1){const b=await E.loadData(e);if(b&&b.success===!1&&((o=b.error)==null?void 0:o.code)==="NOT_FOUND"){const A=await E.saveData(e,l);A&&A.success!==!1&&(m=!0,console.log(`已成功将键 ${e} 的数据从本地迁移到云端`))}}}catch(l){console.warn(`迁移键 ${e} 的数据时出错:`,l)}const w=u("server.kvToken");return{success:!0,url:`${n}/kv/${e}?token=${w}`,migrated:m,configured:d}}catch(a){return console.error("获取键云端地址时出错:",a),f(a.message||"获取键云端地址失败","CLOUD_URL_ERROR")}}};export{v as a,N as b,Ee as c,Ne as d,E as k,ae as o}; +import{a as X,g as Y}from"./vendor-utils-DDRLRfsI.js";import{g as u,af as q,s as O}from"./index-CFUCTEXJ.js";import{i as R,t as I,g as j}from"./serverRotation-CdH9Xda8.js";const K=(e,r)=>r.some(t=>e instanceof t);let F,V;function ee(){return F||(F=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function re(){return V||(V=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const P=new WeakMap,_=new WeakMap,S=new WeakMap;function te(e){const r=new Promise((t,s)=>{const o=()=>{e.removeEventListener("success",a),e.removeEventListener("error",n)},a=()=>{t(p(e.result)),o()},n=()=>{s(e.error),o()};e.addEventListener("success",a),e.addEventListener("error",n)});return S.set(r,e),r}function se(e){if(P.has(e))return;const r=new Promise((t,s)=>{const o=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",n),e.removeEventListener("abort",n)},a=()=>{t(),o()},n=()=>{s(e.error||new DOMException("AbortError","AbortError")),o()};e.addEventListener("complete",a),e.addEventListener("error",n),e.addEventListener("abort",n)});P.set(e,r)}let L={get(e,r,t){if(e instanceof IDBTransaction){if(r==="done")return P.get(e);if(r==="store")return t.objectStoreNames[1]?void 0:t.objectStore(t.objectStoreNames[0])}return p(e[r])},set(e,r,t){return e[r]=t,!0},has(e,r){return e instanceof IDBTransaction&&(r==="done"||r==="store")?!0:r in e}};function J(e){L=e(L)}function ne(e){return re().includes(e)?function(...r){return e.apply(C(this),r),p(this.request)}:function(...r){return p(e.apply(C(this),r))}}function oe(e){return typeof e=="function"?ne(e):(e instanceof IDBTransaction&&se(e),K(e,ee())?new Proxy(e,L):e)}function p(e){if(e instanceof IDBRequest)return te(e);if(_.has(e))return _.get(e);const r=oe(e);return r!==e&&(_.set(e,r),S.set(r,e)),r}const C=e=>S.get(e);function ae(e,r,{blocked:t,upgrade:s,blocking:o,terminated:a}={}){const n=indexedDB.open(e,r),c=p(n);return s&&n.addEventListener("upgradeneeded",i=>{s(p(n.result),i.oldVersion,i.newVersion,p(n.transaction),i)}),t&&n.addEventListener("blocked",i=>t(i.oldVersion,i.newVersion,i)),c.then(i=>{a&&i.addEventListener("close",()=>a()),o&&i.addEventListener("versionchange",d=>o(d.oldVersion,d.newVersion,d))}).catch(()=>{}),c}const ie=["get","getKey","getAll","getAllKeys","count"],ce=["put","add","delete","clear"],B=new Map;function W(e,r){if(!(e instanceof IDBDatabase&&!(r in e)&&typeof r=="string"))return;if(B.get(r))return B.get(r);const t=r.replace(/FromIndex$/,""),s=r!==t,o=ce.includes(t);if(!(t in(s?IDBIndex:IDBObjectStore).prototype)||!(o||ie.includes(t)))return;const a=async function(n,...c){const i=this.transaction(n,o?"readwrite":"readonly");let d=i.store;return s&&(d=d.index(c.shift())),(await Promise.all([d[t](...c),o&&i.done]))[0]};return B.set(r,a),a}J(e=>({...e,get:(r,t,s)=>W(r,t)||e.get(r,t,s),has:(r,t)=>!!W(r,t)||e.has(r,t)}));const ue=["continue","continuePrimaryKey","advance"],H={},T=new WeakMap,G=new WeakMap,de={get(e,r){if(!ue.includes(r))return e[r];let t=H[r];return t||(t=H[r]=function(...s){T.set(this,G.get(this)[r](...s))}),t}};async function*le(...e){let r=this;if(r instanceof IDBCursor||(r=await r.openCursor(...e)),!r)return;r=r;const t=new Proxy(r,de);for(G.set(t,r),S.set(t,C(r));r;)yield t,r=await(T.get(t)||r.continue()),T.delete(t)}function z(e,r){return r===Symbol.asyncIterator&&K(e,[IDBIndex,IDBObjectStore,IDBCursor])||r==="iterate"&&K(e,[IDBIndex,IDBObjectStore])}J(e=>({...e,get(r,t,s){return z(r,t)?le:e.get(r,t,s)},has(r,t){return z(r,t)||e.has(r,t)}}));const fe="ClassworksDB",ve=2,x=async()=>ae(fe,ve,{upgrade(e){e.objectStoreNames.contains("kv")||e.createObjectStore("kv"),e.objectStoreNames.contains("system")||e.createObjectStore("system")}}),N={async loadData(e){try{const t=await(await x()).get("kv",e);return t?y(JSON.parse(t)):f("数据不存在","NOT_FOUND")}catch(r){return f("读取本地数据失败:"+r)}},async saveData(e,r){try{return await(await x()).put("kv",JSON.stringify(r),e),y(!0)}catch(t){return f("保存本地数据失败:"+t)}},async loadKeys(e={}){try{const o=await(await x()).transaction(["kv"],"readonly").objectStore("kv").getAllKeys(),{sortDir:a="asc",limit:n=100,skip:c=0}=e,i=o.sort((k,l)=>a==="desc"?l.localeCompare(k):k.localeCompare(l)),d=i.length,m=i.slice(c,c+n),w={keys:m,total_rows:d,current_page:{limit:n,skip:c,count:m.length},load_more:null};return y(w)}catch(r){return f("获取本地键名列表失败:"+r.message)}}};function me(e,r){return"headers"in e&&typeof e.headers=="object"&&!Array.isArray(e.headers)?$(e.headers):"getHeaders"in e&&typeof e.getHeaders=="function"?$(e.getHeaders()):$(e)}function $(e,r){const t=h(e,"ratelimit");if(t)return De(t);let s;if(h(e,"ratelimit-remaining"))s="ratelimit-";else if(h(e,"x-ratelimit-remaining"))s="x-ratelimit-";else if(h(e,"x-rate-limit-remaining"))s="x-rate-limit-";else return;const o=g(h(e,`${s}limit`)),a=g(h(e,`${s}used`))||g(h(e,`${s}observed`)),n=g(h(e,`${s}remaining`));let c;const i=h(e,`${s}reset`);switch(void 0){case"date":{c=Z(i??"");break}case"unix":{c=M(i??"");break}case"seconds":{c=Q(i??"");break}case"milliseconds":{c=pe(i??"");break}default:if(i)c=ke(i);else{const m=h(e,"retry-after");m&&(c=M(m))}}return{limit:Number.isNaN(o)?a+n:o,used:Number.isNaN(a)?o-n:a,remaining:n,reset:c}}var ye=/limit\s*=\s*(\d+)/i,ge=/remaining\s*=\s*(\d+)/i,he=/reset\s*=\s*(\d+)/i;function De(e){var r,t,s;const o=g((r=ye.exec(e))==null?void 0:r[1]),a=g((t=ge.exec(e))==null?void 0:t[1]),n=g((s=he.exec(e))==null?void 0:s[1]),c=U(n);return{limit:o,used:o-a,remaining:a,reset:c}}function U(e){const r=new Date;return r.setSeconds(r.getSeconds()+e),r}function g(e){return typeof e=="number"?e:Number.parseInt(e??"",10)}function h(e,r){var t;if("get"in e&&typeof e.get=="function")return(t=e.get(r))!=null?t:void 0;if(r in e&&typeof e[r]=="string")return e[r]}function Z(e){return new Date(e)}function M(e){const r=g(e);return new Date(r*1e3)}function Q(e){const r=g(e);return U(r)}function pe(e){const r=g(e);return U(r/1e3)}var we=/[a-z]/i;function ke(e){if(we.test(e))return Z(e);const r=g(e);return r&&r>1e9?M(r):Q(r)}const v=X.create({timeout:1e4});v.interceptors.request.use(e=>{const r=u("server.provider");if(r==="kv-server"||r==="classworkscloud"){const t=u("server.kvToken");if(t)e.headers["x-app-token"]=t;else{const s=u("server.siteKey");s&&(e.headers["x-site-key"]=Y.encode(s))}}return e},e=>(console.log(e),Promise.reject(e)));v.interceptors.response.use(e=>e,e=>{if(e.response&&e.response.status===429)try{const r=me(e.response);r&&q.show(r.reset,e.config.url,e.config.method.toUpperCase())}catch(r){console.error("解析限速头信息失败:",r)}return Promise.reject(e)});const Ee=Object.freeze(Object.defineProperty({__proto__:null,default:v},Symbol.toStringTag,{value:"Module"})),D=()=>{const e={Accept:"application/json"},r=u("server.kvToken"),t=u("server.siteKey");return r?e["x-app-token"]=r:t&&(e["x-site-key"]=t),e},E={async loadNamespaceInfo(){var e,r;try{if(R())return await I(async o=>{const a=await v.get(`${o}/kv/_info`,{headers:D()});return y(a.data)});const t=u("server.domain"),s=await v.get(`${t}/kv/_info`,{headers:D()});return y(s.data)}catch(t){return console.error("获取命名空间信息失败:",t),f(((r=(e=t.response)==null?void 0:e.data)==null?void 0:r.message)||"获取命名空间信息失败","NAMESPACE_ERROR")}},async updateNamespaceInfo(e){var r,t;try{if(R())return await I(async a=>await v.put(`${a}/kv/_info`,e,{headers:D()}));const s=u("server.domain");return await v.put(`${s}/kv/_info`,e,{headers:D()})}catch(s){return f(((t=(r=s.response)==null?void 0:r.data)==null?void 0:t.message)||"更新命名空间信息失败","NAMESPACE_ERROR")}},async loadData(e){var r,t,s;try{if(R())return await I(async n=>{const c=await v.get(`${n}/kv/${e}`,{headers:D()});return y(c.data)});const o=u("server.domain"),a=await v.get(`${o}/kv/${e}`,{headers:D()});return y(a.data)}catch(o){return((r=o.response)==null?void 0:r.status)===404?f("数据不存在","NOT_FOUND"):(console.log(o),f(((s=(t=o.response)==null?void 0:t.data)==null?void 0:s.message)||"服务器连接失败","NETWORK_ERROR"))}},async saveData(e,r){var t,s;try{if(R())return await I(async a=>(await v.post(`${a}/kv/${e}`,r,{headers:D()}),y(!0)));const o=u("server.domain");return await v.post(`${o}/kv/${e}`,r,{headers:D()}),y(!0)}catch(o){return console.log(o),f(((s=(t=o.response)==null?void 0:t.data)==null?void 0:s.message)||"保存失败","SAVE_ERROR")}},async loadKeys(e={}){var r,t,s,o,a;try{const{sortBy:n="key",sortDir:c="asc",limit:i=100,skip:d=0}=e,m=new URLSearchParams({sortBy:n,sortDir:c,limit:i.toString(),skip:d.toString()});if(R())return await I(async l=>{const b=await v.get(`${l}/kv/_keys?${m}`,{headers:D()});return y(b.data)});const w=u("server.domain"),k=await v.get(`${w}/kv/_keys?${m}`,{headers:D()});return y(k.data)}catch(n){return((r=n.response)==null?void 0:r.status)===404?f("命名空间不存在","NOT_FOUND"):((t=n.response)==null?void 0:t.status)===403?f("无权限访问此命名空间","PERMISSION_DENIED"):((s=n.response)==null?void 0:s.status)===401?f("认证失败","UNAUTHORIZED"):(console.log(n),f(((a=(o=n.response)==null?void 0:o.data)==null?void 0:a.message)||"获取键名列表失败","NETWORK_ERROR"))}}},y=e=>e,f=(e,r="UNKNOWN_ERROR")=>({success:!1,error:{code:r,message:e}}),Ne={loadData:async e=>{const r=u("server.provider");return r==="kv-server"||r==="classworkscloud"?E.loadData(e):N.loadData(e)},saveData:async(e,r)=>{const t=u("server.provider");return t==="kv-server"||t==="classworkscloud"?E.saveData(e,r):N.saveData(e,r)},loadKeys:async(e={})=>{const r=u("server.provider");return r==="kv-server"||r==="classworkscloud"?E.loadKeys(e):N.loadKeys(e)},async getKeyCloudUrl(e,r={}){var o;const{migrateFromLocal:t=!0,autoConfigureCloud:s=!0}=r;try{const a=u("server.provider");let n;a==="classworkscloud"?n=j():n=u("server.domain");let c=u("server.siteKey");const i=u("device.uuid");let d=!1;if(!n||!i)if(s){const l={"server.domain":"https://kv-service.houlang.cloud","server.siteKey":""};n||(O("server.domain",l["server.domain"]),n=l["server.domain"],d=!0),c||(O("server.siteKey",l["server.siteKey"]),c=l["server.siteKey"]),O("server.provider","classworkscloud"),n=j()}else return f("云端配置无效,请检查服务器域名和设备UUID","CONFIG_ERROR");let m=!1;if(t)try{const l=await N.loadData(e);if(l&&l.success!==!1){const b=await E.loadData(e);if(b&&b.success===!1&&((o=b.error)==null?void 0:o.code)==="NOT_FOUND"){const A=await E.saveData(e,l);A&&A.success!==!1&&(m=!0,console.log(`已成功将键 ${e} 的数据从本地迁移到云端`))}}}catch(l){console.warn(`迁移键 ${e} 的数据时出错:`,l)}const w=u("server.kvToken");return{success:!0,url:`${n}/kv/${e}?token=${w}`,migrated:m,configured:d}}catch(a){return console.error("获取键云端地址时出错:",a),f(a.message||"获取键云端地址失败","CLOUD_URL_ERROR")}}};export{v as a,N as b,Ee as c,Ne as d,E as k,ae as o}; diff --git a/assets/debug-C-AM0tAt.js b/assets/debug-BQFtSTke.js similarity index 75% rename from assets/debug-C-AM0tAt.js rename to assets/debug-BQFtSTke.js index 1cf70c5..3c10784 100644 --- a/assets/debug-C-AM0tAt.js +++ b/assets/debug-BQFtSTke.js @@ -1 +1 @@ -import{getVisitorId as u,getFingerprintData as f}from"./visitorId-ZHgZAIad.js";import{aa as m}from"./vendor-vuetify-ChAgIwn2.js";import{e as c,c as p,J as g,d as V,q as v,l as C}from"./index-_6IQhlPZ.js";import{V as b}from"./VContainer-Bg8RevuO.js";import{D,X as _,Y as x,Z as t,j as e,a1 as l,k as y,S as k,b as s}from"./vendor-vue-H0jQBZ7T.js";const I=m("v-code","code"),j={__name:"debug",setup(B){const o=s(""),d=s({}),r=s(!1),n=async()=>{r.value=!0;try{o.value=await u(),d.value=await f()}catch(i){console.error(i),o.value="Error loading visitor ID"}finally{r.value=!1}};return D(()=>{n()}),(i,a)=>(_(),x(b,null,{default:t(()=>[e(c,{class:"mb-4"},{default:t(()=>[e(p,null,{default:t(()=>[...a[0]||(a[0]=[l("调试信息",-1)])]),_:1}),e(g,null,{default:t(()=>[...a[1]||(a[1]=[l(" 请将这个ID复制并私聊给开发者,以便进行问题排查。 ",-1)])]),_:1}),e(V,null,{default:t(()=>[a[2]||(a[2]=y("div",{class:"text-h6 mb-2"},"访客 ID",-1)),e(I,{class:"d-block pa-2 bg-grey-lighten-4 rounded mb-4"},{default:t(()=>[l(k(o.value||"加载中..."),1)]),_:1})]),_:1}),e(v,null,{default:t(()=>[e(C,{color:"primary",onClick:n,loading:r.value},{default:t(()=>[...a[3]||(a[3]=[l(" Refresh ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}))}};export{j as default}; +import{getVisitorId as u,getFingerprintData as f}from"./visitorId-BqmEfSoz.js";import{aa as m}from"./vendor-vuetify-s-yw_Hr8.js";import{e as c,c as p,E as g,d as V,q as v,i as C}from"./index-CFUCTEXJ.js";import{V as b}from"./VContainer-RtoBp6rB.js";import{D,X as _,Y as x,Z as t,j as e,a1 as l,k as y,S as k,b as s}from"./vendor-vue-B2vxubPy.js";const I=m("v-code","code"),F={__name:"debug",setup(B){const o=s(""),d=s({}),r=s(!1),n=async()=>{r.value=!0;try{o.value=await u(),d.value=await f()}catch(i){console.error(i),o.value="Error loading visitor ID"}finally{r.value=!1}};return D(()=>{n()}),(i,a)=>(_(),x(b,null,{default:t(()=>[e(c,{class:"mb-4"},{default:t(()=>[e(p,null,{default:t(()=>[...a[0]||(a[0]=[l("调试信息",-1)])]),_:1}),e(g,null,{default:t(()=>[...a[1]||(a[1]=[l(" 请将这个ID复制并私聊给开发者,以便进行问题排查。 ",-1)])]),_:1}),e(V,null,{default:t(()=>[a[2]||(a[2]=y("div",{class:"text-h6 mb-2"},"访客 ID",-1)),e(I,{class:"d-block pa-2 bg-grey-lighten-4 rounded mb-4"},{default:t(()=>[l(k(o.value||"加载中..."),1)]),_:1})]),_:1}),e(v,null,{default:t(()=>[e(C,{color:"primary",onClick:n,loading:r.value},{default:t(()=>[...a[3]||(a[3]=[l(" Refresh ",-1)])]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1}))}};export{F as default}; diff --git a/assets/debug-init-CvHSowFZ.js b/assets/debug-init-CvHSowFZ.js deleted file mode 100644 index 5efbc55..0000000 --- a/assets/debug-init-CvHSowFZ.js +++ /dev/null @@ -1 +0,0 @@ -import{g as r,e as k,c as g,d as _,i as R,l as f,j as U,k as C,s as S,t as T,v as s}from"./index-_6IQhlPZ.js";import{k as N}from"./dataProvider-BwUtbSl1.js";import{V as B,a as D}from"./VRow-WkEz3xRr.js";import{V as G}from"./VForm-Cskwow1F.js";import{V as n}from"./VTextField-CuXGbmmC.js";import{V as j}from"./VContainer-Bg8RevuO.js";import{b as i,a3 as F,X as K,Y,Z as t,j as e,a1 as o,S as c,e as y}from"./vendor-vue-H0jQBZ7T.js";import"./vendor-vuetify-ChAgIwn2.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-BGVL0kta.js";import"./autofocus-BrMOVHY_.js";const I="kvinit.redirecting",$={__name:"debug-init",setup(z){const d=i(r("server.provider")||"kv-server"),m=i(r("server.kvToken")||""),v=i(r("device.uuid")||"00000000-0000-4000-8000-000000000000"),p=i(r("server.authDomain")||"https://cs.example.com"),b=()=>{s("server.provider",d.value),s("server.kvToken",m.value),s("device.uuid",v.value),s("server.authDomain",p.value),location.reload()},w=()=>{try{sessionStorage.removeItem(I)}catch(u){console.debug(u)}},x=()=>{N.loadNamespaceInfo=async()=>{throw new Error("模拟加载错误")},location.reload()},E=y(()=>{try{return sessionStorage.getItem(I)}catch(u){return String(u)}}),L=y(()=>JSON.stringify({provider:r("server.provider"),kvToken:r("server.kvToken"),uuid:r("device.uuid"),authDomain:r("server.authDomain")},null,2));return(u,l)=>{const V=F("v-list-item-content");return K(),Y(j,null,{default:t(()=>[e(B,null,{default:t(()=>[e(D,{cols:"12",md:"6"},{default:t(()=>[e(k,null,{default:t(()=>[e(g,null,{default:t(()=>[...l[4]||(l[4]=[o("KvInitialize 调试面板",-1)])]),_:1}),e(_,null,{default:t(()=>[e(G,null,{default:t(()=>[e(n,{modelValue:d.value,"onUpdate:modelValue":l[0]||(l[0]=a=>d.value=a),label:"server.provider (kv-server/classworkscloud/other)"},null,8,["modelValue"]),e(n,{modelValue:m.value,"onUpdate:modelValue":l[1]||(l[1]=a=>m.value=a),label:"server.kvToken (空表示未授权)"},null,8,["modelValue"]),e(n,{modelValue:v.value,"onUpdate:modelValue":l[2]||(l[2]=a=>v.value=a),label:"device.uuid"},null,8,["modelValue"]),e(n,{modelValue:p.value,"onUpdate:modelValue":l[3]||(l[3]=a=>p.value=a),label:"server.authDomain"},null,8,["modelValue"])]),_:1}),e(R,{class:"my-4"}),e(f,{class:"me-2",color:"primary",onClick:b},{default:t(()=>[...l[5]||(l[5]=[o(" 应用设置 ",-1)])]),_:1}),e(f,{class:"me-2",color:"secondary",onClick:w},{default:t(()=>[...l[6]||(l[6]=[o(" 清除重定向守卫 ",-1)])]),_:1}),e(f,{color:"error",onClick:x},{default:t(()=>[...l[7]||(l[7]=[o(" 模拟命名空间加载错误 ",-1)])]),_:1}),e(U,{"two-line":""},{default:t(()=>[e(C,null,{default:t(()=>[e(V,null,{default:t(()=>[e(S,null,{default:t(()=>[...l[8]||(l[8]=[o("当前 sessionGuard",-1)])]),_:1}),e(T,null,{default:t(()=>[o(c(E.value),1)]),_:1})]),_:1})]),_:1}),e(C,null,{default:t(()=>[e(V,null,{default:t(()=>[e(S,null,{default:t(()=>[...l[9]||(l[9]=[o("当前 settings",-1)])]),_:1}),e(T,null,{default:t(()=>[o(c(L.value),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),e(D,{cols:"12",md:"6"},{default:t(()=>[e(k,null,{default:t(()=>[e(g,null,{default:t(()=>[...l[10]||(l[10]=[o("初始化组件已替换",-1)])]),_:1}),e(_,null,{default:t(()=>[...l[11]||(l[11]=[o(" 已迁移为首页内联的 InitServiceChooser 组件。 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}};export{$ as default}; diff --git a/assets/debug-init-F9jX3b20.js b/assets/debug-init-F9jX3b20.js new file mode 100644 index 0000000..3c2ed4d --- /dev/null +++ b/assets/debug-init-F9jX3b20.js @@ -0,0 +1 @@ +import{g as r,e as k,c as g,d as _,v as R,i as f,l as U,n as C,o as S,p as T,s}from"./index-CFUCTEXJ.js";import{k as N}from"./dataProvider-bUkzKSNt.js";import{V as B,a as D}from"./VRow-Dw4j2TKL.js";import{V as G}from"./VForm-zpXHQBRK.js";import{V as n}from"./VTextField-ByBRYn99.js";import{V as F}from"./VContainer-RtoBp6rB.js";import{b as i,a3 as K,X as Y,Y as j,Z as t,j as e,a1 as o,S as c,e as y}from"./vendor-vue-B2vxubPy.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-CdH9Xda8.js";import"./VLabel-CU-8PdVS.js";import"./autofocus-BAgnxQiD.js";const I="kvinit.redirecting",h={__name:"debug-init",setup(z){const d=i(r("server.provider")||"kv-server"),m=i(r("server.kvToken")||""),v=i(r("device.uuid")||"00000000-0000-4000-8000-000000000000"),p=i(r("server.authDomain")||"https://cs.example.com"),b=()=>{s("server.provider",d.value),s("server.kvToken",m.value),s("device.uuid",v.value),s("server.authDomain",p.value),location.reload()},w=()=>{try{sessionStorage.removeItem(I)}catch(u){console.debug(u)}},x=()=>{N.loadNamespaceInfo=async()=>{throw new Error("模拟加载错误")},location.reload()},E=y(()=>{try{return sessionStorage.getItem(I)}catch(u){return String(u)}}),L=y(()=>JSON.stringify({provider:r("server.provider"),kvToken:r("server.kvToken"),uuid:r("device.uuid"),authDomain:r("server.authDomain")},null,2));return(u,l)=>{const V=K("v-list-item-content");return Y(),j(F,null,{default:t(()=>[e(B,null,{default:t(()=>[e(D,{cols:"12",md:"6"},{default:t(()=>[e(k,null,{default:t(()=>[e(g,null,{default:t(()=>[...l[4]||(l[4]=[o("KvInitialize 调试面板",-1)])]),_:1}),e(_,null,{default:t(()=>[e(G,null,{default:t(()=>[e(n,{modelValue:d.value,"onUpdate:modelValue":l[0]||(l[0]=a=>d.value=a),label:"server.provider (kv-server/classworkscloud/other)"},null,8,["modelValue"]),e(n,{modelValue:m.value,"onUpdate:modelValue":l[1]||(l[1]=a=>m.value=a),label:"server.kvToken (空表示未授权)"},null,8,["modelValue"]),e(n,{modelValue:v.value,"onUpdate:modelValue":l[2]||(l[2]=a=>v.value=a),label:"device.uuid"},null,8,["modelValue"]),e(n,{modelValue:p.value,"onUpdate:modelValue":l[3]||(l[3]=a=>p.value=a),label:"server.authDomain"},null,8,["modelValue"])]),_:1}),e(R,{class:"my-4"}),e(f,{class:"me-2",color:"primary",onClick:b},{default:t(()=>[...l[5]||(l[5]=[o(" 应用设置 ",-1)])]),_:1}),e(f,{class:"me-2",color:"secondary",onClick:w},{default:t(()=>[...l[6]||(l[6]=[o(" 清除重定向守卫 ",-1)])]),_:1}),e(f,{color:"error",onClick:x},{default:t(()=>[...l[7]||(l[7]=[o(" 模拟命名空间加载错误 ",-1)])]),_:1}),e(U,{"two-line":""},{default:t(()=>[e(C,null,{default:t(()=>[e(V,null,{default:t(()=>[e(S,null,{default:t(()=>[...l[8]||(l[8]=[o("当前 sessionGuard",-1)])]),_:1}),e(T,null,{default:t(()=>[o(c(E.value),1)]),_:1})]),_:1})]),_:1}),e(C,null,{default:t(()=>[e(V,null,{default:t(()=>[e(S,null,{default:t(()=>[...l[9]||(l[9]=[o("当前 settings",-1)])]),_:1}),e(T,null,{default:t(()=>[o(c(L.value),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),e(D,{cols:"12",md:"6"},{default:t(()=>[e(k,null,{default:t(()=>[e(g,null,{default:t(()=>[...l[10]||(l[10]=[o("初始化组件已替换",-1)])]),_:1}),e(_,null,{default:t(()=>[...l[11]||(l[11]=[o(" 已迁移为首页内联的 InitServiceChooser 组件。 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}};export{h as default}; diff --git a/assets/debug-socket-B2krd3Vm.js b/assets/debug-socket-B2krd3Vm.js new file mode 100644 index 0000000..3ff2f86 --- /dev/null +++ b/assets/debug-socket-B2krd3Vm.js @@ -0,0 +1 @@ +import{g as te,e as x,c as b,d as w,l as A,n as f,o as v,p as m,v as M,i,r as K,M as le}from"./index-CFUCTEXJ.js";import{g as U,b as J,j as O,a as p,c as ne,l as ae}from"./socketClient-CkosNYrb.js";import{s as oe,D as se}from"./deviceEvents-BfEN8wCe.js";import{V as j,a as _}from"./VRow-Dw4j2TKL.js";import{V as re}from"./VChip-DR8Ljy6R.js";import{V as ue}from"./VTextField-ByBRYn99.js";import{V as ie}from"./VTextarea-BxmmuONa.js";import{V as de}from"./VContainer-RtoBp6rB.js";import{b as d,D as ce,A as fe,a3 as ve,X as c,Y as D,Z as l,j as t,a1 as o,S as u,_ as L,$ as me,k as B,F as R,a2 as Y,e as I}from"./vendor-vue-B2vxubPy.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./vendor-socket-CyTcV1HU.js";import"./serverRotation-CdH9Xda8.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";const pe={key:0},_e={class:"d-flex"},ge={key:1,class:"text-grey"},ke={class:"text-caption text-grey"},ye={class:"ml-2"},Ve={class:"mb-2",style:{"white-space":"pre-wrap"}},ze={__name:"debug-socket",setup(Se){const g=d(te("server.kvToken")||""),$=d(""),r=d(""),k=d(!1),T=d(""),y=d([]),C=d([]),V=d(""),N=I(()=>ne()),H=I(()=>{const n=new Date,e=n.getFullYear(),S=String(n.getMonth()+1).padStart(2,"0"),s=String(n.getDate()).padStart(2,"0");return`classworks-data-${e}${S}${s}`});function a(n,e){const S=new Date().toLocaleTimeString();y.value.unshift({time:S,event:n,payload:typeof e=="string"?e:JSON.stringify(e,null,2)}),y.value.length>200&&y.value.pop()}function X(){const n=U();k.value=!!n.connected,T.value=n.id||"",n.on("connect",()=>{k.value=!0,T.value=n.id||"",a("connect",{id:n.id}),r.value&&O(r.value)}),n.on("disconnect",e=>{k.value=!1,a("disconnect",{reason:e})}),n.on("connect_error",e=>a("connect_error",{message:e==null?void 0:e.message})),n.on("reconnect_attempt",e=>a("reconnect_attempt",{attempt:e})),n.on("reconnect",e=>a("reconnect",{attempt:e}))}function Z(){p("kv-key-changed",n=>{a("kv-key-changed",n)}),p("device-joined",n=>{a("device-joined",n)}),p("joined",n=>{a("joined",n)}),p("join-error",n=>{a("join-error",n)}),p("chat:message",n=>{a("chat:message",n)}),p("device-event",n=>{a("device-event",n)})}function z(n){try{if(!n){a("join-error","Token 为空");return}O(n),r.value=n,a("join-token",{token:n})}catch(e){a("join-token-error",String(e))}}function q(n){try{J(n),r.value===n&&(r.value=""),a("leave-token",{token:n})}catch(e){a("leave-token-error",String(e))}}function G(){try{ae(),r.value="",a("leave-all",{})}catch(n){a("leave-all-error",String(n))}}function P(){try{U().connect()}catch(n){a("reconnect-error",String(n))}}const Q=I(()=>{var e;return!!((((e=V.value)==null?void 0:e.trim())||"")&&(r.value||g.value))});function W(){try{const n=(V.value||"").trim();if(!n)return;oe(n),a("send-event",{type:se.CHAT,content:{text:n}}),V.value=""}catch(n){a("chat:error",String(n))}}function h(n){a("select-device",{message:"请输入该设备对应的 KV Token 以加入频道",device:n})}async function E(){try{const e=await(await fetch(`${N.value}/devices/online`)).json();C.value=Array.isArray(e==null?void 0:e.devices)?e.devices:[],a("fetch-online",{count:C.value.length})}catch(n){a("fetch-online-error",String(n))}}function ee(){y.value=[]}return ce(()=>{U(),X(),Z(),g.value&&z(g.value),E()}),fe(()=>{try{r.value&&J(r.value)}catch{}}),(n,e)=>{const S=ve("v-list-item-text");return c(),D(de,null,{default:l(()=>[t(j,null,{default:l(()=>[t(_,{cols:"12",md:"6"},{default:l(()=>[t(x,{border:"",class:"mb-4"},{default:l(()=>[t(b,null,{default:l(()=>[...e[4]||(e[4]=[o("连接信息",-1)])]),_:1}),t(w,null,{default:l(()=>[t(A,{density:"compact"},{default:l(()=>[t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[5]||(e[5]=[o("Server URL",-1)])]),_:1}),t(m,null,{default:l(()=>[o(u(N.value),1)]),_:1})]),_:1}),t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[6]||(e[6]=[o("当前 KV Token",-1)])]),_:1}),t(m,null,{default:l(()=>[o(u(g.value||"(未配置)"),1)]),_:1})]),_:1}),t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[7]||(e[7]=[o("连接状态",-1)])]),_:1}),t(m,null,{default:l(()=>[t(re,{color:k.value?"success":"error",class:"mr-2",size:"small"},{default:l(()=>[o(u(k.value?"connected":"disconnected"),1)]),_:1},8,["color"]),T.value?(c(),L("span",pe,"id: "+u(T.value),1)):me("",!0)]),_:1})]),_:1}),t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[8]||(e[8]=[o("已加入 Token",-1)])]),_:1}),t(m,null,{default:l(()=>[o(u(r.value||"-"),1)]),_:1})]),_:1}),t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[9]||(e[9]=[o("当前数据键",-1)])]),_:1}),t(m,null,{default:l(()=>[o(u(H.value),1)]),_:1})]),_:1})]),_:1}),t(M,{class:"my-4"}),t(j,null,{default:l(()=>[t(_,{cols:"12",md:"8"},{default:l(()=>[t(ue,{modelValue:$.value,"onUpdate:modelValue":e[0]||(e[0]=s=>$.value=s),clearable:"",label:"手动加入 Token (留空使用配置的 Token)"},null,8,["modelValue"])]),_:1}),t(_,{class:"d-flex align-center",cols:"12",md:"4"},{default:l(()=>[t(i,{class:"mr-2",color:"primary",onClick:e[1]||(e[1]=s=>z($.value||g.value))},{default:l(()=>[...e[10]||(e[10]=[o(" 加入 ",-1)])]),_:1}),t(i,{disabled:!r.value,class:"mr-2",color:"warning",onClick:e[2]||(e[2]=s=>q(r.value))},{default:l(()=>[...e[11]||(e[11]=[o(" 离开当前 ",-1)])]),_:1},8,["disabled"]),t(i,{color:"error",variant:"tonal",onClick:G},{default:l(()=>[...e[12]||(e[12]=[o(" 离开全部 ",-1)])]),_:1})]),_:1})]),_:1}),t(M,{class:"my-4"}),t(j,null,{default:l(()=>[t(_,{cols:"12"},{default:l(()=>[t(x,{border:"",color:"primary",variant:"tonal"},{default:l(()=>[t(b,{class:"text-subtitle-1"},{default:l(()=>[...e[13]||(e[13]=[o("聊天室消息",-1)])]),_:1}),t(w,null,{default:l(()=>[t(ie,{modelValue:V.value,"onUpdate:modelValue":e[3]||(e[3]=s=>V.value=s),"auto-grow":"",clearable:"",label:"发送到当前已加入的设备频道",rows:"2"},null,8,["modelValue"]),B("div",_e,[t(K),t(i,{disabled:!Q.value,color:"primary",onClick:W},{default:l(()=>[...e[14]||(e[14]=[o(" 发送聊天 ",-1)])]),_:1},8,["disabled"])])]),_:1})]),_:1})]),_:1})]),_:1}),t(j,null,{default:l(()=>[t(_,{cols:"12"},{default:l(()=>[t(i,{color:"secondary",variant:"tonal",onClick:P},{default:l(()=>[...e[15]||(e[15]=[o(" 重新连接 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(x,{border:""},{default:l(()=>[t(b,null,{default:l(()=>[...e[16]||(e[16]=[o("在线设备",-1)])]),_:1}),t(w,null,{default:l(()=>[t(i,{class:"mb-3",color:"primary",onClick:E},{default:l(()=>[...e[17]||(e[17]=[o(" 刷新在线列表 ",-1)])]),_:1}),C.value.length?(c(),D(A,{key:0,density:"compact"},{default:l(()=>[(c(!0),L(R,null,Y(C.value,s=>(c(),D(f,{key:s.uuid},{prepend:l(()=>[t(le,{color:s.connections>0?"success":"grey",size:"24"},null,8,["color"])]),append:l(()=>[t(i,{size:"small",variant:"text",onClick:F=>h(s)},{default:l(()=>[...e[18]||(e[18]=[o(" 选择 ",-1)])]),_:1},8,["onClick"])]),default:l(()=>[t(v,null,{default:l(()=>[o(u(s.name||"(未命名)"),1)]),_:2},1024),t(m,null,{default:l(()=>[o(u(s.uuid)+" · 连接数 "+u(s.connections),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):(c(),L("div",ge," 暂无数据 "))]),_:1})]),_:1})]),_:1}),t(_,{cols:"12",md:"6"},{default:l(()=>[t(x,{border:""},{default:l(()=>[t(b,{class:"d-flex align-center"},{default:l(()=>[e[20]||(e[20]=o(" 事件日志 ",-1)),t(K),t(i,{color:"error",size:"small",variant:"text",onClick:ee},{default:l(()=>[...e[19]||(e[19]=[o(" 清空 ",-1)])]),_:1})]),_:1}),t(w,null,{default:l(()=>[t(A,{density:"compact"},{default:l(()=>[(c(!0),L(R,null,Y(y.value,(s,F)=>(c(),D(f,{key:F},{default:l(()=>[t(v,null,{default:l(()=>[B("span",ke,u(s.time),1),B("span",ye,u(s.event),1)]),_:2},1024),t(S,null,{default:l(()=>[B("pre",Ve,u(s.payload),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}};export{ze as default}; diff --git a/assets/debug-socket-DTbWHWof.js b/assets/debug-socket-DTbWHWof.js deleted file mode 100644 index 281f219..0000000 --- a/assets/debug-socket-DTbWHWof.js +++ /dev/null @@ -1 +0,0 @@ -import{g as te,e as x,c as b,d as j,j as A,k as f,s as v,t as m,i as K,l as i,o as M,L as le}from"./index-_6IQhlPZ.js";import{g as U,b as J,j as O,a as p,c as ne,l as ae}from"./socketClient-Cb2FghxN.js";import{s as oe,D as se}from"./deviceEvents-BnDFIf8a.js";import{V as w,a as _}from"./VRow-WkEz3xRr.js";import{V as re}from"./VChip-Veb3ShEh.js";import{V as ue}from"./VTextField-CuXGbmmC.js";import{V as ie}from"./VTextarea-CCCqy4pz.js";import{V as de}from"./VContainer-Bg8RevuO.js";import{b as d,D as ce,A as fe,a3 as ve,X as c,Y as L,Z as l,j as t,a1 as o,S as u,_ as D,$ as me,k as B,F as R,a2 as Y,e as I}from"./vendor-vue-H0jQBZ7T.js";import"./vendor-vuetify-ChAgIwn2.js";import"./vendor-socket-CyTcV1HU.js";import"./serverRotation-BGVL0kta.js";import"./autofocus-BrMOVHY_.js";const pe={key:0},_e={class:"d-flex"},ge={key:1,class:"text-grey"},ke={class:"text-caption text-grey"},ye={class:"ml-2"},Ve={class:"mb-2",style:{"white-space":"pre-wrap"}},Ne={__name:"debug-socket",setup(Se){const g=d(te("server.kvToken")||""),$=d(""),r=d(""),k=d(!1),T=d(""),y=d([]),C=d([]),V=d(""),N=I(()=>ne()),H=I(()=>{const n=new Date,e=n.getFullYear(),S=String(n.getMonth()+1).padStart(2,"0"),s=String(n.getDate()).padStart(2,"0");return`classworks-data-${e}${S}${s}`});function a(n,e){const S=new Date().toLocaleTimeString();y.value.unshift({time:S,event:n,payload:typeof e=="string"?e:JSON.stringify(e,null,2)}),y.value.length>200&&y.value.pop()}function X(){const n=U();k.value=!!n.connected,T.value=n.id||"",n.on("connect",()=>{k.value=!0,T.value=n.id||"",a("connect",{id:n.id}),r.value&&O(r.value)}),n.on("disconnect",e=>{k.value=!1,a("disconnect",{reason:e})}),n.on("connect_error",e=>a("connect_error",{message:e==null?void 0:e.message})),n.on("reconnect_attempt",e=>a("reconnect_attempt",{attempt:e})),n.on("reconnect",e=>a("reconnect",{attempt:e}))}function Z(){p("kv-key-changed",n=>{a("kv-key-changed",n)}),p("device-joined",n=>{a("device-joined",n)}),p("joined",n=>{a("joined",n)}),p("join-error",n=>{a("join-error",n)}),p("chat:message",n=>{a("chat:message",n)}),p("device-event",n=>{a("device-event",n)})}function z(n){try{if(!n){a("join-error","Token 为空");return}O(n),r.value=n,a("join-token",{token:n})}catch(e){a("join-token-error",String(e))}}function q(n){try{J(n),r.value===n&&(r.value=""),a("leave-token",{token:n})}catch(e){a("leave-token-error",String(e))}}function G(){try{ae(),r.value="",a("leave-all",{})}catch(n){a("leave-all-error",String(n))}}function P(){try{U().connect()}catch(n){a("reconnect-error",String(n))}}const Q=I(()=>{var e;return!!((((e=V.value)==null?void 0:e.trim())||"")&&(r.value||g.value))});function W(){try{const n=(V.value||"").trim();if(!n)return;oe(n),a("send-event",{type:se.CHAT,content:{text:n}}),V.value=""}catch(n){a("chat:error",String(n))}}function h(n){a("select-device",{message:"请输入该设备对应的 KV Token 以加入频道",device:n})}async function E(){try{const e=await(await fetch(`${N.value}/devices/online`)).json();C.value=Array.isArray(e==null?void 0:e.devices)?e.devices:[],a("fetch-online",{count:C.value.length})}catch(n){a("fetch-online-error",String(n))}}function ee(){y.value=[]}return ce(()=>{U(),X(),Z(),g.value&&z(g.value),E()}),fe(()=>{try{r.value&&J(r.value)}catch{}}),(n,e)=>{const S=ve("v-list-item-text");return c(),L(de,null,{default:l(()=>[t(w,null,{default:l(()=>[t(_,{cols:"12",md:"6"},{default:l(()=>[t(x,{border:"",class:"mb-4"},{default:l(()=>[t(b,null,{default:l(()=>[...e[4]||(e[4]=[o("连接信息",-1)])]),_:1}),t(j,null,{default:l(()=>[t(A,{density:"compact"},{default:l(()=>[t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[5]||(e[5]=[o("Server URL",-1)])]),_:1}),t(m,null,{default:l(()=>[o(u(N.value),1)]),_:1})]),_:1}),t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[6]||(e[6]=[o("当前 KV Token",-1)])]),_:1}),t(m,null,{default:l(()=>[o(u(g.value||"(未配置)"),1)]),_:1})]),_:1}),t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[7]||(e[7]=[o("连接状态",-1)])]),_:1}),t(m,null,{default:l(()=>[t(re,{color:k.value?"success":"error",class:"mr-2",size:"small"},{default:l(()=>[o(u(k.value?"connected":"disconnected"),1)]),_:1},8,["color"]),T.value?(c(),D("span",pe,"id: "+u(T.value),1)):me("",!0)]),_:1})]),_:1}),t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[8]||(e[8]=[o("已加入 Token",-1)])]),_:1}),t(m,null,{default:l(()=>[o(u(r.value||"-"),1)]),_:1})]),_:1}),t(f,null,{default:l(()=>[t(v,null,{default:l(()=>[...e[9]||(e[9]=[o("当前数据键",-1)])]),_:1}),t(m,null,{default:l(()=>[o(u(H.value),1)]),_:1})]),_:1})]),_:1}),t(K,{class:"my-4"}),t(w,null,{default:l(()=>[t(_,{cols:"12",md:"8"},{default:l(()=>[t(ue,{modelValue:$.value,"onUpdate:modelValue":e[0]||(e[0]=s=>$.value=s),clearable:"",label:"手动加入 Token (留空使用配置的 Token)"},null,8,["modelValue"])]),_:1}),t(_,{class:"d-flex align-center",cols:"12",md:"4"},{default:l(()=>[t(i,{class:"mr-2",color:"primary",onClick:e[1]||(e[1]=s=>z($.value||g.value))},{default:l(()=>[...e[10]||(e[10]=[o(" 加入 ",-1)])]),_:1}),t(i,{disabled:!r.value,class:"mr-2",color:"warning",onClick:e[2]||(e[2]=s=>q(r.value))},{default:l(()=>[...e[11]||(e[11]=[o(" 离开当前 ",-1)])]),_:1},8,["disabled"]),t(i,{color:"error",variant:"tonal",onClick:G},{default:l(()=>[...e[12]||(e[12]=[o(" 离开全部 ",-1)])]),_:1})]),_:1})]),_:1}),t(K,{class:"my-4"}),t(w,null,{default:l(()=>[t(_,{cols:"12"},{default:l(()=>[t(x,{border:"",color:"primary",variant:"tonal"},{default:l(()=>[t(b,{class:"text-subtitle-1"},{default:l(()=>[...e[13]||(e[13]=[o("聊天室消息",-1)])]),_:1}),t(j,null,{default:l(()=>[t(ie,{modelValue:V.value,"onUpdate:modelValue":e[3]||(e[3]=s=>V.value=s),"auto-grow":"",clearable:"",label:"发送到当前已加入的设备频道",rows:"2"},null,8,["modelValue"]),B("div",_e,[t(M),t(i,{disabled:!Q.value,color:"primary",onClick:W},{default:l(()=>[...e[14]||(e[14]=[o(" 发送聊天 ",-1)])]),_:1},8,["disabled"])])]),_:1})]),_:1})]),_:1})]),_:1}),t(w,null,{default:l(()=>[t(_,{cols:"12"},{default:l(()=>[t(i,{color:"secondary",variant:"tonal",onClick:P},{default:l(()=>[...e[15]||(e[15]=[o(" 重新连接 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(x,{border:""},{default:l(()=>[t(b,null,{default:l(()=>[...e[16]||(e[16]=[o("在线设备",-1)])]),_:1}),t(j,null,{default:l(()=>[t(i,{class:"mb-3",color:"primary",onClick:E},{default:l(()=>[...e[17]||(e[17]=[o(" 刷新在线列表 ",-1)])]),_:1}),C.value.length?(c(),L(A,{key:0,density:"compact"},{default:l(()=>[(c(!0),D(R,null,Y(C.value,s=>(c(),L(f,{key:s.uuid},{prepend:l(()=>[t(le,{color:s.connections>0?"success":"grey",size:"24"},null,8,["color"])]),append:l(()=>[t(i,{size:"small",variant:"text",onClick:F=>h(s)},{default:l(()=>[...e[18]||(e[18]=[o(" 选择 ",-1)])]),_:1},8,["onClick"])]),default:l(()=>[t(v,null,{default:l(()=>[o(u(s.name||"(未命名)"),1)]),_:2},1024),t(m,null,{default:l(()=>[o(u(s.uuid)+" · 连接数 "+u(s.connections),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):(c(),D("div",ge," 暂无数据 "))]),_:1})]),_:1})]),_:1}),t(_,{cols:"12",md:"6"},{default:l(()=>[t(x,{border:""},{default:l(()=>[t(b,{class:"d-flex align-center"},{default:l(()=>[e[20]||(e[20]=o(" 事件日志 ",-1)),t(M),t(i,{color:"error",size:"small",variant:"text",onClick:ee},{default:l(()=>[...e[19]||(e[19]=[o(" 清空 ",-1)])]),_:1})]),_:1}),t(j,null,{default:l(()=>[t(A,{density:"compact"},{default:l(()=>[(c(!0),D(R,null,Y(y.value,(s,F)=>(c(),L(f,{key:F},{default:l(()=>[t(v,null,{default:l(()=>[B("span",ke,u(s.time),1),B("span",ye,u(s.event),1)]),_:2},1024),t(S,null,{default:l(()=>[B("pre",Ve,u(s.payload),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}}};export{Ne as default}; diff --git a/assets/default-D6yehFKo.js b/assets/default-_BG_c8tN.js similarity index 77% rename from assets/default-D6yehFKo.js rename to assets/default-_BG_c8tN.js index 9c58a07..35306ec 100644 --- a/assets/default-D6yehFKo.js +++ b/assets/default-_BG_c8tN.js @@ -1 +1 @@ -import{p as c,k as i,f as u,a7 as _,u as p}from"./vendor-vuetify-ChAgIwn2.js";import{m as d,a as f,u as v,b as k}from"./index-_6IQhlPZ.js";import{j as l,N as y,n as B,k as V,Y as b,a3 as C,X as S,Z as g}from"./vendor-vue-H0jQBZ7T.js";const M=c({scrollable:Boolean,...i(),...f(),...d({tag:"main"})},"VMain"),P=u()({name:"VMain",props:M(),setup(e,o){let{slots:a}=o;const{dimensionStyles:s}=k(e),{mainStyles:r}=_(),{ssrBootStyles:m}=v();return p(()=>l(e.tag,{class:B(["v-main",{"v-main--scrollable":e.scrollable},e.class]),style:y([r.value,m.value,s.value,e.style])},{default:()=>{var n,t;return[e.scrollable?V("div",{class:"v-main__scroller"},[(n=a.default)==null?void 0:n.call(a)]):(t=a.default)==null?void 0:t.call(a)]}})),{}}}),h={__name:"default",setup(e){return(o,a)=>{const s=C("router-view");return S(),b(P,null,{default:g(()=>[l(s)]),_:1})}}};export{h as default}; +import{p as c,k as i,f as u,a7 as _,u as p}from"./vendor-vuetify-s-yw_Hr8.js";import{m as d,a as f,u as v,b as k}from"./index-CFUCTEXJ.js";import{j as l,N as y,n as B,k as V,Y as b,a3 as C,X as S,Z as g}from"./vendor-vue-B2vxubPy.js";const M=c({scrollable:Boolean,...i(),...f(),...d({tag:"main"})},"VMain"),P=u()({name:"VMain",props:M(),setup(e,o){let{slots:a}=o;const{dimensionStyles:s}=k(e),{mainStyles:r}=_(),{ssrBootStyles:m}=v();return p(()=>l(e.tag,{class:B(["v-main",{"v-main--scrollable":e.scrollable},e.class]),style:y([r.value,m.value,s.value,e.style])},{default:()=>{var n,t;return[e.scrollable?V("div",{class:"v-main__scroller"},[(n=a.default)==null?void 0:n.call(a)]):(t=a.default)==null?void 0:t.call(a)]}})),{}}}),h={__name:"default",setup(e){return(o,a)=>{const s=C("router-view");return S(),b(P,null,{default:g(()=>[l(s)]),_:1})}}};export{h as default}; diff --git a/assets/deviceEvents-BnDFIf8a.js b/assets/deviceEvents-BfEN8wCe.js similarity index 97% rename from assets/deviceEvents-BnDFIf8a.js rename to assets/deviceEvents-BfEN8wCe.js index d87786c..b1d6fcf 100644 --- a/assets/deviceEvents-BnDFIf8a.js +++ b/assets/deviceEvents-BfEN8wCe.js @@ -1 +1 @@ -import{s as E}from"./socketClient-Cb2FghxN.js";const t={CHAT:"chat",KV_KEY_CHANGED:"kv-key-changed",URGENT_NOTICE:"urgent-notice",NOTIFICATION:"notification"};function m(e){if(!e||typeof e!="string")throw new Error("消息文本不能为空");E(t.CHAT,{text:e.trim()})}function I(e,n={}){if(!e||!e.type){console.warn("无效的设备事件数据:",e);return}const o=n[e.type];if(typeof o=="function")try{o(e)}catch(c){console.error(`处理设备事件 ${e.type} 时出错:`,c)}}function g(e){var n;if(e.type!==t.CHAT)throw new Error("不是聊天事件");return{text:((n=e.content)==null?void 0:n.text)||"",senderId:e.senderId,at:e.timestamp,uuid:e.uuid,senderInfo:e.senderInfo}}function T(e){var n,o,c,i,u,s;if(e.type!==t.KV_KEY_CHANGED)throw new Error("不是 KV 变化事件");return{uuid:e.uuid,key:(n=e.content)==null?void 0:n.key,action:(o=e.content)==null?void 0:o.action,created:(c=e.content)==null?void 0:c.created,updatedAt:(i=e.content)==null?void 0:i.updatedAt,deletedAt:(u=e.content)==null?void 0:u.deletedAt,batch:(s=e.content)==null?void 0:s.batch}}function p(e){var n,o,c,i;if(e.type!==t.URGENT_NOTICE)throw new Error("不是紧急通知事件");return{urgency:((n=e.content)==null?void 0:n.urgency)||"info",message:((o=e.content)==null?void 0:o.message)||"",targetDevices:((c=e.content)==null?void 0:c.targetDevices)||[],senderId:e.senderId,senderInfo:((i=e.content)==null?void 0:i.senderInfo)||e.senderInfo,timestamp:e.timestamp}}function y(e){var n,o,c,i;if(e.type!==t.NOTIFICATION)throw new Error("不是通知事件");return{message:((n=e.content)==null?void 0:n.message)||"",isUrgent:((o=e.content)==null?void 0:o.isUrgent)||!1,targetDevices:((c=e.content)==null?void 0:c.targetDevices)||[],senderId:e.senderId,senderInfo:((i=e.content)==null?void 0:i.senderInfo)||e.senderInfo,timestamp:e.timestamp,eventId:e.eventId}}function C(e){return e?e.deviceName==="realtime"?"实时同步":`${e.deviceName||"未知设备"} (${e.deviceType||"未知类型"})`:"未知设备"}function h(e={}){const{onChat:n,onKvChanged:o,onUrgentNotice:c,onNotification:i,onOtherEvent:u,enableLegacySupport:s=!0}=e;return d=>{I(d,{[t.CHAT]:r=>{if(n){const f=s?g(r):r;n(f,r)}},[t.KV_KEY_CHANGED]:r=>{if(o){const f=s?T(r):r;o(f,r)}},[t.URGENT_NOTICE]:r=>{if(c){const f=s?p(r):r;c(f,r)}},[t.NOTIFICATION]:r=>{if(i){const f=s?y(r):r;i(f,r)}}}),u&&d.type!==t.CHAT&&d.type!==t.KV_KEY_CHANGED&&d.type!==t.URGENT_NOTICE&&d.type!==t.NOTIFICATION&&u(d)}}export{t as D,h as c,C as f,m as s}; +import{s as E}from"./socketClient-CkosNYrb.js";const t={CHAT:"chat",KV_KEY_CHANGED:"kv-key-changed",URGENT_NOTICE:"urgent-notice",NOTIFICATION:"notification"};function m(e){if(!e||typeof e!="string")throw new Error("消息文本不能为空");E(t.CHAT,{text:e.trim()})}function I(e,n={}){if(!e||!e.type){console.warn("无效的设备事件数据:",e);return}const o=n[e.type];if(typeof o=="function")try{o(e)}catch(c){console.error(`处理设备事件 ${e.type} 时出错:`,c)}}function g(e){var n;if(e.type!==t.CHAT)throw new Error("不是聊天事件");return{text:((n=e.content)==null?void 0:n.text)||"",senderId:e.senderId,at:e.timestamp,uuid:e.uuid,senderInfo:e.senderInfo}}function T(e){var n,o,c,i,u,s;if(e.type!==t.KV_KEY_CHANGED)throw new Error("不是 KV 变化事件");return{uuid:e.uuid,key:(n=e.content)==null?void 0:n.key,action:(o=e.content)==null?void 0:o.action,created:(c=e.content)==null?void 0:c.created,updatedAt:(i=e.content)==null?void 0:i.updatedAt,deletedAt:(u=e.content)==null?void 0:u.deletedAt,batch:(s=e.content)==null?void 0:s.batch}}function p(e){var n,o,c,i;if(e.type!==t.URGENT_NOTICE)throw new Error("不是紧急通知事件");return{urgency:((n=e.content)==null?void 0:n.urgency)||"info",message:((o=e.content)==null?void 0:o.message)||"",targetDevices:((c=e.content)==null?void 0:c.targetDevices)||[],senderId:e.senderId,senderInfo:((i=e.content)==null?void 0:i.senderInfo)||e.senderInfo,timestamp:e.timestamp}}function y(e){var n,o,c,i;if(e.type!==t.NOTIFICATION)throw new Error("不是通知事件");return{message:((n=e.content)==null?void 0:n.message)||"",isUrgent:((o=e.content)==null?void 0:o.isUrgent)||!1,targetDevices:((c=e.content)==null?void 0:c.targetDevices)||[],senderId:e.senderId,senderInfo:((i=e.content)==null?void 0:i.senderInfo)||e.senderInfo,timestamp:e.timestamp,eventId:e.eventId}}function C(e){return e?e.deviceName==="realtime"?"实时同步":`${e.deviceName||"未知设备"} (${e.deviceType||"未知类型"})`:"未知设备"}function h(e={}){const{onChat:n,onKvChanged:o,onUrgentNotice:c,onNotification:i,onOtherEvent:u,enableLegacySupport:s=!0}=e;return d=>{I(d,{[t.CHAT]:r=>{if(n){const f=s?g(r):r;n(f,r)}},[t.KV_KEY_CHANGED]:r=>{if(o){const f=s?T(r):r;o(f,r)}},[t.URGENT_NOTICE]:r=>{if(c){const f=s?p(r):r;c(f,r)}},[t.NOTIFICATION]:r=>{if(i){const f=s?y(r):r;i(f,r)}}}),u&&d.type!==t.CHAT&&d.type!==t.KV_KEY_CHANGED&&d.type!==t.URGENT_NOTICE&&d.type!==t.NOTIFICATION&&u(d)}}export{t as D,h as c,C as f,m as s}; diff --git a/assets/examschedule-BWseMFw9.js b/assets/examschedule-_0Gf9Tt0.js similarity index 91% rename from assets/examschedule-BWseMFw9.js rename to assets/examschedule-_0Gf9Tt0.js index cd1cb4d..7391afe 100644 --- a/assets/examschedule-BWseMFw9.js +++ b/assets/examschedule-_0Gf9Tt0.js @@ -1,4 +1,4 @@ -import A from"./ExamConfigEditor-DzELjE-Y.js";import{d as C}from"./dataProvider-BwUtbSl1.js";import{_ as J,e as y,c as V,h as g,J as R,d as v,l as u,j as z,k as F,s as O,t as H,L,p as S,q as T,o as k,g as P}from"./index-_6IQhlPZ.js";import{X as p,Y as h,Z as i,j as s,a1 as l,k as f,S as x,$ as D,_ as U,F as j,a2 as X,ac as B}from"./vendor-vue-H0jQBZ7T.js";import{V as W,a as q}from"./VRow-WkEz3xRr.js";import{V as N}from"./VAlert-D9G_9owC.js";import{V as M}from"./VChip-Veb3ShEh.js";import{V as K}from"./VSkeletonLoader-CfCoJRep.js";import{V as Y}from"./VTextField-CuXGbmmC.js";import{V as G}from"./VTextarea-CCCqy4pz.js";import{V as Z}from"./VContainer-Bg8RevuO.js";import"./VTooltip-C2Bprg_f.js";import"./vendor-vuetify-ChAgIwn2.js";import"./VSwitch-CdpUb5tZ.js";import"./autofocus-BrMOVHY_.js";import"./VAutocomplete-lO4hforf.js";import"./VSelect-ANRyd3L-.js";import"./VSheet-U4CNWLuy.js";import"./VCheckboxBtn-DCkgbmVP.js";import"./VDatePicker-cLZU-Ed4.js";import"./VBadge-VwKD9DDf.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-BGVL0kta.js";const Q={name:"ExamScheduleManager",components:{ExamConfigEditor:A},data(){return{configs:[],loading:!1,error:"",success:"",renameDialog:!1,editDialog:!1,configToRename:null,editingConfig:null,newConfigName:"",renaming:!1,saving:!1,importDialog:!1,importJson:"",importError:"",importing:!1,datePickerDialog:!1,baseDate:"",virtualDateInfo:null,pendingImportConfig:null,aiDialog:!1,copied:!1}},async mounted(){await this.loadConfigs()},computed:{aiPrompt(){const a=new Date;return`Your task is to generate a JSON configuration file for an exam dashboard. Based on the exam information input by the user, generate the configuration strictly following these rules. +import A from"./ExamConfigEditor-wXpc4eEz.js";import{d as C}from"./dataProvider-bUkzKSNt.js";import{_ as J,e as y,c as V,f as g,E as R,d as v,i as u,l as z,n as F,o as O,p as H,M as L,k as S,q as T,r as k,g as M}from"./index-CFUCTEXJ.js";import{X as p,Y as h,Z as i,j as s,a1 as l,k as f,S as x,$ as D,_ as U,F as X,a2 as j,ad as B}from"./vendor-vue-B2vxubPy.js";import{V as W,a as q}from"./VRow-Dw4j2TKL.js";import{V as N}from"./VAlert-DO0N7oM6.js";import{V as P}from"./VChip-DR8Ljy6R.js";import{V as K}from"./VSkeletonLoader-AysIn-20.js";import{V as Y}from"./VTextField-ByBRYn99.js";import{V as G}from"./VTextarea-BxmmuONa.js";import{V as Z}from"./VContainer-RtoBp6rB.js";import"./VTooltip-CbK3h4lM.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./VSwitch-DKh_Uq_M.js";import"./VLabel-CU-8PdVS.js";import"./VAutocomplete-CrWVUMTj.js";import"./VSelect-Fp4MUhJW.js";import"./autofocus-BAgnxQiD.js";import"./VSheet-B8D7XEg5.js";import"./VCheckboxBtn-DOw5vjpY.js";import"./VDatePicker-BWfVQdXc.js";import"./VBadge-C7i5WU2T.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-CdH9Xda8.js";const Q={name:"ExamScheduleManager",components:{ExamConfigEditor:A},data(){return{configs:[],loading:!1,error:"",success:"",renameDialog:!1,editDialog:!1,configToRename:null,editingConfig:null,newConfigName:"",renaming:!1,saving:!1,importDialog:!1,importJson:"",importError:"",importing:!1,datePickerDialog:!1,baseDate:"",virtualDateInfo:null,pendingImportConfig:null,aiDialog:!1,copied:!1}},async mounted(){await this.loadConfigs()},computed:{aiPrompt(){const a=new Date;return`Your task is to generate a JSON configuration file for an exam dashboard. Based on the exam information input by the user, generate the configuration strictly following these rules. Generation Requirements: * Output using JSON blocks in Markdown @@ -36,7 +36,7 @@ Date and Time Handling: * For multiple exams, calculate dates sequentially in order Now please generate the exam configuration based on the above rules:`}},methods:{inferExamType(){const a=new Date,e=a.getMonth()+1,r=a.getDate();let o="新考试",t=`请保持卷面整洁,字迹清晰,遵守考场纪律,诚信应考。 -听到终考铃声时,请立即起立并停止作答。`;return e>=9||e<=1?e===9&&r<=15?o="开学摸底考试":e===9&&r>15?o="第一次月考":e===10?o="第二次月考":e===11&&r<=20?o="期中考试":e===11&&r>20?o="第三次月考":e===12?o="第四次月考":e===1&&(o="期末考试"):e>=2&&e<=7&&(e===2||e===3&&r<=10?o="开学摸底考试":e===3&&r>10?o="第一次月考":e===4&&r<=25?o="期中考试":e===4&&r>25?o="第二次月考":e===5?o="第三次月考":(e===6||e===7)&&(o="期末考试")),{examName:o,message:t}},async initializeExampleData(){const a=[{id:"exam_example_001",examName:"期末考试安排",message:"请按时参加考试,携带学生证和身份证",examInfos:[{name:"数学",start:"2025/01/15 09:00",end:"2025/01/15 11:00"},{name:"英语",start:"2025/01/16 14:00",end:"2025/01/16 16:00"}]},{id:"exam_example_002",examName:"期中考试安排",message:"考试期间请保持安静",examInfos:[{name:"物理",start:"2025/01/20 10:00",end:"2025/01/20 12:00"},{name:"化学",start:"2025/01/21 14:00",end:"2025/01/21 16:00"}]},{id:"exam_example_003",examName:"模拟考试安排",message:"模拟考试,请认真对待",examInfos:[{name:"语文",start:"2025/01/25 09:00",end:"2025/01/25 11:30"}]}],e=a.map(r=>({id:r.id}));await C.saveData("es_list",e);for(let r of a){const o={...r};delete o.id,await C.saveData(`es_${r.id}`,o)}return a},async loadConfigs(){this.loading=!0,this.error="";try{const a=await C.loadData("es_list");if(a&&a&&a.length>0){this.configs=[];for(let e of a)try{const r=await C.loadData(`es_${e.id}`);r&&this.configs.push({id:e.id,...r})}catch(r){console.warn(`加载配置 es_${e.id} 失败:`,r)}}else this.configs=await this.initializeExampleData()}catch(a){this.error="加载配置列表失败: "+a.message,this.configs=[]}finally{this.loading=!1}},async createNewConfig(){var c,n;const a=Date.now().toString(),e=new Date;e.setDate(e.getDate()+1),e.setHours(8,0,0,0);const r=new Date(e);r.setHours(r.getHours()+2);const o=d=>{const E=d.getFullYear(),I=String(d.getMonth()+1).padStart(2,"0"),w=String(d.getDate()).padStart(2,"0"),b=String(d.getHours()).padStart(2,"0"),_=String(d.getMinutes()).padStart(2,"0");return`${E}/${I}/${w} ${b}:${_}`},t=this.inferExamType(),m={examName:t.examName,message:t.message,room:P("server.classNumber")||"",examInfos:[{name:"语文",start:o(e),end:o(r)}]};try{const d=await C.saveData(`es_${a}`,m);if(!d)throw new Error(((c=d.error)==null?void 0:c.message)||"保存失败");this.configs.push({id:a,...m});const E=this.configs.map(b=>({id:b.id})),I=await C.saveData("es_list",E);if(!I)throw new Error(((n=I.error)==null?void 0:n.message)||"更新列表失败");this.$message.success("新配置创建成功");const w=this.configs.find(b=>b.id===a);w&&(this.editingConfig=w,this.editDialog=!0)}catch(d){this.$message.error("创建配置失败: "+d.message)}},showRenameDialog(a){this.configToRename=a,this.newConfigName=a.examName||`配置 ${a.id}`,this.renameDialog=!0},async renameConfig(){var a;if(!(!this.configToRename||!this.newConfigName)){this.renaming=!0;try{const e={examName:this.newConfigName,message:this.configToRename.message,examInfos:this.configToRename.examInfos},r=await C.saveData(`es_${this.configToRename.id}`,e);if(!r)throw new Error(((a=r.error)==null?void 0:a.message)||"保存失败");const o=this.configs.findIndex(t=>t.id===this.configToRename.id);o!==-1&&(this.configs[o].examName=this.newConfigName),this.$message.success("配置重命名成功"),this.renameDialog=!1,this.configToRename=null,this.newConfigName=""}catch(e){this.$message.error("重命名配置失败: "+e.message)}finally{this.renaming=!1}}},showEditDialog(a){this.editingConfig=a,this.editDialog=!0},closeEditDialog(){this.editDialog=!1,this.editingConfig=null,this.saving=!1},async saveConfigInDialog(){if(this.$refs.configEditor){this.saving=!0;try{await this.$refs.configEditor.saveConfig()}catch(a){console.error("保存配置失败:",a)}finally{this.saving=!1}}},onConfigSaved(){this.$message.success("配置保存成功!"),this.loadConfigs(),this.$message.success("配置保存成功!")},onConfigError(a){this.$message.error(a||"保存配置时发生错误"),this.$message.error(a||"保存配置时发生错误")},onConfigOpened(){this.$message.success("配置已在新窗口中打开"),this.$message.success("配置已在新窗口中打开")},onConfigDeleted(a){a.success?(this.$message.success(a.message||"配置删除成功"),this.editDialog=!1,this.loadConfigs()):this.$message.error(a.message||"删除失败")},showImportDialog(){this.importDialog=!0,this.importJson="",this.importError=""},closeImportDialog(){this.importDialog=!1,this.importJson="",this.importError="",this.importing=!1},detectVirtualDates(a){const e=/^0000-00-(\d{2})/;let r=!1,o=1/0,t=-1/0,m=0;if(a.examInfos&&Array.isArray(a.examInfos))for(let c of a.examInfos){if(c.start){const n=c.start.match(e);if(n){r=!0,m++;const d=parseInt(n[1]);o=Math.min(o,d),t=Math.max(t,d)}}if(c.end){const n=c.end.match(e);if(n){r=!0;const d=parseInt(n[1]);o=Math.min(o,d),t=Math.max(t,d)}}}return r?{hasVirtual:!0,count:m,span:t-o+1,minDay:o,maxDay:t}:null},convertVirtualDate(a,e){const r=/^0000-00-(\d{2})\s+(.+)$/,o=a.match(r);if(!o)return a;const t=parseInt(o[1]),m=o[2],c=new Date(e),n=new Date(c);n.setDate(c.getDate()+(t-1));const d=n.getFullYear(),E=String(n.getMonth()+1).padStart(2,"0"),I=String(n.getDate()).padStart(2,"0"),w=m.match(/(\d{2}):(\d{2})(?::(\d{2}))?/);if(w){const b=w[1],_=w[2];return`${d}/${E}/${I} ${b}:${_}`}return`${d}/${E}/${I} ${m}`},normalizeDateFormat(a){if(!a)return"";if(/^\d{4}\/\d{2}\/\d{2}\s+\d{2}:\d{2}$/.test(a))return a;const e=/^(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2})(?::(\d{2}))?$/,r=a.match(e);if(r)return`${r[1]}/${r[2]}/${r[3]} ${r[4]}:${r[5]}`;const o=/^(\d{4})-(\d{2})-(\d{2})$/,t=a.match(o);return t?`${t[1]}/${t[2]}/${t[3]} 08:00`:a},validateAndFillConfig(a){const e=this.inferExamType(),r={examName:a.examName||e.examName,message:a.message||e.message,room:a.room||P("server.classNumber")||"",examInfos:[]};if(!a.examInfos||!Array.isArray(a.examInfos))throw new Error("配置中缺少 examInfos 数组");if(a.examInfos.length===0)throw new Error("examInfos 数组不能为空");for(let o=0;o({id:d.id})),c=await C.saveData("es_list",m);if(!c)throw new Error(((o=c.error)==null?void 0:o.message)||"更新列表失败");this.success="配置导入成功!",this.closeImportDialog();const n=this.configs.find(d=>d.id===e);n&&(this.editingConfig=n,this.editDialog=!0)}catch(t){throw new Error("保存配置失败: "+t.message)}},showAIDialog(){this.aiDialog=!0,this.copied=!1},closeAIDialog(){this.aiDialog=!1,this.copied=!1},async copyPrompt(){try{await navigator.clipboard.writeText(this.aiPrompt),this.copied=!0,setTimeout(()=>{this.copied=!1},3e3)}catch{const e=document.createElement("textarea");e.value=this.aiPrompt,e.style.position="fixed",e.style.left="-999999px",document.body.appendChild(e),e.select();try{document.execCommand("copy"),this.copied=!0,setTimeout(()=>{this.copied=!1},3e3)}catch{this.error="复制失败,请手动复制"}document.body.removeChild(e)}},goToImport(){this.aiDialog=!1,this.showImportDialog()}}},$={class:"d-flex align-center"},ee={class:"d-flex align-center"},te={class:"d-flex justify-space-between align-center mb-4"},ie={class:"d-flex align-center"},se={class:"d-flex align-center"},ae={class:"d-flex align-center mt-1"},oe={class:"d-flex align-center"},ne={class:"text-caption"},re={class:"mb-3"},le={class:"d-flex justify-space-between align-center mb-2"},me={class:"ai-prompt-text"};function de(a,e,r,o,t,m){const c=A;return p(),h(Z,{class:"fill-height"},{default:i(()=>[s(W,null,{default:i(()=>[s(q,{cols:"12"},{default:i(()=>[s(y,{border:"",class:"elevation-12"},{default:i(()=>[s(V,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[12]||(e[12]=[l("mdi-calendar-check",-1)])]),_:1}),e[13]||(e[13]=l(" 考试看板 ",-1))]),_:1}),s(R,null,{default:i(()=>[...e[14]||(e[14]=[l(" 不只是考试看板。 ",-1)])]),_:1}),s(v,null,{default:i(()=>[t.error?(p(),h(N,{key:0,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"error",variant:"tonal","onClick:close":e[0]||(e[0]=n=>t.error="")},{default:i(()=>[f("div",$,[s(g,{class:"mr-2"},{default:i(()=>[...e[15]||(e[15]=[l("mdi-alert-circle",-1)])]),_:1}),l(" "+x(t.error),1)])]),_:1})):D("",!0),t.success?(p(),h(N,{key:1,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"success",variant:"tonal","onClick:close":e[1]||(e[1]=n=>t.success="")},{default:i(()=>[f("div",ee,[s(g,{class:"mr-2"},{default:i(()=>[...e[16]||(e[16]=[l("mdi-check-circle",-1)])]),_:1}),l(" "+x(t.success),1)])]),_:1})):D("",!0),f("div",te,[f("div",ie,[s(u,{class:"mr-2",color:"primary","prepend-icon":"mdi-plus",onClick:m.createNewConfig},{default:i(()=>[...e[17]||(e[17]=[l(" 新建配置 ",-1)])]),_:1},8,["onClick"]),s(u,{class:"mr-2",color:"success","prepend-icon":"mdi-import",variant:"outlined",onClick:m.showImportDialog},{default:i(()=>[...e[18]||(e[18]=[l(" 导入配置 ",-1)])]),_:1},8,["onClick"]),s(u,{class:"mr-2",color:"purple","prepend-icon":"mdi-brain",variant:"outlined",onClick:m.showAIDialog},{default:i(()=>[...e[19]||(e[19]=[l(" AI生成 ",-1)])]),_:1},8,["onClick"]),s(u,{loading:t.loading,color:"info","prepend-icon":"mdi-refresh",variant:"outlined",onClick:m.loadConfigs},{default:i(()=>[...e[20]||(e[20]=[l(" 刷新 ",-1)])]),_:1},8,["loading","onClick"])]),t.configs.length>0?(p(),h(M,{key:0,color:"primary","prepend-icon":"mdi-format-list-numbered"},{default:i(()=>[l(x(t.configs.length)+" 个配置 ",1)]),_:1})):D("",!0)]),t.loading?(p(),h(y,{key:2,class:"my-4",outlined:""},{default:i(()=>[s(v,null,{default:i(()=>[s(K,{class:"mx-auto",type:"list-item-avatar-two-line@3"})]),_:1})]),_:1})):D("",!0),!t.loading&&t.configs.length>0?(p(),h(y,{key:3,class:"my-4",elevation:"1"},{default:i(()=>[s(V,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:i(()=>[s(g,{class:"mr-2"},{default:i(()=>[...e[21]||(e[21]=[l("mdi-format-list-bulleted",-1)])]),_:1}),e[22]||(e[22]=f("span",{class:"font-weight-bold"},"配置列表",-1))]),_:1}),s(z,null,{default:i(()=>[(p(!0),U(j,null,X(t.configs,n=>(p(),h(F,{key:n.id,class:"border-b",style:{cursor:"pointer"},onClick:d=>m.showEditDialog(n)},{prepend:i(()=>[s(L,{class:"mr-2",color:"primary"},{default:i(()=>[s(g,{color:"white"},{default:i(()=>[...e[23]||(e[23]=[l("mdi-calendar-text",-1)])]),_:1})]),_:1})]),append:i(()=>[f("div",oe,[s(u,{class:"mr-1",color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:d=>m.showEditDialog(n)},{default:i(()=>[s(g,null,{default:i(()=>[...e[26]||(e[26]=[l("mdi-pencil",-1)])]),_:1})]),_:1},8,["onClick"]),s(u,{class:"mr-1",color:"info",icon:"mdi-eye",size:"small",variant:"text",onClick:d=>m.showEditDialog(n)},{default:i(()=>[s(g,null,{default:i(()=>[...e[27]||(e[27]=[l("mdi-eye",-1)])]),_:1})]),_:1},8,["onClick"])])]),default:i(()=>[s(O,{class:"font-weight-medium"},{default:i(()=>[l(x(n.examName||`配置 ${n.id}`),1)]),_:2},1024),s(H,{class:"text-caption mt-1"},{default:i(()=>[f("div",se,[s(g,{class:"mr-1",size:"small"},{default:i(()=>[...e[24]||(e[24]=[l("mdi-information-outline",-1)])]),_:1}),l(" "+x(n.message||"无描述"),1)]),f("div",ae,[s(g,{class:"mr-1",size:"small"},{default:i(()=>[...e[25]||(e[25]=[l("mdi-book-multiple",-1)])]),_:1}),l(" "+x(n.examInfos?n.examInfos.length:0)+" 堂考试 ",1)])]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1})):D("",!0),!t.loading&&t.configs.length===0?(p(),h(y,{key:4,class:"my-4",elevation:"1"},{default:i(()=>[s(v,{class:"text-center py-8"},{default:i(()=>[s(g,{class:"mb-4",color:"grey-lighten-1",size:"64"},{default:i(()=>[...e[28]||(e[28]=[l(" mdi-calendar-blank ",-1)])]),_:1}),e[30]||(e[30]=f("h3",{class:"text-h6 mb-2 text-grey-darken-1"},"暂无配置",-1)),e[31]||(e[31]=f("p",{class:"text-body-2 text-grey-darken-1 mb-4"},' 点击"新建配置"按钮创建您的第一个考试配置 ',-1)),s(u,{color:"primary","prepend-icon":"mdi-plus",onClick:m.createNewConfig},{default:i(()=>[...e[29]||(e[29]=[l(" 新建配置 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})):D("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),s(S,{modelValue:t.renameDialog,"onUpdate:modelValue":e[4]||(e[4]=n=>t.renameDialog=n),"max-width":"500"},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center"},{default:i(()=>[s(g,{class:"mr-2",color:"primary"},{default:i(()=>[...e[32]||(e[32]=[l("mdi-rename-box",-1)])]),_:1}),e[33]||(e[33]=l(" 重命名配置 ",-1))]),_:1}),s(v,null,{default:i(()=>[s(Y,{modelValue:t.newConfigName,"onUpdate:modelValue":e[2]||(e[2]=n=>t.newConfigName=n),rules:[n=>!!n||"配置名称不能为空"],label:"配置名称","prepend-inner-icon":"mdi-calendar-text",variant:"outlined",onKeyup:B(m.renameConfig,["enter"])},null,8,["modelValue","rules","onKeyup"])]),_:1}),s(T,null,{default:i(()=>[s(k),s(u,{color:"grey",variant:"text",onClick:e[3]||(e[3]=n=>t.renameDialog=!1)},{default:i(()=>[...e[34]||(e[34]=[l(" 取消 ",-1)])]),_:1}),s(u,{disabled:!t.newConfigName,loading:t.renaming,color:"primary",variant:"outlined",onClick:m.renameConfig},{default:i(()=>[...e[35]||(e[35]=[l(" 确认 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),s(S,{modelValue:t.editDialog,"onUpdate:modelValue":e[5]||(e[5]=n=>t.editDialog=n),"max-width":"1200",persistent:""},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[36]||(e[36]=[l("mdi-pencil",-1)])]),_:1}),e[38]||(e[38]=l(" 编辑考试配置 ",-1)),s(k),t.editingConfig?(p(),h(M,{key:0,class:"mr-2",color:"white",size:"small","text-color":"primary"},{default:i(()=>[l(" ID: "+x(t.editingConfig.id),1)]),_:1})):D("",!0),s(u,{color:"white",icon:"mdi-close",variant:"text",onClick:m.closeEditDialog},{default:i(()=>[s(g,null,{default:i(()=>[...e[37]||(e[37]=[l("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1}),s(v,{class:"pa-4",style:{"max-height":"70vh","overflow-y":"auto"}},{default:i(()=>[t.editingConfig?(p(),h(c,{key:0,ref:"configEditor","config-id":t.editingConfig.id,"dialog-mode":!0,onDeleted:m.onConfigDeleted,onError:m.onConfigError,onOpened:m.onConfigOpened,onSaved:m.onConfigSaved},null,8,["config-id","onDeleted","onError","onOpened","onSaved"])):D("",!0)]),_:1}),s(T,{class:"pa-4"},{default:i(()=>[s(u,{color:"grey","prepend-icon":"mdi-close",variant:"outlined",onClick:m.closeEditDialog},{default:i(()=>[...e[39]||(e[39]=[l(" 关闭 ",-1)])]),_:1},8,["onClick"]),s(k),s(u,{loading:t.saving,color:"success","prepend-icon":"mdi-content-save",variant:"outlined",onClick:m.saveConfigInDialog},{default:i(()=>[...e[40]||(e[40]=[l(" 保存配置 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),s(S,{modelValue:t.importDialog,"onUpdate:modelValue":e[8]||(e[8]=n=>t.importDialog=n),"max-width":"800",persistent:""},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[41]||(e[41]=[l("mdi-import",-1)])]),_:1}),e[43]||(e[43]=l(" 导入考试配置 ",-1)),s(k),s(u,{color:"white",icon:"mdi-close",variant:"text",onClick:m.closeImportDialog},{default:i(()=>[s(g,null,{default:i(()=>[...e[42]||(e[42]=[l("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1}),s(v,{class:"pa-4"},{default:i(()=>[t.importError?(p(),h(N,{key:0,border:"start",class:"mb-4",closable:"",type:"error",variant:"tonal","onClick:close":e[6]||(e[6]=n=>t.importError="")},{default:i(()=>[l(x(t.importError),1)]),_:1})):D("",!0),s(G,{modelValue:t.importJson,"onUpdate:modelValue":e[7]||(e[7]=n=>t.importJson=n),rules:[n=>!!n||"JSON内容不能为空"],label:"请输入JSON配置",placeholder:`{ +听到终考铃声时,请立即起立并停止作答。`;return e>=9||e<=1?e===9&&r<=15?o="开学摸底考试":e===9&&r>15?o="第一次月考":e===10?o="第二次月考":e===11&&r<=20?o="期中考试":e===11&&r>20?o="第三次月考":e===12?o="第四次月考":e===1&&(o="期末考试"):e>=2&&e<=7&&(e===2||e===3&&r<=10?o="开学摸底考试":e===3&&r>10?o="第一次月考":e===4&&r<=25?o="期中考试":e===4&&r>25?o="第二次月考":e===5?o="第三次月考":(e===6||e===7)&&(o="期末考试")),{examName:o,message:t}},async initializeExampleData(){const a=[{id:"exam_example_001",examName:"期末考试安排",message:"请按时参加考试,携带学生证和身份证",examInfos:[{name:"数学",start:"2025/01/15 09:00",end:"2025/01/15 11:00"},{name:"英语",start:"2025/01/16 14:00",end:"2025/01/16 16:00"}]},{id:"exam_example_002",examName:"期中考试安排",message:"考试期间请保持安静",examInfos:[{name:"物理",start:"2025/01/20 10:00",end:"2025/01/20 12:00"},{name:"化学",start:"2025/01/21 14:00",end:"2025/01/21 16:00"}]},{id:"exam_example_003",examName:"模拟考试安排",message:"模拟考试,请认真对待",examInfos:[{name:"语文",start:"2025/01/25 09:00",end:"2025/01/25 11:30"}]}],e=a.map(r=>({id:r.id}));await C.saveData("es_list",e);for(let r of a){const o={...r};delete o.id,await C.saveData(`es_${r.id}`,o)}return a},async loadConfigs(){this.loading=!0,this.error="";try{const a=await C.loadData("es_list");if(a&&a&&a.length>0){this.configs=[];for(let e of a)try{const r=await C.loadData(`es_${e.id}`);r&&this.configs.push({id:e.id,...r})}catch(r){console.warn(`加载配置 es_${e.id} 失败:`,r)}}else this.configs=await this.initializeExampleData()}catch(a){this.error="加载配置列表失败: "+a.message,this.configs=[]}finally{this.loading=!1}},async createNewConfig(){var c,n;const a=Date.now().toString(),e=new Date;e.setDate(e.getDate()+1),e.setHours(8,0,0,0);const r=new Date(e);r.setHours(r.getHours()+2);const o=d=>{const E=d.getFullYear(),I=String(d.getMonth()+1).padStart(2,"0"),w=String(d.getDate()).padStart(2,"0"),b=String(d.getHours()).padStart(2,"0"),_=String(d.getMinutes()).padStart(2,"0");return`${E}/${I}/${w} ${b}:${_}`},t=this.inferExamType(),m={examName:t.examName,message:t.message,room:M("server.classNumber")||"",examInfos:[{name:"语文",start:o(e),end:o(r)}]};try{const d=await C.saveData(`es_${a}`,m);if(!d)throw new Error(((c=d.error)==null?void 0:c.message)||"保存失败");this.configs.push({id:a,...m});const E=this.configs.map(b=>({id:b.id})),I=await C.saveData("es_list",E);if(!I)throw new Error(((n=I.error)==null?void 0:n.message)||"更新列表失败");this.$message.success("新配置创建成功");const w=this.configs.find(b=>b.id===a);w&&(this.editingConfig=w,this.editDialog=!0)}catch(d){this.$message.error("创建配置失败: "+d.message)}},showRenameDialog(a){this.configToRename=a,this.newConfigName=a.examName||`配置 ${a.id}`,this.renameDialog=!0},async renameConfig(){var a;if(!(!this.configToRename||!this.newConfigName)){this.renaming=!0;try{const e={examName:this.newConfigName,message:this.configToRename.message,examInfos:this.configToRename.examInfos},r=await C.saveData(`es_${this.configToRename.id}`,e);if(!r)throw new Error(((a=r.error)==null?void 0:a.message)||"保存失败");const o=this.configs.findIndex(t=>t.id===this.configToRename.id);o!==-1&&(this.configs[o].examName=this.newConfigName),this.$message.success("配置重命名成功"),this.renameDialog=!1,this.configToRename=null,this.newConfigName=""}catch(e){this.$message.error("重命名配置失败: "+e.message)}finally{this.renaming=!1}}},showEditDialog(a){this.editingConfig=a,this.editDialog=!0},closeEditDialog(){this.editDialog=!1,this.editingConfig=null,this.saving=!1},async saveConfigInDialog(){if(this.$refs.configEditor){this.saving=!0;try{await this.$refs.configEditor.saveConfig()}catch(a){console.error("保存配置失败:",a)}finally{this.saving=!1}}},onConfigSaved(){this.$message.success("配置保存成功!"),this.loadConfigs(),this.$message.success("配置保存成功!")},onConfigError(a){this.$message.error(a||"保存配置时发生错误"),this.$message.error(a||"保存配置时发生错误")},onConfigOpened(){this.$message.success("配置已在新窗口中打开"),this.$message.success("配置已在新窗口中打开")},onConfigDeleted(a){a.success?(this.$message.success(a.message||"配置删除成功"),this.editDialog=!1,this.loadConfigs()):this.$message.error(a.message||"删除失败")},showImportDialog(){this.importDialog=!0,this.importJson="",this.importError=""},closeImportDialog(){this.importDialog=!1,this.importJson="",this.importError="",this.importing=!1},detectVirtualDates(a){const e=/^0000-00-(\d{2})/;let r=!1,o=1/0,t=-1/0,m=0;if(a.examInfos&&Array.isArray(a.examInfos))for(let c of a.examInfos){if(c.start){const n=c.start.match(e);if(n){r=!0,m++;const d=parseInt(n[1]);o=Math.min(o,d),t=Math.max(t,d)}}if(c.end){const n=c.end.match(e);if(n){r=!0;const d=parseInt(n[1]);o=Math.min(o,d),t=Math.max(t,d)}}}return r?{hasVirtual:!0,count:m,span:t-o+1,minDay:o,maxDay:t}:null},convertVirtualDate(a,e){const r=/^0000-00-(\d{2})\s+(.+)$/,o=a.match(r);if(!o)return a;const t=parseInt(o[1]),m=o[2],c=new Date(e),n=new Date(c);n.setDate(c.getDate()+(t-1));const d=n.getFullYear(),E=String(n.getMonth()+1).padStart(2,"0"),I=String(n.getDate()).padStart(2,"0"),w=m.match(/(\d{2}):(\d{2})(?::(\d{2}))?/);if(w){const b=w[1],_=w[2];return`${d}/${E}/${I} ${b}:${_}`}return`${d}/${E}/${I} ${m}`},normalizeDateFormat(a){if(!a)return"";if(/^\d{4}\/\d{2}\/\d{2}\s+\d{2}:\d{2}$/.test(a))return a;const e=/^(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2})(?::(\d{2}))?$/,r=a.match(e);if(r)return`${r[1]}/${r[2]}/${r[3]} ${r[4]}:${r[5]}`;const o=/^(\d{4})-(\d{2})-(\d{2})$/,t=a.match(o);return t?`${t[1]}/${t[2]}/${t[3]} 08:00`:a},validateAndFillConfig(a){const e=this.inferExamType(),r={examName:a.examName||e.examName,message:a.message||e.message,room:a.room||M("server.classNumber")||"",examInfos:[]};if(!a.examInfos||!Array.isArray(a.examInfos))throw new Error("配置中缺少 examInfos 数组");if(a.examInfos.length===0)throw new Error("examInfos 数组不能为空");for(let o=0;o({id:d.id})),c=await C.saveData("es_list",m);if(!c)throw new Error(((o=c.error)==null?void 0:o.message)||"更新列表失败");this.success="配置导入成功!",this.closeImportDialog();const n=this.configs.find(d=>d.id===e);n&&(this.editingConfig=n,this.editDialog=!0)}catch(t){throw new Error("保存配置失败: "+t.message)}},showAIDialog(){this.aiDialog=!0,this.copied=!1},closeAIDialog(){this.aiDialog=!1,this.copied=!1},async copyPrompt(){try{await navigator.clipboard.writeText(this.aiPrompt),this.copied=!0,setTimeout(()=>{this.copied=!1},3e3)}catch{const e=document.createElement("textarea");e.value=this.aiPrompt,e.style.position="fixed",e.style.left="-999999px",document.body.appendChild(e),e.select();try{document.execCommand("copy"),this.copied=!0,setTimeout(()=>{this.copied=!1},3e3)}catch{this.error="复制失败,请手动复制"}document.body.removeChild(e)}},goToImport(){this.aiDialog=!1,this.showImportDialog()}}},$={class:"d-flex align-center"},ee={class:"d-flex align-center"},te={class:"d-flex justify-space-between align-center mb-4"},ie={class:"d-flex align-center"},se={class:"d-flex align-center"},ae={class:"d-flex align-center mt-1"},oe={class:"d-flex align-center"},ne={class:"text-caption"},re={class:"mb-3"},le={class:"d-flex justify-space-between align-center mb-2"},me={class:"ai-prompt-text"};function de(a,e,r,o,t,m){const c=A;return p(),h(Z,{class:"fill-height"},{default:i(()=>[s(W,null,{default:i(()=>[s(q,{cols:"12"},{default:i(()=>[s(y,{border:"",class:"elevation-12"},{default:i(()=>[s(V,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[12]||(e[12]=[l("mdi-calendar-check",-1)])]),_:1}),e[13]||(e[13]=l(" 考试看板 ",-1))]),_:1}),s(R,null,{default:i(()=>[...e[14]||(e[14]=[l(" 不只是考试看板。 ",-1)])]),_:1}),s(v,null,{default:i(()=>[t.error?(p(),h(N,{key:0,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"error",variant:"tonal","onClick:close":e[0]||(e[0]=n=>t.error="")},{default:i(()=>[f("div",$,[s(g,{class:"mr-2"},{default:i(()=>[...e[15]||(e[15]=[l("mdi-alert-circle",-1)])]),_:1}),l(" "+x(t.error),1)])]),_:1})):D("",!0),t.success?(p(),h(N,{key:1,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"success",variant:"tonal","onClick:close":e[1]||(e[1]=n=>t.success="")},{default:i(()=>[f("div",ee,[s(g,{class:"mr-2"},{default:i(()=>[...e[16]||(e[16]=[l("mdi-check-circle",-1)])]),_:1}),l(" "+x(t.success),1)])]),_:1})):D("",!0),f("div",te,[f("div",ie,[s(u,{class:"mr-2",color:"primary","prepend-icon":"mdi-plus",onClick:m.createNewConfig},{default:i(()=>[...e[17]||(e[17]=[l(" 新建配置 ",-1)])]),_:1},8,["onClick"]),s(u,{class:"mr-2",color:"success","prepend-icon":"mdi-import",variant:"outlined",onClick:m.showImportDialog},{default:i(()=>[...e[18]||(e[18]=[l(" 导入配置 ",-1)])]),_:1},8,["onClick"]),s(u,{class:"mr-2",color:"purple","prepend-icon":"mdi-brain",variant:"outlined",onClick:m.showAIDialog},{default:i(()=>[...e[19]||(e[19]=[l(" AI生成 ",-1)])]),_:1},8,["onClick"]),s(u,{loading:t.loading,color:"info","prepend-icon":"mdi-refresh",variant:"outlined",onClick:m.loadConfigs},{default:i(()=>[...e[20]||(e[20]=[l(" 刷新 ",-1)])]),_:1},8,["loading","onClick"])]),t.configs.length>0?(p(),h(P,{key:0,color:"primary","prepend-icon":"mdi-format-list-numbered"},{default:i(()=>[l(x(t.configs.length)+" 个配置 ",1)]),_:1})):D("",!0)]),t.loading?(p(),h(y,{key:2,class:"my-4",outlined:""},{default:i(()=>[s(v,null,{default:i(()=>[s(K,{class:"mx-auto",type:"list-item-avatar-two-line@3"})]),_:1})]),_:1})):D("",!0),!t.loading&&t.configs.length>0?(p(),h(y,{key:3,class:"my-4",elevation:"1"},{default:i(()=>[s(V,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:i(()=>[s(g,{class:"mr-2"},{default:i(()=>[...e[21]||(e[21]=[l("mdi-format-list-bulleted",-1)])]),_:1}),e[22]||(e[22]=f("span",{class:"font-weight-bold"},"配置列表",-1))]),_:1}),s(z,null,{default:i(()=>[(p(!0),U(X,null,j(t.configs,n=>(p(),h(F,{key:n.id,class:"border-b",style:{cursor:"pointer"},onClick:d=>m.showEditDialog(n)},{prepend:i(()=>[s(L,{class:"mr-2",color:"primary"},{default:i(()=>[s(g,{color:"white"},{default:i(()=>[...e[23]||(e[23]=[l("mdi-calendar-text",-1)])]),_:1})]),_:1})]),append:i(()=>[f("div",oe,[s(u,{class:"mr-1",color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:d=>m.showEditDialog(n)},{default:i(()=>[s(g,null,{default:i(()=>[...e[26]||(e[26]=[l("mdi-pencil",-1)])]),_:1})]),_:1},8,["onClick"]),s(u,{class:"mr-1",color:"info",icon:"mdi-eye",size:"small",variant:"text",onClick:d=>m.showEditDialog(n)},{default:i(()=>[s(g,null,{default:i(()=>[...e[27]||(e[27]=[l("mdi-eye",-1)])]),_:1})]),_:1},8,["onClick"])])]),default:i(()=>[s(O,{class:"font-weight-medium"},{default:i(()=>[l(x(n.examName||`配置 ${n.id}`),1)]),_:2},1024),s(H,{class:"text-caption mt-1"},{default:i(()=>[f("div",se,[s(g,{class:"mr-1",size:"small"},{default:i(()=>[...e[24]||(e[24]=[l("mdi-information-outline",-1)])]),_:1}),l(" "+x(n.message||"无描述"),1)]),f("div",ae,[s(g,{class:"mr-1",size:"small"},{default:i(()=>[...e[25]||(e[25]=[l("mdi-book-multiple",-1)])]),_:1}),l(" "+x(n.examInfos?n.examInfos.length:0)+" 堂考试 ",1)])]),_:2},1024)]),_:2},1032,["onClick"]))),128))]),_:1})]),_:1})):D("",!0),!t.loading&&t.configs.length===0?(p(),h(y,{key:4,class:"my-4",elevation:"1"},{default:i(()=>[s(v,{class:"text-center py-8"},{default:i(()=>[s(g,{class:"mb-4",color:"grey-lighten-1",size:"64"},{default:i(()=>[...e[28]||(e[28]=[l(" mdi-calendar-blank ",-1)])]),_:1}),e[30]||(e[30]=f("h3",{class:"text-h6 mb-2 text-grey-darken-1"},"暂无配置",-1)),e[31]||(e[31]=f("p",{class:"text-body-2 text-grey-darken-1 mb-4"},' 点击"新建配置"按钮创建您的第一个考试配置 ',-1)),s(u,{color:"primary","prepend-icon":"mdi-plus",onClick:m.createNewConfig},{default:i(()=>[...e[29]||(e[29]=[l(" 新建配置 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})):D("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),s(S,{modelValue:t.renameDialog,"onUpdate:modelValue":e[4]||(e[4]=n=>t.renameDialog=n),"max-width":"500"},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center"},{default:i(()=>[s(g,{class:"mr-2",color:"primary"},{default:i(()=>[...e[32]||(e[32]=[l("mdi-rename-box",-1)])]),_:1}),e[33]||(e[33]=l(" 重命名配置 ",-1))]),_:1}),s(v,null,{default:i(()=>[s(Y,{modelValue:t.newConfigName,"onUpdate:modelValue":e[2]||(e[2]=n=>t.newConfigName=n),rules:[n=>!!n||"配置名称不能为空"],label:"配置名称","prepend-inner-icon":"mdi-calendar-text",variant:"outlined",onKeyup:B(m.renameConfig,["enter"])},null,8,["modelValue","rules","onKeyup"])]),_:1}),s(T,null,{default:i(()=>[s(k),s(u,{color:"grey",variant:"text",onClick:e[3]||(e[3]=n=>t.renameDialog=!1)},{default:i(()=>[...e[34]||(e[34]=[l(" 取消 ",-1)])]),_:1}),s(u,{disabled:!t.newConfigName,loading:t.renaming,color:"primary",variant:"outlined",onClick:m.renameConfig},{default:i(()=>[...e[35]||(e[35]=[l(" 确认 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),s(S,{modelValue:t.editDialog,"onUpdate:modelValue":e[5]||(e[5]=n=>t.editDialog=n),"max-width":"1200",persistent:""},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[36]||(e[36]=[l("mdi-pencil",-1)])]),_:1}),e[38]||(e[38]=l(" 编辑考试配置 ",-1)),s(k),t.editingConfig?(p(),h(P,{key:0,class:"mr-2",color:"white",size:"small","text-color":"primary"},{default:i(()=>[l(" ID: "+x(t.editingConfig.id),1)]),_:1})):D("",!0),s(u,{color:"white",icon:"mdi-close",variant:"text",onClick:m.closeEditDialog},{default:i(()=>[s(g,null,{default:i(()=>[...e[37]||(e[37]=[l("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1}),s(v,{class:"pa-4",style:{"max-height":"70vh","overflow-y":"auto"}},{default:i(()=>[t.editingConfig?(p(),h(c,{key:0,ref:"configEditor","config-id":t.editingConfig.id,"dialog-mode":!0,onDeleted:m.onConfigDeleted,onError:m.onConfigError,onOpened:m.onConfigOpened,onSaved:m.onConfigSaved},null,8,["config-id","onDeleted","onError","onOpened","onSaved"])):D("",!0)]),_:1}),s(T,{class:"pa-4"},{default:i(()=>[s(u,{color:"grey","prepend-icon":"mdi-close",variant:"outlined",onClick:m.closeEditDialog},{default:i(()=>[...e[39]||(e[39]=[l(" 关闭 ",-1)])]),_:1},8,["onClick"]),s(k),s(u,{loading:t.saving,color:"success","prepend-icon":"mdi-content-save",variant:"outlined",onClick:m.saveConfigInDialog},{default:i(()=>[...e[40]||(e[40]=[l(" 保存配置 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),s(S,{modelValue:t.importDialog,"onUpdate:modelValue":e[8]||(e[8]=n=>t.importDialog=n),"max-width":"800",persistent:""},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[41]||(e[41]=[l("mdi-import",-1)])]),_:1}),e[43]||(e[43]=l(" 导入考试配置 ",-1)),s(k),s(u,{color:"white",icon:"mdi-close",variant:"text",onClick:m.closeImportDialog},{default:i(()=>[s(g,null,{default:i(()=>[...e[42]||(e[42]=[l("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1}),s(v,{class:"pa-4"},{default:i(()=>[t.importError?(p(),h(N,{key:0,border:"start",class:"mb-4",closable:"",type:"error",variant:"tonal","onClick:close":e[6]||(e[6]=n=>t.importError="")},{default:i(()=>[l(x(t.importError),1)]),_:1})):D("",!0),s(G,{modelValue:t.importJson,"onUpdate:modelValue":e[7]||(e[7]=n=>t.importJson=n),rules:[n=>!!n||"JSON内容不能为空"],label:"请输入JSON配置",placeholder:`{ "examName": "期末考试", "message": "考试信息", "room": "01", @@ -47,4 +47,4 @@ Now please generate the exam configuration based on the above rules:`}},methods: "end": "2025/12/14 11:00" } ] -}`,"prepend-inner-icon":"mdi-code-json",rows:"15",variant:"outlined"},null,8,["modelValue","rules"]),s(N,{border:"start",class:"mt-2",density:"compact",type:"info",variant:"tonal"},{default:i(()=>[...e[44]||(e[44]=[f("div",{class:"text-caption"},[f("strong",null,"提示:"),f("ul",{class:"mt-1"},[f("li",null,"日期格式支持: YYYY/MM/DD HH:mm 或 YYYY-MM-DD HH:mm:ss"),f("li",null,"虚拟日期格式: 0000-00-01 (表示第1天), 0000-00-02 (第2天)..."),f("li",null,"如使用虚拟日期,系统会要求您指定起始日期"),f("li",null,"缺省字段将自动填充默认值")])],-1)])]),_:1})]),_:1}),s(T,{class:"pa-4"},{default:i(()=>[s(u,{color:"grey","prepend-icon":"mdi-close",variant:"outlined",onClick:m.closeImportDialog},{default:i(()=>[...e[45]||(e[45]=[l(" 取消 ",-1)])]),_:1},8,["onClick"]),s(k),s(u,{disabled:!t.importJson,loading:t.importing,color:"success","prepend-icon":"mdi-check",variant:"outlined",onClick:m.processImport},{default:i(()=>[...e[46]||(e[46]=[l(" 导入 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),s(S,{modelValue:t.datePickerDialog,"onUpdate:modelValue":e[10]||(e[10]=n=>t.datePickerDialog=n),"max-width":"500",persistent:""},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[47]||(e[47]=[l("mdi-calendar",-1)])]),_:1}),e[48]||(e[48]=l(" 选择起始日期 ",-1))]),_:1}),s(v,{class:"pa-4"},{default:i(()=>[e[49]||(e[49]=f("p",{class:"mb-4 text-body-2"}," 检测到配置中使用了虚拟日期格式 (0000-00-XX),请选择第一天的日期,系统将自动推算其他日期。 ",-1)),s(Y,{modelValue:t.baseDate,"onUpdate:modelValue":e[9]||(e[9]=n=>t.baseDate=n),label:"起始日期","prepend-inner-icon":"mdi-calendar",type:"date",variant:"outlined"},null,8,["modelValue"]),t.virtualDateInfo?(p(),h(N,{key:0,border:"start",class:"mt-2",density:"compact",type:"info",variant:"tonal"},{default:i(()=>[f("div",ne," 检测到 "+x(t.virtualDateInfo.count)+" 个虚拟日期,跨度 "+x(t.virtualDateInfo.span)+" 天 ",1)]),_:1})):D("",!0)]),_:1}),s(T,{class:"pa-4"},{default:i(()=>[s(u,{color:"grey","prepend-icon":"mdi-close",variant:"outlined",onClick:m.cancelDatePicker},{default:i(()=>[...e[50]||(e[50]=[l(" 取消 ",-1)])]),_:1},8,["onClick"]),s(k),s(u,{disabled:!t.baseDate,color:"primary","prepend-icon":"mdi-check",variant:"outlined",onClick:m.confirmDatePicker},{default:i(()=>[...e[51]||(e[51]=[l(" 确认 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),s(S,{modelValue:t.aiDialog,"onUpdate:modelValue":e[11]||(e[11]=n=>t.aiDialog=n),"max-width":"900",persistent:""},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center purple lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[52]||(e[52]=[l("mdi-brain",-1)])]),_:1}),e[54]||(e[54]=l(" AI生成考试配置 ",-1)),s(k),s(u,{color:"white",icon:"mdi-close",variant:"text",onClick:m.closeAIDialog},{default:i(()=>[s(g,null,{default:i(()=>[...e[53]||(e[53]=[l("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1}),s(v,{class:"pa-4"},{default:i(()=>[s(N,{border:"start",class:"mb-4",type:"info",variant:"tonal"},{default:i(()=>[...e[55]||(e[55]=[f("div",{class:"d-flex align-center"},[f("div",null," 复制下方提示词到任意AI工具(如ChatGPT、Claude、Copilot等),描述您的考试安排,AI将生成符合格式的JSON配置。生成后复制JSON内容,通过“导入配置”按钮导入即可。 ")],-1)])]),_:1}),f("div",re,[f("div",le,[e[56]||(e[56]=f("h3",{class:"text-h6"},"提示词模板",-1)),s(u,{color:t.copied?"success":"primary","prepend-icon":t.copied?"mdi-check":"mdi-content-copy",size:"small",variant:"tonal",onClick:m.copyPrompt},{default:i(()=>[l(x(t.copied?"已复制":"复制提示词"),1)]),_:1},8,["color","prepend-icon","onClick"])]),s(y,{class:"pa-4",variant:"outlined"},{default:i(()=>[f("pre",me,x(m.aiPrompt),1)]),_:1})])]),_:1}),s(T,{class:"pa-4"},{default:i(()=>[s(u,{color:"grey","prepend-icon":"mdi-close",variant:"outlined",onClick:m.closeAIDialog},{default:i(()=>[...e[57]||(e[57]=[l(" 关闭 ",-1)])]),_:1},8,["onClick"]),s(k),s(u,{color:"success","prepend-icon":"mdi-import",variant:"outlined",onClick:m.goToImport},{default:i(()=>[...e[58]||(e[58]=[l(" 去导入配置 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const Ye=J(Q,[["render",de],["__scopeId","data-v-7ffcce90"]]);export{Ye as default}; +}`,"prepend-inner-icon":"mdi-code-json",rows:"15",variant:"outlined"},null,8,["modelValue","rules"]),s(N,{border:"start",class:"mt-2",density:"compact",type:"info",variant:"tonal"},{default:i(()=>[...e[44]||(e[44]=[f("div",{class:"text-caption"},[f("strong",null,"提示:"),f("ul",{class:"mt-1"},[f("li",null,"日期格式支持: YYYY/MM/DD HH:mm 或 YYYY-MM-DD HH:mm:ss"),f("li",null,"虚拟日期格式: 0000-00-01 (表示第1天), 0000-00-02 (第2天)..."),f("li",null,"如使用虚拟日期,系统会要求您指定起始日期"),f("li",null,"缺省字段将自动填充默认值")])],-1)])]),_:1})]),_:1}),s(T,{class:"pa-4"},{default:i(()=>[s(u,{color:"grey","prepend-icon":"mdi-close",variant:"outlined",onClick:m.closeImportDialog},{default:i(()=>[...e[45]||(e[45]=[l(" 取消 ",-1)])]),_:1},8,["onClick"]),s(k),s(u,{disabled:!t.importJson,loading:t.importing,color:"success","prepend-icon":"mdi-check",variant:"outlined",onClick:m.processImport},{default:i(()=>[...e[46]||(e[46]=[l(" 导入 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),s(S,{modelValue:t.datePickerDialog,"onUpdate:modelValue":e[10]||(e[10]=n=>t.datePickerDialog=n),"max-width":"500",persistent:""},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[47]||(e[47]=[l("mdi-calendar",-1)])]),_:1}),e[48]||(e[48]=l(" 选择起始日期 ",-1))]),_:1}),s(v,{class:"pa-4"},{default:i(()=>[e[49]||(e[49]=f("p",{class:"mb-4 text-body-2"}," 检测到配置中使用了虚拟日期格式 (0000-00-XX),请选择第一天的日期,系统将自动推算其他日期。 ",-1)),s(Y,{modelValue:t.baseDate,"onUpdate:modelValue":e[9]||(e[9]=n=>t.baseDate=n),label:"起始日期","prepend-inner-icon":"mdi-calendar",type:"date",variant:"outlined"},null,8,["modelValue"]),t.virtualDateInfo?(p(),h(N,{key:0,border:"start",class:"mt-2",density:"compact",type:"info",variant:"tonal"},{default:i(()=>[f("div",ne," 检测到 "+x(t.virtualDateInfo.count)+" 个虚拟日期,跨度 "+x(t.virtualDateInfo.span)+" 天 ",1)]),_:1})):D("",!0)]),_:1}),s(T,{class:"pa-4"},{default:i(()=>[s(u,{color:"grey","prepend-icon":"mdi-close",variant:"outlined",onClick:m.cancelDatePicker},{default:i(()=>[...e[50]||(e[50]=[l(" 取消 ",-1)])]),_:1},8,["onClick"]),s(k),s(u,{disabled:!t.baseDate,color:"primary","prepend-icon":"mdi-check",variant:"outlined",onClick:m.confirmDatePicker},{default:i(()=>[...e[51]||(e[51]=[l(" 确认 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),s(S,{modelValue:t.aiDialog,"onUpdate:modelValue":e[11]||(e[11]=n=>t.aiDialog=n),"max-width":"900",persistent:""},{default:i(()=>[s(y,null,{default:i(()=>[s(V,{class:"d-flex align-center purple lighten-1 white--text py-3 px-4"},{default:i(()=>[s(g,{class:"mr-2",color:"white"},{default:i(()=>[...e[52]||(e[52]=[l("mdi-brain",-1)])]),_:1}),e[54]||(e[54]=l(" AI生成考试配置 ",-1)),s(k),s(u,{color:"white",icon:"mdi-close",variant:"text",onClick:m.closeAIDialog},{default:i(()=>[s(g,null,{default:i(()=>[...e[53]||(e[53]=[l("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1}),s(v,{class:"pa-4"},{default:i(()=>[s(N,{border:"start",class:"mb-4",type:"info",variant:"tonal"},{default:i(()=>[...e[55]||(e[55]=[f("div",{class:"d-flex align-center"},[f("div",null," 复制下方提示词到任意AI工具(如ChatGPT、Claude、Copilot等),描述您的考试安排,AI将生成符合格式的JSON配置。生成后复制JSON内容,通过“导入配置”按钮导入即可。 ")],-1)])]),_:1}),f("div",re,[f("div",le,[e[56]||(e[56]=f("h3",{class:"text-h6"},"提示词模板",-1)),s(u,{color:t.copied?"success":"primary","prepend-icon":t.copied?"mdi-check":"mdi-content-copy",size:"small",variant:"tonal",onClick:m.copyPrompt},{default:i(()=>[l(x(t.copied?"已复制":"复制提示词"),1)]),_:1},8,["color","prepend-icon","onClick"])]),s(y,{class:"pa-4",variant:"outlined"},{default:i(()=>[f("pre",me,x(m.aiPrompt),1)]),_:1})])]),_:1}),s(T,{class:"pa-4"},{default:i(()=>[s(u,{color:"grey","prepend-icon":"mdi-close",variant:"outlined",onClick:m.closeAIDialog},{default:i(()=>[...e[57]||(e[57]=[l(" 关闭 ",-1)])]),_:1},8,["onClick"]),s(k),s(u,{color:"success","prepend-icon":"mdi-import",variant:"outlined",onClick:m.goToImport},{default:i(()=>[...e[58]||(e[58]=[l(" 去导入配置 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const Ae=J(Q,[["render",de],["__scopeId","data-v-7ffcce90"]]);export{Ae as default}; diff --git a/assets/index-B89AxD6u.js b/assets/index-B89AxD6u.js new file mode 100644 index 0000000..dde8ee2 --- /dev/null +++ b/assets/index-B89AxD6u.js @@ -0,0 +1,6 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-CFUCTEXJ.js","./vendor-vuetify-s-yw_Hr8.js","./vendor-vue-B2vxubPy.js","./index-CXKF55qP.css","./dataProvider-bUkzKSNt.js","./vendor-utils-DDRLRfsI.js","./serverRotation-CdH9Xda8.js","./MessageLog-BB5IiJ1u.js","./VAppBarTitle-vVO0I21U.js","./VAppBarTitle-CczdD-Q2.css","./MessageLog-BGkFwivK.css","./RandomPicker-BFIrnEvt.js","./VTextField-ByBRYn99.js","./autofocus-BAgnxQiD.js","./VLabel-CU-8PdVS.js","./VLabel-BXfPXCwa.css","./autofocus-Gei3DjNm.css","./VTooltip-CbK3h4lM.js","./VTooltip-DNuxJ6UK.css","./VChip-DR8Ljy6R.js","./VChip-q3Zvvte-.css","./RandomPicker-CFzd4pLS.css","./FloatingToolbar-Bt36S1fG.js","./VSheet-B8D7XEg5.js","./VSheet-DxsDksIw.css","./VDatePicker-BWfVQdXc.js","./VBadge-C7i5WU2T.js","./VBadge-BGqjJnM0.css","./VDatePicker-X4Ryb5EN.css","./FloatingToolbar-DbFL4asY.css","./ChatWidget-C2TaIq_w.js","./socketClient-CkosNYrb.js","./vendor-socket-CyTcV1HU.js","./soundList-D9U-Grcp.js","./deviceEvents-BfEN8wCe.js","./VRow-Dw4j2TKL.js","./VRow-D2ArqUC2.css","./VPagination-D-juuf4L.js","./VPagination-BF2MZmld.css","./VTextarea-BxmmuONa.js","./VTextarea-_xVwaw_z.css","./ChatWidget-DT8kwi-O.css","./HomeworkEditDialog-Dv5JY-LA.js","./VAlert-DO0N7oM6.js","./VAlert-D_OX1cfW.css","./HomeworkEditDialog-BYeU7sR3.css","./InitServiceChooser-DtTLjkZp.js","./VExpansionPanels-qZkn9NEQ.js","./VExpansionPanels-kEj4ZJQK.css","./InitServiceChooser-CJilcHuq.css","./StudentNameManager-CFOrSEro.js","./VAutocomplete-CrWVUMTj.js","./VSelect-Fp4MUhJW.js","./VCheckboxBtn-DOw5vjpY.js","./VSwitch-DKh_Uq_M.js","./VSwitch-Bk42mIwg.css","./VSelect-DHZViySU.css","./VAutocomplete-Ygy_KjMW.css","./VCombobox-B2hcOM7z.js","./VCombobox-r6cc1Iy_.css","./StudentNameManager-tn0RQdqM.css","./UrgentTestDialog-Dh8F1GGI.js","./VContainer-RtoBp6rB.js","./VContainer-B1KSavhG.css","./VForm-zpXHQBRK.js","./VCheckbox-iNdH9PmZ.js","./VCheckbox-ZL-u1kGB.css","./UrgentTestDialog-BdqUELUV.css","./AttendanceSidebar-DelMot9Y.js","./AttendanceManagementDialog-CAjW2NDL.js","./AttendanceManagementDialog-B_Clb251.css","./PwaInstallCard-uU1hg_zK.js","./ExamScheduleCard-DihA5J10.js","./VTabs-D8mV99Hb.js","./VTabsWindowItem-CU31Uty7.js","./VTabsWindowItem-BmdOdR5s.css","./VTabs-566n5b08.css","./ExamScheduleCard-B03q7hf4.css","./ExamConfigEditor-wXpc4eEz.js","./VSkeletonLoader-AysIn-20.js","./VSkeletonLoader-C11ZEozu.css","./ExamConfigEditor-DV8lOLSp.css"])))=>i.map(i=>d[i]); +import{_ as O,V as ce,c as R,d as _,e as C,S as H,w as ae,s as te,g as k,f as E,h as oe,i as p,j as _e,k as P,l as W,n as $,o as ue,p as he,q as z,r as N,t as I,v as K,x as me,y as Ee,z as B}from"./index-CFUCTEXJ.js";import{X as d,_ as g,j as o,N as M,S as h,a5 as Ie,a6 as Re,a7 as Ve,Y as y,Z as r,k as l,F as x,a2 as D,n as U,$ as b,a1 as f,P as Ne,R as Me,V as Oe,a8 as Ae,U as ie,e as Le,a3 as T,a9 as V}from"./vendor-vue-B2vxubPy.js";import{d as A,a as Pe,k as ze}from"./dataProvider-bUkzKSNt.js";import{a as X,g as fe}from"./vendor-utils-DDRLRfsI.js";import{p as je,d as Ue}from"./soundList-D9U-Grcp.js";import{V as Fe,a as Z}from"./VTabs-D8mV99Hb.js";import{V as Be,a as Q,b as He}from"./VTabsWindowItem-CU31Uty7.js";import{V as Ke}from"./VSwitch-DKh_Uq_M.js";import{V as j}from"./VChip-DR8Ljy6R.js";import{a0 as se}from"./vendor-vuetify-s-yw_Hr8.js";import{V as ge}from"./VContainer-RtoBp6rB.js";import{g as We,j as re,o as $e,a as le,l as Ye}from"./socketClient-CkosNYrb.js";import{c as Ge}from"./deviceEvents-BfEN8wCe.js";import{V as qe,a as Je}from"./VAppBarTitle-vVO0I21U.js";import{V as Xe,a as Ze}from"./VRow-Dw4j2TKL.js";import{V as Qe}from"./VAlert-DO0N7oM6.js";import{V as et}from"./VTooltip-CbK3h4lM.js";const tt={__name:"AsyncLoadingPlaceholder",props:{height:{type:String,default:"120px"}},setup(t){return(e,n)=>(d(),g("div",{class:"async-loading-placeholder d-flex justify-center align-center",style:M({minHeight:t.height})},[o(ce,{indeterminate:"",color:"primary",size:"28",width:"2"})],4))}},Y=O(tt,[["__scopeId","data-v-2d12e0c7"]]),st={name:"RelativeTimeDisplay",props:{time:{type:[String,Date,Number],required:!0}},computed:{displayTime(){if(!this.time)return"";const t=new Date(this.time),e=new Date,n=new Date(t.getFullYear(),t.getMonth(),t.getDate()),i=new Date(e.getFullYear(),e.getMonth(),e.getDate()),s=n.getTime()-i.getTime(),a=Math.round(s/(1e3*60*60*24));if(a===0)return"今天";if(a===1)return"明天";if(a===2)return"后天";if(a===-1)return"昨天";if(a===-2)return"前天";const c=i.getDay()||7,w=new Date(i);w.setDate(i.getDate()-c+1);const S=new Date(i);if(S.setDate(i.getDate()+(7-c)),n>=w&&n<=S)return["周日","周一","周二","周三","周四","周五","周六"][t.getDay()];const u=t.getMonth()+1,v=t.getDate();return`${u}月${v}日`}}};function nt(t,e,n,i,s,a){return d(),g("span",null,h(a.displayTime),1)}const pe=O(st,[["render",nt]]),ne=Ie("exam",{state:()=>({examList:[],exams:{},loadingList:!1,loadingDetails:{}}),actions:{async fetchExamList(){if(!this.loadingList){this.loadingList=!0;try{const t=await A.loadData("es_list");Array.isArray(t)?this.examList=t:this.examList=[]}catch(t){console.error("Failed to load exam list:",t)}finally{this.loadingList=!1}}},async fetchExam(t){if(this.exams[t])return this.exams[t];if(!this.loadingDetails[t]){this.loadingDetails[t]=!0;try{const e=await A.loadData(`es_${t}`);return e&&(this.exams[t]=e),e}catch(e){console.error(`Failed to load exam details for ${t}:`,e)}finally{this.loadingDetails[t]=!1}}},async getUpcomingExams(t=25){await this.fetchExamList();const e=[],n=new Date,i=new Date(n.getTime()+2*24*60*60*1e3),s=this.examList.slice(0,t);for(const a of s){let c=this.exams[a.id];c||(c=await this.fetchExam(a.id)),c&&c.examInfos&&Array.isArray(c.examInfos)&&c.examInfos.some(S=>{const u=new Date(S.start);return u>=n&&u<=i})&&e.push({id:a.id,...c})}return e}}}),at={name:"ConciseExamCard",components:{RelativeTimeDisplay:pe},props:{examId:{type:String,required:!0},contentStyle:{type:Object,default:()=>({})},readonly:{type:Boolean,default:!1}},computed:{...Ve(ne,["exams","loadingDetails"]),exam(){return this.exams[this.examId]},loading(){return this.loadingDetails[this.examId]},groupedExamInfos(){if(!this.exam||!this.exam.examInfos)return[];const t=[...this.exam.examInfos].sort((i,s)=>new Date(i.start)-new Date(s.start)),e=[];let n=null;return t.forEach(i=>{const a=new Date(i.start).toDateString();(!n||n.key!==a)&&(n={key:a,date:i.start,infos:[]},e.push(n)),n.infos.push(i)}),e}},mounted(){this.fetchExam(this.examId)},methods:{...Re(ne,["fetchExam"]),formatTimeOnly(t){if(!t)return"";try{const e=new Date(t),n=e.getHours().toString().padStart(2,"0"),i=e.getMinutes().toString().padStart(2,"0");return`${n}:${i}`}catch{return""}},isPast(t){return t?new Date(t)t.$emit("click"))},{default:r(()=>[o(R,{class:"d-flex align-center py-2 px-3 bg-primary-lighten-5 text-subtitle-1 font-weight-bold"},{default:r(()=>{var w;return[l("span",ot,h(((w=a.exam)==null?void 0:w.examName)||"加载中..."),1)]}),_:1}),o(_,{class:"flex-grow-1 pa-4 overflow-y-auto",style:M(n.contentStyle)},{default:r(()=>[a.loading?(d(),g("div",it,[o(ce,{indeterminate:"",size:"24",color:"primary"})])):a.exam?(d(),g("div",rt,[(d(!0),g(x,null,D(a.groupedExamInfos,(w,S)=>(d(),g("div",{key:S,class:"mb-3"},[l("div",lt,[o(c,{time:w.date},null,8,["time"])]),(d(!0),g(x,null,D(w.infos,(u,v)=>(d(),g("div",{key:v,class:U(["d-flex align-center justify-space-between py-1 border-b-sm",{"border-none":v===w.infos.length-1,"text-grey":a.isPast(u.end)}])},[l("div",dt,h(u.name),1),l("div",ct,h(a.formatTimeOnly(u.start))+" - "+h(a.formatTimeOnly(u.end)),1)],2))),128))]))),128))])):(d(),g("div",ut,"无法加载"))]),_:1},8,["style"])]),_:1})}const ye=O(at,[["render",ht],["__scopeId","data-v-33424f55"]]),mt=["6IO4","5Lmz","6JCd6I6J","5rer","5aW4"],ft=mt.map(t=>fe.decode(t)),de=.75,gt={name:"HitokotoCard",data(){return{enabled:!1,refreshInterval:60,kvConfig:{sources:["zhaoyu"],sensitiveWords:[]},sentence:"",author:"",origin:"",loading:!1,timer:null,unwatch:null,fontSize:28}},computed:{contentStyle(){return{"font-size":`${this.fontSize*de}px`,"white-space":"pre-wrap","line-height":"1.6","text-align":"left"}},authorStyle(){return{"font-size":`${this.fontSize*de*.6}px`,"text-align":"left"}}},async mounted(){this.loadLocalSettings(),await this.loadKvSettings(),this.fetchSentence(),this.startTimer(),this.unwatch=ae(()=>{this.loadLocalSettings(),this.startTimer()})},beforeUnmount(){this.stopTimer(),this.unwatch&&this.unwatch()},methods:{loadLocalSettings(){this.enabled=H.getSetting("hitokoto.enabled"),this.refreshInterval=H.getSetting("hitokoto.refreshInterval"),this.fontSize=H.getSetting("font.size")},async loadKvSettings(){try{const t=await A.loadData("sentence-info");let e=t;t&&t.data&&(e=t.data),e&&(this.kvConfig={sources:Array.isArray(e.sources)&&e.sources.length>0?e.sources:["zhaoyu"],sensitiveWords:e.sensitiveWords?e.sensitiveWords.split(/[,,]/).map(n=>n.trim()).filter(n=>n):[],jinrishiciToken:e.jinrishiciToken})}catch(t){console.error("Failed to load sentence-info",t)}},startTimer(){this.timer&&clearInterval(this.timer),this.refreshInterval>0&&(this.timer=setInterval(this.fetchSentence,this.refreshInterval*1e3))},stopTimer(){this.timer&&clearInterval(this.timer)},async fetchSentence(){if(!this.loading){this.loading=!0;try{const t=this.kvConfig.sources,e=t[Math.floor(Math.random()*t.length)];let n=null,i="",s="",a="";if(e==="hitokoto")n=(await X.get("https://v1.hitokoto.cn/")).data,i=n.hitokoto,s=n.from_who,a=n.from;else if(e==="zhaoyu"){const c=await X.get("https://hub.saintic.com/openservice/sentence/all.json");c.data.success&&(n=c.data.data,i=n.sentence||n.content||n.name,s=n.author,a=n.name||n.origin)}else if(e==="jinrishici")if(this.kvConfig.jinrishiciToken){const c=await X.get("https://v2.jinrishici.com/one.json?client=npm-sdk/1.0&X-User-Token="+encodeURIComponent(this.kvConfig.jinrishiciToken),{});c.data.status==="success"&&(n=c.data.data,i=n.content,s=n.origin.author,a=n.origin.title)}else return console.warn("Jinrishici token missing. Please enable it in settings to generate a token."),this.loading=!1,this.fetchSentence();if(i){if([...ft,...this.kvConfig.sensitiveWords].some(S=>S&&i.includes(S)))return this.loading=!1,this.fetchSentence();this.sentence=i,this.author=s||"",this.origin=a||"未知"}}catch(t){console.error("Failed to fetch sentence",t),this.sentence="获取失败",this.author="",this.origin=""}finally{this.loading=!1}}}}},pt={key:0,class:"mr-2"},yt={key:1};function wt(t,e,n,i,s,a){return d(),y(C,{class:"hitokoto-card",elevation:"2",border:"",rounded:"xl",loading:s.loading,height:"100%",onClick:a.fetchSentence},{default:r(()=>[o(_,{class:"pa-6 d-flex flex-column justify-center",style:{height:"100%"}},{default:r(()=>[l("div",{class:"font-weight-medium mb-4 serif-font",style:M(a.contentStyle)},h(s.sentence),5),l("div",{class:"text-medium-emphasis serif-font",style:M(a.authorStyle)},[s.author?(d(),g("span",pt,h(s.author),1)):b("",!0),s.origin?(d(),g("span",yt,"《"+h(s.origin)+"》",1)):b("",!0)],4)]),_:1})]),_:1},8,["loading","onClick"])}const we=O(gt,[["render",wt],["__scopeId","data-v-de957b7d"]]),kt=2,vt=.9,St=.6,bt={name:"TimeCard",data(){return{now:new Date,timer:null,unwatch:null,fontSize:28,showFullscreen:!1,showSettings:!1,timeCardEnabled:!0,fullscreenMode:"clock",toolbarVisible:!0,toolbarTimer:null,countdownHours:0,countdownMinutes:5,countdownSeconds:0,countdownRunning:!1,countdownRemaining:0,countdownTotal:0,countdownTimer:null,countdownLastTick:null,countdownPresets:[{label:"1 分钟",h:0,m:1,s:0},{label:"3 分钟",h:0,m:3,s:0},{label:"5 分钟",h:0,m:5,s:0},{label:"10 分钟",h:0,m:10,s:0},{label:"15 分钟",h:0,m:15,s:0},{label:"30 分钟",h:0,m:30,s:0},{label:"1 小时",h:1,m:0,s:0}],stopwatchRunning:!1,stopwatchElapsed:0,stopwatchTimer:null,stopwatchLastTick:null,laps:[],lastLapElapsed:0}},computed:{timeString(){const t=String(this.now.getHours()).padStart(2,"0"),e=String(this.now.getMinutes()).padStart(2,"0");return`${t}:${e}`},secondsString(){return`:${String(this.now.getSeconds()).padStart(2,"0")}`},dateString(){const t=this.now.getFullYear(),e=this.now.getMonth()+1,n=this.now.getDate();return`${t}年${e}月${n}日`},weekdayString(){return["星期日","星期一","星期二","星期三","星期四","星期五","星期六"][this.now.getDay()]},periodOfDay(){const t=this.now.getHours();return t<6?"凌晨":t<8?"早晨":t<11?"上午":t<13?"中午":t<17?"下午":t<19?"傍晚":t<22?"晚上":"深夜"},dayProgressPercent(){const t=this.now.getHours(),e=this.now.getMinutes(),n=this.now.getSeconds();return((t*3600+e*60+n)/86400*100).toFixed(1)},dayOfYear(){const t=new Date(this.now.getFullYear(),0,0),e=this.now-t,n=1e3*60*60*24;return Math.floor(e/n)},weekOfYear(){const t=new Date(Date.UTC(this.now.getFullYear(),this.now.getMonth(),this.now.getDate())),e=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-e);const n=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t-n)/864e5+1)/7)},daysLeftInYear(){const e=new Date(this.now.getFullYear(),11,31)-this.now;return Math.ceil(e/(1e3*60*60*24))},timeStyle(){return{"font-size":`${this.fontSize*kt}px`,"font-weight":"700","line-height":"1","letter-spacing":"4px","font-variant-numeric":"tabular-nums"}},secondsStyle(){return{"font-size":`${this.fontSize*vt}px`,"font-variant-numeric":"tabular-nums","vertical-align":"baseline","margin-left":"4px",opacity:"0.6"}},dateStyle(){return{"font-size":`${this.fontSize*St}px`,"letter-spacing":"1px"}},countdownTotalSetSeconds(){return this.countdownHours*3600+this.countdownMinutes*60+this.countdownSeconds},countdownDisplay(){const t=Math.max(0,Math.ceil(this.countdownRemaining/1e3)),e=Math.floor(t/3600),n=Math.floor(t%3600/60),i=t%60;return e>0?`${String(e).padStart(2,"0")}:${String(n).padStart(2,"0")}:${String(i).padStart(2,"0")}`:`${String(n).padStart(2,"0")}:${String(i).padStart(2,"0")}`},countdownProgressPercent(){return this.countdownTotal<=0?0:(this.countdownTotal-this.countdownRemaining)/this.countdownTotal*100},stopwatchDisplay(){const t=this.stopwatchElapsed,e=Math.floor(t/1e3),n=Math.floor(e/3600),i=Math.floor(e%3600/60),s=e%60,a=Math.floor(t%1e3/10);return n>0?`${String(n).padStart(2,"0")}:${String(i).padStart(2,"0")}:${String(s).padStart(2,"0")}.${String(a).padStart(2,"0")}`:`${String(i).padStart(2,"0")}:${String(s).padStart(2,"0")}.${String(a).padStart(2,"0")}`}},watch:{showFullscreen(t){t?(this.handleKeydown=e=>{e.key==="Escape"&&(this.showSettings?this.showSettings=!1:this.showFullscreen=!1,e.preventDefault(),e.stopPropagation())},window.addEventListener("keydown",this.handleKeydown,!0),this.showToolbar()):(this.handleKeydown&&(window.removeEventListener("keydown",this.handleKeydown,!0),this.handleKeydown=null),this.clearToolbarTimer())}},mounted(){this.loadSettings(),this.startTimer(),this.unwatch=ae(()=>{this.loadSettings()})},beforeUnmount(){this.stopTimer(),this.clearCountdownTimer(),this.clearStopwatchTimer(),this.clearToolbarTimer(),this.unwatch&&this.unwatch(),this.handleKeydown&&window.removeEventListener("keydown",this.handleKeydown,!0)},methods:{loadSettings(){this.fontSize=H.getSetting("font.size"),this.timeCardEnabled=k("timeCard.enabled")},setTimeCardEnabled(t){this.timeCardEnabled=t,te("timeCard.enabled",t)},startTimer(){this.timer=setInterval(()=>{this.now=new Date},1e3)},stopTimer(){this.timer&&(clearInterval(this.timer),this.timer=null)},showToolbar(){this.toolbarVisible=!0,this.clearToolbarTimer(),this.toolbarTimer=setTimeout(()=>{this.toolbarVisible=!1},3e3)},clearToolbarTimer(){this.toolbarTimer&&(clearTimeout(this.toolbarTimer),this.toolbarTimer=null)},applyCountdownPreset(t){this.countdownHours=t.h,this.countdownMinutes=t.m,this.countdownSeconds=t.s},startCountdown(){const t=this.countdownTotalSetSeconds*1e3;t<=0||(this.countdownTotal=t,this.countdownRemaining=t,this.countdownRunning=!0,this.countdownLastTick=Date.now(),this.countdownTimer=setInterval(()=>{this.tickCountdown()},50))},tickCountdown(){const t=Date.now(),e=t-this.countdownLastTick;this.countdownLastTick=t,this.countdownRemaining=Math.max(0,this.countdownRemaining-e),this.countdownRemaining<=0&&(this.countdownRunning=!1,this.clearCountdownTimer(),je(Ue))},toggleCountdown(){this.countdownRunning?(this.countdownRunning=!1,this.clearCountdownTimer()):(this.countdownRunning=!0,this.countdownLastTick=Date.now(),this.countdownTimer=setInterval(()=>{this.tickCountdown()},50))},resetCountdown(){this.countdownRunning=!1,this.countdownRemaining=0,this.countdownTotal=0,this.clearCountdownTimer()},clearCountdownTimer(){this.countdownTimer&&(clearInterval(this.countdownTimer),this.countdownTimer=null)},toggleStopwatch(){this.stopwatchRunning?(this.stopwatchRunning=!1,this.clearStopwatchTimer()):(this.stopwatchRunning=!0,this.stopwatchLastTick=Date.now(),this.stopwatchTimer=setInterval(()=>{this.tickStopwatch()},30))},tickStopwatch(){const t=Date.now();this.stopwatchElapsed+=t-this.stopwatchLastTick,this.stopwatchLastTick=t},addLap(){const t=this.stopwatchElapsed-this.lastLapElapsed;this.laps.unshift({split:t,total:this.stopwatchElapsed}),this.lastLapElapsed=this.stopwatchElapsed},resetStopwatch(){this.stopwatchRunning=!1,this.stopwatchElapsed=0,this.lastLapElapsed=0,this.laps=[],this.clearStopwatchTimer()},clearStopwatchTimer(){this.stopwatchTimer&&(clearInterval(this.stopwatchTimer),this.stopwatchTimer=null)},formatMs(t){const e=Math.floor(t/1e3),n=Math.floor(e/60),i=e%60,s=Math.floor(t%1e3/10);return`${String(n).padStart(2,"0")}:${String(i).padStart(2,"0")}.${String(s).padStart(2,"0")}`}}},xt={class:"fullscreen-toolbar"},Dt={class:"fullscreen-time-body flex-grow-1 d-flex flex-column align-center justify-center"},Ct={class:"d-flex flex-column align-center justify-center"},Tt={class:"fullscreen-time-display"},_t={class:"fullscreen-seconds"},Et={class:"fullscreen-date-line mt-6"},It={class:"fullscreen-progress mt-10"},Rt={class:"text-caption text-medium-emphasis mb-1"},Vt={class:"fullscreen-extra mt-8 text-medium-emphasis d-flex ga-8"},Nt={class:"text-center"},Mt={class:"text-h6 font-weight-bold"},Ot={class:"text-center"},At={class:"text-h6 font-weight-bold"},Lt={class:"text-center"},Pt={class:"text-h6 font-weight-bold"},zt={class:"d-flex flex-column align-center justify-center"},jt={class:"countdown-setup d-flex align-center ga-4"},Ut={class:"text-center"},Ft={class:"countdown-digit"},Bt={class:"text-center"},Ht={class:"countdown-digit"},Kt={class:"text-center"},Wt={class:"countdown-digit"},$t={class:"mt-8 d-flex ga-3 flex-wrap justify-center"},Yt={class:"mt-8"},Gt={class:"fullscreen-date-line mt-4 text-medium-emphasis"},qt={class:"mt-8 d-flex ga-3"},Jt={class:"d-flex flex-column align-center justify-center"},Xt={class:"fullscreen-time-display"},Zt={class:"fullscreen-date-line mt-4 text-medium-emphasis"},Qt={class:"mt-8 d-flex ga-3"},es={key:0,class:"stopwatch-laps mt-6"},ts={class:"fullscreen-actions"};function ss(t,e,n,i,s,a){return d(),g(x,null,[o(C,{class:"time-card",elevation:"2",border:"",rounded:"xl",height:"100%",style:{cursor:"pointer"},onClick:e[0]||(e[0]=c=>s.showFullscreen=!0)},{default:r(()=>[o(_,{class:"pa-6 d-flex flex-column",style:{height:"100%"}},{default:r(()=>[l("div",{class:"time-display",style:M(a.timeStyle)},[f(h(a.timeString),1),l("span",{class:"seconds-text",style:M(a.secondsStyle)},h(a.secondsString),5)],4),l("div",{class:"date-line mt-3",style:M(a.dateStyle)},h(a.dateString)+" "+h(a.weekdayString)+" "+h(a.periodOfDay),5)]),_:1})]),_:1}),o(P,{modelValue:s.showFullscreen,"onUpdate:modelValue":e[11]||(e[11]=c=>s.showFullscreen=c),fullscreen:"",scrim:!1,transition:"dialog-bottom-transition"},{default:r(()=>[o(C,{class:"fullscreen-time-card d-flex flex-column",onMousemove:a.showToolbar,onTouchstart:a.showToolbar},{default:r(()=>[o(Ne,{name:"toolbar-fade"},{default:r(()=>[Me(l("div",xt,[o(Fe,{modelValue:s.fullscreenMode,"onUpdate:modelValue":e[1]||(e[1]=c=>s.fullscreenMode=c),density:"comfortable",color:"primary","align-tabs":"center",class:"fullscreen-tabs"},{default:r(()=>[o(Z,{value:"clock"},{default:r(()=>[o(E,{start:"",icon:"mdi-clock-outline"}),e[14]||(e[14]=f(" 时钟 ",-1))]),_:1}),o(Z,{value:"countdown"},{default:r(()=>[o(E,{start:"",icon:"mdi-timer-sand"}),e[15]||(e[15]=f(" 倒计时 ",-1))]),_:1}),o(Z,{value:"stopwatch"},{default:r(()=>[o(E,{start:"",icon:"mdi-timer-outline"}),e[16]||(e[16]=f(" 秒表 ",-1))]),_:1})]),_:1},8,["modelValue"])],512),[[Oe,s.toolbarVisible]])]),_:1}),l("div",Dt,[o(Be,{modelValue:s.fullscreenMode,"onUpdate:modelValue":e[8]||(e[8]=c=>s.fullscreenMode=c),class:"fullscreen-tabs-window"},{default:r(()=>[o(Q,{value:"clock"},{default:r(()=>[l("div",Ct,[l("div",Tt,[f(h(a.timeString),1),l("span",_t,h(a.secondsString),1)]),l("div",Et,h(a.dateString)+" "+h(a.weekdayString)+" "+h(a.periodOfDay),1),l("div",It,[l("div",Rt," 今日已过 "+h(a.dayProgressPercent)+"% ",1),o(oe,{"model-value":a.dayProgressPercent,color:"primary",height:"6",rounded:"",style:{"max-width":"400px",width:"80vw"}},null,8,["model-value"])]),l("div",Vt,[l("div",Nt,[l("div",Mt,h(a.dayOfYear),1),e[17]||(e[17]=l("div",{class:"text-caption"}," 今年第几天 ",-1))]),l("div",Ot,[l("div",At,h(a.weekOfYear),1),e[18]||(e[18]=l("div",{class:"text-caption"}," 今年第几周 ",-1))]),l("div",Lt,[l("div",Pt,h(a.daysLeftInYear),1),e[19]||(e[19]=l("div",{class:"text-caption"}," 距离新年 ",-1))])])])]),_:1}),o(Q,{value:"countdown"},{default:r(()=>[l("div",zt,[!s.countdownRunning&&s.countdownRemaining<=0?(d(),g(x,{key:0},[l("div",jt,[l("div",Ut,[o(p,{icon:"mdi-chevron-up",variant:"text",size:"small",onClick:e[2]||(e[2]=c=>s.countdownHours=Math.min(s.countdownHours+1,99))}),l("div",Ft,h(String(s.countdownHours).padStart(2,"0")),1),o(p,{icon:"mdi-chevron-down",variant:"text",size:"small",onClick:e[3]||(e[3]=c=>s.countdownHours=Math.max(s.countdownHours-1,0))}),e[20]||(e[20]=l("div",{class:"text-caption text-medium-emphasis"}," 时 ",-1))]),e[23]||(e[23]=l("div",{class:"countdown-sep"}," : ",-1)),l("div",Bt,[o(p,{icon:"mdi-chevron-up",variant:"text",size:"small",onClick:e[4]||(e[4]=c=>s.countdownMinutes=Math.min(s.countdownMinutes+1,59))}),l("div",Ht,h(String(s.countdownMinutes).padStart(2,"0")),1),o(p,{icon:"mdi-chevron-down",variant:"text",size:"small",onClick:e[5]||(e[5]=c=>s.countdownMinutes=Math.max(s.countdownMinutes-1,0))}),e[21]||(e[21]=l("div",{class:"text-caption text-medium-emphasis"}," 分 ",-1))]),e[24]||(e[24]=l("div",{class:"countdown-sep"}," : ",-1)),l("div",Kt,[o(p,{icon:"mdi-chevron-up",variant:"text",size:"small",onClick:e[6]||(e[6]=c=>s.countdownSeconds=Math.min(s.countdownSeconds+1,59))}),l("div",Wt,h(String(s.countdownSeconds).padStart(2,"0")),1),o(p,{icon:"mdi-chevron-down",variant:"text",size:"small",onClick:e[7]||(e[7]=c=>s.countdownSeconds=Math.max(s.countdownSeconds-1,0))}),e[22]||(e[22]=l("div",{class:"text-caption text-medium-emphasis"}," 秒 ",-1))])]),l("div",$t,[(d(!0),g(x,null,D(s.countdownPresets,c=>(d(),y(p,{key:c.label,variant:"tonal",rounded:"xl",onClick:w=>a.applyCountdownPreset(c)},{default:r(()=>[f(h(c.label),1)]),_:2},1032,["onClick"]))),128))]),l("div",Yt,[o(p,{color:"primary",size:"x-large",rounded:"xl",disabled:a.countdownTotalSetSeconds<=0,"prepend-icon":"mdi-play",onClick:a.startCountdown},{default:r(()=>[...e[25]||(e[25]=[f(" 开始 ",-1)])]),_:1},8,["disabled","onClick"])])],64)):(d(),g(x,{key:1},[l("div",{class:U(["fullscreen-time-display",{"countdown-ended":s.countdownRemaining<=0&&!s.countdownRunning}])},h(a.countdownDisplay),3),l("div",Gt,h(s.countdownRunning?"倒计时进行中":s.countdownRemaining<=0?"时间到!":"已暂停"),1),o(oe,{"model-value":a.countdownProgressPercent,color:s.countdownRemaining<=0?"error":"primary",class:"mt-8",height:"6",rounded:"",style:{"max-width":"400px",width:"80vw"}},null,8,["model-value","color"]),l("div",qt,[s.countdownRemaining>0?(d(),y(p,{key:0,icon:s.countdownRunning?"mdi-pause":"mdi-play",color:s.countdownRunning?"warning":"primary",size:"x-large",variant:"tonal",onClick:a.toggleCountdown},null,8,["icon","color","onClick"])):b("",!0),o(p,{icon:"mdi-stop",color:"error",size:"x-large",variant:"tonal",onClick:a.resetCountdown},null,8,["onClick"])])],64))])]),_:1}),o(Q,{value:"stopwatch"},{default:r(()=>[l("div",Jt,[l("div",Xt,h(a.stopwatchDisplay),1),l("div",Zt,h(s.stopwatchRunning?"计时中":s.stopwatchElapsed>0?"已暂停":"秒表"),1),l("div",Qt,[o(p,{icon:s.stopwatchRunning?"mdi-pause":"mdi-play",color:s.stopwatchRunning?"warning":"primary",size:"x-large",variant:"tonal",onClick:a.toggleStopwatch},null,8,["icon","color","onClick"]),s.stopwatchRunning?(d(),y(p,{key:0,icon:"mdi-flag",color:"info",size:"x-large",variant:"tonal",onClick:a.addLap},null,8,["onClick"])):b("",!0),!s.stopwatchRunning&&s.stopwatchElapsed>0?(d(),y(p,{key:1,icon:"mdi-stop",color:"error",size:"x-large",variant:"tonal",onClick:a.resetStopwatch},null,8,["onClick"])):b("",!0)]),o(_e,null,{default:r(()=>[s.laps.length>0?(d(),g("div",es,[o(He,{density:"compact",class:"stopwatch-laps-table"},{default:r(()=>[e[26]||(e[26]=l("thead",null,[l("tr",null,[l("th",null," # "),l("th",null," 计次 "),l("th",null," 总计 ")])],-1)),l("tbody",null,[(d(!0),g(x,null,D(s.laps,(c,w)=>(d(),g("tr",{key:w},[l("td",null,h(s.laps.length-w),1),l("td",null,h(a.formatMs(c.split)),1),l("td",null,h(a.formatMs(c.total)),1)]))),128))])]),_:1})])):b("",!0)]),_:1})])]),_:1})]),_:1},8,["modelValue"])]),l("div",ts,[o(p,{icon:"mdi-cog",variant:"text",size:"large",onClick:e[9]||(e[9]=Ae(c=>s.showSettings=!0,["stop"]))}),o(p,{icon:"mdi-close",variant:"text",size:"large",class:"ml-2",onClick:e[10]||(e[10]=c=>s.showFullscreen=!1)})])]),_:1},8,["onMousemove","onTouchstart"])]),_:1},8,["modelValue"]),o(P,{modelValue:s.showSettings,"onUpdate:modelValue":e[13]||(e[13]=c=>s.showSettings=c),"max-width":"420",scrim:!0},{default:r(()=>[o(C,{rounded:"xl"},{default:r(()=>[o(R,{class:"d-flex align-center"},{default:r(()=>[o(E,{class:"mr-2",icon:"mdi-cog"}),e[27]||(e[27]=f(" 时间卡片设置 ",-1))]),_:1}),o(_,null,{default:r(()=>[o(W,null,{default:r(()=>[o($,null,{prepend:r(()=>[o(E,{class:"mr-3",icon:"mdi-clock-outline"})]),append:r(()=>[o(Ke,{"model-value":s.timeCardEnabled,"hide-details":"",density:"comfortable","onUpdate:modelValue":a.setTimeCardEnabled},null,8,["model-value","onUpdate:modelValue"])]),default:r(()=>[o(ue,null,{default:r(()=>[...e[28]||(e[28]=[f("显示时间卡片",-1)])]),_:1}),o(he,null,{default:r(()=>[...e[29]||(e[29]=[f("在首页显示时间卡片,刷新后生效。",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),o(z,null,{default:r(()=>[o(N),o(p,{variant:"text",onClick:e[12]||(e[12]=c=>s.showSettings=!1)},{default:r(()=>[...e[30]||(e[30]=[f(" 完成 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])],64)}const ke=O(bt,[["render",ss],["__scopeId","data-v-9443751e"]]),ns={name:"HomeworkGrid",computed:{settings(){return settings}},components:{HitokotoCard:we,TimeCard:ke,ConciseExamCard:ye},props:{sortedItems:{type:Array,required:!0},unusedSubjects:{type:Array,required:!0},emptySubjectDisplay:{type:String,default:"button"},isMobile:{type:Boolean,default:!1},isEditingDisabled:{type:Boolean,default:!1},contentStyle:{type:Object,default:()=>({})},highlightedCards:{type:Object,default:()=>({})}},emits:["open-dialog","open-attendance","disabled-click"],data(){return{isReadOnlyToken:!1}},async mounted(){this.resizeObserver=new ResizeObserver(()=>{this.resizeAllGridItems()}),this.$refs.gridContainer&&this.resizeObserver.observe(this.$refs.gridContainer),this.$nextTick(()=>{this.resizeAllGridItems(),this.$refs.items&&this.$refs.items.forEach(t=>{t.firstElementChild&&this.resizeObserver.observe(t.firstElementChild)})}),await this.checkReadOnlyStatus()},updated(){this.$nextTick(()=>{this.resizeAllGridItems(),this.$refs.items&&this.$refs.items.forEach(t=>{t.firstElementChild&&this.resizeObserver.observe(t.firstElementChild)})})},beforeUnmount(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{getSetting:k,async checkReadOnlyStatus(){try{let t=null;if(this.$parent&&this.$parent.$refs&&this.$parent.$refs.studentNameManager?t=this.$parent.$refs.studentNameManager:this.$root&&this.$root.$refs&&this.$root.$refs.studentNameManager&&(t=this.$root.$refs.studentNameManager),t&&typeof t.isReadOnly<"u")this.isReadOnlyToken=t.isReadOnly;else{const{getSetting:e}=await I(async()=>{const{getSetting:i}=await import("./index-CFUCTEXJ.js").then(s=>s.aI);return{getSetting:i}},__vite__mapDeps([0,1,2,3]),import.meta.url),n=e("server.kvToken");if(n){const{default:i}=await I(async()=>{const{default:a}=await import("./dataProvider-bUkzKSNt.js").then(c=>c.c);return{default:a}},__vite__mapDeps([4,5,0,1,2,3,6]),import.meta.url),s=e("server.domain");if(s)try{const a=await i.get(`${s}/kv/_token`,{headers:{Authorization:`Bearer ${n}`}});a.data&&typeof a.data.isReadOnly<"u"&&(this.isReadOnlyToken=a.data.isReadOnly)}catch(a){console.error("获取Token信息失败:",a)}}}}catch(t){console.error("检查只读状态失败:",t)}},resizeGridItem(t){const e=this.$refs.gridContainer;if(!e)return;const n=parseInt(window.getComputedStyle(e).getPropertyValue("grid-auto-rows")),i=parseInt(window.getComputedStyle(e).getPropertyValue("gap")),s=t.firstElementChild;if(!s)return;const a=s.getBoundingClientRect().height,c=Math.ceil((a+i)/(n+i));t.style.gridRowEnd=`span ${c}`},resizeAllGridItems(){const t=this.$refs.items;t&&t.forEach(e=>this.resizeGridItem(e))},handleCardClick(t,e){if(this.isEditingDisabled){this.$emit("disabled-click");return}t==="attendance"?this.$emit("open-attendance"):t==="dialog"&&this.$emit("open-dialog",e)},splitPoint(t){return t.split(` +`).filter(e=>e.trim())},handleMouseMove(t){const e=t.currentTarget,n=e.getBoundingClientRect(),i=(t.clientX-n.left)/n.width*100,s=(t.clientY-n.top)/n.height*100;e.style.setProperty("--x",`${i}%`),e.style.setProperty("--y",`${s}%`)},handleTouchMove(t){if(t.touches.length===1){const e=t.touches[0],n=t.currentTarget,i=n.getBoundingClientRect(),s=(e.clientX-i.left)/i.width*100,a=(e.clientY-i.top)/i.height*100;n.style.setProperty("--x",`${s}%`),n.style.setProperty("--y",`${a}%`)}}}},as={ref:"gridContainer",class:"grid-masonry"},os=["data-key"],is={key:0,style:{height:"100%"}},rs={key:1,style:{height:"100%"}},ls={key:2,style:{height:"100%"}},ds={class:"d-flex justify-space-between align-center mb-2"},cs={class:"text-h6"},us={key:0,class:"mb-2"},hs={class:"text-error text-caption mb-1"},ms={class:"d-flex flex-wrap",style:{gap:"4px"}},fs={key:1,class:"mb-2"},gs={class:"text-warning text-caption mb-1"},ps={class:"d-flex flex-wrap",style:{gap:"4px"}},ys={key:2,class:"mb-2"},ws={class:"text-grey text-caption mb-1"},ks={class:"d-flex flex-wrap",style:{gap:"4px"}},vs={key:3,class:"text-success text-center mt-2"},Ss={class:"empty-subjects mt-4"},bs={key:0,class:"d-flex flex-wrap justify-center"},xs={key:2,class:"empty-subjects-grid"};function Ds(t,e,n,i,s,a){const c=ke,w=we,S=ye;return d(),g(x,null,[l("div",as,[o(ie,{name:"grid"},{default:r(()=>[(d(!0),g(x,null,D(n.sortedItems,u=>(d(),g("div",{key:u.key,ref_for:!0,ref:"items","data-key":u.key,style:M({order:u.order}),class:"grid-item"},[u.type==="time"?(d(),g("div",is,[o(c)])):u.type==="hitokoto"?(d(),g("div",rs,[o(w)])):u.type==="exam"?(d(),g("div",ls,[o(S,{"exam-id":u.data.examId,"content-style":n.contentStyle,onClick:v=>t.$emit("open-exam-detail",u.data.examId)},null,8,["exam-id","content-style","onClick"])])):u.type==="attendance"?(d(),y(C,{key:3,class:U([{"glow-highlight":n.highlightedCards[u.key],"cursor-not-allowed":n.isEditingDisabled,"cursor-pointer":!n.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:e[0]||(e[0]=v=>a.handleCardClick("attendance",null)),onMousemove:a.handleMouseMove,onTouchmove:a.handleTouchMove},{default:r(()=>[o(R,{class:"d-flex align-center"},{default:r(()=>[o(E,{class:"mr-2",color:"primary",icon:"mdi-account-group"}),e[1]||(e[1]=f(" 出勤统计 ",-1))]),_:1}),o(_,null,{default:r(()=>[l("div",ds,[e[2]||(e[2]=l("span",null,"应到/实到",-1)),l("span",cs,h(u.data.total-u.data.exclude.length)+"/"+h(u.data.total-u.data.absent.length-!a.getSetting("display.lateStudentsArePresent")*u.data.late.length-u.data.exclude.length),1)]),o(K,{class:"mb-2"}),u.data.absent.length>0?(d(),g("div",us,[l("div",hs,"请假 ("+h(u.data.absent.length)+")",1),l("div",ms,[(d(!0),g(x,null,D(u.data.absent,v=>(d(),y(j,{key:v,color:"error",size:"x-small",variant:"flat"},{default:r(()=>[f(h(v),1)]),_:2},1024))),128))])])):b("",!0),u.data.late.length>0?(d(),g("div",fs,[l("div",gs,"迟到 ("+h(u.data.late.length)+")",1),l("div",ps,[(d(!0),g(x,null,D(u.data.late,v=>(d(),y(j,{key:v,color:"warning",size:"x-small",variant:"flat"},{default:r(()=>[f(h(v),1)]),_:2},1024))),128))])])):b("",!0),u.data.exclude.length>0?(d(),g("div",ys,[l("div",ws,"不参与 ("+h(u.data.exclude.length)+")",1),l("div",ks,[(d(!0),g(x,null,D(u.data.exclude,v=>(d(),y(j,{key:v,color:"grey",size:"x-small",variant:"flat"},{default:r(()=>[f(h(v),1)]),_:2},1024))),128))])])):b("",!0),u.data.absent.length===0&&u.data.late.length===0&&u.data.exclude.length===0?(d(),g("div",vs," 全勤 ")):b("",!0)]),_:2},1024)]),_:2},1032,["class","onMousemove","onTouchmove"])):u.type==="custom"?(d(),y(C,{key:4,class:U([{"glow-highlight":n.highlightedCards[u.key],"cursor-not-allowed":n.isEditingDisabled,"cursor-pointer":!n.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:v=>a.handleCardClick("dialog",u.key),onMousemove:a.handleMouseMove,onTouchmove:a.handleTouchMove},{default:r(()=>[o(R,{class:"text-primary"},{default:r(()=>[o(E,{class:"mr-2",icon:"mdi-card-text-outline",size:"small"}),f(" "+h(u.name),1)]),_:2},1024),o(_,{style:M(n.contentStyle)},{default:r(()=>[f(h(u.content),1)]),_:2},1032,["style"])]),_:2},1032,["class","onClick","onMousemove","onTouchmove"])):(d(),y(C,{key:5,class:U([{"glow-highlight":n.highlightedCards[u.key],"cursor-not-allowed":n.isEditingDisabled,"cursor-pointer":!n.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:v=>a.handleCardClick("dialog",u.key),onMousemove:a.handleMouseMove,onTouchmove:a.handleTouchMove},{default:r(()=>[o(R,null,{default:r(()=>[f(h(u.name),1)]),_:2},1024),o(_,{style:M(n.contentStyle)},{default:r(()=>[o(W,null,{default:r(()=>[(d(!0),g(x,null,D(a.splitPoint(u.content),v=>(d(),y($,{key:v},{default:r(()=>[f(h(v),1)]),_:2},1024))),128))]),_:2},1024)]),_:2},1032,["style"])]),_:2},1032,["class","onClick","onMousemove","onTouchmove"]))],12,os))),128))]),_:1})],512),l("div",Ss,[n.isMobile?(d(),g("div",bs,[(d(!0),g(x,null,D(n.unusedSubjects,u=>(d(),y(j,{key:u.name,class:"ma-1",color:"primary",variant:"tonal",onClick:v=>a.handleCardClick("dialog",u.name)},{default:r(()=>[o(E,{start:"",size:"small"},{default:r(()=>[f(h(s.isReadOnlyToken?"mdi-cancel":"mdi-plus"),1)]),_:1}),f(" "+h(u.name),1)]),_:2},1032,["onClick"]))),128))])):n.emptySubjectDisplay==="button"?(d(),y(me,{key:1,divided:"",variant:"tonal"},{default:r(()=>[(d(!0),g(x,null,D(n.unusedSubjects,u=>(d(),y(p,{key:u.name,onClick:v=>a.handleCardClick("dialog",u.name)},{default:r(()=>[o(E,{start:""},{default:r(()=>[f(h(s.isReadOnlyToken?"mdi-cancel":"mdi-plus"),1)]),_:1}),f(" "+h(u.name),1)]),_:2},1032,["onClick"]))),128))]),_:1})):(d(),g("div",xs,[o(ie,{name:"v-list"},{default:r(()=>[(d(!0),g(x,null,D(n.unusedSubjects,u=>(d(),y(C,{key:u.name,border:"",class:"empty-subject-card",onClick:v=>a.handleCardClick("dialog",u.name)},{default:r(()=>[o(R,{class:"text-subtitle-1"},{default:r(()=>[f(h(u.name),1)]),_:2},1024),o(_,{class:"text-center"},{default:r(()=>[s.isReadOnlyToken?(d(),g(x,{key:0},[o(E,{color:"grey",size:"small"},{default:r(()=>[...e[3]||(e[3]=[f(" mdi-cancel ",-1)])]),_:1}),e[4]||(e[4]=l("div",{class:"text-caption text-grey"}," 当日无作业 ",-1))],64)):(d(),g(x,{key:1},[o(E,{color:"grey",size:"small"},{default:r(()=>[...e[5]||(e[5]=[f(" mdi-plus ",-1)])]),_:1}),e[6]||(e[6]=l("div",{class:"text-caption text-grey"}," 点击添加作业 ",-1))],64))]),_:1})]),_:2},1032,["onClick"]))),128))]),_:1})]))])],64)}const Cs=O(ns,[["render",Ds],["__scopeId","data-v-5f84fa28"]]),Ts={name:"HomeActions",props:{synced:Boolean,loadingUpload:Boolean,showRandomPickerButton:Boolean,showExamScheduleButton:Boolean,showListCardButton:Boolean,showFullscreenButton:Boolean,isFullscreen:Boolean,showAntiScreenBurnCard:Boolean,showTestCardButton:Boolean},emits:["upload","show-sync-message","open-random-picker","toggle-fullscreen","add-test-card"]},_s={class:"d-flex flex-wrap align-center mt-4"};function Es(t,e,n,i,s,a){return d(),g(x,null,[l("div",_s,[n.synced?(d(),y(p,{key:1,color:"success",size:"large",onClick:e[1]||(e[1]=c=>t.$emit("show-sync-message"))},{default:r(()=>[...e[9]||(e[9]=[f(" 同步完成 ",-1)])]),_:1})):(d(),y(p,{key:0,loading:n.loadingUpload,class:"ml-2",color:"error",size:"large",onClick:e[0]||(e[0]=c=>t.$emit("upload"))},{default:r(()=>[...e[8]||(e[8]=[f(" 上传 ",-1)])]),_:1},8,["loading"])),n.showRandomPickerButton?(d(),y(p,{key:2,"append-icon":"mdi-dice-multiple",class:"ml-2",color:"amber","prepend-icon":"mdi-account-question",size:"large",onClick:e[2]||(e[2]=c=>t.$emit("open-random-picker"))},{default:r(()=>[...e[10]||(e[10]=[f(" 随机点名 ",-1)])]),_:1})):b("",!0),n.showExamScheduleButton?(d(),y(me,{key:3,class:"ml-2",color:"green",variant:"elevated",divided:""},{default:r(()=>[o(p,{"prepend-icon":"mdi-calendar-check",size:"large",onClick:e[3]||(e[3]=c=>t.$router.push("/examschedule"))},{default:r(()=>[...e[11]||(e[11]=[f(" 考试看板 ",-1)])]),_:1}),o(p,{icon:"mdi-plus",size:"large",onClick:e[4]||(e[4]=c=>t.$emit("add-exam-card"))})]),_:1})):b("",!0),n.showListCardButton?(d(),y(p,{key:4,class:"ml-2",color:"primary-darken-1","prepend-icon":"mdi-list-box",size:"large",onClick:e[5]||(e[5]=c=>t.$router.push("/list"))},{default:r(()=>[...e[12]||(e[12]=[f(" 列表 ",-1)])]),_:1})):b("",!0),n.showFullscreenButton?(d(),y(p,{key:5,color:n.isFullscreen?"blue-grey":"blue","prepend-icon":n.isFullscreen?"mdi-fullscreen-exit":"mdi-fullscreen",class:"ml-2",size:"large",onClick:e[6]||(e[6]=c=>t.$emit("toggle-fullscreen"))},{default:r(()=>[f(h(n.isFullscreen?"退出全屏":"全屏显示"),1)]),_:1},8,["color","prepend-icon"])):b("",!0),n.showTestCardButton?(d(),y(p,{key:6,class:"ml-2",color:"purple","prepend-icon":"mdi-test-tube",size:"large",onClick:e[7]||(e[7]=c=>t.$emit("add-test-card"))},{default:r(()=>[...e[13]||(e[13]=[f(" 添加测试卡片 ",-1)])]),_:1})):b("",!0)]),n.showAntiScreenBurnCard?(d(),y(C,{key:0,border:"",class:"mt-4 anti-burn-card",color:"primary",variant:"tonal"},{default:r(()=>[o(R,{class:"text-subtitle-1"},{default:r(()=>[o(E,{icon:"mdi-shield-check",size:"small",start:""}),e[14]||(e[14]=f(" 屏幕保护技术已启用 ",-1))]),_:1}),o(_,{class:"text-body-2"},{default:r(()=>[...e[15]||(e[15]=[l("p",null," 为防止OLED/LCD屏幕烧屏,界面元素会定期微调位置。 ",-1),l("p",{class:"text-caption text-grey"}," 此功能不会影响正常使用,仅在长时间静止显示时生效。 ",-1),l("p",{class:"text-caption text-grey"}," 建议在放学后关闭显示器以节约能源。 ",-1)])]),_:1})]),_:1})):b("",!0)],64)}const Is=O(Ts,[["render",Es]]),Rs={name:"FloatingICP"},Vs={"aria-label":"xICP备x号",class:"floating-icp-link",href:"https://beian.miit.gov.cn/",rel:"noopener noreferrer",target:"_blank",style:{display:"none"}};function Ns(t,e,n,i,s,a){return d(),g("a",Vs," xICP备x号 ")}const Ms=O(Rs,[["render",Ns],["__scopeId","data-v-fa73670f"]]),Os={class:"skeleton-grid"},As={__name:"HomeSkeleton",setup(t){const{mobile:e}=se(),n=Le(()=>e.value?3:6);return(i,s)=>(d(),y(ge,{class:"main-window",fluid:""},{default:r(()=>[l("div",Os,[(d(!0),g(x,null,D(n.value,a=>(d(),g("div",{key:a,class:"skeleton-card"},[...s[0]||(s[0]=[l("div",{class:"skeleton-heading skeleton-pulse"},null,-1),l("div",{class:"skeleton-line skeleton-pulse"},null,-1),l("div",{class:"skeleton-line skeleton-line--short skeleton-pulse"},null,-1)])]))),128))]),s[1]||(s[1]=l("div",{class:"d-flex justify-center mt-6 ga-3"},[l("div",{class:"skeleton-btn skeleton-pulse"}),l("div",{class:"skeleton-btn skeleton-pulse"})],-1))]),_:1}))}},Ls=O(As,[["__scopeId","data-v-ea69d8df"]]);function ee(t,e){let n=null;return function(...i){n&&clearTimeout(n),n=setTimeout(()=>{t.apply(this,i)},e)}}function Ps(t,e){let n=null,i=0;return function(...s){const a=Date.now();a-i{i=a,t.apply(this,s)},e)):(i=a,t.apply(this,s))}}const zs=V({loader:()=>I(()=>import("./MessageLog-BB5IiJ1u.js").then(t=>t.M),__vite__mapDeps([7,0,1,2,3,8,9,10]),import.meta.url),loadingComponent:Y,delay:200}),js=V({loader:()=>I(()=>import("./RandomPicker-BFIrnEvt.js"),__vite__mapDeps([11,0,1,2,3,12,13,14,15,16,17,18,19,20,21]),import.meta.url),delay:0}),Us=V({loader:()=>I(()=>import("./FloatingToolbar-Bt36S1fG.js"),__vite__mapDeps([22,0,1,2,3,23,24,25,26,27,28,29]),import.meta.url),delay:200}),Fs=V({loader:()=>I(()=>import("./ChatWidget-C2TaIq_w.js").then(t=>t.C),__vite__mapDeps([30,31,32,0,1,2,3,6,33,19,20,34,26,27,17,18,35,36,37,38,39,13,14,15,16,40,41]),import.meta.url),delay:0}),Bs=V({loader:()=>I(()=>import("./HomeworkEditDialog-Dv5JY-LA.js"),__vite__mapDeps([42,4,5,0,1,2,3,6,39,13,14,15,16,40,19,20,43,44,45]),import.meta.url),delay:0}),Hs=V({loader:()=>I(()=>import("./InitServiceChooser-DtTLjkZp.js"),__vite__mapDeps([46,0,1,2,3,4,5,6,12,13,14,15,16,43,44,39,40,19,20,47,48,35,36,49]),import.meta.url),loadingComponent:Y,delay:200}),Ks=V({loader:()=>I(()=>import("./StudentNameManager-CFOrSEro.js"),__vite__mapDeps([50,0,1,2,3,4,5,6,51,14,15,52,12,13,16,23,24,53,54,55,19,20,56,57,58,59,43,44,60]),import.meta.url),delay:200}),Ws=V({loader:()=>I(()=>import("./UrgentTestDialog-Dh8F1GGI.js"),__vite__mapDeps([61,30,31,32,0,1,2,3,6,33,19,20,34,26,27,17,18,35,36,37,38,39,13,14,15,16,40,41,4,5,8,9,62,63,64,54,55,65,53,66,67]),import.meta.url),delay:0}),$s=V({loader:()=>I(()=>import("./AttendanceSidebar-DelMot9Y.js"),__vite__mapDeps([68,0,1,2,3,35,36,60]),import.meta.url),loadingComponent:Y,delay:200}),Ys=V({loader:()=>I(()=>import("./AttendanceManagementDialog-CAjW2NDL.js"),__vite__mapDeps([69,0,1,2,3,19,20,35,36,12,13,14,15,16,70]),import.meta.url),delay:0}),Gs=V({loader:()=>I(()=>import("./PwaInstallCard-uU1hg_zK.js"),__vite__mapDeps([71,2,0,1,3,19,20]),import.meta.url),delay:200}),qs=V({loader:()=>I(()=>import("./ExamScheduleCard-DihA5J10.js"),__vite__mapDeps([72,2,0,1,3,43,44,4,5,6,33,73,74,75,19,20,76,54,14,15,55,62,63,31,32,34,8,9,35,36,17,18,77]),import.meta.url),loadingComponent:Y,delay:200}),Js=V({loader:()=>I(()=>import("./ExamConfigEditor-wXpc4eEz.js"),__vite__mapDeps([78,4,5,0,1,2,3,6,43,44,79,80,17,18,19,20,35,36,12,13,14,15,16,39,40,54,55,51,52,23,24,53,56,57,25,26,27,28,81]),import.meta.url),delay:0}),Xs={name:"Classworks 作业板",components:{MessageLog:zs,RandomPicker:js,FloatingToolbar:Us,FloatingICP:Ms,HomeworkEditDialog:Bs,InitServiceChooser:Hs,ChatWidget:Fs,StudentNameManager:Ks,UrgentTestDialog:Ws,AttendanceSidebar:$s,AttendanceManagementDialog:Ys,HomeworkGrid:Cs,HomeActions:Is,PwaInstallCard:Gs,ExamScheduleCard:qs,ExamConfigEditor:Js,HomeSkeleton:Ls},setup(){const{mobile:t}=se(),e=ne();return{mobile:t,examStore:e}},data(){const t=[{name:"语文",order:0},{name:"数学",order:1},{name:"英语",order:2},{name:"物理",order:3},{name:"化学",order:4},{name:"生物",order:5},{name:"政治",order:6},{name:"历史",order:7},{name:"地理",order:8},{name:"其他",order:9}];return{showAddExamDialog:!1,showExamDetailDialog:!1,selectedExamId:null,upcomingExams:[],dataKey:"",provider:"",useDisplay:se,state:{classNumber:"",namespaceInfo:null,deviceName:"",studentList:[],boardData:{homework:{},attendance:{absent:[],late:[],exclude:[]}},dialogVisible:!1,dialogTitle:"",textarea:"",dateString:"",synced:!1,attendDialogVisible:!1,contentStyle:{"font-size":`${k("font.size")}px`},uploadLoading:!1,downloadLoading:!1,snackbar:!1,snackbarText:"",fontSize:k("font.size"),datePickerDialog:!1,selectedDate:new Date().toISOString().split("T")[0].replace(/-/g,""),selectedDateObj:new Date,refreshInterval:null,showNoDataMessage:!1,noDataMessage:"",isToday:!1,attendanceDialog:!1,availableSubjects:t,isFullscreen:!1},loading:{download:!1,upload:!1,students:!1,copyToToday:!1},dataReady:!1,debouncedUpload:null,debouncedAttendanceSave:null,throttledReflow:null,sortedItemsCache:{key:"",value:[]},confirmDialog:{show:!1,resolve:null,reject:null},urlConfigDialog:{show:!1,config:null,changes:[],validSettings:{},confirmHandler:null,cancelHandler:null,icons:{}},settingsTick:0,isChatOpen:!1,highlightedCards:{},tokenDisplayInfo:{show:!1,readonly:!1,text:"",color:"primary",variant:"tonal",icon:"mdi-account",disabled:!1},realtimeInfo:{show:!1,time:"",key:""},$offKvChanged:null,$offConnect:null,debouncedRealtimeRefresh:null,preconfigData:{namespace:null,authCode:null,autoOpen:!1,autoExecute:!1},urgentTestDialog:!1,tokenInfo:null,persistentNotifications:[],notificationDetailDialog:!1,currentNotification:null}},computed:{isMobile(){return k("display.forceDesktopMode")?!1:this.mobile},titleText(){var S,u,v;const t=k("server.provider"),e=t==="kv-server"||t==="classworkscloud";let n;e&&this.state.namespaceInfo?n=((S=this.state.namespaceInfo)==null?void 0:S.name)||((v=(u=this.state.namespaceInfo)==null?void 0:u.device)==null?void 0:v.name)||this.state.classNumber||"高三八班":n=this.state.classNumber||"高三八班";const i=this.getToday(),s=new Date(i);s.setDate(s.getDate()-1);const a=this.state.dateString,c=this.formatDate(i),w=this.formatDate(s);return a===c?n+" - 今天的作业":a===w?n+" - 昨天的作业":`${n} - ${a}的作业`},sortedItems(){const t=[];this.isMobile&&t.push({key:"attendance-card",name:"出勤统计",type:"attendance",data:{total:this.state.studentList.length,absent:this.state.boardData.attendance.absent,late:this.state.boardData.attendance.late,exclude:this.state.boardData.attendance.exclude}});for(const e in this.state.boardData.homework)if(e.startsWith("exam-")){const n=this.state.boardData.homework[e];t.push({key:e,name:"考试安排",type:"exam",data:{examId:n.examId},order:-100,rowSpan:200})}for(const e of this.state.availableSubjects){const n=e.name,i=this.state.boardData.homework[n];if(i&&i.content){const a=100+i.content.split(` +`).filter(c=>c.trim()).length*24;t.push({key:n,name:n,type:"homework",content:i.content,order:e.order,rowSpan:a})}}k("timeCard.enabled")&&t.push({key:"time-card",name:"时间",type:"time",order:9997,rowSpan:150}),k("hitokoto.enabled")&&t.push({key:"hitokoto-card",name:"一言",type:"hitokoto",order:9998,rowSpan:150});for(const e in this.state.boardData.homework)if(e.startsWith("custom-")){const n=this.state.boardData.homework[e],s=100+n.content.split(` +`).filter(a=>a.trim()).length*24;t.push({key:e,name:n.name,type:"custom",content:n.content,order:9999,rowSpan:s})}return t.sort((e,n)=>e.order-n.order),t},unusedSubjects(){const t=Object.keys(this.state.boardData.homework).filter(e=>{var n;return(n=this.state.boardData.homework[e].content)==null?void 0:n.trim()});return this.state.availableSubjects.filter(e=>!t.includes(e.name)).sort((e,n)=>e.order-n.order)},emptySubjects(){return this.emptySubjectDisplay!=="button"?[]:this.unusedSubjects},autoSave(){return k("edit.autoSave")},blockNonTodayAutoSave(){return k("edit.blockNonTodayAutoSave")},isToday(){const t=(()=>{const e=new Date,n=e.getFullYear(),i=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${n}${i}${s}`})();return this.state.dateString===t},canAutoSave(){return this.autoSave&&(!this.blockNonTodayAutoSave||this.isToday)},needConfirmSave(){return!this.isToday&&this.confirmNonTodaySave},shouldShowBlockedMessage(){return!this.isToday&&this.autoSave&&this.blockNonTodayAutoSave},refreshBeforeEdit(){return k("edit.refreshBeforeEdit")},emptySubjectDisplay(){return k("display.emptySubjectDisplay")},dynamicSort(){return k("display.dynamicSort")},isEditingDisabled(){if(this.state.uploadLoading||this.state.downloadLoading)return!0;const t=this.$refs.studentNameManager;return!!(t!=null&&t.isReadOnly||!this.canEditCurrentDate)},unreadCount(){var t;return((t=this.$refs.messageLog)==null?void 0:t.unreadCount)||0},showRandomPickerButton(){return k("randomPicker.enabled")},showListCardButton(){return k("display.showListCard")},confirmNonTodaySave(){return k("edit.confirmNonTodaySave")},blockPastDataEdit(){return k("edit.blockPastDataEdit")},shouldShowSaveConfirm(){return!this.isToday&&this.confirmNonTodaySave},shouldBlockAutoSave(){return!this.isToday&&this.autoSave&&this.blockNonTodayAutoSave},canEditCurrentDate(){return this.isToday?!0:!this.blockPastDataEdit},isEditingPastData(){return!this.isToday},showFullscreenButton(){return k("display.showFullscreenButton")},showExamScheduleButton(){return k("display.showExamScheduleButton")},showAntiScreenBurnCard(){return k("display.showAntiScreenBurnCard")},showTestCardButton(){return k("developer.enabled")},shouldShowInit(){var s;const t=k("server.provider"),e=t==="kv-server"||t==="classworkscloud",n=k("server.kvToken"),i=((s=this.$route)==null?void 0:s.path)==="/";return this.settingsTick,i&&e&&(!n||n==="")},hasExamCard(){for(const t in this.state.boardData.homework)if(t.startsWith("exam-"))return!0;return!1},shouldShowUrgentTestButton(){const t=k("server.provider");return!(t==="kv-server"||t==="classworkscloud")||!k("server.kvToken")||!this.tokenInfo?!1:this.tokenInfo.deviceType==="teacher"||this.tokenInfo.deviceType==="classroom"},subjectOrder(){return[...this.state.availableSubjects].sort((t,e)=>t.order-e.order).map(t=>t.name)}},watch:{homeworkData:{handler(){this.$nextTick(()=>{this.$refs.waterfall&&this.$refs.waterfall.reflow()})},deep:!0},"$vuetify.display.width":{handler(){this.throttledReflow()},deep:!0},"state.attendanceDialog":{handler(t){this.handleAttendanceDialogClose(t)}}},created(){this.debouncedUpload=ee(this.uploadData,2e3),this.debouncedAttendanceSave=ee(async()=>{this.autoSave&&await this.trySave(!0)},2e3),this.throttledReflow=Ps(()=>{this.$refs.gridContainer&&this.optimizeGridLayout(this.sortedItems)},200)},async mounted(){try{this.updateBackendUrl(),await this.initializeData(),this.dataReady=!0,await this.loadDeviceInfo(),this.setupAutoRefresh(),this.unwatchSettings=ae(()=>{this.updateSettings()}),this.$nextTick(()=>{const t=this.$refs.studentNameManager;t&&(this.studentNameInfo.name=t.currentStudentName||t.currentTeacherName||"",this.studentNameInfo.isStudent=t.isStudentToken,this.studentNameInfo.isTeacher=t.isTeacherToken,this.studentNameInfo.openDialog=()=>t.openDialog(),this.$watch(()=>t.currentStudentName,e=>{this.studentNameInfo.name=e,this.updateTokenDisplayInfo()}),this.$watch(()=>t.currentTeacherName,e=>{t.isTeacherToken&&(this.studentNameInfo.name=e,this.updateTokenDisplayInfo())}),this.$watch(()=>t.isStudentToken,e=>{this.studentNameInfo.isStudent=e,this.updateTokenDisplayInfo()}),this.$watch(()=>t.isTeacherToken,e=>{this.studentNameInfo.isTeacher=e,this.updateTokenDisplayInfo()}))}),document.addEventListener("fullscreenchange",this.fullscreenChangeHandler),document.addEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("MSFullscreenChange",this.fullscreenChangeHandler),this.checkHashForRandomPicker(),window.addEventListener("hashchange",this.checkHashForRandomPicker),this.setupRealtimeChannel(),this.$nextTick(()=>{this.updateTokenDisplayInfo()}),await this.loadTokenInfo(),this.loadPersistentNotifications()}catch(t){console.error("初始化失败:",t),this.showError("初始化失败,请刷新页面重试")}},beforeUnmount(){this.unwatchSettings&&this.unwatchSettings(),this.state.refreshInterval&&clearInterval(this.state.refreshInterval),document.removeEventListener("fullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("MSFullscreenChange",this.fullscreenChangeHandler),window.removeEventListener("hashchange",this.checkHashForRandomPicker);try{this.$offKvChanged&&typeof this.$offKvChanged=="function"&&(this.$offKvChanged(),this.$offKvChanged=null),this.$offDeviceEvent&&typeof this.$offDeviceEvent=="function"&&(this.$offDeviceEvent(),this.$offDeviceEvent=null),this.$offConnect&&typeof this.$offConnect=="function"&&(this.$offConnect(),this.$offConnect=null),Ye()}catch(t){console.warn("主页面事件清理失败:",t)}},methods:{async loadDeviceInfo(){var t;try{const e=k("server.provider");if(!(e==="kv-server"||e==="classworkscloud"))return;const i=await ze.loadNamespaceInfo();if(i&&i.success===!1)return;this.state.namespaceInfo=i||null,this.state.deviceName=((t=i==null?void 0:i.account)==null?void 0:t.deviceName)||""}catch(e){console.warn("加载设备信息失败:",e)}},async loadTokenInfo(){try{const t=k("server.provider");if(!(t==="kv-server"||t==="classworkscloud"))return;const n=k("server.kvToken");if(!n)return;const i=k("server.domain");if(!i)return;const s=await Pe.get(`${i}/kv/_token`,{headers:{Authorization:`Bearer ${n}`}});this.tokenInfo=s.data,console.log("Token info loaded:",this.tokenInfo)}catch(t){console.warn("Failed to load token info:",t),this.tokenInfo=null}},updateTokenDisplayInfo(){const t=this.$refs.studentNameManager;if(!t||!t.hasToken){this.tokenDisplayInfo.show=!1,this.tokenDisplayInfo.readonly=!1;return}const e=t.displayName,n=t.isReadOnly,i=t.isStudentToken,s=t.isTeacherToken;if(this.tokenDisplayInfo.readonly=n,!i&&!s){this.tokenDisplayInfo.show=!1;return}this.tokenDisplayInfo.text=e,this.tokenDisplayInfo.color="primary",this.tokenDisplayInfo.icon=s?"mdi-school":"mdi-account",this.tokenDisplayInfo.disabled=n,this.tokenDisplayInfo.show=!0},handleTokenChipClick(){console.log("Token chip clicked");const t=this.$refs.studentNameManager;console.log("Manager:",t),console.log("Is student token:",t==null?void 0:t.isStudentToken),console.log("Is teacher token:",t==null?void 0:t.isTeacherToken),t&&(t.isStudentToken||t.isTeacherToken)?(console.log("Opening dialog..."),t.openDialog()):console.log("Cannot open dialog - conditions not met")},ensureDate(t){if(t instanceof Date)return t;if(typeof t=="string"){const e=new Date(t);if(!isNaN(e.getTime()))return e}return new Date},formatDate(t){const e=this.ensureDate(t),n=e.getFullYear(),i=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${n}${i}${s}`},formatTime(t){return t?new Date(t).toLocaleString():""},getToday(){return new Date},async initializeData(){this.parsePreconfigData();const t=await this.parseUrlConfig(),n=new URLSearchParams(window.location.search).get("date"),i=this.getToday();let s=i;if(n){if(/^\d{8}$/.test(n)){const a=n.substring(0,4),c=n.substring(4,6),w=n.substring(6,8);s=new Date(`${a}-${c}-${w}`)}else s=new Date(n);isNaN(s.getTime())&&(s=i)}if(this.state.dateString=this.formatDate(s),this.state.selectedDate=this.state.dateString,this.state.selectedDateObj=s,this.state.isToday=this.formatDate(s)===this.formatDate(i),!t){this.provider=k("server.provider");const a=k("server.classNumber");this.state.classNumber=a}await Promise.all([this.downloadData(),this.loadConfig()]),await this.examStore.fetchExamList();for(const a of this.examStore.examList)this.examStore.fetchExam(a.id);this.checkUpcomingExams()},async checkUpcomingExams(){this.upcomingExams=await this.examStore.getUpcomingExams()},loadExamCards(){},saveExamCards(){},addExamCard(t,e=!1,n=!1){const i=`exam-${t}`;!e&&this.state.boardData.homework[i]?delete this.state.boardData.homework[i]:this.state.boardData.homework[i]={type:"exam",examId:t,name:"考试安排",content:""},this.state.synced=!1,n||this.trySave(!0)},openExamDetail(t){this.selectedExamId=t,this.showExamDetailDialog=!0},removeCurrentExamCard(){this.selectedExamId&&(this.addExamCard(this.selectedExamId),this.showExamDetailDialog=!1)},async onExamConfigSaved(){this.selectedExamId&&(delete this.examStore.exams[this.selectedExamId],await this.examStore.fetchExam(this.selectedExamId),this.$message.success("保存成功","考试配置已更新"))},onExamConfigDeleted(){this.removeCurrentExamCard(),this.$message.success("删除成功","考试配置已删除")},isExamCardAdded(t){return!!this.state.boardData.homework[`exam-${t}`]},removeExamCard(t){},addAllUpcomingExams(){let t=0;for(const e of this.upcomingExams)this.isExamCardAdded(e.id)||(this.addExamCard(e.id,!0,!0),t++);t>0?(this.trySave(!0),this.$message.success("添加成功",`已添加 ${t} 个考试安排`)):this.$message.info("提示","所有考试已添加")},async downloadData(t=!1){var e,n,i;if(!this.loading.download)try{this.loading.download=!0;const s=await A.loadData("classworks-data-"+this.state.dateString);if(s.success==!1)if(s.error.code==="NOT_FOUND")this.state.showNoDataMessage=!0,this.state.noDataMessage=s.error.message,(t||!this.state.boardData||!this.state.boardData.homework&&!this.state.boardData.attendance)&&(this.state.boardData={homework:{},attendance:{absent:[],late:[],exclude:[]}});else throw new Error(s.error.message);else this.state.boardData={homework:s.homework||{},attendance:{absent:((e=s.attendance)==null?void 0:e.absent)||[],late:((n=s.attendance)==null?void 0:n.late)||[],exclude:((i=s.attendance)==null?void 0:i.exclude)||[]}},this.state.synced=!0,this.state.showNoDataMessage=!1,this.$message.success("下载成功","数据已更新")}catch(s){console.error("数据加载失败:",s),this.$message.error("下载失败",s.message),(t||!this.state.boardData||!this.state.boardData.homework&&!this.state.boardData.attendance)&&(this.state.boardData={homework:{},attendance:{absent:[],late:[],exclude:[]}})}finally{this.loading.download=!1}},async trySave(t=!1){if(t&&!this.canAutoSave)return this.shouldShowBlockedMessage&&this.showMessage("需要手动保存","已禁止自动保存非当天数据","warning"),!1;if(!t&&this.needConfirmSave)try{await this.showConfirmDialog()}catch{return!1}try{return await this.uploadData(),!0}catch(e){return this.$message.error("保存失败",e.message||"请重试"),!1}},async handleClose(){var n;if(!this.currentEditSubject)return;const t=this.state.textarea.trim(),e=((n=this.state.boardData.homework[this.currentEditSubject])==null?void 0:n.content)||"";if(t!==e.trim()){if(!t&&this.currentEditSubject.startsWith("custom-")){delete this.state.boardData.homework[this.currentEditSubject],this.state.synced=!1,this.autoSave&&await this.trySave(!0),this.state.dialogVisible=!1;return}this.state.boardData.homework[this.currentEditSubject].type==="custom"?this.state.boardData.homework[this.currentEditSubject].content=t:this.state.boardData.homework[this.currentEditSubject]={content:t},this.state.synced=!1,this.autoSave&&await this.trySave(!0)}this.state.dialogVisible=!1},async uploadData(){if(!this.loading.upload)try{this.loading.upload=!0;const t=await A.saveData("classworks-data-"+this.state.dateString,this.state.boardData);if(t.success==!1)throw new Error(t.error.message);this.state.synced=!0,this.$message.success(t.message||"保存成功")}finally{this.loading.upload=!1}},async loadConfig(){try{try{const t=await A.loadData("classworks-list-main");t.success!=!1&&Array.isArray(t)&&(this.state.studentList=t.map(e=>e.name))}catch(t){console.warn("Failed to load student list from dedicated key, falling back to config",t)}await this.loadSubjects()}catch(t){console.error("加载配置失败:",t),this.$message.error("加载配置失败",t.message)}},async loadSubjects(){try{const t=await A.loadData("classworks-config-subject");t&&Array.isArray(t)&&(this.state.availableSubjects=t)}catch(t){console.warn("Failed to load subject configuration:",t)}},showSyncMessage(){this.$message.success("数据已同步","数据已完成与服务器同步")},async openDialog(t){var e;if(this.isEditingDisabled){const n=this.$refs.studentNameManager;n!=null&&n.isReadOnly?this.$message.warning("无法编辑","当前使用的是只读令牌"):this.canEditCurrentDate?this.$message.warning("无法编辑","数据加载中,请稍候"):this.$message.warning("无法编辑","已禁止编辑过往数据");return}if(t.startsWith("custom-")){this.currentEditSubject=t,this.state.dialogTitle=this.state.boardData.homework[t].name,this.state.textarea=this.state.boardData.homework[t].content,this.state.dialogVisible=!0;return}if(this.refreshBeforeEdit)try{await this.downloadData()}catch(n){console.error("刷新数据失败:",n),this.$message.error("刷新数据失败,可能显示的不是最新数据")}this.currentEditSubject=t,this.state.boardData.homework[t]||(this.state.boardData.homework[t]={content:""}),this.state.dialogTitle=((e=this.state.availableSubjects.find(n=>n.name===t))==null?void 0:e.name)||t,this.state.textarea=this.state.boardData.homework[t].content,this.state.dialogVisible=!0},async handleHomeworkSave(t){this.currentEditSubject&&(this.state.boardData.homework[this.currentEditSubject].type==="custom"?this.state.boardData.homework[this.currentEditSubject].content=t:this.state.boardData.homework[this.currentEditSubject]={content:t},this.state.synced=!1,this.autoSave&&await this.trySave(!0))},setAttendanceArea(){if(this.isEditingDisabled){this.handleDisabledClick();return}this.state.attendanceDialog=!0},handleDisabledClick(){const t=this.$refs.studentNameManager;t!=null&&t.isReadOnly?this.$message.warning("无法编辑","当前使用的是只读令牌"):this.canEditCurrentDate?this.$message.warning("无法编辑","数据加载中,请稍候"):this.$message.warning("无法编辑","已禁止编辑过往数据")},zoom(t){t==="up"&&this.state.fontSize<100?this.state.fontSize+=2:t==="out"&&this.state.fontSize>16&&(this.state.fontSize-=2),this.state.contentStyle={"font-size":`${this.state.fontSize}px`},te("font.size",this.state.fontSize)},updateBackendUrl(){const t=k("server.provider"),e=k("server.classNumber");this.provider=t,this.state.classNumber=e},setupAutoRefresh(){const t=k("refresh.auto"),e=k("refresh.interval");this.state.refreshInterval&&clearInterval(this.state.refreshInterval),t&&(this.state.refreshInterval=setInterval(()=>{this.shouldSkipRefresh()||(this.downloadData(),this.loadPersistentNotifications())},e*1e3))},shouldSkipRefresh(){return!!(this.state.dialogVisible||this.state.attendanceDialog||this.confirmDialog.show||this.state.datePickerDialog||this.loading.upload||this.loading.download||!this.state.synced)},updateSettings(){this.state.fontSize=k("font.size"),this.state.contentStyle={"font-size":`${this.state.fontSize}px`},this.setupAutoRefresh(),this.updateBackendUrl(),this.loadDeviceInfo(),this.loadTokenInfo(),this.settingsTick++},async handleDateSelect(t){if(t)try{const e=this.ensureDate(t),n=this.formatDate(e);if(n===this.state.dateString)return;this.state.dateString=n,this.state.selectedDate=n,this.state.selectedDateObj=e,this.state.isToday=n===this.formatDate(this.getToday()),await Promise.all([this.downloadData(!0),this.loadSubjects()])}catch(e){console.error("Date processing error:",e),this.$message.error("日期处理错误","请重新选择日期")}},setupRealtimeChannel(){try{const t=k("server.kvToken");if(!t){console.warn("未配置 KV Token,无法加入实时频道");return}We(),re(t),this.$offConnect=$e(()=>re(t)),this.debouncedRealtimeRefresh||(this.debouncedRealtimeRefresh=ee(async()=>{var u,v,F;const i=JSON.parse(JSON.stringify(this.state.boardData.homework));await this.downloadData();const s=new Date,a=String(s.getHours()).padStart(2,"0"),c=String(s.getMinutes()).padStart(2,"0"),w=String(s.getSeconds()).padStart(2,"0");(u=this.$message)==null||u.info("数据已更新",`已于 ${a}:${c}:${w} 自动刷新`);const S={};for(const L in this.state.boardData.homework){const G=((v=i[L])==null?void 0:v.content)||"",q=((F=this.state.boardData.homework[L])==null?void 0:F.content)||"";G!==q&&(S[L]=!0)}for(const L in i)this.state.boardData.homework[L]||(S[L]=!0);this.highlightedCards=S,setTimeout(()=>{this.highlightedCards={}},1e4)},800));const e=i=>{var a;if(!i)return;if(i.key==="notification-list"){this.loadPersistentNotifications();return}const s=`classworks-data-${this.state.dateString}`;i.key===s&&(i.action!=="upsert"&&i.action!=="delete"||(a=this.debouncedRealtimeRefresh)==null||a.call(this,i.key))},n=i=>{let s=i;i.content&&i.timestamp&&(s={uuid:i.senderId||"realtime",key:i.content.key,action:i.content.action,created:i.content.created,updatedAt:i.content.updatedAt||i.timestamp,deletedAt:i.content.deletedAt,batch:i.content.batch}),e(s)};this.$offKvChanged=le("kv-key-changed",n),this.deviceEventHandler=Ge({onKvChanged:e,enableLegacySupport:!0}),this.$offDeviceEvent=le("device-event",this.deviceEventHandler)}catch(t){console.warn("实时频道初始化失败",t)}},async saveAttendance(){try{await this.trySave(!0),this.state.attendanceDialog=!1}catch(t){console.error("保存出勤状态失败:",t),this.$message.error("保存失败","请重试")}},showMessage(t,e="",n="success"){this.$message[n](t,e)},updateSortedItemsCache(t,e){this._sortedItemsCache={key:t,value:e}},addTestCard(){const t=Date.now().toString();this.state.boardData.homework[`custom-${t}`]={name:"测试卡片",content:`这是一个测试卡片 +可以用来测试布局`,type:"custom"},this.state.synced=!1},showConfirmDialog(){return new Promise((t,e)=>{this.confirmDialog={show:!0,resolve:()=>{this.confirmDialog.show=!1,t()},reject:()=>{this.confirmDialog.show=!1,e(new Error("用户取消保存"))}}})},confirmSave(){this.confirmDialog.show=!1,this.confirmDialog.resolve&&this.confirmDialog.resolve(!0)},cancelSave(){this.confirmDialog.show=!1,this.confirmDialog.reject&&this.confirmDialog.reject(new Error("用户取消保存"))},async manualUpload(){return this.trySave(!1)},handleAttendanceChange(){this.state.synced=!1,this.debouncedAttendanceSave()},async handleAttendanceDialogClose(t){!t&&!this.state.synced&&await this.trySave(!0)},toggleFullscreen(){this.state.isFullscreen?this.exitFullscreen():this.enterFullscreen()},enterFullscreen(){const t=document.documentElement;t.requestFullscreen?t.requestFullscreen():t.webkitRequestFullScreen?t.webkitRequestFullScreen():t.mozRequestFullScreen?t.mozRequestFullScreen():t.msRequestFullscreen&&t.msRequestFullscreen()},exitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen()},fullscreenChangeHandler(){this.state.isFullscreen=!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)},openRandomPicker(){this.$refs.randomPicker&&this.$refs.randomPicker.open()},checkHashForRandomPicker(){window.location.hash==="#random-picker"&&this.$nextTick(()=>{console.log("打开随机点名"),window.location.hash="",this.openRandomPicker()})},parseUrlConfig(){try{const e=new URLSearchParams(window.location.search).get("config");if(!e)return!1;try{const n=atob(e),i=Uint8Array.from(n,u=>u.charCodeAt(0)),s=new TextDecoder().decode(i),a=JSON.parse(s);console.log("从URL读取配置:",a);const c=[],w={},S={};return this.processSpecialSettings(a,c,w),this.processStandardSettings(a,c,w,S),Object.keys(w).length===0?(console.log("URL配置与当前配置相同,无需应用"),!1):new Promise(u=>{this.urlConfigDialog={show:!0,config:a,changes:c,validSettings:w,icons:S,confirmHandler:()=>{this.urlConfigDialog.show=!1,this.applyUrlConfig(w),u(!0)},cancelHandler:()=>{this.urlConfigDialog.show=!1,u(!1)}}})}catch(n){return console.error("解析URL配置错误:",n),this.$message.error("URL配置错误","无法解析配置数据"),!1}}catch(t){return console.error("处理URL配置错误:",t),!1}},processSpecialSettings(t,e,n){var i,s;if(t.classNumber!==void 0){const a=k("server.classNumber");t.classNumber!==a&&(e.push({key:"server.classNumber",name:"班级",oldValue:a,newValue:t.classNumber,description:((i=B["server.classNumber"])==null?void 0:i.description)||"班级编号",icon:((s=B["server.classNumber"])==null?void 0:s.icon)||"mdi-account-group"}),n["server.classNumber"]=t.classNumber)}t.date!==void 0&&t.date!==this.state.dateString&&(e.push({key:"date",name:"日期",oldValue:this.state.dateString,newValue:t.date,description:"查看的日期",icon:"mdi-calendar"}),n.date=t.date),t.subjects&&Array.isArray(t.subjects)&&(e.push({key:"subjects",name:"科目列表",oldValue:`${this.state.availableSubjects.length}个科目`,newValue:`${t.subjects.length}个科目`,description:"可用科目列表",icon:"mdi-notebook"}),n.subjects=t.subjects)},processStandardSettings(t,e,n,i){Object.entries(t).forEach(([s,a])=>{if(["classNumber","date","subjects"].includes(s))return;let c=s,w=B[s];if(!w&&!s.includes(".")){const S=["server.","display.","theme.","edit.","refresh.","font.","randomPicker."];for(const u of S){const v=`${u}${s}`;if(B[v]){c=v,w=B[v];break}}}if(w){let S=this.convertValueToCorrectType(a,w.type);if(w.validate&&!w.validate(S)){console.warn(`URL配置项 ${c} 的值无效: ${a}`);return}const u=k(c);S!==u&&(e.push({key:c,name:this.getSettingDisplayName(c),oldValue:this.formatSettingValue(u),newValue:this.formatSettingValue(S),description:w.description||c,icon:w.icon||"mdi-cog"}),n[c]=S,i[c]=w.icon||"mdi-cog")}else e.push({key:s,name:this.getSettingDisplayName(s),oldValue:"未知",newValue:this.formatSettingValue(a),description:"自定义配置项",icon:"mdi-cog-outline"}),n[s]=a,i[s]="mdi-cog-outline"})},convertValueToCorrectType(t,e){return e==="boolean"?!!t:e==="number"?Number(t):String(t)},formatSettingValue(t){return typeof t=="boolean"?t?"开启":"关闭":t===""||t===null||t===void 0?"空":t.toString()},getSettingDisplayName(t){const e=t.split("."),n=e[e.length-1];return{provider:"数据提供方",domain:"服务器域名",classNumber:"班级编号",emptySubjectDisplay:"空科目显示方式",dynamicSort:"动态排序",showRandomButton:"随机按钮",showFullscreenButton:"全屏按钮",cardHoverEffect:"卡片悬浮效果",enhancedTouchMode:"增强触摸模式",showAntiScreenBurnCard:"防烧屏卡片",mode:"主题模式",size:"字体大小",autoSave:"自动保存",blockNonTodayAutoSave:"禁止自动保存非当日",refreshBeforeEdit:"编辑前刷新",confirmNonTodaySave:"非当日保存确认",auto:"自动刷新",interval:"刷新间隔"}[n]||n},safeBase64Decode(t){try{return fe.decode(t)}catch(e){throw console.error("Base64解码错误:",e),new Error("无法解码配置数据")}},applyUrlConfig(t){for(const[e,n]of Object.entries(t)){if(e==="date"){this.handleDateSelect(n);continue}if(e==="subjects"){this.state.availableSubjects=n;continue}te(e,n),e==="server.classNumber"&&(this.state.classNumber=n)}return this.updateBackendUrl(),this.$message.success("URL配置已应用","已从URL加载配置"),!0},navigateDay(t){const e=new Date(this.state.selectedDateObj);e.setDate(e.getDate()+t),this.handleDateSelect(e)},async copyHomeworkToToday(){if(!this.loading.copyToToday)try{this.loading.copyToToday=!0;const t=this.state.dateString,e=JSON.parse(JSON.stringify(this.state.boardData.homework)),n=this.getToday(),i=this.formatDate(n);this.state.dateString=i,await this.downloadData();const s={};for(const c in e)e[c]&&e[c].content&&(e[c].type==="custom"?s[c]=JSON.parse(JSON.stringify(e[c])):s[c]={content:e[c].content});this.state.boardData.homework=s,this.state.synced=!1,await this.uploadData(),this.state.selectedDate=i,this.state.selectedDateObj=n,this.state.isToday=!0;const a=new URL(window.location);a.searchParams.delete("date"),window.history.pushState({},"",a),this.$message.success("复制成功",`已将 ${t} 的作业内容复制到今天(已替换原有作业)`)}catch(t){console.error("复制作业失败:",t),this.$message.error("复制失败",t.message||"请重试")}finally{this.loading.copyToToday=!1}},parsePreconfigData(){try{const t=new URLSearchParams(window.location.search),e=t.get("namespace"),n=t.get("authCode")||t.get("auth_code"),i=t.get("autoExecute")||t.get("auto_execute");e&&(this.preconfigData.namespace=e,this.preconfigData.authCode=n,this.preconfigData.autoOpen=!0,this.preconfigData.autoExecute=this.parseBoolean(i),console.log("检测到预配数据:",{namespace:this.preconfigData.namespace,hasAuthCode:!!this.preconfigData.authCode,autoExecute:this.preconfigData.autoExecute}),this.cleanupUrlParams(["namespace","authCode","auth_code","autoExecute","auto_execute"]))}catch(t){console.error("解析预配数据失败:",t)}},parseBoolean(t){if(!t)return!1;const e=t.toLowerCase();return e==="true"||e==="1"||e==="yes"},cleanupUrlParams(t){try{const e=new URL(window.location);let n=!1;t.forEach(i=>{e.searchParams.has(i)&&(e.searchParams.delete(i),n=!0)}),n&&window.history.replaceState({},document.title,e.toString())}catch(e){console.error("清理URL参数失败:",e)}},async loadPersistentNotifications(){try{const t=await A.loadData("notification-list");t&&Array.isArray(t)?this.persistentNotifications=t:t&&t.success!==!1&&Array.isArray(t.data)?this.persistentNotifications=t.data:this.persistentNotifications=[]}catch(t){console.error("加载常驻通知失败",t)}},showNotificationDetail(t){this.currentNotification=t,this.notificationDetailDialog=!0},async removePersistentNotification(t){this.persistentNotifications=this.persistentNotifications.filter(n=>n.id!==t);const e=this.persistentNotifications.length>0?this.persistentNotifications:{};await A.saveData("notification-list",e),this.notificationDetailDialog=!1}}},Zs={key:3,class:"d-flex"},Qs={class:"text-h6 text-truncate font-weight-bold"},en={class:"text-h4 font-weight-medium mb-4",style:{"line-height":"1.5"}},tn={class:"text-subtitle-1 text-grey"},sn={class:"d-flex align-center flex-wrap"},nn={class:"text-subtitle-1"},an={class:"text-grey-darken-1"},on={class:"text-primary font-weight-medium"},rn={key:1,class:"text-center py-4 text-grey"};function ln(t,e,n,i,s,a){const c=T("init-service-chooser"),w=T("StudentNameManager"),S=T("HomeSkeleton"),u=T("homework-grid"),v=T("home-actions"),F=T("pwa-install-card"),L=T("attendance-sidebar"),G=T("homework-edit-dialog"),q=T("attendance-management-dialog"),ve=T("message-log"),Se=T("floating-toolbar"),be=T("FloatingICP"),xe=T("ChatWidget"),De=T("UrgentTestDialog"),Ce=T("random-picker"),Te=T("exam-config-editor");return d(),g(x,null,[o(Je,{class:"no-select"},{append:r(()=>[s.tokenDisplayInfo.readonly?(d(),y(j,{key:0,class:"mx-2",color:"warning","prepend-icon":"mdi-lock-alert",variant:"tonal"},{default:r(()=>[...e[29]||(e[29]=[f(" 只读 ",-1)])]),_:1})):b("",!0),s.tokenDisplayInfo.show?(d(),y(j,{key:1,style:M({cursor:s.tokenDisplayInfo.disabled?"default":"pointer"}),class:"mx-2",color:"primary","prepend-icon":"mdi-account",variant:"tonal",onClick:a.handleTokenChipClick},{default:r(()=>[f(h(s.tokenDisplayInfo.text),1)]),_:1},8,["style","onClick"])):b("",!0),a.shouldShowUrgentTestButton?(d(),y(p,{key:2,"prepend-icon":"mdi-chat",onClick:e[0]||(e[0]=m=>s.urgentTestDialog=!0),variant:"tonal"},{default:r(()=>[...e[30]||(e[30]=[f("发送通知",-1)])]),_:1})):b("",!0),o(p,{icon:"mdi-chat",variant:"text",onClick:e[1]||(e[1]=m=>s.isChatOpen=!0)}),o(p,{badge:a.unreadCount||void 0,"badge-color":a.unreadCount?"error":void 0,icon:"mdi-bell",variant:"text",onClick:e[2]||(e[2]=m=>t.$refs.messageLog.drawer=!0)},null,8,["badge","badge-color"]),o(p,{icon:"mdi-cog",variant:"text",onClick:e[3]||(e[3]=m=>t.$router.push("/settings"))})]),default:r(()=>[o(qe,null,{default:r(()=>[f(h(a.titleText),1)]),_:1}),o(N)]),_:1}),a.shouldShowInit?(d(),y(c,{key:0,preconfig:s.preconfigData,onDone:e[4]||(e[4]=m=>s.settingsTick++)},null,8,["preconfig"])):b("",!0),a.shouldShowInit?b("",!0):(d(),y(w,{key:1,ref:"studentNameManager",onTokenInfoUpdated:a.updateTokenDisplayInfo},null,8,["onTokenInfoUpdated"])),!a.shouldShowInit&&!s.dataReady?(d(),y(S,{key:2})):b("",!0),!a.shouldShowInit&&s.dataReady?(d(),g("div",Zs,[o(ge,{class:"main-window flex-grow-1 no-select bloom-container",fluid:""},{default:r(()=>[s.persistentNotifications.length>0?(d(),y(Xe,{key:0,class:"mb-4"},{default:r(()=>[o(Ze,{cols:"12"},{default:r(()=>[(d(!0),g(x,null,D(s.persistentNotifications,m=>(d(),y(C,{key:m.id,color:m.isUrgent?"error":"primary",class:"mb-2 cursor-pointer",variant:"tonal",onClick:J=>a.showNotificationDetail(m)},{default:r(()=>[o(_,{class:"d-flex align-center py-3"},{default:r(()=>[l("span",Qs,h(m.message),1),o(N),o(p,{icon:"mdi-chevron-right",variant:"text"})]),_:2},1024)]),_:2},1032,["color","onClick"]))),128))]),_:1})]),_:1})):b("",!0),o(P,{modelValue:s.notificationDetailDialog,"onUpdate:modelValue":e[8]||(e[8]=m=>s.notificationDetailDialog=m),"max-width":"700",scrollable:""},{default:r(()=>[s.currentNotification?(d(),y(C,{key:0,class:"rounded-xl"},{default:r(()=>[o(R,{class:"d-flex align-center pa-4 text-h5"},{default:r(()=>[l("span",{class:U([s.currentNotification.isUrgent?"text-error":"","font-weight-bold"])},h(s.currentNotification.isUrgent?"强调通知":"通知详情"),3),o(N),o(p,{icon:"mdi-close",variant:"text",onClick:e[5]||(e[5]=m=>s.notificationDetailDialog=!1)})]),_:1}),o(K),o(_,{class:"pa-6"},{default:r(()=>[l("div",en,h(s.currentNotification.message),1),l("div",tn," 发布时间:"+h(a.formatTime(s.currentNotification.timestamp)),1)]),_:1}),o(K),o(z,{class:"pa-4"},{default:r(()=>[o(p,{color:"error","prepend-icon":"mdi-delete",size:"x-large",variant:"tonal",class:"px-6",onClick:e[6]||(e[6]=m=>a.removePersistentNotification(s.currentNotification.id))},{default:r(()=>[...e[31]||(e[31]=[f(" 删除通知 ",-1)])]),_:1}),o(N),o(p,{color:"primary",size:"x-large",variant:"elevated",class:"px-8",onClick:e[7]||(e[7]=m=>s.notificationDetailDialog=!1)},{default:r(()=>[...e[32]||(e[32]=[f(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):b("",!0)]),_:1},8,["modelValue"]),o(u,{"sorted-items":a.sortedItems,"unused-subjects":a.unusedSubjects,"empty-subject-display":a.emptySubjectDisplay,"is-mobile":a.isMobile,"is-editing-disabled":a.isEditingDisabled,"content-style":s.state.contentStyle,"highlighted-cards":s.highlightedCards,onOpenDialog:a.openDialog,onOpenAttendance:a.setAttendanceArea,onDisabledClick:a.handleDisabledClick,onOpenExamDetail:a.openExamDetail},null,8,["sorted-items","unused-subjects","empty-subject-display","is-mobile","is-editing-disabled","content-style","highlighted-cards","onOpenDialog","onOpenAttendance","onDisabledClick","onOpenExamDetail"]),o(v,{synced:s.state.synced,"loading-upload":s.loading.upload,"show-random-picker-button":a.showRandomPickerButton,"show-exam-schedule-button":a.showExamScheduleButton,"show-list-card-button":a.showListCardButton,"show-fullscreen-button":a.showFullscreenButton,"is-fullscreen":s.state.isFullscreen,"show-anti-screen-burn-card":a.showAntiScreenBurnCard,"show-test-card-button":a.showTestCardButton,onUpload:a.manualUpload,onShowSyncMessage:a.showSyncMessage,onOpenRandomPicker:a.openRandomPicker,onToggleFullscreen:a.toggleFullscreen,onAddTestCard:a.addTestCard,onAddExamCard:e[9]||(e[9]=m=>s.showAddExamDialog=!0)},null,8,["synced","loading-upload","show-random-picker-button","show-exam-schedule-button","show-list-card-button","show-fullscreen-button","is-fullscreen","show-anti-screen-burn-card","show-test-card-button","onUpload","onShowSyncMessage","onOpenRandomPicker","onToggleFullscreen","onAddTestCard"]),o(F),s.upcomingExams.length>0&&!a.hasExamCard?(d(),y(Qe,{key:1,class:"mt-4",color:"info",variant:"tonal",closable:"",icon:"mdi-calendar-clock",title:"近期有考试安排"},{append:r(()=>[o(p,{color:"primary",variant:"text",onClick:a.addAllUpcomingExams},{default:r(()=>[...e[34]||(e[34]=[f(" 一键添加 ",-1)])]),_:1},8,["onClick"])]),default:r(()=>[l("div",sn,[e[33]||(e[33]=l("span",{class:"mr-2"},"检测到未来两天内有以下考试:",-1)),(d(!0),g(x,null,D(s.upcomingExams,m=>(d(),y(j,{key:m.id,size:"small",class:"mr-1 mb-1",color:"primary"},{default:r(()=>[f(h(m.examName),1)]),_:2},1024))),128))])]),_:1})):b("",!0)]),_:1}),a.isMobile?b("",!0):(d(),y(L,{key:0,"student-list":s.state.studentList,attendance:s.state.boardData.attendance,"is-editing-disabled":a.isEditingDisabled,onClick:a.setAttendanceArea,onDisabledClick:a.handleDisabledClick},null,8,["student-list","attendance","is-editing-disabled","onClick","onDisabledClick"]))])):b("",!0),o(G,{modelValue:s.state.dialogVisible,"onUpdate:modelValue":e[10]||(e[10]=m=>s.state.dialogVisible=m),"auto-save":a.autoSave,"initial-content":s.state.textarea,title:s.state.dialogTitle,"is-editing-past-data":a.isEditingPastData,"current-date-string":s.state.dateString,onSave:a.handleHomeworkSave},null,8,["modelValue","auto-save","initial-content","title","is-editing-past-data","current-date-string","onSave"]),o(Ee,{modelValue:s.state.snackbar,"onUpdate:modelValue":e[11]||(e[11]=m=>s.state.snackbar=m),timeout:2e3},{default:r(()=>[f(h(s.state.snackbarText),1)]),_:1},8,["modelValue"]),o(q,{modelValue:s.state.attendanceDialog,"onUpdate:modelValue":e[12]||(e[12]=m=>s.state.attendanceDialog=m),"student-list":s.state.studentList,attendance:s.state.boardData.attendance,"date-string":s.state.dateString,onSave:a.saveAttendance,onChange:a.handleAttendanceChange},null,8,["modelValue","student-list","attendance","date-string","onSave","onChange"]),o(ve,{ref:"messageLog"},null,512),o(Se,{"is-today":a.isToday,loading:s.loading.download,"copy-to-today-loading":s.loading.copyToToday,"selected-date":s.state.selectedDateObj,"unread-count":a.unreadCount,onRefresh:a.downloadData,onZoom:a.zoom,onOpenMessages:e[13]||(e[13]=m=>t.$refs.messageLog.drawer=!0),onOpenSettings:e[14]||(e[14]=m=>t.$router.push("/settings")),onDateSelect:a.handleDateSelect,onPrevDay:e[15]||(e[15]=m=>a.navigateDay(-1)),onNextDay:e[16]||(e[16]=m=>a.navigateDay(1)),onCopyToToday:a.copyHomeworkToToday},null,8,["is-today","loading","copy-to-today-loading","selected-date","unread-count","onRefresh","onZoom","onDateSelect","onCopyToToday"]),o(be),o(xe,{modelValue:s.isChatOpen,"onUpdate:modelValue":e[17]||(e[17]=m=>s.isChatOpen=m),"show-button":!1},null,8,["modelValue"]),o(De,{modelValue:s.urgentTestDialog,"onUpdate:modelValue":e[18]||(e[18]=m=>s.urgentTestDialog=m)},null,8,["modelValue"]),o(P,{modelValue:s.confirmDialog.show,"onUpdate:modelValue":e[19]||(e[19]=m=>s.confirmDialog.show=m),"max-width":"400"},{default:r(()=>[o(C,null,{default:r(()=>[o(R,{class:"text-h6"},{default:r(()=>[...e[35]||(e[35]=[f(" 确认保存",-1)])]),_:1}),o(_,null,{default:r(()=>[f(" 您正在修改 "+h(s.state.dateString)+" 的数据,确定要保存吗? ",1)]),_:1}),o(z,null,{default:r(()=>[o(N),o(p,{color:"grey",variant:"text",onClick:s.confirmDialog.reject},{default:r(()=>[...e[36]||(e[36]=[f(" 取消 ",-1)])]),_:1},8,["onClick"]),o(p,{color:"primary",onClick:s.confirmDialog.resolve},{default:r(()=>[...e[37]||(e[37]=[f(" 确认保存",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(Ce,{ref:"randomPicker",attendance:s.state.boardData.attendance,"student-list":s.state.studentList},null,8,["attendance","student-list"]),o(P,{modelValue:s.urlConfigDialog.show,"onUpdate:modelValue":e[20]||(e[20]=m=>s.urlConfigDialog.show=m),"max-width":"500"},{default:r(()=>[o(C,null,{default:r(()=>[o(R,{class:"text-h6"},{default:r(()=>[...e[38]||(e[38]=[f(" 确认应用URL配置",-1)])]),_:1}),o(_,null,{default:r(()=>[e[39]||(e[39]=l("p",null,"以下配置将应用于当前班级:",-1)),o(W,{density:"compact"},{default:r(()=>[(d(!0),g(x,null,D(s.urlConfigDialog.changes,m=>(d(),y($,{key:m.key},{prepend:r(()=>[o(E,{icon:m.icon,class:"mr-2",size:"small"},null,8,["icon"])]),default:r(()=>[o(ue,{class:"d-flex align-center"},{default:r(()=>[l("span",nn,h(m.name),1),o(et,{activator:"parent",location:"top"},{default:r(()=>[f(h(m.description||m.key),1)]),_:2},1024)]),_:2},1024),o(he,null,{default:r(()=>[l("span",an,h(m.oldValue),1),o(E,{class:"mx-1",icon:"mdi-arrow-right",size:"small"}),l("span",on,h(m.newValue),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1}),o(z,null,{default:r(()=>[o(N),o(p,{color:"grey",variant:"text",onClick:s.urlConfigDialog.cancelHandler},{default:r(()=>[...e[40]||(e[40]=[f(" 取消 ",-1)])]),_:1},8,["onClick"]),o(p,{color:"primary",onClick:s.urlConfigDialog.confirmHandler},{default:r(()=>[...e[41]||(e[41]=[f(" 确认应用 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(P,{modelValue:s.showExamDetailDialog,"onUpdate:modelValue":e[23]||(e[23]=m=>s.showExamDetailDialog=m),persistent:"",fullscreen:""},{default:r(()=>[s.selectedExamId?(d(),y(C,{key:0},{default:r(()=>[o(R,{class:"d-flex align-center pa-4"},{default:r(()=>[e[42]||(e[42]=f(" 编辑考试配置 ",-1)),o(N),o(p,{icon:"mdi-close",variant:"text",onClick:e[21]||(e[21]=m=>s.showExamDetailDialog=!1)})]),_:1}),o(_,{class:"pa-4",style:{"max-height":"70vh","overflow-y":"auto"}},{default:r(()=>[o(Te,{"config-id":s.selectedExamId,"dialog-mode":!0,onSaved:a.onExamConfigSaved,onDeleted:a.onExamConfigDeleted},null,8,["config-id","onSaved","onDeleted"])]),_:1}),o(K),o(z,{class:"pa-4"},{default:r(()=>[o(p,{color:"error","prepend-icon":"mdi-delete",variant:"tonal",onClick:a.removeCurrentExamCard},{default:r(()=>[...e[43]||(e[43]=[f(" 移除卡片 ",-1)])]),_:1},8,["onClick"]),o(N),o(p,{color:"primary",variant:"text",onClick:e[22]||(e[22]=m=>s.showExamDetailDialog=!1)},{default:r(()=>[...e[44]||(e[44]=[f(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):b("",!0)]),_:1},8,["modelValue"]),o(P,{modelValue:s.showAddExamDialog,"onUpdate:modelValue":e[25]||(e[25]=m=>s.showAddExamDialog=m),"max-width":"500"},{default:r(()=>[o(C,null,{default:r(()=>[o(R,{class:"text-h6"},{default:r(()=>[...e[45]||(e[45]=[f("预览考试看板",-1)])]),_:1}),o(_,null,{default:r(()=>[i.examStore.examList.length>0?(d(),y(W,{key:0},{default:r(()=>[(d(!0),g(x,null,D(i.examStore.examList,m=>{var J;return d(),y($,{key:m.id,title:((J=i.examStore.exams[m.id])==null?void 0:J.examName)||m.id,subtitle:m.id,onClick:cn=>a.addExamCard(m.id)},{prepend:r(()=>[o(E,{color:"primary"},{default:r(()=>[...e[46]||(e[46]=[f("mdi-calendar-text",-1)])]),_:1})]),append:r(()=>[o(p,{icon:a.isExamCardAdded(m.id)?"mdi-check":"mdi-plus",color:a.isExamCardAdded(m.id)?"success":"grey",variant:"text"},null,8,["icon","color"])]),_:2},1032,["title","subtitle","onClick"])}),128))]),_:1})):(d(),g("div",rn," 暂无考试配置 "))]),_:1}),o(z,null,{default:r(()=>[o(N),o(p,{color:"primary",variant:"text",onClick:e[24]||(e[24]=m=>s.showAddExamDialog=!1)},{default:r(()=>[...e[47]||(e[47]=[f("关闭",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(P,{modelValue:s.notificationDetailDialog,"onUpdate:modelValue":e[28]||(e[28]=m=>s.notificationDetailDialog=m),"max-width":"600"},{default:r(()=>[s.currentNotification?(d(),y(C,{key:0},{default:r(()=>[o(R,{class:U(["headline",s.currentNotification.isUrgent?"text-error":"text-primary"])},{default:r(()=>[f(h(s.currentNotification.isUrgent?"强调通知":"通知详情"),1)]),_:1},8,["class"]),o(_,{class:"text-h5 py-4"},{default:r(()=>[f(h(s.currentNotification.message),1)]),_:1}),o(z,null,{default:r(()=>[o(p,{color:"error",variant:"text",onClick:e[26]||(e[26]=m=>a.removePersistentNotification(s.currentNotification.id))},{default:r(()=>[...e[48]||(e[48]=[f("删除",-1)])]),_:1}),o(N),o(p,{color:"primary",onClick:e[27]||(e[27]=m=>s.notificationDetailDialog=!1)},{default:r(()=>[...e[49]||(e[49]=[f("关闭",-1)])]),_:1})]),_:1})]),_:1})):b("",!0)]),_:1},8,["modelValue"]),e[50]||(e[50]=l("br",null,null,-1)),e[51]||(e[51]=l("br",null,null,-1)),e[52]||(e[52]=l("br",null,null,-1))],64)}const dn=O(Xs,[["render",ln]]),En=Object.freeze(Object.defineProperty({__proto__:null,default:dn},Symbol.toStringTag,{value:"Module"}));export{En as i,ne as u}; diff --git a/assets/index-BhSn8tdr.js b/assets/index-BhSn8tdr.js new file mode 100644 index 0000000..3ba6031 --- /dev/null +++ b/assets/index-BhSn8tdr.js @@ -0,0 +1 @@ +import{d}from"./dataProvider-bUkzKSNt.js";import{X as n,_ as f,j as s,Z as i,a1 as o,Y as h,F as v,a2 as N,S as y,ad as C,a8 as L,$ as x}from"./vendor-vue-B2vxubPy.js";import{_ as I,i as r,e as k,c as g,d as V,l as b,n as _,o as A,f as p,k as B,q as E,r as F}from"./index-CFUCTEXJ.js";import{V as S,a as T}from"./VAppBarTitle-vVO0I21U.js";import{V as D}from"./VTextField-ByBRYn99.js";import{V as K}from"./VContainer-RtoBp6rB.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-CdH9Xda8.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";const M={data(){return{lists:[],newListName:"",studentList:[],deleteDialog:{show:!1,text:"",listId:null},editingListId:null,editListName:""}},async created(){await Promise.all([this.loadLists(),this.loadStudentList()])},methods:{async loadLists(){try{let e=await d.loadData("classworks-list-info");(!e||!Array.isArray(e))&&(e=[],await d.saveData("classworks-list-info",e)),this.lists=e}catch(e){console.error("Failed to load lists",e),this.lists=[],await d.saveData("classworks-list-info",[])}},async loadStudentList(){try{const e=await d.loadData("classworks-list-main");e&&Array.isArray(e)?this.studentList=e:this.studentList=[]}catch(e){console.error("Failed to load student list",e),this.studentList=[]}},async createNewList(){if(!this.newListName)return;const e=Date.now().toString(),t={id:e,name:this.newListName};this.lists.push(t),await d.saveData("classworks-list-info",this.lists);const u=[];this.studentList&&this.studentList.length>0&&this.studentList.forEach(w=>{u.push({id:w.id||Date.now()+Math.floor(Math.random()*1e3),name:w.name,completed:!1})}),await d.saveData(`classworks-list-${e}`,u),this.newListName="",this.$router.push(`/list/${e}`)},startEditing(e){const t=this.lists.find(u=>u.id===e);t&&(this.editingListId=e,this.editListName=t.name)},cancelEditing(){this.editingListId=null,this.editListName=""},async saveListName(){if(!(!this.editListName.trim()||!this.editingListId))try{const e=this.lists.findIndex(t=>t.id===this.editingListId);e!==-1&&(this.lists[e].name=this.editListName.trim(),await d.saveData("classworks-list-info",this.lists)),this.editingListId=null,this.editListName=""}catch(e){console.error("Failed to update list name",e)}},confirmDeleteList(e){const t=this.lists.find(u=>u.id===e);t&&(this.deleteDialog={show:!0,text:`确定要删除列表 "${t.name}" 吗?`,listId:e})},confirmDelete(){this.deleteDialog.listId&&this.deleteList(this.deleteDialog.listId),this.deleteDialog.show=!1},async deleteList(e){this.lists=this.lists.filter(t=>t.id!==e),await d.saveData("classworks-list-info",this.lists)}}},U={key:0},P={key:1,class:"d-flex align-center w-100"},j={key:0};function q(e,t,u,w,a,m){return n(),f(v,null,[s(T,{elevation:"1"},{prepend:i(()=>[s(r,{icon:"mdi-arrow-left",variant:"text",onClick:t[0]||(t[0]=l=>e.$router.push("/"))})]),default:i(()=>[s(S,{class:"text-h6"},{default:i(()=>[...t[5]||(t[5]=[o("列表",-1)])]),_:1})]),_:1}),s(K,null,{default:i(()=>[s(k,{border:"",class:"mb-5",rounded:"xl"},{default:i(()=>[s(g,null,{default:i(()=>[...t[6]||(t[6]=[o("现有列表",-1)])]),_:1}),a.lists.length===0?(n(),h(V,{key:0},{default:i(()=>[...t[7]||(t[7]=[o(" 暂无列表,请创建新列表 ",-1)])]),_:1})):(n(),h(b,{key:1},{default:i(()=>[(n(!0),f(v,null,N(a.lists,l=>(n(),h(_,{key:l.id,active:l.id===a.editingListId,to:l.id!==a.editingListId?`/list/${l.id}`:void 0},{append:i(()=>[l.id!==a.editingListId?(n(),f("div",j,[s(r,{border:"",class:"mr-2",icon:"",onClick:L(c=>m.startEditing(l.id),["stop","prevent"])},{default:i(()=>[s(p,null,{default:i(()=>[...t[10]||(t[10]=[o("mdi-pencil",-1)])]),_:1})]),_:1},8,["onClick"]),s(r,{border:"",icon:"",onClick:L(c=>m.confirmDeleteList(l.id),["stop","prevent"])},{default:i(()=>[s(p,null,{default:i(()=>[...t[11]||(t[11]=[o("mdi-delete",-1)])]),_:1})]),_:1},8,["onClick"])])):x("",!0)]),default:i(()=>[l.id!==a.editingListId?(n(),f("div",U,[s(A,null,{default:i(()=>[o(y(l.name),1)]),_:2},1024)])):(n(),f("div",P,[s(D,{modelValue:a.editListName,"onUpdate:modelValue":t[1]||(t[1]=c=>a.editListName=c),autofocus:"",class:"mr-2",density:"compact","hide-details":"",label:"列表名称",onKeyup:C(m.saveListName,["enter"])},null,8,["modelValue","onKeyup"]),s(r,{border:"",class:"mr-2",color:"primary",icon:"",onClick:L(m.saveListName,["stop","prevent"])},{default:i(()=>[s(p,null,{default:i(()=>[...t[8]||(t[8]=[o("mdi-check",-1)])]),_:1})]),_:1},8,["onClick"]),s(r,{border:"",color:"error",icon:"",onClick:L(m.cancelEditing,["stop","prevent"])},{default:i(()=>[s(p,null,{default:i(()=>[...t[9]||(t[9]=[o("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])]))]),_:2},1032,["active","to"]))),128))]),_:1}))]),_:1}),s(k,{border:"",class:"mb-5",rounded:"xl"},{default:i(()=>[s(g,null,{default:i(()=>[...t[12]||(t[12]=[o("创建新列表",-1)])]),_:1}),s(V,null,{default:i(()=>[s(D,{modelValue:a.newListName,"onUpdate:modelValue":t[2]||(t[2]=l=>a.newListName=l),rules:[l=>!!l||"名称不能为空"],label:"列表名称"},null,8,["modelValue","rules"]),s(r,{disabled:!a.newListName,color:"primary",onClick:m.createNewList},{default:i(()=>[...t[13]||(t[13]=[o(" 创建列表 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1}),s(B,{modelValue:a.deleteDialog.show,"onUpdate:modelValue":t[4]||(t[4]=l=>a.deleteDialog.show=l),"max-width":"500"},{default:i(()=>[s(k,{border:""},{default:i(()=>[s(g,null,{default:i(()=>[...t[14]||(t[14]=[o("删除列表",-1)])]),_:1}),s(V,null,{default:i(()=>[o(y(a.deleteDialog.text),1)]),_:1}),s(E,null,{default:i(()=>[s(F),s(r,{color:"primary",variant:"text",onClick:t[3]||(t[3]=l=>a.deleteDialog.show=!1)},{default:i(()=>[...t[15]||(t[15]=[o(" 取消 ",-1)])]),_:1}),s(r,{color:"error",variant:"text",onClick:m.confirmDelete},{default:i(()=>[...t[16]||(t[16]=[o(" 确认删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})],64)}const $=I(M,[["render",q]]);export{$ as default}; diff --git a/assets/index-BqspaPWT.css b/assets/index-BqspaPWT.css deleted file mode 100644 index 5e1168a..0000000 --- a/assets/index-BqspaPWT.css +++ /dev/null @@ -1 +0,0 @@ -.async-loading-placeholder[data-v-2d12e0c7]{width:100%;opacity:.6}.gap-1[data-v-33424f55]{gap:0px}.border-b-sm[data-v-33424f55]{border-bottom:1px solid rgba(0,0,0,.05)}.border-none[data-v-33424f55]{border-bottom:none}.hover-elevation[data-v-33424f55]{transition:box-shadow .2s}.hover-elevation[data-v-33424f55]:hover{box-shadow:0 4px 8px #0000001a!important}.hitokoto-card[data-v-de957b7d]{cursor:pointer;transition:all .3s ease}.hitokoto-card[data-v-de957b7d]:hover{transform:translateY(-2px)}.serif-font[data-v-de957b7d]{font-family:"Noto Serif SC","Source Han Serif SC","Source Han Serif",source-han-serif-sc,Songti SC,SimSun,Hiragino Sans GB,system-ui,serif}.time-card[data-v-725dbda6]{transition:all .3s ease;overflow:hidden}.time-card[data-v-725dbda6]:hover{transform:translateY(-2px)}.time-display[data-v-725dbda6]{font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;white-space:nowrap}.seconds-text[data-v-725dbda6]{font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace}.date-line[data-v-725dbda6]{opacity:.75;letter-spacing:1px}.cursor-not-allowed[data-v-5f84fa28]{cursor:not-allowed!important}.cursor-pointer[data-v-5f84fa28]{cursor:pointer}.v-card.cursor-not-allowed[data-v-5f84fa28]:hover{transform:none!important}.floating-icp-link[data-v-fa73670f]{position:fixed;right:4px;bottom:0;z-index:100;font-size:14px;font-weight:500;letter-spacing:.2px;color:#6b6b6b;text-decoration:none;background:transparent;border:none;box-shadow:none;transition:none!important}.floating-icp-link[data-v-fa73670f]:hover,.floating-icp-link[data-v-fa73670f]:focus,.floating-icp-link[data-v-fa73670f]:active{color:#414141;text-decoration:none;outline:none}@media (max-width: 600px){.floating-icp-link[data-v-fa73670f]{right:16px;bottom:0;font-size:14px}}.skeleton-grid[data-v-ea69d8df]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.skeleton-card[data-v-ea69d8df]{border:1px solid rgba(var(--v-border-color),var(--v-border-opacity, .12));border-radius:12px;padding:16px}.skeleton-heading[data-v-ea69d8df]{height:24px;width:60%;background:rgba(var(--v-theme-on-surface),.08);border-radius:4px;margin-bottom:12px}.skeleton-line[data-v-ea69d8df]{height:14px;width:100%;background:rgba(var(--v-theme-on-surface),.08);border-radius:4px;margin-bottom:8px}.skeleton-line--short[data-v-ea69d8df]{width:40%}.skeleton-btn[data-v-ea69d8df]{height:36px;width:100px;background:rgba(var(--v-theme-on-surface),.08);border-radius:8px}.skeleton-pulse[data-v-ea69d8df]{animation:skeleton-pulse-ea69d8df 1.5s ease-in-out infinite}@keyframes skeleton-pulse-ea69d8df{0%,to{opacity:1}50%{opacity:.4}} diff --git a/assets/index-Br7ywFJ9.js b/assets/index-Br7ywFJ9.js deleted file mode 100644 index 21b9bbd..0000000 --- a/assets/index-Br7ywFJ9.js +++ /dev/null @@ -1 +0,0 @@ -import{d}from"./dataProvider-BwUtbSl1.js";import{X as n,_ as f,j as s,Z as i,a1 as o,Y as h,F as v,a2 as N,S as y,ac as C,ad as L,$ as x}from"./vendor-vue-H0jQBZ7T.js";import{_ as I,l as r,e as k,c as g,d as V,j as b,k as _,s as A,h as p,p as B,q as E,o as F}from"./index-_6IQhlPZ.js";import{V as S,a as T}from"./VAppBarTitle-Cvegbk0-.js";import{V as D}from"./VTextField-CuXGbmmC.js";import{V as K}from"./VContainer-Bg8RevuO.js";import"./vendor-utils-DDRLRfsI.js";import"./serverRotation-BGVL0kta.js";import"./vendor-vuetify-ChAgIwn2.js";import"./autofocus-BrMOVHY_.js";const M={data(){return{lists:[],newListName:"",studentList:[],deleteDialog:{show:!1,text:"",listId:null},editingListId:null,editListName:""}},async created(){await Promise.all([this.loadLists(),this.loadStudentList()])},methods:{async loadLists(){try{let e=await d.loadData("classworks-list-info");(!e||!Array.isArray(e))&&(e=[],await d.saveData("classworks-list-info",e)),this.lists=e}catch(e){console.error("Failed to load lists",e),this.lists=[],await d.saveData("classworks-list-info",[])}},async loadStudentList(){try{const e=await d.loadData("classworks-list-main");e&&Array.isArray(e)?this.studentList=e:this.studentList=[]}catch(e){console.error("Failed to load student list",e),this.studentList=[]}},async createNewList(){if(!this.newListName)return;const e=Date.now().toString(),t={id:e,name:this.newListName};this.lists.push(t),await d.saveData("classworks-list-info",this.lists);const u=[];this.studentList&&this.studentList.length>0&&this.studentList.forEach(w=>{u.push({id:w.id||Date.now()+Math.floor(Math.random()*1e3),name:w.name,completed:!1})}),await d.saveData(`classworks-list-${e}`,u),this.newListName="",this.$router.push(`/list/${e}`)},startEditing(e){const t=this.lists.find(u=>u.id===e);t&&(this.editingListId=e,this.editListName=t.name)},cancelEditing(){this.editingListId=null,this.editListName=""},async saveListName(){if(!(!this.editListName.trim()||!this.editingListId))try{const e=this.lists.findIndex(t=>t.id===this.editingListId);e!==-1&&(this.lists[e].name=this.editListName.trim(),await d.saveData("classworks-list-info",this.lists)),this.editingListId=null,this.editListName=""}catch(e){console.error("Failed to update list name",e)}},confirmDeleteList(e){const t=this.lists.find(u=>u.id===e);t&&(this.deleteDialog={show:!0,text:`确定要删除列表 "${t.name}" 吗?`,listId:e})},confirmDelete(){this.deleteDialog.listId&&this.deleteList(this.deleteDialog.listId),this.deleteDialog.show=!1},async deleteList(e){this.lists=this.lists.filter(t=>t.id!==e),await d.saveData("classworks-list-info",this.lists)}}},U={key:0},j={key:1,class:"d-flex align-center w-100"},P={key:0};function q(e,t,u,w,a,m){return n(),f(v,null,[s(T,{elevation:"1"},{prepend:i(()=>[s(r,{icon:"mdi-arrow-left",variant:"text",onClick:t[0]||(t[0]=l=>e.$router.push("/"))})]),default:i(()=>[s(S,{class:"text-h6"},{default:i(()=>[...t[5]||(t[5]=[o("列表",-1)])]),_:1})]),_:1}),s(K,null,{default:i(()=>[s(k,{border:"",class:"mb-5",rounded:"xl"},{default:i(()=>[s(g,null,{default:i(()=>[...t[6]||(t[6]=[o("现有列表",-1)])]),_:1}),a.lists.length===0?(n(),h(V,{key:0},{default:i(()=>[...t[7]||(t[7]=[o(" 暂无列表,请创建新列表 ",-1)])]),_:1})):(n(),h(b,{key:1},{default:i(()=>[(n(!0),f(v,null,N(a.lists,l=>(n(),h(_,{key:l.id,active:l.id===a.editingListId,to:l.id!==a.editingListId?`/list/${l.id}`:void 0},{append:i(()=>[l.id!==a.editingListId?(n(),f("div",P,[s(r,{border:"",class:"mr-2",icon:"",onClick:L(c=>m.startEditing(l.id),["stop","prevent"])},{default:i(()=>[s(p,null,{default:i(()=>[...t[10]||(t[10]=[o("mdi-pencil",-1)])]),_:1})]),_:1},8,["onClick"]),s(r,{border:"",icon:"",onClick:L(c=>m.confirmDeleteList(l.id),["stop","prevent"])},{default:i(()=>[s(p,null,{default:i(()=>[...t[11]||(t[11]=[o("mdi-delete",-1)])]),_:1})]),_:1},8,["onClick"])])):x("",!0)]),default:i(()=>[l.id!==a.editingListId?(n(),f("div",U,[s(A,null,{default:i(()=>[o(y(l.name),1)]),_:2},1024)])):(n(),f("div",j,[s(D,{modelValue:a.editListName,"onUpdate:modelValue":t[1]||(t[1]=c=>a.editListName=c),autofocus:"",class:"mr-2",density:"compact","hide-details":"",label:"列表名称",onKeyup:C(m.saveListName,["enter"])},null,8,["modelValue","onKeyup"]),s(r,{border:"",class:"mr-2",color:"primary",icon:"",onClick:L(m.saveListName,["stop","prevent"])},{default:i(()=>[s(p,null,{default:i(()=>[...t[8]||(t[8]=[o("mdi-check",-1)])]),_:1})]),_:1},8,["onClick"]),s(r,{border:"",color:"error",icon:"",onClick:L(m.cancelEditing,["stop","prevent"])},{default:i(()=>[s(p,null,{default:i(()=>[...t[9]||(t[9]=[o("mdi-close",-1)])]),_:1})]),_:1},8,["onClick"])]))]),_:2},1032,["active","to"]))),128))]),_:1}))]),_:1}),s(k,{border:"",class:"mb-5",rounded:"xl"},{default:i(()=>[s(g,null,{default:i(()=>[...t[12]||(t[12]=[o("创建新列表",-1)])]),_:1}),s(V,null,{default:i(()=>[s(D,{modelValue:a.newListName,"onUpdate:modelValue":t[2]||(t[2]=l=>a.newListName=l),rules:[l=>!!l||"名称不能为空"],label:"列表名称"},null,8,["modelValue","rules"]),s(r,{disabled:!a.newListName,color:"primary",onClick:m.createNewList},{default:i(()=>[...t[13]||(t[13]=[o(" 创建列表 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1}),s(B,{modelValue:a.deleteDialog.show,"onUpdate:modelValue":t[4]||(t[4]=l=>a.deleteDialog.show=l),"max-width":"500"},{default:i(()=>[s(k,{border:""},{default:i(()=>[s(g,null,{default:i(()=>[...t[14]||(t[14]=[o("删除列表",-1)])]),_:1}),s(V,null,{default:i(()=>[o(y(a.deleteDialog.text),1)]),_:1}),s(E,null,{default:i(()=>[s(F),s(r,{color:"primary",variant:"text",onClick:t[3]||(t[3]=l=>a.deleteDialog.show=!1)},{default:i(()=>[...t[15]||(t[15]=[o(" 取消 ",-1)])]),_:1}),s(r,{color:"error",variant:"text",onClick:m.confirmDelete},{default:i(()=>[...t[16]||(t[16]=[o(" 确认删除 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})],64)}const W=I(M,[["render",q]]);export{W as default}; diff --git a/assets/index-CFUCTEXJ.js b/assets/index-CFUCTEXJ.js new file mode 100644 index 0000000..eed311a --- /dev/null +++ b/assets/index-CFUCTEXJ.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./default-_BG_c8tN.js","./vendor-vuetify-s-yw_Hr8.js","./vendor-vue-B2vxubPy.js","./default-CmdaPMSp.css","./index-B89AxD6u.js","./dataProvider-bUkzKSNt.js","./vendor-utils-DDRLRfsI.js","./serverRotation-CdH9Xda8.js","./soundList-D9U-Grcp.js","./VTabs-D8mV99Hb.js","./VTabsWindowItem-CU31Uty7.js","./VTabsWindowItem-BmdOdR5s.css","./VChip-DR8Ljy6R.js","./VChip-q3Zvvte-.css","./VTabs-566n5b08.css","./VSwitch-DKh_Uq_M.js","./VLabel-CU-8PdVS.js","./VLabel-BXfPXCwa.css","./VSwitch-Bk42mIwg.css","./VContainer-RtoBp6rB.js","./VContainer-B1KSavhG.css","./socketClient-CkosNYrb.js","./vendor-socket-CyTcV1HU.js","./deviceEvents-BfEN8wCe.js","./VAppBarTitle-vVO0I21U.js","./VAppBarTitle-CczdD-Q2.css","./VRow-Dw4j2TKL.js","./VRow-D2ArqUC2.css","./VAlert-DO0N7oM6.js","./VAlert-D_OX1cfW.css","./VTooltip-CbK3h4lM.js","./VTooltip-DNuxJ6UK.css","./index-gUbV_oUn.css","./404-DgXcW6hh.js","./authorize-D748DFqj.js","./CacheManagement-BjDS42mh.js","./VExpansionPanels-qZkn9NEQ.js","./VExpansionPanels-kEj4ZJQK.css","./VSkeletonLoader-AysIn-20.js","./VSkeletonLoader-C11ZEozu.css","./cses2wakeup-BI06cWgi.js","./VTextarea-BxmmuONa.js","./autofocus-BAgnxQiD.js","./autofocus-Gei3DjNm.css","./VTextarea-_xVwaw_z.css","./VBadge-C7i5WU2T.js","./VBadge-BGqjJnM0.css","./VTextField-ByBRYn99.js","./VDataTable-B9bubX3K.js","./VPagination-D-juuf4L.js","./VPagination-BF2MZmld.css","./VSelect-Fp4MUhJW.js","./VSheet-B8D7XEg5.js","./VSheet-DxsDksIw.css","./VCheckboxBtn-DOw5vjpY.js","./VSelect-DHZViySU.css","./VDataTable-Cl7qiDOP.css","./VCheckbox-iNdH9PmZ.js","./VCheckbox-ZL-u1kGB.css","./cses2wakeup-BEXP6Tqz.css","./debug-BQFtSTke.js","./visitorId-BqmEfSoz.js","./debug-CbS14biG.css","./debug-init-F9jX3b20.js","./VForm-zpXHQBRK.js","./debug-socket-B2krd3Vm.js","./_id_-CM4di5Oi.js","./ExamConfigEditor-wXpc4eEz.js","./VAutocomplete-CrWVUMTj.js","./VAutocomplete-Ygy_KjMW.css","./VDatePicker-BWfVQdXc.js","./VDatePicker-X4Ryb5EN.css","./ExamConfigEditor-DV8lOLSp.css","./examschedule-_0Gf9Tt0.js","./examschedule-CU_Gxm4i.css","./index-BhSn8tdr.js","./_id_-BLE1RHCF.js","./settings-BYcqfiQi.js","./MessageLog-BB5IiJ1u.js","./MessageLog-BGkFwivK.css","./VCombobox-B2hcOM7z.js","./VCombobox-r6cc1Iy_.css","./settings-cNI4NbxC.css","./socket-debugger-BuQPFPjR.js","./socket-debugger-ykBk0O32.css","./sentry-BV2lBeZ_.js","./vendor-sentry-B9EwL1LR.js"])))=>i.map(i=>d[i]); +import{c as yi,g as We,p as T,d as yn,i as Wn,a as hi,b as bi,e as Si,f as G,h as ye,j as $t,u as J,m as fe,k as ee,l as xe,n as Pe,o as Ye,w as hn,q as pi,r as wi,s as B,t as ha,v as ki,x as Ci,I as le,S as bn,y as ba,P as Vt,z as Ze,A as Dt,B as en,C as ht,D as qn,E as Ae,F as tn,G as _i,H as xi,J as jt,K as Sa,L as Lt,M as Ii,N as jn,O as Hn,Q as Ht,R as Gt,T as pa,U as Gn,V as Pi,W as Ai,X as Un,Y as Ei,Z as Vi,_ as Li,$ as xt,a0 as Ti,a1 as Oi,a2 as wa,a3 as Bi,a4 as Me,a5 as at,a6 as nn,a7 as Ri,a8 as Ni,a9 as $i,aa as Sn,ab as Kn,ac as Xn,ad as Di,ae as Mi,af as Fi,ag as ft,ah as an,ai as ke,aj as ka,ak as zi,al as Wi,am as qi}from"./vendor-vuetify-s-yw_Hr8.js";import{J as ji,K as Hi,L as Gi,e as _,t as k,M as sn,l as se,k as P,n as H,F as Be,j as b,N as Q,E as pn,p as qe,d as Ee,A as je,o as W,D as it,O as Ui,r as vt,u as Ki,m as Y,y as Xi,T as Yi,s as z,q as ve,b as q,w as Re,P as Ne,Q as Ca,I as ce,R as ze,S as Ce,v as _a,x as ae,B as xa,U as wn,h as kn,V as Cn,W as Ji,X as Ie,Y as Fe,Z as ie,f as Qi,_ as Ia,$ as ln,a0 as _n,a1 as Ct,a2 as Zi,a3 as es,a4 as ts}from"./vendor-vue-B2vxubPy.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))a(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const l of s.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&a(l)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function a(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const ns="modulepreload",as=function(e,t){return new URL(e,t).href},Yn={},ne=function(t,n,a){let i=Promise.resolve();if(n&&n.length>0){const l=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),r=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));i=Promise.allSettled(n.map(u=>{if(u=as(u,a),u in Yn)return;Yn[u]=!0;const c=u.endsWith(".css"),m=c?'[rel="stylesheet"]':"";if(!!a)for(let y=l.length-1;y>=0;y--){const f=l[y];if(f.href===u&&(!c||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${u}"]${m}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":ns,c||(d.as="script"),d.crossOrigin="",d.href=u,r&&d.setAttribute("nonce",r),document.head.appendChild(d),c)return new Promise((y,f)=>{d.addEventListener("load",y),d.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${u}`)))})}))}function s(l){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=l,window.dispatchEvent(o),!o.defaultPrevented)throw l}return i.then(l=>{for(const o of l||[])o.status==="rejected"&&s(o.reason);return t().catch(s)})},is=yi({theme:{defaultTheme:"dark"}}),ss=ji(),ls=e=>{const t={};Object.entries(Object.assign({"/src/layouts/default.vue":()=>ne(()=>import("./default-_BG_c8tN.js"),__vite__mapDeps([0,1,2,3]),import.meta.url)})).forEach(([i,s])=>{let l=i.replace("/src/layouts/","").replace(".vue","");t[l]=s});function a(i,s=!0){return i.map(l=>{var o,r,u,c,m,v;if(((o=l.children)==null?void 0:o.length)>0&&(l.children=a(l.children,!1)),s){if(!l.component&&((r=l.children)==null?void 0:r.find(y=>{var f;return(y.path===""||y.path==="/")&&((f=y.meta)==null?void 0:f.isLayout)})))return l;if(((u=l.meta)==null?void 0:u.layout)!==!1)return{path:l.path,component:t[((c=l.meta)==null?void 0:c.layout)||"default"],children:l.path==="/"?[l]:[{...l,path:""}],meta:{isLayout:!0}}}return(m=l.meta)!=null&&m.layout?{path:l.path,component:t[(v=l.meta)==null?void 0:v.layout],children:[{...l,path:""}],meta:{isLayout:!0}}:l})}return a(e)},os=[{path:"/",name:"/",component:()=>ne(()=>import("./index-B89AxD6u.js").then(e=>e.i),__vite__mapDeps([4,2,5,6,7,8,9,10,1,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]),import.meta.url)},{path:"/404",name:"/404",component:()=>ne(()=>import("./404-DgXcW6hh.js"),__vite__mapDeps([33,26,1,2,27,19,20]),import.meta.url)},{path:"/authorize",name:"/authorize",component:()=>ne(()=>import("./authorize-D748DFqj.js"),__vite__mapDeps([34,2,26,1,27,19,20]),import.meta.url)},{path:"/CacheManagement",name:"/CacheManagement",component:()=>ne(()=>import("./CacheManagement-BjDS42mh.js"),__vite__mapDeps([35,28,1,2,29,36,37,12,13,38,39,26,27,19,20]),import.meta.url)},{path:"/cses2wakeup",name:"/cses2wakeup",component:()=>ne(()=>import("./cses2wakeup-BI06cWgi.js"),__vite__mapDeps([40,26,1,2,27,28,29,9,10,11,12,13,14,30,31,41,42,16,17,43,44,45,46,15,18,47,38,39,48,49,50,51,52,53,54,55,56,57,58,19,20,59]),import.meta.url)},{path:"/debug",name:"/debug",component:()=>ne(()=>import("./debug-BQFtSTke.js"),__vite__mapDeps([60,61,1,2,19,20,62]),import.meta.url)},{path:"/debug-init",name:"/debug-init",component:()=>ne(()=>import("./debug-init-F9jX3b20.js"),__vite__mapDeps([63,5,6,7,26,1,2,27,64,16,17,47,42,43,19,20]),import.meta.url)},{path:"/debug-socket",name:"/debug-socket",component:()=>ne(()=>import("./debug-socket-B2krd3Vm.js"),__vite__mapDeps([65,21,22,7,23,26,1,2,27,12,13,47,42,16,17,43,41,44,19,20]),import.meta.url)},{path:"/exam-editor",children:[{path:":id",name:"/exam-editor/[id]",component:()=>ne(()=>import("./_id_-CM4di5Oi.js"),__vite__mapDeps([66,67,5,6,7,2,28,1,29,38,39,30,31,12,13,26,27,47,42,16,17,43,41,44,15,18,68,51,52,53,54,55,69,70,45,46,71,72,24,25,19,20]),import.meta.url)}]},{path:"/examschedule",name:"/examschedule",component:()=>ne(()=>import("./examschedule-_0Gf9Tt0.js"),__vite__mapDeps([73,67,5,6,7,2,28,1,29,38,39,30,31,12,13,26,27,47,42,16,17,43,41,44,15,18,68,51,52,53,54,55,69,70,45,46,71,72,19,20,74]),import.meta.url)},{path:"/list",children:[{path:"",name:"/list/",component:()=>ne(()=>import("./index-BhSn8tdr.js"),__vite__mapDeps([75,5,6,7,2,24,1,25,47,42,16,17,43,19,20]),import.meta.url)},{path:":id",name:"/list/[id]",component:()=>ne(()=>import("./_id_-BLE1RHCF.js"),__vite__mapDeps([76,5,6,7,2,24,1,25,47,42,16,17,43,54,15,18,12,13,41,44,19,20]),import.meta.url)}]},{path:"/settings",name:"/settings",component:()=>ne(()=>import("./settings-BYcqfiQi.js"),__vite__mapDeps([77,78,24,1,2,25,79,12,13,15,16,17,18,51,47,42,43,52,53,54,55,5,6,7,28,29,26,27,19,20,57,58,41,44,8,64,36,37,48,49,50,10,11,56,80,81,61,82]),import.meta.url)},{path:"/socket-debugger",name:"/socket-debugger",component:()=>ne(()=>import("./socket-debugger-BuQPFPjR.js"),__vite__mapDeps([83,21,22,7,26,1,2,27,12,13,47,42,16,17,43,41,44,15,18,28,29,19,20,84]),import.meta.url)}],xn=Hi({history:Gi("./"),routes:ls(os)});xn.onError((e,t)=>{var n,a;(a=(n=e==null?void 0:e.message)==null?void 0:n.includes)!=null&&a.call(n,"Failed to fetch dynamically imported module")?localStorage.getItem("vuetify:dynamic-reload")?console.error("Dynamic import error, reloading page did not fix it",e):(console.log("Reloading page to fix dynamic import error"),localStorage.setItem("vuetify:dynamic-reload","true"),location.assign(t.fullPath)):console.error(e)});xn.isReady().then(()=>{localStorage.removeItem("vuetify:dynamic-reload")});function rs(e){e.use(is).use(xn).use(ss)}async function us(){return typeof Notification<"u"&&Notification.requestPermission?await Notification.requestPermission()==="granted"?(console.log("通知权限已授予"),!0):(console.warn("通知权限被拒绝"),!1):(console.warn("浏览器不支持通知权限请求"),!1)}async function cs(){var e;try{return(e=navigator.storage)!=null&&e.persist?await navigator.storage.persist():!1}catch(t){return console.warn("请求持久性存储失败:",t),!1}}const Ut="Classworks_settings",Jn={"server.domain":"https://kv-service.houlang.cloud","server.siteKey":""},Oe={"device.uuid":{type:"string",default:"00000000-0000-4000-8000-000000000000",description:"设备唯一标识符",icon:"mdi-identifier"},"storage.persistOnLoad":{type:"boolean",default:!0,description:"是否在页面加载时自动请求持久性存储",icon:"mdi-database-sync"},"display.emptySubjectDisplay":{type:"string",default:"card",validate:e=>["card","button"].includes(e),description:"空科目的显示方式",icon:"mdi-card-outline"},"timeCard.enabled":{type:"boolean",default:!0,description:"启用时间卡片",icon:"mdi-clock-outline"},"hitokoto.enabled":{type:"boolean",default:!0,description:"启用一言",icon:"mdi-comment-quote"},"hitokoto.refreshInterval":{type:"number",default:300,description:"刷新时间(秒,0为不自动刷新)",icon:"mdi-timer-refresh"},"display.dynamicSort":{type:"boolean",default:!0,description:"是否启用动态排序",icon:"mdi-sort-variant"},"display.showRandomButton":{type:"boolean",default:!1,description:"是否显示随机点人按钮",icon:"mdi-shuffle-variant"},"display.showFullscreenButton":{type:"boolean",default:!0,description:"是否显示全屏按钮",icon:"mdi-fullscreen"},"display.cardHoverEffect":{type:"boolean",default:!0,description:"是否启用卡片悬浮效果",icon:"mdi-gesture-tap"},"display.enhancedTouchMode":{type:"boolean",default:!0,description:"是否启用增强触摸模式",icon:"mdi-gesture-tap-button"},"display.showAntiScreenBurnCard":{type:"boolean",default:!1,description:"是否显示防烧屏忽悠卡片",icon:"mdi-monitor-shimmer"},"display.showListCard":{type:"boolean",default:!0,description:"是否显示列表卡片",icon:"mdi-list-box"},"display.showExamScheduleButton":{type:"boolean",default:!0,description:"是否显示考试看板",icon:"mdi-calendar-check"},"display.showQuickTools":{type:"boolean",default:!0,description:"是否显示快捷键盘",icon:"mdi-dialpad"},"display.forceDesktopMode":{type:"boolean",default:!1,description:"强制使用一体机UI模式",icon:"mdi-monitor"},"display.lateStudentsArePresent":{type:"boolean",default:!1,description:"将迟到人数算入出勤人数",icon:"mdi-clock-fast"},"server.domain":{type:"string",default:"",validate:e=>{if(!e)return!0;try{return new URL(e),!0}catch(t){return console.error("域名格式无效:",t),!1}},description:"后端服务器域名",icon:"mdi-web"},"server.classNumber":{type:"string",default:"高三八班",validate:e=>/.*/.test(e),description:"班级编号",icon:"mdi-account-group"},"server.siteKey":{type:"string",default:"",description:"网站令牌",icon:"mdi-key-chain"},"server.kvToken":{type:"string",default:"",description:"KV授权令牌",icon:"mdi-shield-key"},"server.authDomain":{type:"string",default:"https://kv.houlang.cloud",description:"授权服务器域名",icon:"mdi-shield-account",validate:e=>{if(!e)return!0;try{return new URL(e),!0}catch(t){return console.error("授权域名格式无效:",t),!1}}},"server.provider":{type:"string",default:"classworkscloud",validate:e=>["kv-local","kv-server","classworkscloud"].includes(e),description:"数据提供者",icon:"mdi-database"},"refresh.auto":{type:"boolean",default:!1,description:"是否启用自动刷新",icon:"mdi-refresh-auto"},"refresh.interval":{type:"number",default:300,validate:e=>e>=10&&e<=3600,description:"自动刷新间隔(秒)",icon:"mdi-timer-outline"},"font.size":{type:"number",default:28,validate:e=>e>=16&&e<=100,description:"字体大小",icon:"mdi-format-size"},"edit.autoSave":{type:"boolean",default:!0,description:"是否启用自动保存",icon:"mdi-content-save-outline"},"edit.blockNonTodayAutoSave":{type:"boolean",default:!0,description:"禁止自动保存非当天数据",icon:"mdi-calendar-lock"},"edit.refreshBeforeEdit":{type:"boolean",default:!0,description:"编辑前是否自动刷新",icon:"mdi-refresh"},"edit.confirmNonTodaySave":{type:"boolean",default:!0,description:"保存非当天数据需确认",icon:"mdi-calendar-alert"},"edit.blockPastDataEdit":{type:"boolean",default:!1,description:"禁止编辑过往数据",icon:"mdi-lock-clock"},"edit.autoSavePromptText":{type:"string",default:"喵?喵呜!",description:"自动保存模式提示文本",icon:"mdi-text-box-outline"},"edit.manualSavePromptText":{type:"string",default:"写完后点击上传谢谢喵",description:"手动保存模式提示文本",icon:"mdi-text-box-outline"},"developer.enabled":{type:"boolean",default:!1,description:"是否启用开发者选项",icon:"mdi-developer-board"},"developer.showDebugConfig":{type:"boolean",default:!1,description:"是否显示调试配置",icon:"mdi-bug-outline"},"developer.disableMessageLog":{type:"boolean",default:!1,description:"禁用消息日志记录",requireDeveloper:!0,icon:"mdi-message-off-outline"},"message.showSidebar":{type:"boolean",default:!0,description:"是否显示消息记录侧栏",requireDeveloper:!0,icon:"mdi-message-text-outline"},"message.maxActiveMessages":{type:"number",default:5,validate:e=>e>=1&&e<=10,description:"同时显示的最大消息数量",requireDeveloper:!0,icon:"mdi-message-badge-outline"},"message.timeout":{type:"number",default:5e3,validate:e=>e>=1e3&&e<=3e4,description:"消息自动关闭时间(毫秒)",requireDeveloper:!0,icon:"mdi-timer-sand"},"message.saveHistory":{type:"boolean",default:!0,description:"是否保存消息历史记录",requireDeveloper:!0,icon:"mdi-history"},"theme.mode":{type:"string",default:"dark",validate:e=>["light","dark"].includes(e),description:"主题模式",icon:"mdi-theme-light-dark"},"notification.singleSound":{type:"string",default:"Teams 默认.mp3",description:"单次通知铃声",icon:"mdi-bell-ring"},"notification.urgentSound":{type:"string",default:"Teams 默认通话铃.mp3",description:"持续通知铃声",icon:"mdi-bell-alert"},"randomPicker.enabled":{type:"boolean",default:!0,description:"是否启用随机点名功能",icon:"mdi-account-question"},"randomPicker.animation":{type:"boolean",default:!0,description:"是否启用随机点名动画效果",icon:"mdi-animation-play"},"randomPicker.defaultCount":{type:"number",default:1,validate:e=>e>=1&&e,description:"默认抽取人数",icon:"mdi-counter"},"randomPicker.excludeAbsent":{type:"boolean",default:!0,description:"是否排除请假学生",icon:"mdi-account-off"},"randomPicker.excludeLate":{type:"boolean",default:!1,description:"是否排除迟到学生",icon:"mdi-clock-alert"},"randomPicker.excludeExcluded":{type:"boolean",default:!0,description:"是否排除不参与学生",icon:"mdi-account-cancel"},"randomPicker.mode":{type:"string",default:"name",validate:e=>["name","number"].includes(e),description:"随机点名模式",icon:"mdi-format-list-numbered"},"randomPicker.maxNumber":{type:"number",default:60,validate:e=>e>=1&&e,description:"学号模式最大值",icon:"mdi-numeric"},"randomPicker.minNumber":{type:"number",default:1,validate:e=>e>=1&&e,description:"学号模式最小值",icon:"mdi-numeric-negative-1"},"pwa.hideInstallCard":{type:"boolean",default:!1,description:"不显示PWA安装卡片",icon:"mdi-download-off"}};class ds{constructor(){this.settingsCache=null,this.isInitialized=!1}init(){this.isInitialized||(this.loadSettings(),this.isInitialized=!0)}loadSettings(){this.settingsCache={};try{const t=typeof localStorage<"u"?localStorage.getItem(Ut):null;t&&(this.settingsCache=JSON.parse(t))}catch(t){console.error("加载设置失败:",t)}for(const[t,n]of Object.entries(Oe))t in this.settingsCache||(this.settingsCache[t]=n.default);return this.settingsCache}saveSettings(){if(!(typeof localStorage>"u"))try{localStorage.setItem(Ut,JSON.stringify(this.settingsCache))}catch(t){console.error("保存设置失败:",t)}}getSetting(t){this.isInitialized||this.init();const n=Oe[t];if(!n)return console.warn(`未定义的设置项: ${t}`),null;if(n.requireDeveloper&&!this.settingsCache["developer.enabled"])return n.default;if(this.settingsCache["server.provider"]==="classworkscloud"&&Jn[t]!==void 0)return Jn[t];const a=this.settingsCache[t];return a!==void 0?a:n.default}setSetting(t,n){this.isInitialized||this.init();const a=Oe[t];if(!a)return console.warn(`未定义的设置项: ${t}`),!1;if(a.requireDeveloper&&!this.settingsCache["developer.enabled"])return console.warn(`设置项 ${t} 需要启用开发者选项`),!1;try{const i=this.settingsCache[t];if(typeof n!==a.type&&(n=a.type==="boolean"?!!n:a.type==="number"?Number(n):String(n)),a.validate&&!a.validate(n))return console.warn(`设置项 ${t} 的值无效`),!1;this.settingsCache[t]=n,this.saveSettings(),this.logSettingsChange(t,i,n);const s=a.legacyKey;return s&&typeof localStorage<"u"&&localStorage.setItem(s,n.toString()),!0}catch(i){return console.error(`设置配置项 ${t} 失败:`,i),!1}}logSettingsChange(t,n,a){this.settingsCache["developer.enabled"]&&this.settingsCache["developer.showDebugConfig"]&&console.log(`[Settings] ${t}:`,{old:n,new:a,time:new Date().toLocaleTimeString()})}resetSetting(t){this.isInitialized||this.init();const n=Oe[t];if(!n){console.warn(`未定义的设置项: ${t}`);return}this.settingsCache[t]=n.default,this.saveSettings()}resetAllSettings(){this.settingsCache={};for(const[t,n]of Object.entries(Oe))this.settingsCache[t]=n.default;this.saveSettings()}watchSettings(t){if(typeof window>"u")return()=>{};const n=a=>{a.key===Ut&&(this.settingsCache=JSON.parse(a.newValue),t(this.settingsCache))};return window.addEventListener("storage",n),()=>window.removeEventListener("storage",n)}getSettingDefinition(t){return Oe[t]||null}exportSettingsAsKeyValue(){this.isInitialized||this.init();const t={};for(const n in Oe)t[n]=this.getSetting(n);return t}}const Ve=new ds;typeof window<"u"&&Ve.init();const In=e=>Ve.getSetting(e),fs=(e,t)=>Ve.setSetting(e,t),vs=e=>Ve.resetSetting(e),ms=()=>Ve.resetAllSettings(),gs=e=>Ve.watchSettings(e),ys=e=>Ve.getSettingDefinition(e),hs=()=>Ve.exportSettingsAsKeyValue(),Mo=Object.freeze(Object.defineProperty({__proto__:null,SettingsManager:Ve,exportSettingsAsKeyValue:hs,getSetting:In,getSettingDefinition:ys,requestNotificationPermission:us,requestPersistentStorage:cs,resetAllSettings:ms,resetSetting:vs,setSetting:fs,settingsDefinitions:Oe,watchSettings:gs},Symbol.toStringTag,{value:"Module"}));class bs{constructor(){this.logs=[]}async addLog(t){return this.logs.push(t),this.logs.length>100&&this.logs.shift(),!0}async getLogs(t=20){return this.logs.slice(-t).reverse()}}const It=new bs,we=[];let Pt=null,pe=null;const ct={SUCCESS:"success",ERROR:"error",INFO:"info",WARNING:"warning"},Ss={timeout:3e3,showSnackbar:!0,addToLog:!0};async function _t(e,t,n="",a={}){const i={...Ss,...a},s={id:Date.now()+Math.random(),type:e,title:t,content:n.substring(0,500),timestamp:new Date};if(i.addToLog)try{for(await It.addLog(s),we.unshift(s);we.length>In("message.maxActiveMessages");)we.pop();pe==null||pe(we)}catch(l){console.error("保存日志失败:",l)}return i.showSnackbar&&(Pt==null||Pt(s)),s}function ps(e,t){let n=null;return function(...a){n&&clearTimeout(n),n=setTimeout(()=>{e.apply(this,a)},t)}}const Ke={install:e=>{e.config.globalProperties.$message={success:(t,n,a)=>_t(ct.SUCCESS,t,n,a),error:(t,n,a)=>_t(ct.ERROR,t,n,a),info:(t,n,a)=>_t(ct.INFO,t,n,a),warning:(t,n,a)=>_t(ct.WARNING,t,n,a)}},onSnackbar:e=>{Pt=e},onLog:e=>{pe=e},getMessages:async()=>{try{return await It.getLogs()}catch(e){return console.error("获取日志失败:",e),[...we]}},clearMessages:async()=>{try{await It.clearLogs(),we.length=0,pe==null||pe(we)}catch(e){console.error("清除日志失败:",e)}},MessageType:ct,markAsRead:()=>{},deleteMessage:async e=>{try{await It.deleteLog(e);const t=we.findIndex(n=>n.id===e);t!==-1&&we.splice(t,1),pe==null||pe(we)}catch(t){console.error("删除消息失败:",t)}},getUnreadCount:()=>0,debounce:ps},Pa=(e,t)=>{const n=e.__vccOpts||e;for(const[a,i]of t)n[a]=i;return n},st=T({border:[Boolean,Number,String]},"border");function lt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{borderClasses:_(()=>{const a=e.border;return a===!0||a===""?`${t}--border`:typeof a=="string"||a===0?String(a).split(" ").map(i=>`border-${i}`):[]})}}const ws=[null,"default","comfortable","compact"],He=T({density:{type:String,default:"default",validator:e=>ws.includes(e)}},"density");function ot(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{densityClasses:k(()=>`${t}--density-${e.density}`)}}const bt=T({elevation:{type:[Number,String],validator(e){const t=parseInt(e);return!isNaN(t)&&t>=0&&t<=24}}},"elevation");function St(e){return{elevationClasses:k(()=>{const n=sn(e)?e.value:e.elevation;return n==null?[]:[`elevation-${n}`]})}}const Le=T({rounded:{type:[Boolean,Number,String],default:void 0},tile:Boolean},"rounded");function Te(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{roundedClasses:_(()=>{const a=sn(e)?e.value:e.rounded,i=sn(e)?!1:e.tile,s=[];if(i||a===!1)s.push("rounded-0");else if(a===!0||a==="")s.push(`${t}--rounded`);else if(typeof a=="string"||a===0)for(const l of String(a).split(" "))s.push(`rounded-${l}`);return s})}}const oe=T({tag:{type:[String,Object,Function],default:"div"}},"tag");function Pn(e){return yn(()=>{const{class:t,style:n}=Cs(e);return{colorClasses:t,colorStyles:n}})}function et(e){const{colorClasses:t,colorStyles:n}=Pn(()=>({text:se(e)}));return{textColorClasses:t,textColorStyles:n}}function Je(e){const{colorClasses:t,colorStyles:n}=Pn(()=>({background:se(e)}));return{backgroundColorClasses:t,backgroundColorStyles:n}}function ks(e){return{text:typeof e.text=="string"?e.text.replace(/^text-/,""):e.text,background:typeof e.background=="string"?e.background.replace(/^bg-/,""):e.background}}function Cs(e){const t=ks(se(e)),n=[],a={};if(t.background)if(Wn(t.background)){if(a.backgroundColor=t.background,!t.text&&hi(t.background)){const i=bi(t.background);if(i.a==null||i.a===1){const s=Si(i);a.color=s,a.caretColor=s}}}else n.push(`bg-${t.background}`);return t.text&&(Wn(t.text)?(a.color=t.text,a.caretColor=t.text):n.push(`text-${t.text}`)),{class:n,style:a}}const _s=["elevated","flat","tonal","outlined","text","plain"];function pt(e,t){return P(Be,null,[e&&P("span",{key:"overlay",class:H(`${t}__overlay`)},null),P("span",{key:"underlay",class:H(`${t}__underlay`)},null)])}const Ge=T({color:String,variant:{type:String,default:"elevated",validator:e=>_s.includes(e)}},"variant");function wt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();const n=k(()=>{const{variant:s}=se(e);return`${t}--variant-${s}`}),{colorClasses:a,colorStyles:i}=Pn(()=>{const{variant:s,color:l}=se(e);return{[["elevated","flat"].includes(s)?"background":"text"]:l}});return{colorClasses:a,colorStyles:i,variantClasses:n}}const Aa=T({baseColor:String,divided:Boolean,direction:{type:String,default:"horizontal"},...st(),...ee(),...He(),...bt(),...Le(),...oe(),...fe(),...Ge()},"VBtnGroup"),Qn=G()({name:"VBtnGroup",props:Aa(),setup(e,t){let{slots:n}=t;const{themeClasses:a}=ye(e),{densityClasses:i}=ot(e),{borderClasses:s}=lt(e),{elevationClasses:l}=St(e),{roundedClasses:o}=Te(e);$t({VBtn:{height:k(()=>e.direction==="horizontal"?"auto":null),baseColor:k(()=>e.baseColor),color:k(()=>e.color),density:k(()=>e.density),flat:!0,variant:k(()=>e.variant)}}),J(()=>b(e.tag,{class:H(["v-btn-group",`v-btn-group--${e.direction}`,{"v-btn-group--divided":e.divided},a.value,s.value,i.value,l.value,o.value,e.class]),style:Q(e.style)},n))}}),xs=T({modelValue:{type:null,default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String,disabled:Boolean},"group"),Is=T({value:null,disabled:Boolean,selectedClass:String},"group-item");function Ps(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const a=xe("useGroupItem");if(!a)throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");const i=pn();qe(Symbol.for(`${t.description}:id`),i);const s=Ee(t,null);if(!s){if(!n)return s;throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`)}const l=k(()=>e.value),o=_(()=>!!(s.disabled.value||e.disabled));function r(){s==null||s.register({id:i,value:l,disabled:o},a)}function u(){s==null||s.unregister(i)}r(),je(()=>u());const c=_(()=>s.isSelected(i)),m=_(()=>s.items.value[0].id===i),v=_(()=>s.items.value[s.items.value.length-1].id===i),d=_(()=>c.value&&[s.selectedClass.value,e.selectedClass]);return W(c,y=>{a.emit("group:selected",{value:y})},{flush:"sync"}),{id:i,isSelected:c,isFirst:m,isLast:v,toggle:()=>s.select(i,!c.value),select:y=>s.select(i,y),selectedClass:d,value:l,disabled:o,group:s,register:r,unregister:u}}function As(e,t){let n=!1;const a=vt([]),i=Pe(e,"modelValue",[],v=>v===void 0?[]:Ea(a,v===null?[null]:hn(v)),v=>{const d=Vs(a,v);return e.multiple?d:d[0]}),s=xe("useGroup");function l(v,d){const y=v,f=Symbol.for(`${t.description}:id`),S=pi(f,s==null?void 0:s.vnode).indexOf(d);Ki(y.value)===void 0&&(y.value=S,y.useIndexAsValue=!0),S>-1?a.splice(S,0,y):a.push(y)}function o(v){if(n)return;r();const d=a.findIndex(y=>y.id===v);a.splice(d,1)}function r(){const v=a.find(d=>!d.disabled);v&&e.mandatory==="force"&&!i.value.length&&(i.value=[v.id])}it(()=>{r()}),je(()=>{n=!0}),Ui(()=>{for(let v=0;vf.id===v);if(!(d&&(y!=null&&y.disabled)))if(e.multiple){const f=i.value.slice(),p=f.findIndex(I=>I===v),S=~p;if(d=d??!S,S&&e.mandatory&&f.length<=1||!S&&e.max!=null&&f.length+1>e.max)return;p<0&&d?f.push(v):p>=0&&!d&&f.splice(p,1),i.value=f}else{const f=i.value.includes(v);if(e.mandatory&&f||!f&&!d)return;i.value=d??!f?[v]:[]}}function c(v){if(e.multiple,i.value.length){const d=i.value[0],y=a.findIndex(S=>S.id===d);let f=(y+v)%a.length,p=a[f];for(;p.disabled&&f!==y;)f=(f+v)%a.length,p=a[f];if(p.disabled)return;i.value=[a[f].id]}else{const d=a.find(y=>!y.disabled);d&&(i.value=[d.id])}}const m={register:l,unregister:o,selected:i,select:u,disabled:k(()=>e.disabled),prev:()=>c(a.length-1),next:()=>c(1),isSelected:v=>i.value.includes(v),selectedClass:k(()=>e.selectedClass),items:k(()=>a),getItemIndex:v=>Es(a,v)};return qe(t,m),m}function Es(e,t){const n=Ea(e,[t]);return n.length?e.findIndex(a=>a.id===n[0]):-1}function Ea(e,t){const n=[];return t.forEach(a=>{const i=e.find(l=>Ye(a,l.value)),s=e[a];(i==null?void 0:i.value)!==void 0?n.push(i.id):s!=null&&s.useIndexAsValue&&n.push(s.id)}),n}function Vs(e,t){const n=[];return t.forEach(a=>{const i=e.findIndex(s=>s.id===a);if(~i){const s=e[i];n.push(s.value!==void 0?s.value:i)}}),n}const Va=Symbol.for("vuetify:v-btn-toggle"),Ls=T({...Aa(),...xs()},"VBtnToggle"),Fo=G()({name:"VBtnToggle",props:Ls(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isSelected:a,next:i,prev:s,select:l,selected:o}=As(e,Va);return J(()=>{const r=Qn.filterProps(e);return b(Qn,Y({class:["v-btn-toggle",e.class]},r,{style:e.style}),{default:()=>{var u;return[(u=n.default)==null?void 0:u.call(n,{isSelected:a,next:i,prev:s,select:l,selected:o})]}})}),{next:i,prev:s,select:l}}}),Ts=T({defaults:Object,disabled:Boolean,reset:[Number,String],root:[Boolean,String],scoped:Boolean},"VDefaultsProvider"),ge=G(!1)({name:"VDefaultsProvider",props:Ts(),setup(e,t){let{slots:n}=t;const{defaults:a,disabled:i,reset:s,root:l,scoped:o}=Xi(e);return $t(a,{reset:s,root:l,scoped:o,disabled:i}),()=>{var r;return(r=n.default)==null?void 0:r.call(n)}}}),Os=["x-small","small","default","large","x-large"],Mt=T({size:{type:[String,Number],default:"default"}},"size");function Ft(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return yn(()=>{const n=e.size;let a,i;return wi(Os,n)?a=`${t}--size-${n}`:n&&(i={width:B(n),height:B(n)}),{sizeClasses:a,sizeStyles:i}})}const Bs=T({color:String,disabled:Boolean,start:Boolean,end:Boolean,icon:le,opacity:[String,Number],...ee(),...Mt(),...oe({tag:"i"}),...fe()},"VIcon"),_e=G()({name:"VIcon",props:Bs(),setup(e,t){let{attrs:n,slots:a}=t;const i=z(),{themeClasses:s}=ha(),{iconData:l}=ki(()=>i.value||e.icon),{sizeClasses:o}=Ft(e),{textColorClasses:r,textColorStyles:u}=et(()=>e.color);return J(()=>{var v,d;const c=(v=a.default)==null?void 0:v.call(a);c&&(i.value=(d=Ci(c).filter(y=>y.type===Yi&&y.children&&typeof y.children=="string")[0])==null?void 0:d.children);const m=!!(n.onClick||n.onClickOnce);return b(l.value.component,{tag:e.tag,icon:l.value.icon,class:H(["v-icon","notranslate",s.value,o.value,r.value,{"v-icon--clickable":m,"v-icon--disabled":e.disabled,"v-icon--start":e.start,"v-icon--end":e.end},e.class]),style:Q([{"--v-icon-opacity":e.opacity},o.value?void 0:{fontSize:B(e.size),height:B(e.size),width:B(e.size)},u.value,e.style]),role:m?"button":void 0,"aria-hidden":!m,tabindex:m?e.disabled?-1:0:void 0},{default:()=>[c]})}),{}}});function La(e,t){const n=q(),a=z(!1);if(bn){const i=new IntersectionObserver(s=>{a.value=!!s.find(l=>l.isIntersecting)},t);ve(()=>{i.disconnect()}),W(n,(s,l)=>{l&&(i.unobserve(l),a.value=!1),s&&i.observe(s)},{flush:"post"})}return{intersectionRef:n,isIntersecting:a}}const Rs=T({reveal:{type:[Boolean,Object],default:!1}},"reveal");function Ns(e){const n=k(()=>typeof e.reveal=="object"?Math.max(0,Number(e.reveal.duration??900)):900),a=z(e.reveal?"initial":"disabled");return it(async()=>{e.reveal&&(a.value="initial",await new Promise(i=>requestAnimationFrame(i)),a.value="pending",await new Promise(i=>setTimeout(i,n.value)),a.value="done")}),{duration:n,state:a}}const $s=T({bgColor:String,color:String,indeterminate:[Boolean,String],rounded:Boolean,modelValue:{type:[Number,String],default:0},rotate:{type:[Number,String],default:0},width:{type:[Number,String],default:4},...ee(),...Rs(),...Mt(),...oe({tag:"div"}),...fe()},"VProgressCircular"),Ds=G()({name:"VProgressCircular",props:$s(),setup(e,t){let{slots:n}=t;const a=20,i=2*Math.PI*a,s=q(),{themeClasses:l}=ye(e),{sizeClasses:o,sizeStyles:r}=Ft(e),{textColorClasses:u,textColorStyles:c}=et(()=>e.color),{textColorClasses:m,textColorStyles:v}=et(()=>e.bgColor),{intersectionRef:d,isIntersecting:y}=La(),{resizeRef:f,contentRect:p}=ba(),{state:S,duration:I}=Ns(e),L=k(()=>S.value==="initial"?0:Ze(parseFloat(e.modelValue),0,100)),w=k(()=>Number(e.width)),h=k(()=>r.value?Number(e.size):p.value?p.value.width:Math.max(w.value,32)),C=k(()=>a/(1-w.value/h.value)*2),x=k(()=>w.value/h.value*C.value),g=k(()=>{const M=(100-L.value)/100*i;return e.rounded&&L.value>0&&L.value<100?B(Math.min(i-.01,M+x.value)):B(M)}),R=_(()=>{const M=Number(e.rotate);return e.rounded?M+x.value/2/i*360:M});return Re(()=>{d.value=s.value,f.value=s.value}),J(()=>b(e.tag,{ref:s,class:H(["v-progress-circular",{"v-progress-circular--indeterminate":!!e.indeterminate,"v-progress-circular--visible":y.value,"v-progress-circular--disable-shrink":e.indeterminate&&(e.indeterminate==="disable-shrink"||Vt()),"v-progress-circular--revealing":["initial","pending"].includes(S.value)},l.value,o.value,u.value,e.class]),style:Q([r.value,c.value,{"--progress-reveal-duration":`${I.value}ms`},e.style]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.indeterminate?void 0:L.value},{default:()=>[P("svg",{style:{transform:`rotate(calc(-90deg + ${R.value}deg))`},xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${C.value} ${C.value}`},[P("circle",{class:H(["v-progress-circular__underlay",m.value]),style:Q(v.value),fill:"transparent",cx:"50%",cy:"50%",r:a,"stroke-width":x.value,"stroke-dasharray":i,"stroke-dashoffset":0},null),P("circle",{class:"v-progress-circular__overlay",fill:"transparent",cx:"50%",cy:"50%",r:a,"stroke-width":x.value,"stroke-dasharray":i,"stroke-dashoffset":g.value,"stroke-linecap":e.rounded?"round":void 0},null)]),n.default&&P("div",{class:"v-progress-circular__content"},[n.default({value:L.value})])]})),{}}}),rt=T({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function ut(e){return{dimensionStyles:_(()=>{const n={},a=B(e.height),i=B(e.maxHeight),s=B(e.maxWidth),l=B(e.minHeight),o=B(e.minWidth),r=B(e.width);return a!=null&&(n.height=a),i!=null&&(n.maxHeight=i),s!=null&&(n.maxWidth=s),l!=null&&(n.minHeight=l),o!=null&&(n.minWidth=o),r!=null&&(n.width=r),n})}}const Zn={center:"center",top:"bottom",bottom:"top",left:"right",right:"left"},zt=T({location:String},"location");function An(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2?arguments[2]:void 0;const{isRtl:a}=Dt();return{locationStyles:_(()=>{if(!e.location)return{};const{side:s,align:l}=en(e.location.split(" ").length>1?e.location:`${e.location} center`,a.value);function o(u){return n?n(u):0}const r={};return s!=="center"&&(t?r[Zn[s]]=`calc(100% - ${o(s)}px)`:r[s]=0),l!=="center"?t?r[Zn[l]]=`calc(100% - ${o(l)}px)`:r[l]=0:(s==="center"?r.top=r.left="50%":r[{top:"left",bottom:"left",left:"top",right:"top"}[s]]="50%",r.transform={top:"translateX(-50%)",bottom:"translateX(-50%)",left:"translateY(-50%)",right:"translateY(-50%)",center:"translate(-50%, -50%)"}[s]),r})}}const Ms=T({chunkCount:{type:[Number,String],default:null},chunkWidth:{type:[Number,String],default:null},chunkGap:{type:[Number,String],default:4}},"chunks");function Fs(e,t){const n=k(()=>!!e.chunkCount||!!e.chunkWidth),a=_(()=>{const o=se(t);if(!o)return 0;if(!e.chunkCount)return Number(e.chunkWidth);const r=Number(e.chunkCount);return(o-Number(e.chunkGap)*(r-1))/r}),i=k(()=>Number(e.chunkGap)),s=_(()=>{if(!n.value)return{};const o=B(i.value),r=B(a.value);return{maskRepeat:"repeat-x",maskImage:`linear-gradient(90deg, #000, #000 ${r}, transparent ${r}, transparent)`,maskSize:`calc(${r} + ${o}) 100%`}});function l(o){const r=se(t);if(!r)return o;const u=100*i.value/r,c=100*(a.value+i.value)/r,m=Math.floor((o+u)/c);return Ze(0,m*c-u/2,100)}return{hasChunks:n,chunksMaskStyles:s,snapValueToChunk:l}}const zs=T({absolute:Boolean,active:{type:Boolean,default:!0},bgColor:String,bgOpacity:[Number,String],bufferValue:{type:[Number,String],default:0},bufferColor:String,bufferOpacity:[Number,String],clickable:Boolean,color:String,height:{type:[Number,String],default:4},indeterminate:Boolean,max:{type:[Number,String],default:100},modelValue:{type:[Number,String],default:0},opacity:[Number,String],reverse:Boolean,stream:Boolean,striped:Boolean,roundedBar:Boolean,...Ms(),...ee(),...zt({location:"top"}),...Le(),...oe(),...fe()},"VProgressLinear"),Ta=G()({name:"VProgressLinear",props:zs(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const a=q(),i=Pe(e,"modelValue"),{isRtl:s,rtlClasses:l}=Dt(),{themeClasses:o}=ye(e),{locationStyles:r}=An(e),{textColorClasses:u,textColorStyles:c}=et(()=>e.color),{backgroundColorClasses:m,backgroundColorStyles:v}=Je(()=>e.bgColor||e.color),{backgroundColorClasses:d,backgroundColorStyles:y}=Je(()=>e.bufferColor||e.bgColor||e.color),{backgroundColorClasses:f,backgroundColorStyles:p}=Je(()=>e.color),{roundedClasses:S}=Te(e),{intersectionRef:I,isIntersecting:L}=La(),w=_(()=>parseFloat(e.max)),h=_(()=>parseFloat(e.height)),C=_(()=>Ze(parseFloat(e.bufferValue)/w.value*100,0,100)),x=_(()=>Ze(parseFloat(i.value)/w.value*100,0,100)),g=_(()=>s.value!==e.reverse),R=_(()=>e.indeterminate?"fade-transition":"slide-x-transition"),M=z(0),{hasChunks:E,chunksMaskStyles:V,snapValueToChunk:A}=Fs(e,M);ht(E,()=>{const{resizeRef:X}=ba(te=>M.value=te[0].contentRect.width);Re(()=>X.value=a.value)});const N=_(()=>E.value?A(C.value):C.value),O=_(()=>E.value?A(x.value):x.value);function U(X){if(!I.value)return;const{left:te,right:he,width:K}=I.value.getBoundingClientRect(),$=g.value?K-X.clientX+(he-K):X.clientX-te;i.value=Math.round($/K*w.value)}return Re(()=>{I.value=a.value}),J(()=>b(e.tag,{ref:a,class:H(["v-progress-linear",{"v-progress-linear--absolute":e.absolute,"v-progress-linear--active":e.active&&L.value,"v-progress-linear--reverse":g.value,"v-progress-linear--rounded":e.rounded,"v-progress-linear--rounded-bar":e.roundedBar,"v-progress-linear--striped":e.striped,"v-progress-linear--clickable":e.clickable},S.value,o.value,l.value,e.class]),style:Q([{bottom:e.location==="bottom"?0:void 0,top:e.location==="top"?0:void 0,height:e.active?B(h.value):0,"--v-progress-linear-height":B(h.value),...e.absolute?r.value:{}},V.value,e.style]),role:"progressbar","aria-hidden":e.active?"false":"true","aria-valuemin":"0","aria-valuemax":e.max,"aria-valuenow":e.indeterminate?void 0:Math.min(parseFloat(i.value),w.value),onClick:e.clickable&&U},{default:()=>[e.stream&&P("div",{key:"stream",class:H(["v-progress-linear__stream",u.value]),style:{...c.value,[g.value?"left":"right"]:B(-h.value),borderTop:`${B(h.value/2)} dotted`,opacity:parseFloat(e.bufferOpacity),top:`calc(50% - ${B(h.value/4)})`,width:B(100-C.value,"%"),"--v-progress-linear-stream-to":B(h.value*(g.value?1:-1))}},null),P("div",{class:H(["v-progress-linear__background",m.value]),style:Q([v.value,{opacity:parseFloat(e.bgOpacity),width:e.stream?0:void 0}])},null),P("div",{class:H(["v-progress-linear__buffer",d.value]),style:Q([y.value,{opacity:parseFloat(e.bufferOpacity),width:B(N.value,"%")}])},null),b(Ne,{name:R.value},{default:()=>[e.indeterminate?P("div",{class:"v-progress-linear__indeterminate"},[["long","short"].map(X=>P("div",{key:X,class:H(["v-progress-linear__indeterminate",X,f.value]),style:Q(p.value)},null))]):P("div",{class:H(["v-progress-linear__determinate",f.value]),style:Q([p.value,{width:B(O.value,"%")}])},null)]}),n.default&&P("div",{class:"v-progress-linear__content"},[n.default({value:x.value,buffer:C.value})])]})),{}}}),Oa=T({loading:[Boolean,String]},"loader");function Ba(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{loaderClasses:k(()=>({[`${t}--loading`]:e.loading}))}}function Ws(e,t){var a;let{slots:n}=t;return P("div",{class:H(`${e.name}__loader`)},[((a=n.default)==null?void 0:a.call(n,{color:e.color,isActive:e.active}))||b(Ta,{absolute:e.absolute,active:e.active,color:e.color,height:"2",indeterminate:!0},null)])}const qs=["static","relative","fixed","absolute","sticky"],En=T({position:{type:String,validator:e=>qs.includes(e)}},"position");function Vn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{positionClasses:k(()=>e.position?`${t}--${e.position}`:void 0)}}function js(){const e=xe("useRoute");return _(()=>{var t;return(t=e==null?void 0:e.proxy)==null?void 0:t.$route})}function Hs(){var e,t;return(t=(e=xe("useRouter"))==null?void 0:e.proxy)==null?void 0:t.$router}function Ln(e,t){const n=Ca("RouterLink"),a=k(()=>!!(e.href||e.to)),i=_(()=>(a==null?void 0:a.value)||qn(t,"click")||qn(e,"click"));if(typeof n=="string"||!("useLink"in n)){const m=k(()=>e.href);return{isLink:a,isRouterLink:k(()=>!1),isClickable:i,href:m,linkProps:vt({href:m}),route:k(()=>{}),navigate:k(()=>{})}}const s=n.useLink({to:k(()=>e.to||""),replace:k(()=>e.replace)}),l=_(()=>e.to?s:void 0),o=js(),r=_(()=>{var m,v,d;return l.value?e.exact?o.value?((d=l.value.isExactActive)==null?void 0:d.value)&&Ye(l.value.route.value.query,o.value.query):((v=l.value.isExactActive)==null?void 0:v.value)??!1:((m=l.value.isActive)==null?void 0:m.value)??!1:!1}),u=_(()=>{var m;return e.to?(m=l.value)==null?void 0:m.route.value.href:e.href}),c=k(()=>!!e.to);return{isLink:a,isRouterLink:c,isClickable:i,isActive:r,route:k(()=>{var m;return(m=l.value)==null?void 0:m.route.value}),navigate:k(()=>{var m;return(m=l.value)==null?void 0:m.navigate}),href:u,linkProps:vt({href:u,"aria-current":k(()=>r.value?"page":void 0),"aria-disabled":k(()=>e.disabled&&a.value?"true":void 0),tabindex:k(()=>e.disabled&&a.value?"-1":void 0)})}}const Tn=T({href:String,replace:Boolean,to:[String,Object],exact:Boolean},"router");let Kt=!1;function Gs(e,t){let n=!1,a,i;Ae&&(e!=null&&e.beforeEach)&&(ce(()=>{window.addEventListener("popstate",s),a=e.beforeEach((l,o,r)=>{Kt?n?t(r):r():setTimeout(()=>n?t(r):r()),Kt=!0}),i=e==null?void 0:e.afterEach(()=>{Kt=!1})}),ve(()=>{window.removeEventListener("popstate",s),a==null||a(),i==null||i()}));function s(l){var o;(o=l.state)!=null&&o.replaced||(n=!0,setTimeout(()=>n=!1))}}function Us(e,t){W(()=>{var n;return(n=e.isActive)==null?void 0:n.value},n=>{e.isLink.value&&n!=null&&t&&ce(()=>{t(n)})},{immediate:!0})}const on=Symbol("rippleStop"),Ks=80;function ea(e,t){e.style.transform=t,e.style.webkitTransform=t}function rn(e){return e.constructor.name==="TouchEvent"}function Ra(e){return e.constructor.name==="KeyboardEvent"}const Xs=function(e,t){var m;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=0,i=0;if(!Ra(e)){const v=t.getBoundingClientRect(),d=rn(e)?e.touches[e.touches.length-1]:e;a=d.clientX-v.left,i=d.clientY-v.top}let s=0,l=.3;(m=t._ripple)!=null&&m.circle?(l=.15,s=t.clientWidth/2,s=n.center?s:s+Math.sqrt((a-s)**2+(i-s)**2)/4):s=Math.sqrt(t.clientWidth**2+t.clientHeight**2)/2;const o=`${(t.clientWidth-s*2)/2}px`,r=`${(t.clientHeight-s*2)/2}px`,u=n.center?o:`${a-s}px`,c=n.center?r:`${i-s}px`;return{radius:s,scale:l,x:u,y:c,centerX:o,centerY:r}},Tt={show(e,t){var d;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!((d=t==null?void 0:t._ripple)!=null&&d.enabled))return;const a=document.createElement("span"),i=document.createElement("span");a.appendChild(i),a.className="v-ripple__container",n.class&&(a.className+=` ${n.class}`);const{radius:s,scale:l,x:o,y:r,centerX:u,centerY:c}=Xs(e,t,n),m=`${s*2}px`;i.className="v-ripple__animation",i.style.width=m,i.style.height=m,t.appendChild(a);const v=window.getComputedStyle(t);v&&v.position==="static"&&(t.style.position="relative",t.dataset.previousPosition="static"),i.classList.add("v-ripple__animation--enter"),i.classList.add("v-ripple__animation--visible"),ea(i,`translate(${o}, ${r}) scale3d(${l},${l},${l})`),i.dataset.activated=String(performance.now()),requestAnimationFrame(()=>{requestAnimationFrame(()=>{i.classList.remove("v-ripple__animation--enter"),i.classList.add("v-ripple__animation--in"),ea(i,`translate(${u}, ${c}) scale3d(1,1,1)`)})})},hide(e){var s;if(!((s=e==null?void 0:e._ripple)!=null&&s.enabled))return;const t=e.getElementsByClassName("v-ripple__animation");if(t.length===0)return;const n=Array.from(t).findLast(l=>!l.dataset.isHiding);if(n)n.dataset.isHiding="true";else return;const a=performance.now()-Number(n.dataset.activated),i=Math.max(250-a,0);setTimeout(()=>{n.classList.remove("v-ripple__animation--in"),n.classList.add("v-ripple__animation--out"),setTimeout(()=>{var o;e.getElementsByClassName("v-ripple__animation").length===1&&e.dataset.previousPosition&&(e.style.position=e.dataset.previousPosition,delete e.dataset.previousPosition),((o=n.parentNode)==null?void 0:o.parentNode)===e&&e.removeChild(n.parentNode)},300)},i)}};function Na(e){return typeof e>"u"||!!e}function mt(e){const t={},n=e.currentTarget;if(!(!(n!=null&&n._ripple)||n._ripple.touched||e[on])){if(e[on]=!0,rn(e))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(t.center=n._ripple.centered||Ra(e),n._ripple.class&&(t.class=n._ripple.class),rn(e)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=()=>{Tt.show(e,n,t)},n._ripple.showTimer=window.setTimeout(()=>{var a;(a=n==null?void 0:n._ripple)!=null&&a.showTimerCommit&&(n._ripple.showTimerCommit(),n._ripple.showTimerCommit=null)},Ks)}else Tt.show(e,n,t)}}function Ot(e){e[on]=!0}function de(e){const t=e.currentTarget;if(t!=null&&t._ripple){if(window.clearTimeout(t._ripple.showTimer),e.type==="touchend"&&t._ripple.showTimerCommit){t._ripple.showTimerCommit(),t._ripple.showTimerCommit=null,t._ripple.showTimer=window.setTimeout(()=>{de(e)});return}window.setTimeout(()=>{t._ripple&&(t._ripple.touched=!1)}),Tt.hide(t)}}function $a(e){const t=e.currentTarget;t!=null&&t._ripple&&(t._ripple.showTimerCommit&&(t._ripple.showTimerCommit=null),window.clearTimeout(t._ripple.showTimer))}let gt=!1;function Ys(e,t){!gt&&t.includes(e.key)&&(gt=!0,mt(e))}function Da(e){gt=!1,de(e)}function Ma(e){gt&&(gt=!1,de(e))}function Fa(e,t,n){const{value:a,modifiers:i}=t,s=Na(a);s||Tt.hide(e),e._ripple=e._ripple??{},e._ripple.enabled=s,e._ripple.centered=i.center,e._ripple.circle=i.circle;const l=tn(a)?a:{};l.class&&(e._ripple.class=l.class);const o=l.keys??["Enter","Space"];if(e._ripple.keyDownHandler=r=>Ys(r,o),s&&!n){if(i.stop){e.addEventListener("touchstart",Ot,{passive:!0}),e.addEventListener("mousedown",Ot);return}e.addEventListener("touchstart",mt,{passive:!0}),e.addEventListener("touchend",de,{passive:!0}),e.addEventListener("touchmove",$a,{passive:!0}),e.addEventListener("touchcancel",de),e.addEventListener("mousedown",mt),e.addEventListener("mouseup",de),e.addEventListener("mouseleave",de),e.addEventListener("keydown",e._ripple.keyDownHandler),e.addEventListener("keyup",Da),e.addEventListener("blur",Ma),e.addEventListener("dragstart",de,{passive:!0})}else!s&&n&&za(e)}function za(e){var t;e.removeEventListener("touchstart",Ot),e.removeEventListener("mousedown",Ot),e.removeEventListener("touchstart",mt),e.removeEventListener("touchend",de),e.removeEventListener("touchmove",$a),e.removeEventListener("touchcancel",de),e.removeEventListener("mousedown",mt),e.removeEventListener("mouseup",de),e.removeEventListener("mouseleave",de),(t=e._ripple)!=null&&t.keyDownHandler&&e.removeEventListener("keydown",e._ripple.keyDownHandler),e.removeEventListener("keyup",Da),e.removeEventListener("blur",Ma),e.removeEventListener("dragstart",de)}function Js(e,t){Fa(e,t,!1)}function Qs(e){za(e),delete e._ripple}function Zs(e,t){if(t.value===t.oldValue)return;const n=Na(t.oldValue);Fa(e,t,n)}const yt={mounted:Js,unmounted:Qs,updated:Zs},el=T({active:{type:Boolean,default:void 0},activeColor:String,baseColor:String,symbol:{type:null,default:Va},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:le,appendIcon:le,block:Boolean,readonly:Boolean,slim:Boolean,stacked:Boolean,spaced:String,ripple:{type:[Boolean,Object],default:!0},text:{type:[String,Number,Boolean],default:void 0},...st(),...ee(),...He(),...rt(),...bt(),...Is(),...Oa(),...zt(),...En(),...Le(),...Tn(),...Mt(),...oe({tag:"button"}),...fe(),...Ge({variant:"elevated"})},"VBtn"),Wa=G()({name:"VBtn",props:el(),emits:{"group:selected":e=>!0},setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{borderClasses:s}=lt(e),{densityClasses:l}=ot(e),{dimensionStyles:o}=ut(e),{elevationClasses:r}=St(e),{loaderClasses:u}=Ba(e),{locationStyles:c}=An(e),{positionClasses:m}=Vn(e),{roundedClasses:v}=Te(e),{sizeClasses:d,sizeStyles:y}=Ft(e),f=Ps(e,e.symbol,!1),p=Ln(e,n),S=_(()=>{var E;return e.active!==void 0?e.active:p.isRouterLink.value?(E=p.isActive)==null?void 0:E.value:f==null?void 0:f.isSelected.value}),I=k(()=>S.value?e.activeColor??e.color:e.color),L=_(()=>{var V,A;return{color:(f==null?void 0:f.isSelected.value)&&(!p.isLink.value||((V=p.isActive)==null?void 0:V.value))||!f||((A=p.isActive)==null?void 0:A.value)?I.value??e.baseColor:e.baseColor,variant:e.variant}}),{colorClasses:w,colorStyles:h,variantClasses:C}=wt(L),x=_(()=>(f==null?void 0:f.disabled.value)||e.disabled),g=k(()=>e.variant==="elevated"&&!(e.disabled||e.flat||e.border)),R=_(()=>{if(!(e.value===void 0||typeof e.value=="symbol"))return Object(e.value)===e.value?JSON.stringify(e.value,null,0):e.value});function M(E){var V,A;x.value||p.isLink.value&&(E.metaKey||E.ctrlKey||E.shiftKey||E.button!==0||n.target==="_blank")||(p.isRouterLink.value?(A=(V=p.navigate).value)==null||A.call(V,E):f==null||f.toggle())}return Us(p,f==null?void 0:f.select),J(()=>{const E=p.isLink.value?"a":e.tag,V=!!(e.prependIcon||a.prepend),A=!!(e.appendIcon||a.append),N=!!(e.icon&&e.icon!==!0);return ze(b(E,Y(p.linkProps,{type:E==="a"?void 0:"button",class:["v-btn",f==null?void 0:f.selectedClass.value,{"v-btn--active":S.value,"v-btn--block":e.block,"v-btn--disabled":x.value,"v-btn--elevated":g.value,"v-btn--flat":e.flat,"v-btn--icon":!!e.icon,"v-btn--loading":e.loading,"v-btn--readonly":e.readonly,"v-btn--slim":e.slim,"v-btn--stacked":e.stacked},e.spaced?["v-btn--spaced",`v-btn--spaced-${e.spaced}`]:[],i.value,s.value,w.value,l.value,r.value,u.value,m.value,v.value,d.value,C.value,e.class],style:[h.value,o.value,c.value,y.value,e.style],"aria-busy":e.loading?!0:void 0,disabled:x.value&&E!=="a"||void 0,tabindex:e.loading||e.readonly?-1:void 0,onClick:M,value:R.value}),{default:()=>{var O;return[pt(!0,"v-btn"),!e.icon&&V&&P("span",{key:"prepend",class:"v-btn__prepend"},[a.prepend?b(ge,{key:"prepend-defaults",disabled:!e.prependIcon,defaults:{VIcon:{icon:e.prependIcon}}},a.prepend):b(_e,{key:"prepend-icon",icon:e.prependIcon},null)]),P("span",{class:"v-btn__content","data-no-activator":""},[!a.default&&N?b(_e,{key:"content-icon",icon:e.icon},null):b(ge,{key:"content-defaults",disabled:!N,defaults:{VIcon:{icon:e.icon}}},{default:()=>{var U;return[((U=a.default)==null?void 0:U.call(a))??Ce(e.text)]}})]),!e.icon&&A&&P("span",{key:"append",class:"v-btn__append"},[a.append?b(ge,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VIcon:{icon:e.appendIcon}}},a.append):b(_e,{key:"append-icon",icon:e.appendIcon},null)]),!!e.loading&&P("span",{key:"loader",class:"v-btn__loader"},[((O=a.loader)==null?void 0:O.call(a))??b(Ds,{color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0,width:"2"},null)])]}}),[[yt,!x.value&&e.ripple,"",{center:!!e.icon}]])}),{group:f}}});function Xt(e,t){return{x:e.x+t.x,y:e.y+t.y}}function tl(e,t){return{x:e.x-t.x,y:e.y-t.y}}function ta(e,t){if(e.side==="top"||e.side==="bottom"){const{side:n,align:a}=e,i=a==="left"?0:a==="center"?t.width/2:a==="right"?t.width:a,s=n==="top"?0:n==="bottom"?t.height:n;return Xt({x:i,y:s},t)}else if(e.side==="left"||e.side==="right"){const{side:n,align:a}=e,i=n==="left"?0:n==="right"?t.width:n,s=a==="top"?0:a==="center"?t.height/2:a==="bottom"?t.height:a;return Xt({x:i,y:s},t)}return Xt({x:t.width/2,y:t.height/2},t)}const qa={static:il,connected:ll},nl=T({locationStrategy:{type:[String,Function],default:"static",validator:e=>typeof e=="function"||e in qa},location:{type:String,default:"bottom"},origin:{type:String,default:"auto"},offset:[Number,String,Array],stickToTarget:Boolean,viewportMargin:{type:[Number,String],default:12}},"VOverlay-location-strategies");function al(e,t){const n=q({}),a=q();Ae&&ht(()=>!!(t.isActive.value&&e.locationStrategy),o=>{var r,u;W(()=>e.locationStrategy,o),ve(()=>{window.removeEventListener("resize",i),visualViewport==null||visualViewport.removeEventListener("resize",s),visualViewport==null||visualViewport.removeEventListener("scroll",l),a.value=void 0}),window.addEventListener("resize",i,{passive:!0}),visualViewport==null||visualViewport.addEventListener("resize",s,{passive:!0}),visualViewport==null||visualViewport.addEventListener("scroll",l,{passive:!0}),typeof e.locationStrategy=="function"?a.value=(r=e.locationStrategy(t,e,n))==null?void 0:r.updateLocation:a.value=(u=qa[e.locationStrategy](t,e,n))==null?void 0:u.updateLocation});function i(o){var r;(r=a.value)==null||r.call(a,o)}function s(o){var r;(r=a.value)==null||r.call(a,o)}function l(o){var r;(r=a.value)==null||r.call(a,o)}return{contentStyles:n,updateLocation:a}}function il(){}function sl(e,t){const n=pa(e);return t?n.x+=parseFloat(e.style.right||0):n.x-=parseFloat(e.style.left||0),n.y-=parseFloat(e.style.top||0),n}function ll(e,t,n){(Array.isArray(e.target.value)||_i(e.target.value))&&Object.assign(n.value,{position:"fixed",top:0,[e.isRtl.value?"right":"left"]:0});const{preferredAnchor:i,preferredOrigin:s}=yn(()=>{const S=en(t.location,e.isRtl.value),I=t.origin==="overlap"?S:t.origin==="auto"?Gt(S):en(t.origin,e.isRtl.value);return S.side===I.side&&S.align===Ht(I).align?{preferredAnchor:Gn(S),preferredOrigin:Gn(I)}:{preferredAnchor:S,preferredOrigin:I}}),[l,o,r,u]=["minWidth","minHeight","maxWidth","maxHeight"].map(S=>_(()=>{const I=parseFloat(t[S]);return isNaN(I)?1/0:I})),c=_(()=>{if(Array.isArray(t.offset))return t.offset;if(typeof t.offset=="string"){const S=t.offset.split(" ").map(parseFloat);return S.length<2&&S.push(0),S}return typeof t.offset=="number"?[t.offset,0]:[0,0]});let m=!1,v=-1;const d=new xi(4),y=new ResizeObserver(()=>{if(!m)return;if(requestAnimationFrame(I=>{I!==v&&d.clear(),requestAnimationFrame(L=>{v=L})}),d.isFull){const I=d.values();if(Ye(I.at(-1),I.at(-3))&&!Ye(I.at(-1),I.at(-2)))return}const S=p();S&&d.push(S.flipped)});let f=new jt({x:0,y:0,width:0,height:0});W(e.target,(S,I)=>{I&&!Array.isArray(I)&&y.unobserve(I),Array.isArray(S)?Ye(S,I)||p():S&&y.observe(S)},{immediate:!0}),W(e.contentEl,(S,I)=>{I&&y.unobserve(I),S&&y.observe(S)},{immediate:!0}),ve(()=>{y.disconnect()});function p(){if(m=!1,requestAnimationFrame(()=>m=!0),!e.target.value||!e.contentEl.value)return;(Array.isArray(e.target.value)||e.target.value.offsetParent||e.target.value.getClientRects().length)&&(f=Sa(e.target.value));const S=sl(e.contentEl.value,e.isRtl.value),I=Lt(e.contentEl.value),L=Number(t.viewportMargin);I.length||(I.push(document.documentElement),e.contentEl.value.style.top&&e.contentEl.value.style.left||(S.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),S.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const w=I.reduce((A,N)=>{const O=Ii(N);return A?new jt({x:Math.max(A.left,O.left),y:Math.max(A.top,O.top),width:Math.min(A.right,O.right)-Math.max(A.left,O.left),height:Math.min(A.bottom,O.bottom)-Math.max(A.top,O.top)}):O},void 0);t.stickToTarget?(w.x+=Math.min(L,f.x),w.y+=Math.min(L,f.y),w.width=Math.max(w.width-L*2,f.x+f.width-L),w.height=Math.max(w.height-L*2,f.y+f.height-L)):(w.x+=L,w.y+=L,w.width-=L*2,w.height-=L*2);let h={anchor:i.value,origin:s.value};function C(A){const N=new jt(S),O=ta(A.anchor,f),U=ta(A.origin,N);let{x:X,y:te}=tl(O,U);switch(A.anchor.side){case"top":te-=c.value[0];break;case"bottom":te+=c.value[0];break;case"left":X-=c.value[0];break;case"right":X+=c.value[0];break}switch(A.anchor.align){case"top":te-=c.value[1];break;case"bottom":te+=c.value[1];break;case"left":X-=c.value[1];break;case"right":X+=c.value[1];break}return N.x+=X,N.y+=te,N.width=Math.min(N.width,r.value),N.height=Math.min(N.height,u.value),{overflows:Hn(N,w),x:X,y:te}}let x=0,g=0;const R={x:0,y:0},M={x:!1,y:!1};let E=-1;for(;!(E++>10);){const{x:A,y:N,overflows:O}=C(h);x+=A,g+=N,S.x+=A,S.y+=N;{const U=jn(h.anchor),X=O.x.before||O.x.after,te=O.y.before||O.y.after;let he=!1;if(["x","y"].forEach(K=>{if(K==="x"&&X&&!M.x||K==="y"&&te&&!M.y){const $={anchor:{...h.anchor},origin:{...h.origin}},Z=K==="x"?U==="y"?Ht:Gt:U==="y"?Gt:Ht;$.anchor=Z($.anchor),$.origin=Z($.origin);const{overflows:j}=C($);(j[K].before<=O[K].before&&j[K].after<=O[K].after||j[K].before+j[K].after<(O[K].before+O[K].after)/2)&&(h=$,he=M[K]=!0)}}),he)continue}O.x.before&&(x+=O.x.before,S.x+=O.x.before),O.x.after&&(x-=O.x.after,S.x-=O.x.after),O.y.before&&(g+=O.y.before,S.y+=O.y.before),O.y.after&&(g-=O.y.after,S.y-=O.y.after);{const U=Hn(S,w);R.x=w.width-U.x.before-U.x.after,R.y=w.height-U.y.before-U.y.after,x+=U.x.before,S.x+=U.x.before,g+=U.y.before,S.y+=U.y.before}break}const V=jn(h.anchor);return Object.assign(n.value,{"--v-overlay-anchor-origin":`${h.anchor.side} ${h.anchor.align}`,transformOrigin:`${h.origin.side} ${h.origin.align}`,top:B(Yt(g)),left:e.isRtl.value?void 0:B(Yt(x)),right:e.isRtl.value?B(Yt(-x)):void 0,minWidth:B(V==="y"?Math.min(l.value,f.width):l.value),maxWidth:B(na(Ze(R.x,l.value===1/0?0:l.value,r.value))),maxHeight:B(na(Ze(R.y,o.value===1/0?0:o.value,u.value)))}),{available:R,contentBox:S,flipped:M}}return W(()=>[i.value,s.value,t.offset,t.minWidth,t.minHeight,t.maxWidth,t.maxHeight],()=>p()),ce(()=>{const S=p();if(!S)return;const{available:I,contentBox:L}=S;L.height>I.y&&requestAnimationFrame(()=>{p(),requestAnimationFrame(()=>{p()})})}),{updateLocation:p}}function Yt(e){return Math.round(e*devicePixelRatio)/devicePixelRatio}function na(e){return Math.ceil(e*devicePixelRatio)/devicePixelRatio}let un=!0;const Bt=[];function ol(e){!un||Bt.length?(Bt.push(e),cn()):(un=!1,e(),cn())}let aa=-1;function cn(){cancelAnimationFrame(aa),aa=requestAnimationFrame(()=>{const e=Bt.shift();e&&e(),Bt.length?cn():un=!0})}const At={none:null,close:cl,block:dl,reposition:fl},rl=T({scrollStrategy:{type:[String,Function],default:"block",validator:e=>typeof e=="function"||e in At}},"VOverlay-scroll-strategies");function ul(e,t){if(!Ae)return;let n;Re(async()=>{n==null||n.stop(),t.isActive.value&&e.scrollStrategy&&(n=_a(),await new Promise(a=>setTimeout(a)),n.active&&n.run(()=>{var a;typeof e.scrollStrategy=="function"?e.scrollStrategy(t,e,n):(a=At[e.scrollStrategy])==null||a.call(At,t,e,n)}))}),ve(()=>{n==null||n.stop()})}function cl(e){function t(n){e.isActive.value=!1}ja(On(e.target.value,e.contentEl.value),t)}function dl(e,t){var o;const n=(o=e.root.value)==null?void 0:o.offsetParent,a=On(e.target.value,e.contentEl.value),i=[...new Set([...Lt(a,t.contained?n:void 0),...Lt(e.contentEl.value,t.contained?n:void 0)])].filter(r=>!r.classList.contains("v-overlay-scroll-blocked")),s=window.innerWidth-document.documentElement.offsetWidth,l=(r=>Pi(r)&&r)(n||document.documentElement);l&&e.root.value.classList.add("v-overlay--scroll-blocked"),i.forEach((r,u)=>{r.style.setProperty("--v-body-scroll-x",B(-r.scrollLeft)),r.style.setProperty("--v-body-scroll-y",B(-r.scrollTop)),r!==document.documentElement&&r.style.setProperty("--v-scrollbar-offset",B(s)),r.classList.add("v-overlay-scroll-blocked")}),ve(()=>{i.forEach((r,u)=>{const c=parseFloat(r.style.getPropertyValue("--v-body-scroll-x")),m=parseFloat(r.style.getPropertyValue("--v-body-scroll-y")),v=r.style.scrollBehavior;r.style.scrollBehavior="auto",r.style.removeProperty("--v-body-scroll-x"),r.style.removeProperty("--v-body-scroll-y"),r.style.removeProperty("--v-scrollbar-offset"),r.classList.remove("v-overlay-scroll-blocked"),r.scrollLeft=-c,r.scrollTop=-m,r.style.scrollBehavior=v}),l&&e.root.value.classList.remove("v-overlay--scroll-blocked")})}function fl(e,t,n){let a=!1,i=-1,s=-1;function l(o){ol(()=>{var c,m;const r=performance.now();(m=(c=e.updateLocation).value)==null||m.call(c,o),a=(performance.now()-r)/(1e3/60)>2})}s=(typeof requestIdleCallback>"u"?o=>o():requestIdleCallback)(()=>{n.run(()=>{ja(On(e.target.value,e.contentEl.value),o=>{a?(cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=requestAnimationFrame(()=>{l(o)})})):l(o)})})}),ve(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(s),cancelAnimationFrame(i)})}function On(e,t){return Array.isArray(e)?document.elementsFromPoint(...e).find(n=>!(t!=null&&t.contains(n))):e??t}function ja(e,t){const n=[document,...Lt(e)];n.forEach(a=>{a.addEventListener("scroll",t,{passive:!0})}),ve(()=>{n.forEach(a=>{a.removeEventListener("scroll",t)})})}const vl=Symbol.for("vuetify:v-menu"),ml=T({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function gl(e,t){let n=()=>{};function a(l,o){n==null||n();const r=l?e.openDelay:e.closeDelay,u=Math.max((o==null?void 0:o.minDelay)??0,Number(r??0));return new Promise(c=>{n=Ai(u,()=>{t==null||t(l),c(l)})})}function i(){return a(!0)}function s(l){return a(!1,l)}return{clearDelay:n,runOpenDelay:i,runCloseDelay:s}}const yl=T({target:[String,Object],activator:[String,Object],activatorProps:{type:Object,default:()=>({})},openOnClick:{type:Boolean,default:void 0},openOnHover:Boolean,openOnFocus:{type:Boolean,default:void 0},closeOnContentClick:Boolean,...ml()},"VOverlay-activator");function hl(e,t){let{isActive:n,isTop:a,contentEl:i}=t;const s=xe("useActivator"),l=q();let o=!1,r=!1,u=!0;const c=_(()=>e.openOnFocus||e.openOnFocus==null&&e.openOnHover),m=_(()=>e.openOnClick||e.openOnClick==null&&!e.openOnHover&&!c.value),{runOpenDelay:v,runCloseDelay:d}=gl(e,g=>{g===(e.openOnHover&&o||c.value&&r)&&!(e.openOnHover&&n.value&&!a.value)&&(n.value!==g&&(u=!0),n.value=g)}),y=q(),f={onClick:g=>{g.stopPropagation(),l.value=g.currentTarget||g.target,n.value||(y.value=[g.clientX,g.clientY]),n.value=!n.value},onMouseenter:g=>{o=!0,l.value=g.currentTarget||g.target,v()},onMouseleave:g=>{o=!1,d()},onFocus:g=>{Li(g.target,":focus-visible")!==!1&&(r=!0,g.stopPropagation(),l.value=g.currentTarget||g.target,v())},onBlur:g=>{r=!1,g.stopPropagation(),d({minDelay:1})}},p=_(()=>{const g={};return m.value&&(g.onClick=f.onClick),e.openOnHover&&(g.onMouseenter=f.onMouseenter,g.onMouseleave=f.onMouseleave),c.value&&(g.onFocus=f.onFocus,g.onBlur=f.onBlur),g}),S=_(()=>{const g={};if(e.openOnHover&&(g.onMouseenter=()=>{o=!0,v()},g.onMouseleave=()=>{o=!1,d()}),c.value&&(g.onFocusin=R=>{R.target.matches(":focus-visible")&&(r=!0,v())},g.onFocusout=()=>{r=!1,d({minDelay:1})}),e.closeOnContentClick){const R=Ee(vl,null);g.onClick=()=>{n.value=!1,R==null||R.closeParents()}}return g}),I=_(()=>{const g={};return e.openOnHover&&(g.onMouseenter=()=>{u&&(o=!0,u=!1,v())},g.onMouseleave=()=>{o=!1,d()}),g});W(a,g=>{var R;g&&(e.openOnHover&&!o&&(!c.value||!r)||c.value&&!r&&(!e.openOnHover||!o))&&!((R=i.value)!=null&&R.contains(document.activeElement))&&(n.value=!1)}),W(n,g=>{g||setTimeout(()=>{y.value=void 0})},{flush:"post"});const L=Un();Re(()=>{L.value&&ce(()=>{l.value=L.el})});const w=Un(),h=_(()=>e.target==="cursor"&&y.value?y.value:w.value?w.el:Ha(e.target,s)||l.value),C=_(()=>Array.isArray(h.value)?void 0:h.value);let x;return W(()=>!!e.activator,g=>{g&&Ae?(x=_a(),x.run(()=>{bl(e,s,{activatorEl:l,activatorEvents:p})})):x&&x.stop()},{flush:"post",immediate:!0}),ve(()=>{x==null||x.stop()}),{activatorEl:l,activatorRef:L,target:h,targetEl:C,targetRef:w,activatorEvents:p,contentEvents:S,scrimEvents:I}}function bl(e,t,n){let{activatorEl:a,activatorEvents:i}=n;W(()=>e.activator,(r,u)=>{if(u&&r!==u){const c=o(u);c&&l(c)}r&&ce(()=>s())},{immediate:!0}),W(()=>e.activatorProps,()=>{s()}),ve(()=>{l()});function s(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:o(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;r&&Ei(r,Y(i.value,u))}function l(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:o(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;r&&Vi(r,Y(i.value,u))}function o(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activator;const u=Ha(r,t);return a.value=(u==null?void 0:u.nodeType)===Node.ELEMENT_NODE?u:void 0,a.value}}function Ha(e,t){var a,i;if(!e)return;let n;if(e==="parent"){let s=(i=(a=t==null?void 0:t.proxy)==null?void 0:a.$el)==null?void 0:i.parentNode;for(;s!=null&&s.hasAttribute("data-no-activator");)s=s.parentNode;n=s}else typeof e=="string"?n=document.querySelector(e):"$el"in e?n=e.$el:n=e;return n}const Sl=T({retainFocus:Boolean,captureFocus:Boolean,disableInitialFocus:Boolean},"focusTrap"),Et=new Map;let ia=0;function sa(e){const t=document.activeElement;if(e.key!=="Tab"||!t)return;const n=Array.from(Et.values()).filter(u=>{var v;let{isActive:c,contentEl:m}=u;return c.value&&((v=m.value)==null?void 0:v.contains(t))}).map(u=>u.contentEl.value);let a,i=t.parentElement;for(;i;){if(n.includes(i)){a=i;break}i=i.parentElement}if(!a)return;const s=xt(a).filter(u=>u.tabIndex>=0);if(!s.length)return;const l=document.activeElement;if(s.length===1&&s[0].classList.contains("v-list")&&s[0].contains(l)){e.preventDefault();return}const o=s[0],r=s[s.length-1];e.shiftKey&&(l===o||o.classList.contains("v-list")&&o.contains(l))&&(e.preventDefault(),r.focus()),!e.shiftKey&&(l===r||r.classList.contains("v-list")&&r.contains(l))&&(e.preventDefault(),o.focus())}function pl(e,t){let{isActive:n,localTop:a,activatorEl:i,contentEl:s}=t;const l=Symbol("trap");let o=!1,r=-1;async function u(){o=!0,r=window.setTimeout(()=>{o=!1},100)}async function c(d){var p;const y=d.relatedTarget,f=d.target;document.removeEventListener("pointerdown",u),document.removeEventListener("keydown",m),await ce(),n.value&&!o&&y!==f&&s.value&&se(a)&&![document,s.value].includes(f)&&!s.value.contains(f)&&((p=xt(s.value)[0])==null||p.focus())}function m(d){if(d.key==="Tab"&&(document.removeEventListener("keydown",m),n.value&&s.value&&d.target&&!s.value.contains(d.target))){const y=xt(document.documentElement);if(d.shiftKey&&d.target===y.at(0)||!d.shiftKey&&d.target===y.at(-1)){const f=xt(s.value);f.length>0&&(d.preventDefault(),f[0].focus())}}}const v=k(()=>n.value&&e.captureFocus&&!e.disableInitialFocus);Ae&&(W(()=>e.retainFocus,d=>{d?Et.set(l,{isActive:n,contentEl:s}):Et.delete(l)},{immediate:!0}),W(v,d=>{d?(document.addEventListener("pointerdown",u),document.addEventListener("focusin",c,{once:!0}),document.addEventListener("keydown",m)):(document.removeEventListener("pointerdown",u),document.removeEventListener("focusin",c),document.removeEventListener("keydown",m))},{immediate:!0}),ia++<1&&document.addEventListener("keydown",sa)),ve(()=>{Et.delete(l),clearTimeout(r),document.removeEventListener("pointerdown",u),document.removeEventListener("focusin",c),document.removeEventListener("keydown",m),--ia<1&&document.removeEventListener("keydown",sa)})}function wl(){if(!Ae)return z(!1);const{ssr:e}=Ti();if(e){const t=z(!1);return it(()=>{t.value=!0}),t}else return z(!0)}const kl=T({eager:Boolean},"lazy");function Cl(e,t){const n=z(!1),a=k(()=>n.value||e.eager||t.value);W(t,()=>n.value=!0);function i(){e.eager||(n.value=!1)}return{isBooted:n,hasContent:a,onAfterLeave:i}}function Bn(){const t=xe("useScopeId").vnode.scopeId;return{scopeId:t?{[t]:""}:void 0}}const la=Symbol.for("vuetify:stack"),dt=vt([]);function _l(e,t,n){const a=xe("useStack"),i=!n,s=Ee(la,void 0),l=vt({activeChildren:new Set});qe(la,l);const o=z(Number(se(t)));ht(e,()=>{var m;const c=(m=dt.at(-1))==null?void 0:m[1];o.value=c?c+10:Number(se(t)),i&&dt.push([a.uid,o.value]),s==null||s.activeChildren.add(a.uid),ve(()=>{if(i){const v=ae(dt).findIndex(d=>d[0]===a.uid);dt.splice(v,1)}s==null||s.activeChildren.delete(a.uid)})});const r=z(!0);i&&Re(()=>{var m;const c=((m=dt.at(-1))==null?void 0:m[0])===a.uid;setTimeout(()=>r.value=c)});const u=k(()=>!l.activeChildren.size);return{globalTop:xa(r),localTop:u,stackStyles:k(()=>({zIndex:o.value}))}}function xl(e){return{teleportTarget:_(()=>{const n=e();if(n===!0||!Ae)return;const a=n===!1?document.body:typeof n=="string"?document.querySelector(n):n;if(a==null)return;let i=[...a.children].find(s=>s.matches(".v-overlay-container"));return i||(i=document.createElement("div"),i.className="v-overlay-container",a.appendChild(i)),i})}}const Ga=T({transition:{type:null,default:"fade-transition",validator:e=>e!==!0}},"transition"),Xe=(e,t)=>{let{slots:n}=t;const{transition:a,disabled:i,group:s,...l}=e,{component:o=s?wn:Ne,...r}=tn(a)?a:{};let u;return tn(a)?u=Y(r,Oi({disabled:i,group:s}),l):u=Y({name:i||!a?"":a},l),kn(o,u,n)};function Il(){return!0}function Ua(e,t,n){if(!e||Ka(e,n)===!1)return!1;const a=wa(t);if(typeof ShadowRoot<"u"&&a instanceof ShadowRoot&&a.host===e.target)return!1;const i=(typeof n.value=="object"&&n.value.include||(()=>[]))();return i.push(t),!i.some(s=>s==null?void 0:s.contains(e.target))}function Ka(e,t){return(typeof t.value=="object"&&t.value.closeConditional||Il)(e)}function Pl(e,t,n){const a=typeof n.value=="function"?n.value:n.value.handler;e.shadowTarget=e.target,t._clickOutside.lastMousedownWasOutside&&Ua(e,t,n)&&setTimeout(()=>{Ka(e,n)&&a&&a(e)},0)}function oa(e,t){const n=wa(e);t(document),typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&t(n)}const ra={mounted(e,t){const n=i=>Pl(i,e,t),a=i=>{e._clickOutside.lastMousedownWasOutside=Ua(i,e,t)};oa(e,i=>{i.addEventListener("click",n,!0),i.addEventListener("mousedown",a,!0)}),e._clickOutside||(e._clickOutside={lastMousedownWasOutside:!1}),e._clickOutside[t.instance.$.uid]={onClick:n,onMousedown:a}},beforeUnmount(e,t){e._clickOutside&&(oa(e,n=>{var s;if(!n||!((s=e._clickOutside)!=null&&s[t.instance.$.uid]))return;const{onClick:a,onMousedown:i}=e._clickOutside[t.instance.$.uid];n.removeEventListener("click",a,!0),n.removeEventListener("mousedown",i,!0)}),delete e._clickOutside[t.instance.$.uid])}};function Al(e){const{modelValue:t,color:n,...a}=e;return b(Ne,{name:"fade-transition",appear:!0},{default:()=>[e.modelValue&&P("div",Y({class:["v-overlay__scrim",e.color.backgroundColorClasses.value],style:e.color.backgroundColorStyles.value},a),null)]})}const Rn=T({absolute:Boolean,attach:[Boolean,String,Object],closeOnBack:{type:Boolean,default:!0},contained:Boolean,contentClass:null,contentProps:null,disabled:Boolean,opacity:[Number,String],noClickAnimation:Boolean,modelValue:Boolean,persistent:Boolean,scrim:{type:[Boolean,String],default:!0},zIndex:{type:[Number,String],default:2e3},...yl(),...ee(),...rt(),...kl(),...nl(),...rl(),...Sl(),...fe(),...Ga()},"VOverlay"),Rt=G()({name:"VOverlay",directives:{vClickOutside:ra},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...at(Rn(),["disableInitialFocus"])},emits:{"click:outside":e=>!0,"update:modelValue":e=>!0,keydown:e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(e,t){let{slots:n,attrs:a,emit:i}=t;const s=xe("VOverlay"),l=q(),o=q(),r=q(),u=Pe(e,"modelValue"),c=_({get:()=>u.value,set:F=>{F&&e.disabled||(u.value=F)}}),{themeClasses:m}=ye(e),{rtlClasses:v,isRtl:d}=Dt(),{hasContent:y,onAfterLeave:f}=Cl(e,c),p=Je(()=>typeof e.scrim=="string"?e.scrim:null),{globalTop:S,localTop:I,stackStyles:L}=_l(c,()=>e.zIndex,e._disableGlobalStack),{activatorEl:w,activatorRef:h,target:C,targetEl:x,targetRef:g,activatorEvents:R,contentEvents:M,scrimEvents:E}=hl(e,{isActive:c,isTop:I,contentEl:r}),{teleportTarget:V}=xl(()=>{var De,D,re;const F=e.attach||e.contained;if(F)return F;const ue=((De=w==null?void 0:w.value)==null?void 0:De.getRootNode())||((re=(D=s.proxy)==null?void 0:D.$el)==null?void 0:re.getRootNode());return ue instanceof ShadowRoot?ue:!1}),{dimensionStyles:A}=ut(e),N=wl(),{scopeId:O}=Bn();W(()=>e.disabled,F=>{F&&(c.value=!1)});const{contentStyles:U,updateLocation:X}=al(e,{isRtl:d,contentEl:r,target:C,isActive:c});ul(e,{root:l,contentEl:r,targetEl:x,target:C,isActive:c,updateLocation:X});function te(F){i("click:outside",F),e.persistent?be():c.value=!1}function he(F){return c.value&&I.value&&(!e.scrim||F.target===o.value||F instanceof MouseEvent&&F.shadowTarget===o.value)}pl(e,{isActive:c,localTop:I,contentEl:r,activatorEl:w}),Ae&&W(c,F=>{F?window.addEventListener("keydown",K):window.removeEventListener("keydown",K)},{immediate:!0}),je(()=>{Ae&&window.removeEventListener("keydown",K)});function K(F){var ue,De,D;F.key==="Escape"&&S.value&&((ue=r.value)!=null&&ue.contains(document.activeElement)||i("keydown",F),e.persistent?be():(c.value=!1,(De=r.value)!=null&&De.contains(document.activeElement)&&((D=w.value)==null||D.focus())))}function $(F){F.key==="Escape"&&!S.value||i("keydown",F)}const Z=Hs();ht(()=>e.closeOnBack,()=>{Gs(Z,F=>{S.value&&c.value?(F(!1),e.persistent?be():c.value=!1):F()})});const j=q();W(()=>c.value&&(e.absolute||e.contained)&&V.value==null,F=>{if(F){const ue=Bi(l.value);ue&&ue!==document.scrollingElement&&(j.value=ue.scrollTop)}});function be(){e.noClickAnimation||r.value&&Me(r.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:nn})}function Ue(){i("afterEnter")}function $e(){f(),i("afterLeave")}return J(()=>{var F;return P(Be,null,[(F=n.activator)==null?void 0:F.call(n,{isActive:c.value,targetRef:g,props:Y({ref:h},R.value,e.activatorProps)}),N.value&&y.value&&b(Ji,{disabled:!V.value,to:V.value},{default:()=>[P("div",Y({class:["v-overlay",{"v-overlay--absolute":e.absolute||e.contained,"v-overlay--active":c.value,"v-overlay--contained":e.contained},m.value,v.value,e.class],style:[L.value,{"--v-overlay-opacity":e.opacity,top:B(j.value)},e.style],ref:l,onKeydown:$},O,a),[b(Al,Y({color:p,modelValue:c.value&&!!e.scrim,ref:o},E.value),null),b(Xe,{appear:!0,persisted:!0,transition:e.transition,target:C.value,onAfterEnter:Ue,onAfterLeave:$e},{default:()=>{var ue;return[ze(P("div",Y({ref:r,class:["v-overlay__content",e.contentClass],style:[A.value,U.value]},M.value,e.contentProps),[(ue=n.default)==null?void 0:ue.call(n,{isActive:c})]),[[Cn,c.value],[ra,{handler:te,closeConditional:he,include:()=>[w.value]}]])]}})])]})])}),{activatorEl:w,scrimEl:o,target:C,animateClick:be,contentEl:r,rootEl:l,globalTop:S,localTop:I,updateLocation:X}}}),Jt=Symbol("Forwarded refs");function Qt(e,t){let n=e;for(;n;){const a=Reflect.getOwnPropertyDescriptor(n,t);if(a)return a;n=Object.getPrototypeOf(n)}}function Xa(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;at.value=e())}function s(l){const o=l?getComputedStyle(l):{transitionDuration:.2},r=parseFloat(o.transitionDuration)*1e3||200;if(a(),t.value<=0)return;const u=performance.now();n=window.setInterval(()=>{const c=performance.now()-u+r;t.value=Math.max(e()-c,0),t.value<=0&&a()},r)}return ve(a),{clear:a,time:t,start:s,reset:i}}const Vl=T({multiLine:Boolean,text:String,timer:[Boolean,String],timeout:{type:[Number,String],default:5e3},vertical:Boolean,...zt({location:"bottom"}),...En(),...Le(),...Ge(),...fe(),...at(Rn({transition:"v-snackbar-transition"}),["persistent","noClickAnimation","retainFocus","captureFocus","disableInitialFocus","scrim","scrollStrategy","stickToTarget","viewportMargin"])},"VSnackbar"),Ll=G()({name:"VSnackbar",props:Vl(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const a=Pe(e,"modelValue"),{positionClasses:i}=Vn(e),{scopeId:s}=Bn(),{themeClasses:l}=ye(e),{colorClasses:o,colorStyles:r,variantClasses:u}=wt(e),{roundedClasses:c}=Te(e),m=El(()=>Number(e.timeout)),v=q(),d=q(),y=z(!1),f=z(0),p=q(),S=Ee($i,void 0);ht(()=>!!S,()=>{const E=Ri();Re(()=>{p.value=E.mainStyles.value})}),W(a,L),W(()=>e.timeout,L),it(()=>{a.value&&L()});let I=-1;function L(){m.reset(),window.clearTimeout(I);const E=Number(e.timeout);if(!a.value||E===-1)return;const V=Ni(d.value);m.start(V),I=window.setTimeout(()=>{a.value=!1},E)}function w(){m.reset(),window.clearTimeout(I)}function h(){y.value=!0,w()}function C(){y.value=!1,L()}function x(E){f.value=E.touches[0].clientY}function g(E){Math.abs(f.value-E.changedTouches[0].clientY)>50&&(a.value=!1)}function R(){y.value&&C()}const M=_(()=>e.location.split(" ").reduce((E,V)=>(E[`v-snackbar--${V}`]=!0,E),{}));return J(()=>{const E=Rt.filterProps(e),V=!!(n.default||n.text||e.text);return b(Rt,Y({ref:v,class:["v-snackbar",{"v-snackbar--active":a.value,"v-snackbar--multi-line":e.multiLine&&!e.vertical,"v-snackbar--timer":!!e.timer,"v-snackbar--vertical":e.vertical},M.value,i.value,e.class],style:[p.value,e.style]},E,{modelValue:a.value,"onUpdate:modelValue":A=>a.value=A,contentProps:Y({class:["v-snackbar__wrapper",l.value,o.value,c.value,u.value],style:[r.value],onPointerenter:h,onPointerleave:C},E.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",_disableGlobalStack:!0,onTouchstartPassive:x,onTouchend:g,onAfterLeave:R},s),{default:()=>{var A,N;return[pt(!1,"v-snackbar"),e.timer&&!y.value&&P("div",{key:"timer",class:"v-snackbar__timer"},[b(Ta,{ref:d,color:typeof e.timer=="string"?e.timer:"info",max:e.timeout,modelValue:m.time.value},null)]),V&&P("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[((A=n.text)==null?void 0:A.call(n))??e.text,(N=n.default)==null?void 0:N.call(n)]),n.actions&&b(ge,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[P("div",{class:"v-snackbar__actions"},[n.actions({isActive:a})])]})]},activator:n.activator})}),Xa({},v)}}),Tl=Qi({name:"GlobalMessage",setup(){var s;const e=q(!1),t=q(null),n={success:"mdi-check-circle",error:"mdi-alert-circle",warning:"mdi-alert",info:"mdi-information"},a={success:"success",error:"error",warning:"warning",info:"info"},i=(s=Ke==null?void 0:Ke.onSnackbar)==null?void 0:s.call(Ke,async l=>{l&&(e.value&&(e.value=!1,await ce()),t.value=l,e.value=!0)});return je(()=>i==null?void 0:i()),{snackbar:e,message:t,icons:n,colors:a}}}),Ol={class:"d-flex align-center"},Bl={class:"text-subtitle-2 font-weight-medium"},Rl={key:0,class:"text-body-2"};function Nl(e,t,n,a,i,s){var l;return Ie(),Fe(Ll,{modelValue:e.snackbar,"onUpdate:modelValue":t[1]||(t[1]=o=>e.snackbar=o),color:e.colors[(l=e.message)==null?void 0:l.type]||e.colors.info,timeout:2e3,location:"top right","multi-line":"",variant:"tonal"},{actions:ie(()=>[b(Wa,{icon:"mdi-close",variant:"text",onClick:t[0]||(t[0]=o=>e.snackbar=!1)})]),default:ie(()=>{var o,r,u,c;return[P("div",Ol,[b(_e,{icon:e.icons[(o=e.message)==null?void 0:o.type]||e.icons.info,class:"mr-2"},null,8,["icon"]),P("div",null,[P("div",Bl,Ce((r=e.message)==null?void 0:r.title),1),(u=e.message)!=null&&u.content?(Ie(),Ia("div",Rl,Ce((c=e.message)==null?void 0:c.content),1)):ln("",!0)])])]}),_:1},8,["modelValue","color"])}const Ya=Pa(Tl,[["render",Nl]]),$l=T({...ee(),...oe()},"VCardActions"),Ja=G()({name:"VCardActions",props:$l(),setup(e,t){let{slots:n}=t;return $t({VBtn:{slim:!0,variant:"text"}}),J(()=>b(e.tag,{class:H(["v-card-actions",e.class]),style:Q(e.style)},n)),{}}}),Dl=T({opacity:[Number,String],...ee(),...oe()},"VCardSubtitle"),Ml=G()({name:"VCardSubtitle",props:Dl(),setup(e,t){let{slots:n}=t;return J(()=>b(e.tag,{class:H(["v-card-subtitle",e.class]),style:Q([{"--v-card-subtitle-opacity":e.opacity},e.style])},n)),{}}}),Qa=Sn("v-card-title");function Fl(e){return{aspectStyles:_(()=>{const t=Number(e.aspectRatio);return t?{paddingBottom:String(1/t*100)+"%"}:void 0})}}const Za=T({aspectRatio:[String,Number],contentClass:null,inline:Boolean,...ee(),...rt()},"VResponsive"),ua=G()({name:"VResponsive",props:Za(),setup(e,t){let{slots:n}=t;const{aspectStyles:a}=Fl(e),{dimensionStyles:i}=ut(e);return J(()=>{var s;return P("div",{class:H(["v-responsive",{"v-responsive--inline":e.inline},e.class]),style:Q([i.value,e.style])},[P("div",{class:"v-responsive__sizer",style:Q(a.value)},null),(s=n.additional)==null?void 0:s.call(n),n.default&&P("div",{class:H(["v-responsive__content",e.contentClass])},[n.default()])])}),{}}});function ca(e,t){if(!bn)return;const n=t.modifiers||{},a=t.value,{handler:i,options:s}=typeof a=="object"?a:{handler:a,options:{}},l=new IntersectionObserver(function(){var m;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],r=arguments.length>1?arguments[1]:void 0;const u=(m=e._observe)==null?void 0:m[t.instance.$.uid];if(!u)return;const c=o.some(v=>v.isIntersecting);i&&(!n.quiet||u.init)&&(!n.once||c||u.init)&&i(c,o,r),c&&n.once?dn(e,t):u.init=!0},s);e._observe=Object(e._observe),e._observe[t.instance.$.uid]={init:!1,observer:l},l.observe(e)}function dn(e,t){var a;const n=(a=e._observe)==null?void 0:a[t.instance.$.uid];n&&(n.observer.unobserve(e),delete e._observe[t.instance.$.uid])}const da={mounted:ca,unmounted:dn,updated:(e,t)=>{var n;(n=e._observe)!=null&&n[t.instance.$.uid]&&(dn(e,t),ca(e,t))}},zl=T({absolute:Boolean,alt:String,cover:Boolean,color:String,draggable:{type:[Boolean,String],default:void 0},eager:Boolean,gradient:String,imageClass:null,lazySrc:String,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},sizes:String,src:{type:[String,Object],default:""},crossorigin:String,referrerpolicy:String,srcset:String,position:String,...Za(),...ee(),...Le(),...Ga()},"VImg"),ei=G()({name:"VImg",directives:{vIntersect:da},props:zl(),emits:{loadstart:e=>!0,load:e=>!0,error:e=>!0},setup(e,t){let{emit:n,slots:a}=t;const{backgroundColorClasses:i,backgroundColorStyles:s}=Je(()=>e.color),{roundedClasses:l}=Te(e),o=xe("VImg"),r=z(""),u=q(),c=z(e.eager?"loading":"idle"),m=z(),v=z(),d=_(()=>e.src&&typeof e.src=="object"?{src:e.src.src,srcset:e.srcset||e.src.srcset,lazySrc:e.lazySrc||e.src.lazySrc,aspect:Number(e.aspectRatio||e.src.aspect||0)}:{src:e.src,srcset:e.srcset,lazySrc:e.lazySrc,aspect:Number(e.aspectRatio||0)}),y=_(()=>d.value.aspect||m.value/v.value||0);W(()=>e.src,()=>{f(c.value!=="idle")}),W(y,(V,A)=>{!V&&A&&u.value&&w(u.value)}),_n(()=>f());function f(V){if(!(e.eager&&V)&&!(bn&&!V&&!e.eager)){if(c.value="loading",d.value.lazySrc){const A=new Image;A.src=d.value.lazySrc,w(A,null)}d.value.src&&ce(()=>{var A;n("loadstart",((A=u.value)==null?void 0:A.currentSrc)||d.value.src),setTimeout(()=>{var N;if(!o.isUnmounted)if((N=u.value)!=null&&N.complete){if(u.value.naturalWidth||S(),c.value==="error")return;y.value||w(u.value,null),c.value==="loading"&&p()}else y.value||w(u.value),I()})})}}function p(){var V;o.isUnmounted||(I(),w(u.value),c.value="loaded",n("load",((V=u.value)==null?void 0:V.currentSrc)||d.value.src))}function S(){var V;o.isUnmounted||(c.value="error",n("error",((V=u.value)==null?void 0:V.currentSrc)||d.value.src))}function I(){const V=u.value;V&&(r.value=V.currentSrc||V.src)}let L=-1;je(()=>{clearTimeout(L)});function w(V){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100;const N=()=>{if(clearTimeout(L),o.isUnmounted)return;const{naturalHeight:O,naturalWidth:U}=V;O||U?(m.value=U,v.value=O):!V.complete&&c.value==="loading"&&A!=null?L=window.setTimeout(N,A):(V.currentSrc.endsWith(".svg")||V.currentSrc.startsWith("data:image/svg+xml"))&&(m.value=1,v.value=1)};N()}const h=k(()=>({"v-img__img--cover":e.cover,"v-img__img--contain":!e.cover})),C=()=>{var N;if(!d.value.src||c.value==="idle")return null;const V=P("img",{class:H(["v-img__img",h.value,e.imageClass]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:d.value.src,srcset:d.value.srcset,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable,sizes:e.sizes,ref:u,onLoad:p,onError:S},null),A=(N=a.sources)==null?void 0:N.call(a);return b(Xe,{transition:e.transition,appear:!0},{default:()=>[ze(A?P("picture",{class:"v-img__picture"},[A,V]):V,[[Cn,c.value==="loaded"]])]})},x=()=>b(Xe,{transition:e.transition},{default:()=>[d.value.lazySrc&&c.value!=="loaded"&&P("img",{class:H(["v-img__img","v-img__img--preload",h.value]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:d.value.lazySrc,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable},null)]}),g=()=>a.placeholder?b(Xe,{transition:e.transition,appear:!0},{default:()=>[(c.value==="loading"||c.value==="error"&&!a.error)&&P("div",{class:"v-img__placeholder"},[a.placeholder()])]}):null,R=()=>a.error?b(Xe,{transition:e.transition,appear:!0},{default:()=>[c.value==="error"&&P("div",{class:"v-img__error"},[a.error()])]}):null,M=()=>e.gradient?P("div",{class:"v-img__gradient",style:{backgroundImage:`linear-gradient(${e.gradient})`}},null):null,E=z(!1);{const V=W(y,A=>{A&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{E.value=!0})}),V())})}return J(()=>{const V=ua.filterProps(e);return ze(b(ua,Y({class:["v-img",{"v-img--absolute":e.absolute,"v-img--booting":!E.value,"v-img--fit-content":e.width==="fit-content"},i.value,l.value,e.class],style:[{width:B(e.width==="auto"?m.value:e.width)},s.value,e.style]},V,{aspectRatio:y.value,"aria-label":e.alt,role:e.alt?"img":void 0}),{additional:()=>P(Be,null,[b(C,null,null),b(x,null,null),b(M,null,null),b(g,null,null),b(R,null,null)]),default:a.default}),[[da,{handler:f,options:e.options},null,{once:!0}]])}),{currentSrc:r,image:u,state:c,naturalWidth:m,naturalHeight:v}}}),Wl=T({start:Boolean,end:Boolean,icon:le,image:String,text:String,...st(),...ee(),...He(),...Le(),...Mt(),...oe(),...fe(),...Ge({variant:"flat"})},"VAvatar"),Nt=G()({name:"VAvatar",props:Wl(),setup(e,t){let{slots:n}=t;const{themeClasses:a}=ye(e),{borderClasses:i}=lt(e),{colorClasses:s,colorStyles:l,variantClasses:o}=wt(e),{densityClasses:r}=ot(e),{roundedClasses:u}=Te(e),{sizeClasses:c,sizeStyles:m}=Ft(e);return J(()=>b(e.tag,{class:H(["v-avatar",{"v-avatar--start":e.start,"v-avatar--end":e.end},a.value,i.value,s.value,r.value,u.value,c.value,o.value,e.class]),style:Q([l.value,m.value,e.style])},{default:()=>[n.default?b(ge,{key:"content-defaults",defaults:{VImg:{cover:!0,src:e.image},VIcon:{icon:e.icon}}},{default:()=>[n.default()]}):e.image?b(ei,{key:"image",src:e.image,alt:"",cover:!0},null):e.icon?b(_e,{key:"icon",icon:e.icon},null):e.text,pt(!1,"v-avatar")]})),{}}}),ql=T({appendAvatar:String,appendIcon:le,prependAvatar:String,prependIcon:le,subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...ee(),...He(),...oe()},"VCardItem"),jl=G()({name:"VCardItem",props:ql(),setup(e,t){let{slots:n}=t;return J(()=>{const a=!!(e.prependAvatar||e.prependIcon),i=!!(a||n.prepend),s=!!(e.appendAvatar||e.appendIcon),l=!!(s||n.append),o=!!(e.title!=null||n.title),r=!!(e.subtitle!=null||n.subtitle);return b(e.tag,{class:H(["v-card-item",e.class]),style:Q(e.style)},{default:()=>{var u;return[i&&P("div",{key:"prepend",class:"v-card-item__prepend"},[n.prepend?b(ge,{key:"prepend-defaults",disabled:!a,defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon}}},n.prepend):P(Be,null,[e.prependAvatar&&b(Nt,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&b(_e,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)])]),P("div",{class:"v-card-item__content"},[o&&b(Qa,{key:"title"},{default:()=>{var c;return[((c=n.title)==null?void 0:c.call(n))??Ce(e.title)]}}),r&&b(Ml,{key:"subtitle"},{default:()=>{var c;return[((c=n.subtitle)==null?void 0:c.call(n))??Ce(e.subtitle)]}}),(u=n.default)==null?void 0:u.call(n)]),l&&P("div",{key:"append",class:"v-card-item__append"},[n.append?b(ge,{key:"append-defaults",disabled:!s,defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon}}},n.append):P(Be,null,[e.appendIcon&&b(_e,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&b(Nt,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)])])]}})}),{}}}),Hl=T({opacity:[Number,String],...ee(),...oe()},"VCardText"),fn=G()({name:"VCardText",props:Hl(),setup(e,t){let{slots:n}=t;return J(()=>b(e.tag,{class:H(["v-card-text",e.class]),style:Q([{"--v-card-text-opacity":e.opacity},e.style])},n)),{}}}),Gl=T({appendAvatar:String,appendIcon:le,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:le,ripple:{type:[Boolean,Object],default:!0},subtitle:{type:[String,Number,Boolean],default:void 0},text:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...st(),...ee(),...He(),...rt(),...bt(),...Oa(),...zt(),...En(),...Le(),...Tn(),...oe(),...fe(),...Ge({variant:"elevated"})},"VCard"),fa=G()({name:"VCard",directives:{vRipple:yt},props:Gl(),setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{borderClasses:s}=lt(e),{colorClasses:l,colorStyles:o,variantClasses:r}=wt(e),{densityClasses:u}=ot(e),{dimensionStyles:c}=ut(e),{elevationClasses:m}=St(e),{loaderClasses:v}=Ba(e),{locationStyles:d}=An(e),{positionClasses:y}=Vn(e),{roundedClasses:f}=Te(e),p=Ln(e,n),S=z(void 0);return W(()=>e.loading,(I,L)=>{S.value=!I&&typeof L=="string"?L:typeof I=="boolean"?void 0:I},{immediate:!0}),J(()=>{const I=e.link!==!1&&p.isLink.value,L=!e.disabled&&e.link!==!1&&(e.link||p.isClickable.value),w=I?"a":e.tag,h=!!(a.title||e.title!=null),C=!!(a.subtitle||e.subtitle!=null),x=h||C,g=!!(a.append||e.appendAvatar||e.appendIcon),R=!!(a.prepend||e.prependAvatar||e.prependIcon),M=!!(a.image||e.image),E=x||R||g,V=!!(a.text||e.text!=null);return ze(b(w,Y(p.linkProps,{class:["v-card",{"v-card--disabled":e.disabled,"v-card--flat":e.flat,"v-card--hover":e.hover&&!(e.disabled||e.flat),"v-card--link":L},i.value,s.value,l.value,u.value,m.value,v.value,y.value,f.value,r.value,e.class],style:[o.value,c.value,d.value,{"--v-card-height":B(e.height)},e.style],onClick:L&&p.navigate.value,tabindex:e.disabled?-1:void 0}),{default:()=>{var A;return[M&&P("div",{key:"image",class:"v-card__image"},[a.image?b(ge,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},a.image):b(ei,{key:"image-img",cover:!0,src:e.image},null)]),b(Ws,{name:"v-card",active:!!e.loading,color:S.value},{default:a.loader}),E&&b(jl,{key:"item",prependAvatar:e.prependAvatar,prependIcon:e.prependIcon,title:e.title,subtitle:e.subtitle,appendAvatar:e.appendAvatar,appendIcon:e.appendIcon},{default:a.item,prepend:a.prepend,title:a.title,subtitle:a.subtitle,append:a.append}),V&&b(fn,{key:"text"},{default:()=>{var N;return[((N=a.text)==null?void 0:N.call(a))??e.text]}}),(A=a.default)==null?void 0:A.call(a),a.actions&&b(Ja,null,{default:a.actions}),pt(L,"v-card")]}}),[[yt,L&&e.ripple]])}),{}}}),Ul=T({disabled:Boolean,group:Boolean,hideOnLeave:Boolean,leaveAbsolute:Boolean,mode:String,origin:String},"transition");function me(e,t,n){return G()({name:e,props:Ul({mode:n,origin:t}),setup(a,i){let{slots:s}=i;const l={onBeforeEnter(o){a.origin&&(o.style.transformOrigin=a.origin)},onLeave(o){if(a.leaveAbsolute){const{offsetTop:r,offsetLeft:u,offsetWidth:c,offsetHeight:m}=o;o._transitionInitialStyles={position:o.style.position,top:o.style.top,left:o.style.left,width:o.style.width,height:o.style.height},o.style.position="absolute",o.style.top=`${r}px`,o.style.left=`${u}px`,o.style.width=`${c}px`,o.style.height=`${m}px`}a.hideOnLeave&&o.style.setProperty("display","none","important")},onAfterLeave(o){if(a.leaveAbsolute&&(o!=null&&o._transitionInitialStyles)){const{position:r,top:u,left:c,width:m,height:v}=o._transitionInitialStyles;delete o._transitionInitialStyles,o.style.position=r||"",o.style.top=u||"",o.style.left=c||"",o.style.width=m||"",o.style.height=v||""}}};return()=>{const o=a.group?wn:Ne;return kn(o,{name:a.disabled?"":e,css:!a.disabled,...a.group?void 0:{mode:a.mode},...a.disabled?{}:l},s.default)}}})}function Nn(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"in-out";return G()({name:e,props:{mode:{type:String,default:n},disabled:{type:Boolean,default:Vt()},group:Boolean,hideOnLeave:Boolean},setup(a,i){let{slots:s}=i;const l=a.group?wn:Ne;return()=>kn(l,{name:a.disabled?"":e,css:!a.disabled,...a.disabled?{}:{...t,onLeave:o=>{var r;a.hideOnLeave?o.style.setProperty("display","none","important"):(r=t.onLeave)==null||r.call(t,o)}}},s.default)}})}function $n(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"y";return{onBeforeEnter(i){i._parent=i.parentNode,i._initialStyle={transition:i.style.transition,overflow:i.style.overflow,width:i.style.width,height:i.style.height}},onEnter(i){const s=i._initialStyle;if(!s)return;i.style.setProperty("transition","none","important"),i.style.overflow="hidden";const l=`${i.offsetWidth}px`,o=`${i.offsetHeight}px`;["x","both"].includes(t)&&(i.style.width="0"),["y","both"].includes(t)&&(i.style.height="0"),i.offsetHeight,i.style.transition=s.transition,e&&i._parent&&i._parent.classList.add(e),requestAnimationFrame(()=>{["x","both"].includes(t)&&(i.style.width=l),["y","both"].includes(t)&&(i.style.height=o)})},onAfterEnter:a,onEnterCancelled:a,onLeave(i){i._initialStyle={transition:"",overflow:i.style.overflow,width:i.style.width,height:i.style.height},i.style.overflow="hidden",["x","both"].includes(t)&&(i.style.width=`${i.offsetWidth}px`),["y","both"].includes(t)&&(i.style.height=`${i.offsetHeight}px`),i.offsetHeight,requestAnimationFrame(()=>{["x","both"].includes(t)&&(i.style.width="0"),["y","both"].includes(t)&&(i.style.height="0")})},onAfterLeave:n,onLeaveCancelled:n};function n(i){e&&i._parent&&i._parent.classList.remove(e),a(i)}function a(i){if(!i._initialStyle)return;const{width:s,height:l}=i._initialStyle;i.style.overflow=i._initialStyle.overflow,s!=null&&["x","both"].includes(t)&&(i.style.width=s),l!=null&&["y","both"].includes(t)&&(i.style.height=l),delete i._initialStyle}}const Kl=T({target:[Object,Array]},"v-dialog-transition"),Zt=new WeakMap,Xl=G()({name:"VDialogTransition",props:Kl(),setup(e,t){let{slots:n}=t;const a={onBeforeEnter(i){i.style.pointerEvents="none",i.style.visibility="hidden"},async onEnter(i,s){var v;await new Promise(d=>requestAnimationFrame(d)),await new Promise(d=>requestAnimationFrame(d)),i.style.visibility="";const l=ma(e.target,i),{x:o,y:r,sx:u,sy:c,speed:m}=l;if(Zt.set(i,l),Vt())Me(i,[{opacity:0},{}],{duration:125*m,easing:Xn}).finished.then(()=>s());else{const d=Me(i,[{transform:`translate(${o}px, ${r}px) scale(${u}, ${c})`,opacity:0},{}],{duration:225*m,easing:Xn});(v=va(i))==null||v.forEach(y=>{Me(y,[{opacity:0},{opacity:0,offset:.33},{}],{duration:225*2*m,easing:nn})}),d.finished.then(()=>s())}},onAfterEnter(i){i.style.removeProperty("pointer-events")},onBeforeLeave(i){i.style.pointerEvents="none"},async onLeave(i,s){var v;await new Promise(d=>requestAnimationFrame(d));let l;!Zt.has(i)||Array.isArray(e.target)||e.target.offsetParent||e.target.getClientRects().length?l=ma(e.target,i):l=Zt.get(i);const{x:o,y:r,sx:u,sy:c,speed:m}=l;Vt()?Me(i,[{},{opacity:0}],{duration:85*m,easing:Kn}).finished.then(()=>s()):(Me(i,[{},{transform:`translate(${o}px, ${r}px) scale(${u}, ${c})`,opacity:0}],{duration:125*m,easing:Kn}).finished.then(()=>s()),(v=va(i))==null||v.forEach(y=>{Me(y,[{},{opacity:0,offset:.2},{opacity:0}],{duration:125*2*m,easing:nn})}))},onAfterLeave(i){i.style.removeProperty("pointer-events")}};return()=>e.target?b(Ne,Y({name:"dialog-transition"},a,{css:!1}),n):b(Ne,{name:"dialog-transition"},n)}});function va(e){var n;const t=(n=e.querySelector(":scope > .v-card, :scope > .v-sheet, :scope > .v-list"))==null?void 0:n.children;return t&&[...t]}function ma(e,t){const n=Sa(e),a=pa(t),[i,s]=getComputedStyle(t).transformOrigin.split(" ").map(S=>parseFloat(S)),[l,o]=getComputedStyle(t).getPropertyValue("--v-overlay-anchor-origin").split(" ");let r=n.left+n.width/2;l==="left"||o==="left"?r-=n.width/2:(l==="right"||o==="right")&&(r+=n.width/2);let u=n.top+n.height/2;l==="top"||o==="top"?u-=n.height/2:(l==="bottom"||o==="bottom")&&(u+=n.height/2);const c=n.width/a.width,m=n.height/a.height,v=Math.max(1,c,m),d=c/v||0,y=m/v||0,f=a.width*a.height/(window.innerWidth*window.innerHeight),p=f>.12?Math.min(1.5,(f-.12)*10+1):1;return{x:r-(i+a.left),y:u-(s+a.top),sx:d,sy:y,speed:p}}me("fab-transition","center center","out-in");me("dialog-bottom-transition");me("dialog-top-transition");const zo=me("fade-transition"),Wo=me("scale-transition");me("scroll-x-transition");me("scroll-x-reverse-transition");me("scroll-y-transition");me("scroll-y-reverse-transition");me("slide-x-transition");const qo=me("slide-x-reverse-transition"),jo=me("slide-y-transition");me("slide-y-reverse-transition");const Yl=Nn("expand-transition",$n()),Ho=Nn("expand-x-transition",$n("","x"));Nn("expand-both-transition",$n("","both"));const Jl=T({fullscreen:Boolean,scrollable:Boolean,...at(Rn({captureFocus:!0,origin:"center center",scrollStrategy:"block",transition:{component:Xl},zIndex:2400,retainFocus:!0}),["disableInitialFocus"])},"VDialog"),Ql=G()({name:"VDialog",props:Jl(),emits:{"update:modelValue":e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(e,t){let{emit:n,slots:a}=t;const i=Pe(e,"modelValue"),{scopeId:s}=Bn(),l=q();function o(){var u;n("afterEnter"),(e.scrim||e.retainFocus)&&((u=l.value)!=null&&u.contentEl)&&!l.value.contentEl.contains(document.activeElement)&&l.value.contentEl.focus({preventScroll:!0})}function r(){n("afterLeave")}return W(i,async u=>{var c;u||(await ce(),(c=l.value.activatorEl)==null||c.focus({preventScroll:!0}))}),J(()=>{const u=Rt.filterProps(e),c=Y({"aria-haspopup":"dialog"},e.activatorProps),m=Y({tabindex:-1},e.contentProps);return b(Rt,Y({ref:l,class:["v-dialog",{"v-dialog--fullscreen":e.fullscreen,"v-dialog--scrollable":e.scrollable},e.class],style:e.style},u,{modelValue:i.value,"onUpdate:modelValue":v=>i.value=v,"aria-modal":"true",activatorProps:c,contentProps:m,height:e.fullscreen?void 0:e.height,width:e.fullscreen?void 0:e.width,maxHeight:e.fullscreen?void 0:e.maxHeight,maxWidth:e.fullscreen?void 0:e.maxWidth,role:"dialog",onAfterEnter:o,onAfterLeave:r},s),{activator:a.activator,default:function(){for(var v=arguments.length,d=new Array(v),y=0;y{var f;return[(f=a.default)==null?void 0:f.call(a,...d)]}})}})}),Xa({},l)}}),Zl=["dotted","dashed","solid","double"],eo=T({color:String,contentOffset:[Number,String,Array],gradient:Boolean,inset:Boolean,length:[Number,String],opacity:[Number,String],thickness:[Number,String],vertical:Boolean,variant:{type:String,default:"solid",validator:e=>Zl.includes(e)},...ee(),...fe()},"VDivider"),ti=G()({name:"VDivider",props:eo(),setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{textColorClasses:s,textColorStyles:l}=et(()=>e.color),o=_(()=>{const u={};return e.length&&(u[e.vertical?"height":"width"]=B(e.length)),e.thickness&&(u[e.vertical?"borderRightWidth":"borderTopWidth"]=B(e.thickness)),u}),r=k(()=>{const u=Array.isArray(e.contentOffset)?e.contentOffset[0]:e.contentOffset,c=Array.isArray(e.contentOffset)?e.contentOffset[1]:0;return{marginBlock:e.vertical&&u?B(u):void 0,marginInline:!e.vertical&&u?B(u):void 0,transform:c?`translate${e.vertical?"X":"Y"}(${B(c)})`:void 0}});return J(()=>{const u=P("hr",{class:H([{"v-divider":!0,"v-divider--gradient":e.gradient&&!a.default,"v-divider--inset":e.inset,"v-divider--vertical":e.vertical},i.value,s.value,e.class]),style:Q([o.value,l.value,{"--v-border-opacity":e.opacity},{"border-style":e.variant},e.style]),"aria-orientation":!n.role||n.role==="separator"?e.vertical?"vertical":"horizontal":void 0,role:`${n.role||"separator"}`},null);return a.default?P("div",{class:H(["v-divider__wrapper",{"v-divider__wrapper--gradient":e.gradient,"v-divider__wrapper--inset":e.inset,"v-divider__wrapper--vertical":e.vertical}])},[u,P("div",{class:"v-divider__content",style:Q(r.value)},[a.default()]),u]):u}),{}}}),to=Sn("v-spacer","div","VSpacer"),vn=Symbol.for("vuetify:list");function ni(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{filterable:!1};const t=Ee(vn,{filterable:!1,hasPrepend:z(!1),updateHasPrepend:()=>null,trackingIndex:z(-1),navigationStrategy:z("focus"),uid:""}),{filterable:n,trackingIndex:a=t.trackingIndex,navigationStrategy:i=t.navigationStrategy,uid:s=t.uid||pn()}=e,l={filterable:t.filterable||n,hasPrepend:z(!1),updateHasPrepend:o=>{o&&(l.hasPrepend.value=o)},trackingIndex:a,navigationStrategy:i,uid:s};return qe(vn,l),t}function ai(){return Ee(vn,null)}const Dn=e=>{const t={activate:n=>{let{id:a,value:i,activated:s}=n;return a=ae(a),e&&!i&&s.size===1&&s.has(a)||(i?s.add(a):s.delete(a)),s},in:(n,a,i)=>{let s=new Set;if(n!=null)for(const l of hn(n))s=t.activate({id:l,value:!0,activated:new Set(s),children:a,parents:i});return s},out:n=>Array.from(n)};return t},ii=e=>{const t=Dn(e);return{activate:a=>{let{activated:i,id:s,...l}=a;s=ae(s);const o=i.has(s)?new Set([s]):new Set;return t.activate({...l,id:s,activated:o})},in:(a,i,s)=>{let l=new Set;if(a!=null){const o=hn(a);o.length&&(l=t.in(o.slice(0,1),i,s))}return l},out:(a,i,s)=>t.out(a,i,s)}},no=e=>{const t=Dn(e);return{activate:a=>{let{id:i,activated:s,children:l,...o}=a;return i=ae(i),l.has(i)?s:t.activate({id:i,activated:s,children:l,...o})},in:t.in,out:t.out}},ao=e=>{const t=ii(e);return{activate:a=>{let{id:i,activated:s,children:l,...o}=a;return i=ae(i),l.has(i)?s:t.activate({id:i,activated:s,children:l,...o})},in:t.in,out:t.out}},io={open:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(n){const s=new Set;s.add(t);let l=i.get(t);for(;l!=null;)s.add(l),l=i.get(l);return s}else return a.delete(t),a},select:()=>null},si={open:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(n){let s=i.get(t);for(a.add(t);s!=null&&s!==t;)a.add(s),s=i.get(s);return a}else a.delete(t);return a},select:()=>null},so={open:si.open,select:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(!n)return a;const s=[];let l=i.get(t);for(;l!=null;)s.push(l),l=i.get(l);return new Set(s)}},Mn=e=>{const t={select:n=>{let{id:a,value:i,selected:s}=n;if(a=ae(a),e&&!i){const l=Array.from(s.entries()).reduce((o,r)=>{let[u,c]=r;return c==="on"&&o.push(u),o},[]);if(l.length===1&&l[0]===a)return s}return s.set(a,i?"on":"off"),s},in:(n,a,i,s)=>{const l=new Map;for(const o of n||[])t.select({id:o,value:!0,selected:l,children:a,parents:i,disabled:s});return l},out:n=>{const a=[];for(const[i,s]of n.entries())s==="on"&&a.push(i);return a}};return t},li=e=>{const t=Mn(e);return{select:a=>{let{selected:i,id:s,...l}=a;s=ae(s);const o=i.has(s)?new Map([[s,i.get(s)]]):new Map;return t.select({...l,id:s,selected:o})},in:(a,i,s,l)=>a!=null&&a.length?t.in(a.slice(0,1),i,s,l):new Map,out:(a,i,s)=>t.out(a,i,s)}},lo=e=>{const t=Mn(e);return{select:a=>{let{id:i,selected:s,children:l,...o}=a;return i=ae(i),l.has(i)?s:t.select({id:i,selected:s,children:l,...o})},in:t.in,out:t.out}},oo=e=>{const t=li(e);return{select:a=>{let{id:i,selected:s,children:l,...o}=a;return i=ae(i),l.has(i)?s:t.select({id:i,selected:s,children:l,...o})},in:t.in,out:t.out}},Fn=e=>{const t={select:n=>{let{id:a,value:i,selected:s,children:l,parents:o,disabled:r}=n;a=ae(a);const u=new Map(s),c=[a];for(;c.length;){const v=c.shift();r.has(v)||s.set(ae(v),i?"on":"off"),l.has(v)&&c.push(...l.get(v))}let m=ae(o.get(a));for(;m;){let v=!0,d=!0;for(const y of l.get(m)){const f=ae(y);if(!r.has(f)&&(s.get(f)!=="on"&&(v=!1),s.has(f)&&s.get(f)!=="off"&&(d=!1),!v&&!d))break}s.set(m,v?"on":d?"off":"indeterminate"),m=ae(o.get(m))}return e&&!i&&Array.from(s.entries()).reduce((d,y)=>{let[f,p]=y;return p==="on"&&d.push(f),d},[]).length===0?u:s},in:(n,a,i)=>{let s=new Map;for(const l of n||[])s=t.select({id:l,value:!0,selected:s,children:a,parents:i,disabled:new Set});return s},out:(n,a)=>{const i=[];for(const[s,l]of n.entries())l==="on"&&!a.has(s)&&i.push(s);return i}};return t},ro=e=>{const t=Fn(e);return{select:t.select,in:t.in,out:(a,i,s)=>{const l=[];for(const[o,r]of a.entries())if(r==="on"){if(s.has(o)){const u=s.get(o);if(a.get(u)==="on")continue}l.push(o)}return l}}},uo=e=>{const n={select:Fn(e).select,in:(a,i,s,l)=>{let o=new Map;for(const r of a||[])i.has(r)||(o=n.select({id:r,value:!0,selected:o,children:i,parents:s,disabled:l}));return o},out:a=>{const i=[];for(const[s,l]of a.entries())(l==="on"||l==="indeterminate")&&i.push(s);return i}};return n},tt=Symbol.for("vuetify:nested"),oi={id:z(),root:{itemsRegistration:q("render"),register:()=>null,unregister:()=>null,updateDisabled:()=>null,children:q(new Map),parents:q(new Map),disabled:q(new Set),open:()=>null,openOnSelect:()=>null,activate:()=>null,select:()=>null,activatable:q(!1),scrollToActive:q(!1),selectable:q(!1),opened:q(new Set),activated:q(new Set),selected:q(new Map),selectedValues:q([]),getPath:()=>[]}},co=T({activatable:Boolean,selectable:Boolean,activeStrategy:[String,Function,Object],selectStrategy:[String,Function,Object],openStrategy:[String,Object],opened:null,activated:null,selected:null,mandatory:Boolean,itemsRegistration:{type:String,default:"render"}},"nested"),fo=(e,t)=>{let{items:n,returnObject:a,scrollToActive:i}=t,s=!1;const l=z(new Map),o=z(new Map),r=z(new Set),u=Pe(e,"opened",e.opened,h=>new Set(Array.isArray(h)?h.map(C=>ae(C)):h),h=>[...h.values()]),c=_(()=>{if(typeof e.activeStrategy=="object")return e.activeStrategy;if(typeof e.activeStrategy=="function")return e.activeStrategy(e.mandatory);switch(e.activeStrategy){case"leaf":return no(e.mandatory);case"single-leaf":return ao(e.mandatory);case"independent":return Dn(e.mandatory);case"single-independent":default:return ii(e.mandatory)}}),m=_(()=>{if(typeof e.selectStrategy=="object")return e.selectStrategy;if(typeof e.selectStrategy=="function")return e.selectStrategy(e.mandatory);switch(e.selectStrategy){case"single-leaf":return oo(e.mandatory);case"leaf":return lo(e.mandatory);case"independent":return Mn(e.mandatory);case"single-independent":return li(e.mandatory);case"trunk":return ro(e.mandatory);case"branch":return uo(e.mandatory);case"classic":default:return Fn(e.mandatory)}}),v=_(()=>{if(typeof e.openStrategy=="object")return e.openStrategy;switch(e.openStrategy){case"list":return so;case"single":return io;case"multiple":default:return si}}),d=Pe(e,"activated",e.activated,h=>c.value.in(h,l.value,o.value),h=>c.value.out(h,l.value,o.value)),y=Pe(e,"selected",e.selected,h=>m.value.in(h,l.value,o.value,r.value),h=>m.value.out(h,l.value,o.value));je(()=>{s=!0});function f(h){const C=[];let x=ae(h);for(;x!==void 0;)C.unshift(x),x=o.value.get(x);return C}const p=xe("nested"),S=new Set,I=Di(()=>{ce(()=>{l.value=new Map(l.value),o.value=new Map(o.value)})},100);W(()=>[n.value,se(a)],()=>{e.itemsRegistration==="props"&&L()},{immediate:!0});function L(){const h=new Map,C=new Map,x=new Set,g=se(a)?E=>ae(E.raw):E=>E.value,R=[...n.value];let M=0;for(;Me.activatable),scrollToActive:k(()=>se(i)),selectable:k(()=>e.selectable),activated:d,selected:y,selectedValues:_(()=>{const h=[];for(const[C,x]of y.value.entries())x==="on"&&h.push(C);return h}),itemsRegistration:k(()=>e.itemsRegistration),register:(h,C,x,g)=>{if(S.has(h)){f(h).map(String).join(" -> "),f(C).concat(h).map(String).join(" -> ");return}else S.add(h);C&&h!==C&&o.value.set(h,C),x&&r.value.add(h),g&&l.value.set(h,[]),C!=null&&l.value.set(C,[...l.value.get(C)||[],h]),I()},unregister:h=>{if(s)return;S.delete(h),l.value.delete(h),r.value.delete(h);const C=o.value.get(h);if(C){const x=l.value.get(C)??[];l.value.set(C,x.filter(g=>g!==h))}o.value.delete(h),I()},updateDisabled:(h,C)=>{C?r.value.add(h):r.value.delete(h)},open:(h,C,x)=>{p.emit("click:open",{id:h,value:C,path:f(h),event:x});const g=v.value.open({id:h,value:C,opened:new Set(u.value),children:l.value,parents:o.value,event:x});g&&(u.value=g)},openOnSelect:(h,C,x)=>{const g=v.value.select({id:h,value:C,selected:new Map(y.value),opened:new Set(u.value),children:l.value,parents:o.value,event:x});g&&(u.value=g)},select:(h,C,x)=>{p.emit("click:select",{id:h,value:C,path:f(h),event:x});const g=m.value.select({id:h,value:C,selected:new Map(y.value),children:l.value,parents:o.value,disabled:r.value,event:x});g&&(y.value=g),w.root.openOnSelect(h,C,x)},activate:(h,C,x)=>{if(!e.activatable)return w.root.select(h,!0,x);p.emit("click:activate",{id:h,value:C,path:f(h),event:x});const g=c.value.activate({id:h,value:C,activated:new Set(d.value),children:l.value,parents:o.value,event:x});if(g.size!==d.value.size)d.value=g;else{for(const R of g)if(!d.value.has(R)){d.value=g;return}for(const R of d.value)if(!g.has(R)){d.value=g;return}}},children:l,parents:o,disabled:r,getPath:f}};return qe(tt,w),w.root},ri=(e,t,n)=>{const a=Ee(tt,oi),i=Symbol("nested item"),s=_(()=>{const o=ae(se(e));return o!==void 0?o:i}),l={...a,id:s,open:(o,r)=>a.root.open(s.value,o,r),openOnSelect:(o,r)=>a.root.openOnSelect(s.value,o,r),isOpen:_(()=>a.root.opened.value.has(s.value)),parent:_(()=>a.root.parents.value.get(s.value)),activate:(o,r)=>a.root.activate(s.value,o,r),isActivated:_(()=>a.root.activated.value.has(s.value)),scrollToActive:a.root.scrollToActive,select:(o,r)=>a.root.select(s.value,o,r),isSelected:_(()=>a.root.selected.value.get(s.value)==="on"),isIndeterminate:_(()=>a.root.selected.value.get(s.value)==="indeterminate"),isLeaf:_(()=>!a.root.children.value.get(s.value)),isGroupActivator:a.isGroupActivator};return _n(()=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||ce(()=>{a.root.register(s.value,a.id.value,se(t),n)})}),je(()=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||a.root.unregister(s.value)}),W(s,(o,r)=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||(a.root.unregister(r),ce(()=>{a.root.register(o,a.id.value,se(t),n)}))}),W(()=>se(t),o=>{a.root.updateDisabled(s.value,o)}),n&&qe(tt,l),l},vo=()=>{const e=Ee(tt,oi);qe(tt,{...e,isGroupActivator:!0})};function mo(){const e=z(!1);return it(()=>{window.requestAnimationFrame(()=>{e.value=!0})}),{ssrBootStyles:k(()=>e.value?void 0:{transition:"none !important"}),isBooted:xa(e)}}const go=Mi({name:"VListGroupActivator",setup(e,t){let{slots:n}=t;return vo(),()=>{var a;return(a=n.default)==null?void 0:a.call(n)}}}),yo=T({activeColor:String,baseColor:String,color:String,collapseIcon:{type:le,default:"$collapse"},disabled:Boolean,expandIcon:{type:le,default:"$expand"},rawId:[String,Number],prependIcon:le,appendIcon:le,fluid:Boolean,subgroup:Boolean,title:String,value:null,...ee(),...oe()},"VListGroup"),ga=G()({name:"VListGroup",props:yo(),setup(e,t){let{slots:n}=t;const{isOpen:a,open:i,id:s}=ri(()=>e.value,()=>e.disabled,!0),l=_(()=>`v-list-group--id-${String(e.rawId??s.value)}`),o=ai(),{isBooted:r}=mo(),u=Ee(tt),c=k(()=>{var f;return((f=u==null?void 0:u.root)==null?void 0:f.itemsRegistration.value)==="render"});function m(f){var p;["INPUT","TEXTAREA"].includes((p=f.target)==null?void 0:p.tagName)||i(!a.value,f)}const v=_(()=>({onClick:m,class:"v-list-group__header",id:l.value})),d=_(()=>a.value?e.collapseIcon:e.expandIcon),y=_(()=>({VListItem:{activeColor:e.activeColor,baseColor:e.baseColor,color:e.color,prependIcon:e.prependIcon||e.subgroup&&d.value,appendIcon:e.appendIcon||!e.subgroup&&d.value,title:e.title,value:e.value}}));return J(()=>b(e.tag,{class:H(["v-list-group",{"v-list-group--prepend":o==null?void 0:o.hasPrepend.value,"v-list-group--fluid":e.fluid,"v-list-group--subgroup":e.subgroup,"v-list-group--open":a.value},e.class]),style:Q(e.style)},{default:()=>[n.activator&&b(ge,{defaults:y.value},{default:()=>[b(go,null,{default:()=>[n.activator({props:v.value,isOpen:a.value})]})]}),b(Xe,{transition:{component:Yl},disabled:!r.value},{default:()=>{var f,p;return[c.value?ze(P("div",{class:"v-list-group__items",role:"group","aria-labelledby":l.value},[(f=n.default)==null?void 0:f.call(n)]),[[Cn,a.value]]):a.value&&P("div",{class:"v-list-group__items",role:"group","aria-labelledby":l.value},[(p=n.default)==null?void 0:p.call(n)])]}})]})),{isOpen:a}}}),ho=T({opacity:[Number,String],...ee(),...oe()},"VListItemSubtitle"),ui=G()({name:"VListItemSubtitle",props:ho(),setup(e,t){let{slots:n}=t;return J(()=>b(e.tag,{class:H(["v-list-item-subtitle",e.class]),style:Q([{"--v-list-item-subtitle-opacity":e.opacity},e.style])},n)),{}}}),ci=Sn("v-list-item-title"),bo=T({active:{type:Boolean,default:void 0},activeClass:String,activeColor:String,appendAvatar:String,appendIcon:le,baseColor:String,disabled:Boolean,lines:[Boolean,String],link:{type:Boolean,default:void 0},nav:Boolean,prependAvatar:String,prependIcon:le,ripple:{type:[Boolean,Object],default:!0},slim:Boolean,prependGap:[Number,String],subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},value:null,index:Number,tabindex:[Number,String],onClick:ft(),onClickOnce:ft(),...st(),...ee(),...He(),...rt(),...bt(),...Le(),...Tn(),...oe(),...fe(),...Ge({variant:"text"})},"VListItem"),mn=G()({name:"VListItem",directives:{vRipple:yt},props:bo(),emits:{click:e=>!0},setup(e,t){let{attrs:n,slots:a,emit:i}=t;const s=Ln(e,n),l=q(),o=_(()=>e.value===void 0?s.href.value:e.value),{activate:r,isActivated:u,select:c,isOpen:m,isSelected:v,isIndeterminate:d,isGroupActivator:y,root:f,parent:p,openOnSelect:S,scrollToActive:I,id:L}=ri(o,()=>e.disabled,!1),w=ai(),h=_(()=>{var D;return e.active!==!1&&(e.active||((D=s.isActive)==null?void 0:D.value)||(f.activatable.value?u.value:v.value))}),C=k(()=>e.link!==!1&&s.isLink.value),x=_(()=>!!w&&(f.selectable.value||f.activatable.value||e.value!=null)),g=_(()=>!e.disabled&&e.link!==!1&&(e.link||s.isClickable.value||x.value)),R=_(()=>w&&w.navigationStrategy.value==="track"&&e.index!==void 0&&w.trackingIndex.value===e.index),M=_(()=>w?C.value?"link":x.value?"option":"listitem":void 0),E=_(()=>{if(x.value)return f.activatable.value?u.value:f.selectable.value?v.value:h.value}),V=k(()=>e.rounded||e.nav),A=k(()=>e.color??e.activeColor),N=k(()=>({color:h.value?A.value??e.baseColor:e.baseColor,variant:e.variant}));W(()=>{var D;return(D=s.isActive)==null?void 0:D.value},D=>{D&&O()}),W(u,D=>{var re;!D||!I||(re=l.value)==null||re.scrollIntoView({block:"nearest",behavior:"instant"})}),W(R,D=>{var re;D&&((re=l.value)==null||re.scrollIntoView({block:"nearest",behavior:"instant"}))}),_n(()=>{var D;(D=s.isActive)!=null&&D.value&&ce(()=>O())});function O(){p.value!=null&&f.open(p.value,!0),S(!0)}const{themeClasses:U}=ye(e),{borderClasses:X}=lt(e),{colorClasses:te,colorStyles:he,variantClasses:K}=wt(N),{densityClasses:$}=ot(e),{dimensionStyles:Z}=ut(e),{elevationClasses:j}=St(e),{roundedClasses:be}=Te(V),Ue=k(()=>e.lines?`v-list-item--${e.lines}-line`:void 0),$e=k(()=>e.ripple!==void 0&&e.ripple&&(w!=null&&w.filterable)?{keys:["Enter"]}:e.ripple),F=_(()=>({isActive:h.value,select:c,isOpen:m.value,isSelected:v.value,isIndeterminate:d.value,isDisabled:e.disabled}));function ue(D){var re,kt,Wt;i("click",D),!["INPUT","TEXTAREA"].includes((re=D.target)==null?void 0:re.tagName)&&g.value&&((Wt=(kt=s.navigate).value)==null||Wt.call(kt,D),!y&&(f.activatable.value?r(!u.value,D):(f.selectable.value||e.value!=null&&!C.value)&&c(!v.value,D)))}function De(D){const re=D.target;["INPUT","TEXTAREA"].includes(re.tagName)||(D.key==="Enter"||D.key===" "&&!(w!=null&&w.filterable))&&(D.preventDefault(),D.stopPropagation(),D.target.dispatchEvent(new MouseEvent("click",D)))}return J(()=>{const D=C.value?"a":e.tag,re=a.title||e.title!=null,kt=a.subtitle||e.subtitle!=null,gi=!!(!!(e.appendAvatar||e.appendIcon)||a.append),qt=!!(!!(e.prependAvatar||e.prependIcon)||a.prepend);return w==null||w.updateHasPrepend(qt),e.activeColor&&Fi("active-color",["color","base-color"]),ze(b(D,Y(s.linkProps,{ref:l,id:e.index!==void 0&&w?`v-list-item-${w.uid}-${e.index}`:void 0,class:["v-list-item",{"v-list-item--active":h.value,"v-list-item--disabled":e.disabled,"v-list-item--link":g.value,"v-list-item--nav":e.nav,"v-list-item--prepend":!qt&&(w==null?void 0:w.hasPrepend.value),"v-list-item--slim":e.slim,"v-list-item--focus-visible":R.value,[`${e.activeClass}`]:e.activeClass&&h.value},U.value,X.value,te.value,$.value,j.value,Ue.value,be.value,K.value,e.class],style:[{"--v-list-prepend-gap":B(e.prependGap)},he.value,Z.value,e.style],tabindex:e.tabindex??(g.value?w?-2:0:void 0),"aria-selected":E.value,role:M.value,onClick:ue,onKeydown:g.value&&!C.value&&De}),{default:()=>{var zn;return[pt(g.value||h.value,"v-list-item"),qt&&P("div",{key:"prepend",class:"v-list-item__prepend"},[a.prepend?b(ge,{key:"prepend-defaults",defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon},VListItemAction:{start:!0},VCheckboxBtn:{density:e.density}}},{default:()=>{var Se;return[(Se=a.prepend)==null?void 0:Se.call(a,F.value)]}}):P(Be,null,[e.prependAvatar&&b(Nt,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&b(_e,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)]),P("div",{class:"v-list-item__spacer"},null)]),P("div",{class:"v-list-item__content","data-no-activator":""},[re&&b(ci,{key:"title"},{default:()=>{var Se;return[((Se=a.title)==null?void 0:Se.call(a,{title:e.title}))??Ce(e.title)]}}),kt&&b(ui,{key:"subtitle"},{default:()=>{var Se;return[((Se=a.subtitle)==null?void 0:Se.call(a,{subtitle:e.subtitle}))??Ce(e.subtitle)]}}),(zn=a.default)==null?void 0:zn.call(a,F.value)]),gi&&P("div",{key:"append",class:"v-list-item__append"},[a.append?b(ge,{key:"append-defaults",defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon},VListItemAction:{end:!0},VCheckboxBtn:{density:e.density}}},{default:()=>{var Se;return[(Se=a.append)==null?void 0:Se.call(a,F.value)]}}):P(Be,null,[e.appendIcon&&b(_e,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&b(Nt,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)]),P("div",{class:"v-list-item__spacer"},null)])]}}),[[yt,g.value&&$e.value]])}),{activate:r,isActivated:u,isGroupActivator:y,isSelected:v,list:w,select:c,root:f,id:L,link:s}}}),So=T({color:String,inset:Boolean,sticky:Boolean,title:String,...ee(),...oe()},"VListSubheader"),po=G()({name:"VListSubheader",props:So(),setup(e,t){let{slots:n}=t;const{textColorClasses:a,textColorStyles:i}=et(()=>e.color);return J(()=>{const s=!!(n.default||e.title);return b(e.tag,{class:H(["v-list-subheader",{"v-list-subheader--inset":e.inset,"v-list-subheader--sticky":e.sticky},a.value,e.class]),style:Q([{textColorStyles:i},e.style])},{default:()=>{var l;return[s&&P("div",{class:"v-list-subheader__text"},[((l=n.default)==null?void 0:l.call(n))??e.title])]}})}),{}}}),wo=T({items:Array,returnObject:Boolean},"VListChildren"),di=G()({name:"VListChildren",props:wo(),setup(e,t){let{slots:n}=t;return ni(),()=>{var a,i;return((a=n.default)==null?void 0:a.call(n))??((i=e.items)==null?void 0:i.map((s,l)=>{var d,y;let{children:o,props:r,type:u,raw:c}=s;if(u==="divider")return((d=n.divider)==null?void 0:d.call(n,{props:r}))??b(ti,r,null);if(u==="subheader")return((y=n.subheader)==null?void 0:y.call(n,{props:r}))??b(po,r,null);const m={subtitle:n.subtitle?f=>{var p;return(p=n.subtitle)==null?void 0:p.call(n,{...f,item:c})}:void 0,prepend:n.prepend?f=>{var p;return(p=n.prepend)==null?void 0:p.call(n,{...f,item:c})}:void 0,append:n.append?f=>{var p;return(p=n.append)==null?void 0:p.call(n,{...f,item:c})}:void 0,title:n.title?f=>{var p;return(p=n.title)==null?void 0:p.call(n,{...f,item:c})}:void 0},v=ga.filterProps(r);return o?b(ga,Y(v,{value:e.returnObject?c:r==null?void 0:r.value,rawId:r==null?void 0:r.value}),{activator:f=>{let{props:p}=f;const S=Y(r,p,{value:e.returnObject?c:r.value});return n.header?n.header({props:S}):b(mn,Y(S,{index:l}),m)},default:()=>b(di,{items:o,returnObject:e.returnObject},n)}):n.item?n.item({props:{...r,index:l}}):b(mn,Y(r,{index:l,value:e.returnObject?c:r.value}),m)}))}}}),ko=T({items:{type:Array,default:()=>[]},itemTitle:{type:[String,Array,Function],default:"title"},itemValue:{type:[String,Array,Function],default:"value"},itemChildren:{type:[Boolean,String,Array,Function],default:"children"},itemProps:{type:[Boolean,String,Array,Function],default:"props"},itemType:{type:[Boolean,String,Array,Function],default:"type"},returnObject:Boolean,valueComparator:Function},"list-items"),Co=new Set(["item","divider","subheader"]);function Qe(e,t){const n=ke(t,e.itemTitle,t),a=ke(t,e.itemValue,n),i=ke(t,e.itemChildren),s=e.itemProps===!0?typeof t=="object"&&t!=null&&!Array.isArray(t)?"children"in t?at(t,["children"]):t:void 0:ke(t,e.itemProps);let l=ke(t,e.itemType,"item");Co.has(l)||(l="item");const o={title:n,value:a,...s};return{type:l,title:String(o.title??""),value:o.value,props:o,children:l==="item"&&Array.isArray(i)?fi(e,i):void 0,raw:t}}Qe.neededProps=["itemTitle","itemValue","itemChildren","itemProps","itemType"];function fi(e,t){const n=ka(e,Qe.neededProps),a=[];for(const i of t)a.push(Qe(n,i));return a}function Go(e){const t=_(()=>fi(e,e.items)),n=_(()=>t.value.some(o=>o.value===null)),a=z(new Map),i=z([]);Re(()=>{const o=t.value,r=new Map,u=[];for(let c=0;c{let{raw:u}=r;return u}):o.map(r=>{let{value:u}=r;return u})}return{items:t,transformIn:s,transformOut:l}}const _o=new Set(["item","divider","subheader"]);function xo(e,t){const n=an(t)?t:ke(t,e.itemTitle),a=an(t)?t:ke(t,e.itemValue,void 0),i=ke(t,e.itemChildren),s=e.itemProps===!0?at(t,["children"]):ke(t,e.itemProps);let l=ke(t,e.itemType,"item");_o.has(l)||(l="item");const o={title:n,value:a,...s};return{type:l,title:o.title,value:o.value,props:o,children:l==="item"&&i?vi(e,i):void 0,raw:t}}function vi(e,t){const n=[];for(const a of t)n.push(xo(e,a));return n}function Io(e){return{items:_(()=>vi(e,e.items))}}const Po=T({baseColor:String,activeColor:String,activeClass:String,bgColor:String,disabled:Boolean,filterable:Boolean,expandIcon:le,collapseIcon:le,lines:{type:[Boolean,String],default:"one"},slim:Boolean,prependGap:[Number,String],indent:[Number,String],nav:Boolean,navigationStrategy:{type:String,default:"focus"},navigationIndex:Number,"onClick:open":ft(),"onClick:select":ft(),"onUpdate:opened":ft(),...co({selectStrategy:"single-leaf",openStrategy:"list"}),...st(),...ee(),...He(),...rt(),...bt(),...ko(),...Le(),...oe(),...fe(),...Ge({variant:"text"})},"VList"),Ao=G()({name:"VList",props:Po(),emits:{"update:selected":e=>!0,"update:activated":e=>!0,"update:opened":e=>!0,"update:navigationIndex":e=>!0,"click:open":e=>!0,"click:activate":e=>!0,"click:select":e=>!0},setup(e,t){let{attrs:n,slots:a,emit:i}=t;const{items:s}=Io(e),{themeClasses:l}=ye(e),{backgroundColorClasses:o,backgroundColorStyles:r}=Je(()=>e.bgColor),{borderClasses:u}=lt(e),{densityClasses:c}=ot(e),{dimensionStyles:m}=ut(e),{elevationClasses:v}=St(e),{roundedClasses:d}=Te(e),{children:y,open:f,parents:p,select:S,getPath:I}=fo(e,{items:s,returnObject:k(()=>e.returnObject),scrollToActive:k(()=>e.navigationStrategy==="track")}),L=k(()=>e.lines?`v-list--${e.lines}-line`:void 0),w=k(()=>e.activeColor),h=k(()=>e.baseColor),C=k(()=>e.color),x=k(()=>e.selectable||e.activatable),g=Pe(e,"navigationIndex",-1,$=>$??-1),R=pn();ni({filterable:e.filterable,trackingIndex:g,navigationStrategy:k(()=>e.navigationStrategy),uid:R}),W(s,()=>{e.navigationStrategy==="track"&&(g.value=-1)}),$t({VListGroup:{activeColor:w,baseColor:h,color:C,expandIcon:k(()=>e.expandIcon),collapseIcon:k(()=>e.collapseIcon)},VListItem:{activeClass:k(()=>e.activeClass),activeColor:w,baseColor:h,color:C,density:k(()=>e.density),disabled:k(()=>e.disabled),lines:k(()=>e.lines),nav:k(()=>e.nav),slim:k(()=>e.slim),variant:k(()=>e.variant),tabindex:k(()=>e.navigationStrategy==="track"?-1:void 0)}});const M=z(!1),E=q();function V($){M.value=!0}function A($){M.value=!1}function N($){var Z;e.navigationStrategy==="track"?~g.value||(g.value=X("first")):!M.value&&!($.relatedTarget&&((Z=E.value)!=null&&Z.contains($.relatedTarget)))&&K()}function O(){e.navigationStrategy==="track"&&(g.value=-1)}function U($){switch($){case"ArrowDown":return"next";case"ArrowUp":return"prev";case"Home":return"first";case"End":return"last";default:return null}}function X($){const Z=s.value.length;if(Z===0)return-1;let j;$==="first"?j=0:$==="last"?j=Z-1:(j=g.value+($==="next"?1:-1),j<0&&(j=Z-1),j>=Z&&(j=0));const be=j;let Ue=0;for(;Ue=Z&&(j=0),j===be)return-1;Ue++}return-1}function te($){const Z=$.target;if(!E.value||Z.tagName==="INPUT"&&["Home","End"].includes($.key)||Z.tagName==="TEXTAREA")return;const j=U($.key);if(j!==null)if($.preventDefault(),e.navigationStrategy==="track"){const be=X(j);be!==-1&&(g.value=be)}else K(j)}function he($){M.value=!0}function K($){if(E.value)return zi(E.value,$)}return J(()=>{const $=e.indent??(e.prependGap?Number(e.prependGap)+24:void 0),Z=x.value?n.ariaMultiselectable??!String(e.selectStrategy).startsWith("single-"):void 0;return b(e.tag,{ref:E,class:H(["v-list",{"v-list--disabled":e.disabled,"v-list--nav":e.nav,"v-list--slim":e.slim},l.value,o.value,u.value,c.value,v.value,L.value,d.value,e.class]),style:Q([{"--v-list-indent":B($),"--v-list-group-prepend":$?"0px":void 0,"--v-list-prepend-gap":B(e.prependGap)},r.value,m.value,e.style]),tabindex:e.disabled?-1:0,role:x.value?"listbox":"list","aria-activedescendant":e.navigationStrategy==="track"&&g.value>=0?`v-list-item-${R}-${g.value}`:void 0,"aria-multiselectable":Z,onFocusin:V,onFocusout:A,onFocus:N,onBlur:O,onKeydown:te,onMousedown:he},{default:()=>[b(di,{items:s.value,returnObject:e.returnObject},a)]})}),{open:f,select:S,focus:K,children:y,parents:p,getPath:I,navigationIndex:g}}});let gn=null;const mi={name:"RateLimitModal",data(){return{isVisible:!1,activeRequests:[]}},computed:{hasActiveRequests(){return this.activeRequests.length>0}},watch:{hasActiveRequests(e){this.isVisible=e}},methods:{close(){this.isVisible=!1},show(e,t,n){const a=Date.now()+Math.random().toString(36).substring(2,9),i=Math.max(0,Math.floor((new Date(e)-new Date)/1e3)),s={id:a,resetTime:e,path:t,method:n,remainingSeconds:i};this.activeRequests.push(s),this.startCountdown(a),this.isVisible=!0},startCountdown(e){const t=this.activeRequests.find(a=>a.id===e);if(!t)return;const n=setInterval(()=>{const a=this.activeRequests.findIndex(i=>i.id===e);if(a===-1){clearInterval(n);return}this.activeRequests[a].remainingSeconds--,this.activeRequests[a].remainingSeconds<=0&&(clearInterval(n),this.activeRequests.splice(a,1))},1e3);t.intervalId=n},clearAllCountdowns(){this.activeRequests.forEach(e=>{e.intervalId&&clearInterval(e.intervalId)}),this.activeRequests=[]}},beforeUnmount(){this.clearAllCountdowns()},created(){gn=this}};mi.show=function(e,t,n){gn&&gn.show(e,t,n)};const Eo=mi,Vo={class:"text-primary font-weight-bold"};function Lo(e,t,n,a,i,s){return Ie(),Fe(Ql,{modelValue:e.isVisible,"onUpdate:modelValue":t[0]||(t[0]=l=>e.isVisible=l),"max-width":"500",persistent:""},{default:ie(()=>[b(fa,{class:"rate-limit-modal"},{default:ie(()=>[b(Qa,{class:"text-center pa-4 bg-error text-white"},{default:ie(()=>[b(_e,{class:"mr-2",icon:"mdi-clock-alert-outline",size:"large"}),t[1]||(t[1]=Ct(" 请求频率超限 ",-1))]),_:1}),b(fn,{class:"pa-6"},{default:ie(()=>[t[3]||(t[3]=P("div",{class:"text-body-1 mb-4"},"您的请求过于频繁,请稍后再试。",-1)),e.activeRequests.length>0?(Ie(),Fe(fa,{key:0,class:"mb-4",flat:""},{default:ie(()=>[b(fn,null,{default:ie(()=>[(Ie(!0),Ia(Be,null,Zi(e.activeRequests,(l,o)=>(Ie(),Fe(Ao,{key:o,class:"mb-4"},{default:ie(()=>[b(mn,{color:"primary","prepend-icon":"mdi-web"},{default:ie(()=>[b(ci,null,{default:ie(()=>[t[2]||(t[2]=Ct(" 等待时间: ",-1)),P("span",Vo,Ce(l.remainingSeconds),1)]),_:2},1024),b(ui,null,{default:ie(()=>[Ct(Ce(l.method)+" "+Ce(l.path),1)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128)),e.index[b(to),b(Wa,{color:"primary",variant:"tonal",onClick:e.close},{default:ie(()=>[...t[5]||(t[5]=[Ct(" 我知道了",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])}const To=Pa(Eo,[["render",Lo]]),Oo=T({...ee(),...at(qi(),["fullHeight"]),...fe()},"VApp"),Bo=G()({name:"VApp",props:Oo(),setup(e,t){let{slots:n}=t;const a=ye(e),{layoutClasses:i,getLayoutItem:s,items:l,layoutRef:o}=Wi({...e,fullHeight:!0}),{rtlClasses:r}=Dt();return J(()=>{var u;return P("div",{ref:o,class:H(["v-application",a.themeClasses.value,i.value,r.value,e.class]),style:Q([e.style])},[P("div",{class:"v-application__wrap"},[(u=n.default)==null?void 0:u.call(n)])])}),{getLayoutItem:s,items:l,theme:a}}}),Ro={__name:"App",setup(e){const t=ha();return it(()=>{const n=In("theme.mode");t.global.name.value=n,window.addEventListener("beforeinstallprompt",a=>{a.preventDefault(),window.deferredPwaPrompt=a,window.dispatchEvent(new Event("pwa-prompt-ready"))})}),(n,a)=>{const i=es("router-view"),s=Ya;return Ie(),Fe(Bo,null,{default:ie(()=>[b(i,null,{default:ie(({Component:l,route:o})=>[b(Ne,{mode:"out-in",name:"md3"},{default:ie(()=>[(Ie(),Fe(Ca(l),{key:o.path}))]),_:2},1024)]),_:1}),b(s),b(To)]),_:1})}}},nt=ts(Ro);rs(nt);nt.use(Ke);nt.component("GlobalMessage",Ya);nt.mount("#app");setTimeout(()=>{ne(async()=>{const{initSentry:e}=await import("./sentry-BV2lBeZ_.js");return{initSentry:e}},__vite__mapDeps([85,61,1,2,86]),import.meta.url).then(({initSentry:e})=>{const t=nt.config.globalProperties.$router;e(nt,t)}).catch(e=>{console.warn("Sentry 初始化失败:",e)})},1e3);const ya=async()=>{try{const{getVisitorId:e}=await ne(async()=>{const{getVisitorId:a}=await import("./visitorId-BqmEfSoz.js");return{getVisitorId:a}},__vite__mapDeps([61,1,2]),import.meta.url),t=(await ne(async()=>{const{default:a}=await import("./index-ghQi_28l.js");return{default:a}},[],import.meta.url)).default;t.init("rhp8uqoc3l");const n=await e();console.log("Visitor ID:",n),t.identify(n),t.setTag("fingerprintjs",n)}catch(e){console.warn("Clarity 加载或标识设置失败:",e)}};document.readyState==="complete"?ya():window.addEventListener("load",ya,{once:!0});export{Oa as $,ua as A,ei as B,Rt as C,Xa as D,Ml as E,Fo as F,et as G,Je as H,el as I,ot as J,Bn as K,He as L,Nt as M,Rn as N,jl as O,vs as P,ys as Q,hs as R,Ve as S,gl as T,ml as U,Ds as V,Yl as W,po as X,Ba as Y,Ws as Z,Pa as _,rt as a,As as a0,Ps as a1,Cl as a2,Xe as a3,kl as a4,Is as a5,lt as a6,An as a7,Te as a8,ge as a9,Go as aA,Qe as aB,us as aC,cs as aD,da as aE,Xl as aF,ko as aG,vl as aH,Mo as aI,St as aa,Le as ab,zt as ac,bt as ad,st as ae,To as af,wt as ag,Vn as ah,pt as ai,Ge as aj,En as ak,yt as al,Wo as am,zo as an,xs as ao,Ft as ap,Ln as aq,Ho as ar,Mt as as,Tn as at,Ga as au,Hs as av,pl as aw,Sl as ax,Ke as ay,qo as az,ut as b,Qa as c,fn as d,fa as e,_e as f,In as g,Ta as h,Wa as i,jo as j,Ql as k,Ao as l,oe as m,mn as n,ci as o,ui as p,Ja as q,to as r,fs as s,ne as t,mo as u,ti as v,gs as w,Qn as x,Ll as y,Oe as z}; diff --git a/assets/index-D3RRUIYd.js b/assets/index-D3RRUIYd.js deleted file mode 100644 index 6a3ba96..0000000 --- a/assets/index-D3RRUIYd.js +++ /dev/null @@ -1,6 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-_6IQhlPZ.js","./vendor-vuetify-ChAgIwn2.js","./vendor-vue-H0jQBZ7T.js","./index-CXKF55qP.css","./dataProvider-BwUtbSl1.js","./vendor-utils-DDRLRfsI.js","./serverRotation-BGVL0kta.js","./MessageLog-DNZPN4Qf.js","./VAppBarTitle-Cvegbk0-.js","./VAppBarTitle-CczdD-Q2.css","./MessageLog-BGkFwivK.css","./RandomPicker-D4SIlUxw.js","./VTextField-CuXGbmmC.js","./autofocus-BrMOVHY_.js","./autofocus-D1VSzmed.css","./VTooltip-C2Bprg_f.js","./VTooltip-DNuxJ6UK.css","./VChip-Veb3ShEh.js","./VChip-Dmz_1Lnv.css","./RandomPicker-CFzd4pLS.css","./FloatingToolbar-Hmj4Cwyb.js","./VSheet-U4CNWLuy.js","./VSheet-DxsDksIw.css","./VDatePicker-cLZU-Ed4.js","./VBadge-VwKD9DDf.js","./VBadge-BGqjJnM0.css","./VDatePicker-X4Ryb5EN.css","./FloatingToolbar-DbFL4asY.css","./ChatWidget-CC4arZYT.js","./socketClient-Cb2FghxN.js","./vendor-socket-CyTcV1HU.js","./soundList-BZnE47k0.js","./deviceEvents-BnDFIf8a.js","./VRow-WkEz3xRr.js","./VRow-D2ArqUC2.css","./VPagination-BiSMksGW.js","./VPagination-BF2MZmld.css","./VTextarea-CCCqy4pz.js","./VTextarea-_xVwaw_z.css","./ChatWidget-DT8kwi-O.css","./HomeworkEditDialog-CzJk0Rhv.js","./VAlert-D9G_9owC.js","./VAlert-D_OX1cfW.css","./HomeworkEditDialog-BYeU7sR3.css","./InitServiceChooser-DBAmZLOu.js","./VExpansionPanels-rcXmB3Pp.js","./VExpansionPanels-kEj4ZJQK.css","./InitServiceChooser-CJilcHuq.css","./StudentNameManager-CKU0cAHn.js","./VAutocomplete-lO4hforf.js","./VSelect-ANRyd3L-.js","./VCheckboxBtn-DCkgbmVP.js","./VSwitch-CdpUb5tZ.js","./VSwitch-C87GkfUP.css","./VSelect-DHZViySU.css","./VAutocomplete-Ygy_KjMW.css","./VCombobox-D6SxB9Ke.js","./VCombobox-r6cc1Iy_.css","./StudentNameManager-tn0RQdqM.css","./UrgentTestDialog-DpliVwT_.js","./VContainer-Bg8RevuO.js","./VContainer-B1KSavhG.css","./VForm-Cskwow1F.js","./VCheckbox-DhU7h1Z3.js","./VCheckbox-ZL-u1kGB.css","./UrgentTestDialog-BdqUELUV.css","./AttendanceSidebar-DFGkatIT.js","./AttendanceManagementDialog-CCmX9Ffv.js","./AttendanceManagementDialog-B_Clb251.css","./PwaInstallCard-CTQnZjV3.js","./ExamScheduleCard-D_oQZ_gl.js","./ExamScheduleCard-B03q7hf4.css","./ExamConfigEditor-DzELjE-Y.js","./VSkeletonLoader-CfCoJRep.js","./VSkeletonLoader-C11ZEozu.css","./ExamConfigEditor-DV8lOLSp.css"])))=>i.map(i=>d[i]); -import{_ as O,V as re,c as N,d as _,e as T,S as H,w as te,g as k,f as E,h as R,i as $,j as X,k as Z,l as D,n as le,o as V,p as j,q as M,r as Se,s as be,t as xe,v as se,x as F}from"./index-_6IQhlPZ.js";import{X as l,_ as g,j as i,N as A,S as m,a5 as Ce,a6 as _e,a7 as Te,Y as y,Z as r,k as f,F as b,a2 as C,n as U,$ as S,a1 as h,U as ae,e as Ee,a3 as x,a8 as I}from"./vendor-vue-H0jQBZ7T.js";import{d as L,a as Ie,k as Ne}from"./dataProvider-BwUtbSl1.js";import{a as J,g as de}from"./vendor-utils-DDRLRfsI.js";import{V as z}from"./VChip-Veb3ShEh.js";import{a0 as Q}from"./vendor-vuetify-ChAgIwn2.js";import{V as ce}from"./VContainer-Bg8RevuO.js";import{g as Ae,j as ne,o as Ve,a as oe,l as Re}from"./socketClient-Cb2FghxN.js";import{c as Oe}from"./deviceEvents-BnDFIf8a.js";import{V as Le,a as Pe}from"./VAppBarTitle-Cvegbk0-.js";import{V as ze,a as je}from"./VRow-WkEz3xRr.js";import{V as Me}from"./VAlert-D9G_9owC.js";import{V as Ue}from"./VTooltip-C2Bprg_f.js";const Be={__name:"AsyncLoadingPlaceholder",props:{height:{type:String,default:"120px"}},setup(e){return(t,s)=>(l(),g("div",{class:"async-loading-placeholder d-flex justify-center align-center",style:A({minHeight:e.height})},[i(re,{indeterminate:"",color:"primary",size:"28",width:"2"})],4))}},K=O(Be,[["__scopeId","data-v-2d12e0c7"]]),Fe={name:"RelativeTimeDisplay",props:{time:{type:[String,Date,Number],required:!0}},computed:{displayTime(){if(!this.time)return"";const e=new Date(this.time),t=new Date,s=new Date(e.getFullYear(),e.getMonth(),e.getDate()),o=new Date(t.getFullYear(),t.getMonth(),t.getDate()),a=s.getTime()-o.getTime(),n=Math.round(a/(1e3*60*60*24));if(n===0)return"今天";if(n===1)return"明天";if(n===2)return"后天";if(n===-1)return"昨天";if(n===-2)return"前天";const c=o.getDay()||7,p=new Date(o);p.setDate(o.getDate()-c+1);const v=new Date(o);if(v.setDate(o.getDate()+(7-c)),s>=p&&s<=v)return["周日","周一","周二","周三","周四","周五","周六"][e.getDay()];const d=e.getMonth()+1,w=e.getDate();return`${d}月${w}日`}}};function He(e,t,s,o,a,n){return l(),g("span",null,m(n.displayTime),1)}const ue=O(Fe,[["render",He]]),ee=Ce("exam",{state:()=>({examList:[],exams:{},loadingList:!1,loadingDetails:{}}),actions:{async fetchExamList(){if(!this.loadingList){this.loadingList=!0;try{const e=await L.loadData("es_list");Array.isArray(e)?this.examList=e:this.examList=[]}catch(e){console.error("Failed to load exam list:",e)}finally{this.loadingList=!1}}},async fetchExam(e){if(this.exams[e])return this.exams[e];if(!this.loadingDetails[e]){this.loadingDetails[e]=!0;try{const t=await L.loadData(`es_${e}`);return t&&(this.exams[e]=t),t}catch(t){console.error(`Failed to load exam details for ${e}:`,t)}finally{this.loadingDetails[e]=!1}}},async getUpcomingExams(e=25){await this.fetchExamList();const t=[],s=new Date,o=new Date(s.getTime()+2*24*60*60*1e3),a=this.examList.slice(0,e);for(const n of a){let c=this.exams[n.id];c||(c=await this.fetchExam(n.id)),c&&c.examInfos&&Array.isArray(c.examInfos)&&c.examInfos.some(v=>{const d=new Date(v.start);return d>=s&&d<=o})&&t.push({id:n.id,...c})}return t}}}),$e={name:"ConciseExamCard",components:{RelativeTimeDisplay:ue},props:{examId:{type:String,required:!0},contentStyle:{type:Object,default:()=>({})},readonly:{type:Boolean,default:!1}},computed:{...Te(ee,["exams","loadingDetails"]),exam(){return this.exams[this.examId]},loading(){return this.loadingDetails[this.examId]},groupedExamInfos(){if(!this.exam||!this.exam.examInfos)return[];const e=[...this.exam.examInfos].sort((o,a)=>new Date(o.start)-new Date(a.start)),t=[];let s=null;return e.forEach(o=>{const n=new Date(o.start).toDateString();(!s||s.key!==n)&&(s={key:n,date:o.start,infos:[]},t.push(s)),s.infos.push(o)}),t}},mounted(){this.fetchExam(this.examId)},methods:{..._e(ee,["fetchExam"]),formatTimeOnly(e){if(!e)return"";try{const t=new Date(e),s=t.getHours().toString().padStart(2,"0"),o=t.getMinutes().toString().padStart(2,"0");return`${s}:${o}`}catch{return""}},isPast(e){return e?new Date(e)e.$emit("click"))},{default:r(()=>[i(N,{class:"d-flex align-center py-2 px-3 bg-primary-lighten-5 text-subtitle-1 font-weight-bold"},{default:r(()=>{var p;return[f("span",Ke,m(((p=n.exam)==null?void 0:p.examName)||"加载中..."),1)]}),_:1}),i(_,{class:"flex-grow-1 pa-4 overflow-y-auto",style:A(s.contentStyle)},{default:r(()=>[n.loading?(l(),g("div",We,[i(re,{indeterminate:"",size:"24",color:"primary"})])):n.exam?(l(),g("div",Ge,[(l(!0),g(b,null,C(n.groupedExamInfos,(p,v)=>(l(),g("div",{key:v,class:"mb-3"},[f("div",qe,[i(c,{time:p.date},null,8,["time"])]),(l(!0),g(b,null,C(p.infos,(d,w)=>(l(),g("div",{key:w,class:U(["d-flex align-center justify-space-between py-1 border-b-sm",{"border-none":w===p.infos.length-1,"text-grey":n.isPast(d.end)}])},[f("div",Je,m(d.name),1),f("div",Ye,m(n.formatTimeOnly(d.start))+" - "+m(n.formatTimeOnly(d.end)),1)],2))),128))]))),128))])):(l(),g("div",Xe,"无法加载"))]),_:1},8,["style"])]),_:1})}const he=O($e,[["render",Ze],["__scopeId","data-v-33424f55"]]),Qe=["6IO4","5Lmz","6JCd6I6J","5rer","5aW4"],et=Qe.map(e=>de.decode(e)),ie=.75,tt={name:"HitokotoCard",data(){return{enabled:!1,refreshInterval:60,kvConfig:{sources:["zhaoyu"],sensitiveWords:[]},sentence:"",author:"",origin:"",loading:!1,timer:null,unwatch:null,fontSize:28}},computed:{contentStyle(){return{"font-size":`${this.fontSize*ie}px`,"white-space":"pre-wrap","line-height":"1.6","text-align":"left"}},authorStyle(){return{"font-size":`${this.fontSize*ie*.6}px`,"text-align":"left"}}},async mounted(){this.loadLocalSettings(),await this.loadKvSettings(),this.fetchSentence(),this.startTimer(),this.unwatch=te(()=>{this.loadLocalSettings(),this.startTimer()})},beforeUnmount(){this.stopTimer(),this.unwatch&&this.unwatch()},methods:{loadLocalSettings(){this.enabled=H.getSetting("hitokoto.enabled"),this.refreshInterval=H.getSetting("hitokoto.refreshInterval"),this.fontSize=H.getSetting("font.size")},async loadKvSettings(){try{const e=await L.loadData("sentence-info");let t=e;e&&e.data&&(t=e.data),t&&(this.kvConfig={sources:Array.isArray(t.sources)&&t.sources.length>0?t.sources:["zhaoyu"],sensitiveWords:t.sensitiveWords?t.sensitiveWords.split(/[,,]/).map(s=>s.trim()).filter(s=>s):[],jinrishiciToken:t.jinrishiciToken})}catch(e){console.error("Failed to load sentence-info",e)}},startTimer(){this.timer&&clearInterval(this.timer),this.refreshInterval>0&&(this.timer=setInterval(this.fetchSentence,this.refreshInterval*1e3))},stopTimer(){this.timer&&clearInterval(this.timer)},async fetchSentence(){if(!this.loading){this.loading=!0;try{const e=this.kvConfig.sources,t=e[Math.floor(Math.random()*e.length)];let s=null,o="",a="",n="";if(t==="hitokoto")s=(await J.get("https://v1.hitokoto.cn/")).data,o=s.hitokoto,a=s.from_who,n=s.from;else if(t==="zhaoyu"){const c=await J.get("https://hub.saintic.com/openservice/sentence/all.json");c.data.success&&(s=c.data.data,o=s.sentence||s.content||s.name,a=s.author,n=s.name||s.origin)}else if(t==="jinrishici")if(this.kvConfig.jinrishiciToken){const c=await J.get("https://v2.jinrishici.com/one.json?client=npm-sdk/1.0&X-User-Token="+encodeURIComponent(this.kvConfig.jinrishiciToken),{});c.data.status==="success"&&(s=c.data.data,o=s.content,a=s.origin.author,n=s.origin.title)}else return console.warn("Jinrishici token missing. Please enable it in settings to generate a token."),this.loading=!1,this.fetchSentence();if(o){if([...et,...this.kvConfig.sensitiveWords].some(v=>v&&o.includes(v)))return this.loading=!1,this.fetchSentence();this.sentence=o,this.author=a||"",this.origin=n||"未知"}}catch(e){console.error("Failed to fetch sentence",e),this.sentence="获取失败",this.author="",this.origin=""}finally{this.loading=!1}}}}},st={key:0,class:"mr-2"},at={key:1};function nt(e,t,s,o,a,n){return l(),y(T,{class:"hitokoto-card",elevation:"2",border:"",rounded:"xl",loading:a.loading,height:"100%",onClick:n.fetchSentence},{default:r(()=>[i(_,{class:"pa-6 d-flex flex-column justify-center",style:{height:"100%"}},{default:r(()=>[f("div",{class:"font-weight-medium mb-4 serif-font",style:A(n.contentStyle)},m(a.sentence),5),f("div",{class:"text-medium-emphasis serif-font",style:A(n.authorStyle)},[a.author?(l(),g("span",st,m(a.author),1)):S("",!0),a.origin?(l(),g("span",at,"《"+m(a.origin)+"》",1)):S("",!0)],4)]),_:1})]),_:1},8,["loading","onClick"])}const me=O(tt,[["render",nt],["__scopeId","data-v-de957b7d"]]),ot=2,it=.9,rt=.6,lt={name:"TimeCard",data(){return{now:new Date,timer:null,unwatch:null,fontSize:28}},computed:{timeString(){const e=String(this.now.getHours()).padStart(2,"0"),t=String(this.now.getMinutes()).padStart(2,"0");return`${e}:${t}`},secondsString(){return`:${String(this.now.getSeconds()).padStart(2,"0")}`},dateString(){const e=this.now.getFullYear(),t=this.now.getMonth()+1,s=this.now.getDate();return`${e}年${t}月${s}日`},weekdayString(){return["星期日","星期一","星期二","星期三","星期四","星期五","星期六"][this.now.getDay()]},periodOfDay(){const e=this.now.getHours();return e<6?"凌晨":e<8?"早晨":e<11?"上午":e<13?"中午":e<17?"下午":e<19?"傍晚":e<22?"晚上":"深夜"},timeStyle(){return{"font-size":`${this.fontSize*ot}px`,"font-weight":"700","line-height":"1","letter-spacing":"4px","font-variant-numeric":"tabular-nums"}},secondsStyle(){return{"font-size":`${this.fontSize*it}px`,"font-variant-numeric":"tabular-nums","vertical-align":"baseline","margin-left":"4px",opacity:"0.6"}},dateStyle(){return{"font-size":`${this.fontSize*rt}px`,"letter-spacing":"1px"}}},mounted(){this.loadSettings(),this.startTimer(),this.unwatch=te(()=>{this.loadSettings()})},beforeUnmount(){this.stopTimer(),this.unwatch&&this.unwatch()},methods:{loadSettings(){this.fontSize=H.getSetting("font.size")},startTimer(){this.timer=setInterval(()=>{this.now=new Date},1e3)},stopTimer(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};function dt(e,t,s,o,a,n){return l(),y(T,{class:"time-card",elevation:"2",border:"",rounded:"xl",height:"100%"},{default:r(()=>[i(_,{class:"pa-6 d-flex flex-column",style:{height:"100%"}},{default:r(()=>[f("div",{class:"time-display",style:A(n.timeStyle)},[h(m(n.timeString),1),f("span",{class:"seconds-text",style:A(n.secondsStyle)},m(n.secondsString),5)],4),f("div",{class:"date-line mt-3",style:A(n.dateStyle)},m(n.dateString)+" "+m(n.weekdayString)+" "+m(n.periodOfDay),5)]),_:1})]),_:1})}const fe=O(lt,[["render",dt],["__scopeId","data-v-725dbda6"]]),ct={name:"HomeworkGrid",computed:{settings(){return settings}},components:{HitokotoCard:me,TimeCard:fe,ConciseExamCard:he},props:{sortedItems:{type:Array,required:!0},unusedSubjects:{type:Array,required:!0},emptySubjectDisplay:{type:String,default:"button"},isMobile:{type:Boolean,default:!1},isEditingDisabled:{type:Boolean,default:!1},contentStyle:{type:Object,default:()=>({})},highlightedCards:{type:Object,default:()=>({})}},emits:["open-dialog","open-attendance","disabled-click"],data(){return{isReadOnlyToken:!1}},async mounted(){this.resizeObserver=new ResizeObserver(()=>{this.resizeAllGridItems()}),this.$refs.gridContainer&&this.resizeObserver.observe(this.$refs.gridContainer),this.$nextTick(()=>{this.resizeAllGridItems(),this.$refs.items&&this.$refs.items.forEach(e=>{e.firstElementChild&&this.resizeObserver.observe(e.firstElementChild)})}),await this.checkReadOnlyStatus()},updated(){this.$nextTick(()=>{this.resizeAllGridItems(),this.$refs.items&&this.$refs.items.forEach(e=>{e.firstElementChild&&this.resizeObserver.observe(e.firstElementChild)})})},beforeUnmount(){this.resizeObserver&&this.resizeObserver.disconnect()},methods:{getSetting:k,async checkReadOnlyStatus(){try{let e=null;if(this.$parent&&this.$parent.$refs&&this.$parent.$refs.studentNameManager?e=this.$parent.$refs.studentNameManager:this.$root&&this.$root.$refs&&this.$root.$refs.studentNameManager&&(e=this.$root.$refs.studentNameManager),e&&typeof e.isReadOnly<"u")this.isReadOnlyToken=e.isReadOnly;else{const{getSetting:t}=await E(async()=>{const{getSetting:o}=await import("./index-_6IQhlPZ.js").then(a=>a.aI);return{getSetting:o}},__vite__mapDeps([0,1,2,3]),import.meta.url),s=t("server.kvToken");if(s){const{default:o}=await E(async()=>{const{default:n}=await import("./dataProvider-BwUtbSl1.js").then(c=>c.c);return{default:n}},__vite__mapDeps([4,5,0,1,2,3,6]),import.meta.url),a=t("server.domain");if(a)try{const n=await o.get(`${a}/kv/_token`,{headers:{Authorization:`Bearer ${s}`}});n.data&&typeof n.data.isReadOnly<"u"&&(this.isReadOnlyToken=n.data.isReadOnly)}catch(n){console.error("获取Token信息失败:",n)}}}}catch(e){console.error("检查只读状态失败:",e)}},resizeGridItem(e){const t=this.$refs.gridContainer;if(!t)return;const s=parseInt(window.getComputedStyle(t).getPropertyValue("grid-auto-rows")),o=parseInt(window.getComputedStyle(t).getPropertyValue("gap")),a=e.firstElementChild;if(!a)return;const n=a.getBoundingClientRect().height,c=Math.ceil((n+o)/(s+o));e.style.gridRowEnd=`span ${c}`},resizeAllGridItems(){const e=this.$refs.items;e&&e.forEach(t=>this.resizeGridItem(t))},handleCardClick(e,t){if(this.isEditingDisabled){this.$emit("disabled-click");return}e==="attendance"?this.$emit("open-attendance"):e==="dialog"&&this.$emit("open-dialog",t)},splitPoint(e){return e.split(` -`).filter(t=>t.trim())},handleMouseMove(e){const t=e.currentTarget,s=t.getBoundingClientRect(),o=(e.clientX-s.left)/s.width*100,a=(e.clientY-s.top)/s.height*100;t.style.setProperty("--x",`${o}%`),t.style.setProperty("--y",`${a}%`)},handleTouchMove(e){if(e.touches.length===1){const t=e.touches[0],s=e.currentTarget,o=s.getBoundingClientRect(),a=(t.clientX-o.left)/o.width*100,n=(t.clientY-o.top)/o.height*100;s.style.setProperty("--x",`${a}%`),s.style.setProperty("--y",`${n}%`)}}}},ut={ref:"gridContainer",class:"grid-masonry"},ht=["data-key"],mt={key:0,style:{height:"100%"}},ft={key:1,style:{height:"100%"}},gt={key:2,style:{height:"100%"}},yt={class:"d-flex justify-space-between align-center mb-2"},pt={class:"text-h6"},kt={key:0,class:"mb-2"},wt={class:"text-error text-caption mb-1"},vt={class:"d-flex flex-wrap",style:{gap:"4px"}},Dt={key:1,class:"mb-2"},St={class:"text-warning text-caption mb-1"},bt={class:"d-flex flex-wrap",style:{gap:"4px"}},xt={key:2,class:"mb-2"},Ct={class:"text-grey text-caption mb-1"},_t={class:"d-flex flex-wrap",style:{gap:"4px"}},Tt={key:3,class:"text-success text-center mt-2"},Et={class:"empty-subjects mt-4"},It={key:0,class:"d-flex flex-wrap justify-center"},Nt={key:2,class:"empty-subjects-grid"};function At(e,t,s,o,a,n){const c=fe,p=me,v=he;return l(),g(b,null,[f("div",ut,[i(ae,{name:"grid"},{default:r(()=>[(l(!0),g(b,null,C(s.sortedItems,d=>(l(),g("div",{key:d.key,ref_for:!0,ref:"items","data-key":d.key,style:A({order:d.order}),class:"grid-item"},[d.type==="time"?(l(),g("div",mt,[i(c)])):d.type==="hitokoto"?(l(),g("div",ft,[i(p)])):d.type==="exam"?(l(),g("div",gt,[i(v,{"exam-id":d.data.examId,"content-style":s.contentStyle,onClick:w=>e.$emit("open-exam-detail",d.data.examId)},null,8,["exam-id","content-style","onClick"])])):d.type==="attendance"?(l(),y(T,{key:3,class:U([{"glow-highlight":s.highlightedCards[d.key],"cursor-not-allowed":s.isEditingDisabled,"cursor-pointer":!s.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:t[0]||(t[0]=w=>n.handleCardClick("attendance",null)),onMousemove:n.handleMouseMove,onTouchmove:n.handleTouchMove},{default:r(()=>[i(N,{class:"d-flex align-center"},{default:r(()=>[i(R,{class:"mr-2",color:"primary",icon:"mdi-account-group"}),t[1]||(t[1]=h(" 出勤统计 ",-1))]),_:1}),i(_,null,{default:r(()=>[f("div",yt,[t[2]||(t[2]=f("span",null,"应到/实到",-1)),f("span",pt,m(d.data.total-d.data.exclude.length)+"/"+m(d.data.total-d.data.absent.length-!n.getSetting("display.lateStudentsArePresent")*d.data.late.length-d.data.exclude.length),1)]),i($,{class:"mb-2"}),d.data.absent.length>0?(l(),g("div",kt,[f("div",wt,"请假 ("+m(d.data.absent.length)+")",1),f("div",vt,[(l(!0),g(b,null,C(d.data.absent,w=>(l(),y(z,{key:w,color:"error",size:"x-small",variant:"flat"},{default:r(()=>[h(m(w),1)]),_:2},1024))),128))])])):S("",!0),d.data.late.length>0?(l(),g("div",Dt,[f("div",St,"迟到 ("+m(d.data.late.length)+")",1),f("div",bt,[(l(!0),g(b,null,C(d.data.late,w=>(l(),y(z,{key:w,color:"warning",size:"x-small",variant:"flat"},{default:r(()=>[h(m(w),1)]),_:2},1024))),128))])])):S("",!0),d.data.exclude.length>0?(l(),g("div",xt,[f("div",Ct,"不参与 ("+m(d.data.exclude.length)+")",1),f("div",_t,[(l(!0),g(b,null,C(d.data.exclude,w=>(l(),y(z,{key:w,color:"grey",size:"x-small",variant:"flat"},{default:r(()=>[h(m(w),1)]),_:2},1024))),128))])])):S("",!0),d.data.absent.length===0&&d.data.late.length===0&&d.data.exclude.length===0?(l(),g("div",Tt," 全勤 ")):S("",!0)]),_:2},1024)]),_:2},1032,["class","onMousemove","onTouchmove"])):d.type==="custom"?(l(),y(T,{key:4,class:U([{"glow-highlight":s.highlightedCards[d.key],"cursor-not-allowed":s.isEditingDisabled,"cursor-pointer":!s.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:w=>n.handleCardClick("dialog",d.key),onMousemove:n.handleMouseMove,onTouchmove:n.handleTouchMove},{default:r(()=>[i(N,{class:"text-primary"},{default:r(()=>[i(R,{class:"mr-2",icon:"mdi-card-text-outline",size:"small"}),h(" "+m(d.name),1)]),_:2},1024),i(_,{style:A(s.contentStyle)},{default:r(()=>[h(m(d.content),1)]),_:2},1032,["style"])]),_:2},1032,["class","onClick","onMousemove","onTouchmove"])):(l(),y(T,{key:5,class:U([{"glow-highlight":s.highlightedCards[d.key],"cursor-not-allowed":s.isEditingDisabled,"cursor-pointer":!s.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:w=>n.handleCardClick("dialog",d.key),onMousemove:n.handleMouseMove,onTouchmove:n.handleTouchMove},{default:r(()=>[i(N,null,{default:r(()=>[h(m(d.name),1)]),_:2},1024),i(_,{style:A(s.contentStyle)},{default:r(()=>[i(X,null,{default:r(()=>[(l(!0),g(b,null,C(n.splitPoint(d.content),w=>(l(),y(Z,{key:w},{default:r(()=>[h(m(w),1)]),_:2},1024))),128))]),_:2},1024)]),_:2},1032,["style"])]),_:2},1032,["class","onClick","onMousemove","onTouchmove"]))],12,ht))),128))]),_:1})],512),f("div",Et,[s.isMobile?(l(),g("div",It,[(l(!0),g(b,null,C(s.unusedSubjects,d=>(l(),y(z,{key:d.name,class:"ma-1",color:"primary",variant:"tonal",onClick:w=>n.handleCardClick("dialog",d.name)},{default:r(()=>[i(R,{start:"",size:"small"},{default:r(()=>[h(m(a.isReadOnlyToken?"mdi-cancel":"mdi-plus"),1)]),_:1}),h(" "+m(d.name),1)]),_:2},1032,["onClick"]))),128))])):s.emptySubjectDisplay==="button"?(l(),y(le,{key:1,divided:"",variant:"tonal"},{default:r(()=>[(l(!0),g(b,null,C(s.unusedSubjects,d=>(l(),y(D,{key:d.name,onClick:w=>n.handleCardClick("dialog",d.name)},{default:r(()=>[i(R,{start:""},{default:r(()=>[h(m(a.isReadOnlyToken?"mdi-cancel":"mdi-plus"),1)]),_:1}),h(" "+m(d.name),1)]),_:2},1032,["onClick"]))),128))]),_:1})):(l(),g("div",Nt,[i(ae,{name:"v-list"},{default:r(()=>[(l(!0),g(b,null,C(s.unusedSubjects,d=>(l(),y(T,{key:d.name,border:"",class:"empty-subject-card",onClick:w=>n.handleCardClick("dialog",d.name)},{default:r(()=>[i(N,{class:"text-subtitle-1"},{default:r(()=>[h(m(d.name),1)]),_:2},1024),i(_,{class:"text-center"},{default:r(()=>[a.isReadOnlyToken?(l(),g(b,{key:0},[i(R,{color:"grey",size:"small"},{default:r(()=>[...t[3]||(t[3]=[h(" mdi-cancel ",-1)])]),_:1}),t[4]||(t[4]=f("div",{class:"text-caption text-grey"}," 当日无作业 ",-1))],64)):(l(),g(b,{key:1},[i(R,{color:"grey",size:"small"},{default:r(()=>[...t[5]||(t[5]=[h(" mdi-plus ",-1)])]),_:1}),t[6]||(t[6]=f("div",{class:"text-caption text-grey"}," 点击添加作业 ",-1))],64))]),_:1})]),_:2},1032,["onClick"]))),128))]),_:1})]))])],64)}const Vt=O(ct,[["render",At],["__scopeId","data-v-5f84fa28"]]),Rt={name:"HomeActions",props:{synced:Boolean,loadingUpload:Boolean,showRandomPickerButton:Boolean,showExamScheduleButton:Boolean,showListCardButton:Boolean,showFullscreenButton:Boolean,isFullscreen:Boolean,showAntiScreenBurnCard:Boolean,showTestCardButton:Boolean},emits:["upload","show-sync-message","open-random-picker","toggle-fullscreen","add-test-card"]},Ot={class:"d-flex flex-wrap align-center mt-4"};function Lt(e,t,s,o,a,n){return l(),g(b,null,[f("div",Ot,[s.synced?(l(),y(D,{key:1,color:"success",size:"large",onClick:t[1]||(t[1]=c=>e.$emit("show-sync-message"))},{default:r(()=>[...t[9]||(t[9]=[h(" 同步完成 ",-1)])]),_:1})):(l(),y(D,{key:0,loading:s.loadingUpload,class:"ml-2",color:"error",size:"large",onClick:t[0]||(t[0]=c=>e.$emit("upload"))},{default:r(()=>[...t[8]||(t[8]=[h(" 上传 ",-1)])]),_:1},8,["loading"])),s.showRandomPickerButton?(l(),y(D,{key:2,"append-icon":"mdi-dice-multiple",class:"ml-2",color:"amber","prepend-icon":"mdi-account-question",size:"large",onClick:t[2]||(t[2]=c=>e.$emit("open-random-picker"))},{default:r(()=>[...t[10]||(t[10]=[h(" 随机点名 ",-1)])]),_:1})):S("",!0),s.showExamScheduleButton?(l(),y(le,{key:3,class:"ml-2",color:"green",variant:"elevated",divided:""},{default:r(()=>[i(D,{"prepend-icon":"mdi-calendar-check",size:"large",onClick:t[3]||(t[3]=c=>e.$router.push("/examschedule"))},{default:r(()=>[...t[11]||(t[11]=[h(" 考试看板 ",-1)])]),_:1}),i(D,{icon:"mdi-plus",size:"large",onClick:t[4]||(t[4]=c=>e.$emit("add-exam-card"))})]),_:1})):S("",!0),s.showListCardButton?(l(),y(D,{key:4,class:"ml-2",color:"primary-darken-1","prepend-icon":"mdi-list-box",size:"large",onClick:t[5]||(t[5]=c=>e.$router.push("/list"))},{default:r(()=>[...t[12]||(t[12]=[h(" 列表 ",-1)])]),_:1})):S("",!0),s.showFullscreenButton?(l(),y(D,{key:5,color:s.isFullscreen?"blue-grey":"blue","prepend-icon":s.isFullscreen?"mdi-fullscreen-exit":"mdi-fullscreen",class:"ml-2",size:"large",onClick:t[6]||(t[6]=c=>e.$emit("toggle-fullscreen"))},{default:r(()=>[h(m(s.isFullscreen?"退出全屏":"全屏显示"),1)]),_:1},8,["color","prepend-icon"])):S("",!0),s.showTestCardButton?(l(),y(D,{key:6,class:"ml-2",color:"purple","prepend-icon":"mdi-test-tube",size:"large",onClick:t[7]||(t[7]=c=>e.$emit("add-test-card"))},{default:r(()=>[...t[13]||(t[13]=[h(" 添加测试卡片 ",-1)])]),_:1})):S("",!0)]),s.showAntiScreenBurnCard?(l(),y(T,{key:0,border:"",class:"mt-4 anti-burn-card",color:"primary",variant:"tonal"},{default:r(()=>[i(N,{class:"text-subtitle-1"},{default:r(()=>[i(R,{icon:"mdi-shield-check",size:"small",start:""}),t[14]||(t[14]=h(" 屏幕保护技术已启用 ",-1))]),_:1}),i(_,{class:"text-body-2"},{default:r(()=>[...t[15]||(t[15]=[f("p",null," 为防止OLED/LCD屏幕烧屏,界面元素会定期微调位置。 ",-1),f("p",{class:"text-caption text-grey"}," 此功能不会影响正常使用,仅在长时间静止显示时生效。 ",-1),f("p",{class:"text-caption text-grey"}," 建议在放学后关闭显示器以节约能源。 ",-1)])]),_:1})]),_:1})):S("",!0)],64)}const Pt=O(Rt,[["render",Lt]]),zt={name:"FloatingICP"},jt={"aria-label":"xICP备x号",class:"floating-icp-link",href:"https://beian.miit.gov.cn/",rel:"noopener noreferrer",target:"_blank",style:{display:"none"}};function Mt(e,t,s,o,a,n){return l(),g("a",jt," xICP备x号 ")}const Ut=O(zt,[["render",Mt],["__scopeId","data-v-fa73670f"]]),Bt={class:"skeleton-grid"},Ft={__name:"HomeSkeleton",setup(e){const{mobile:t}=Q(),s=Ee(()=>t.value?3:6);return(o,a)=>(l(),y(ce,{class:"main-window",fluid:""},{default:r(()=>[f("div",Bt,[(l(!0),g(b,null,C(s.value,n=>(l(),g("div",{key:n,class:"skeleton-card"},[...a[0]||(a[0]=[f("div",{class:"skeleton-heading skeleton-pulse"},null,-1),f("div",{class:"skeleton-line skeleton-pulse"},null,-1),f("div",{class:"skeleton-line skeleton-line--short skeleton-pulse"},null,-1)])]))),128))]),a[1]||(a[1]=f("div",{class:"d-flex justify-center mt-6 ga-3"},[f("div",{class:"skeleton-btn skeleton-pulse"}),f("div",{class:"skeleton-btn skeleton-pulse"})],-1))]),_:1}))}},Ht=O(Ft,[["__scopeId","data-v-ea69d8df"]]);function Y(e,t){let s=null;return function(...o){s&&clearTimeout(s),s=setTimeout(()=>{e.apply(this,o)},t)}}function $t(e,t){let s=null,o=0;return function(...a){const n=Date.now();n-o{o=n,e.apply(this,a)},t)):(o=n,e.apply(this,a))}}const Kt=I({loader:()=>E(()=>import("./MessageLog-DNZPN4Qf.js").then(e=>e.M),__vite__mapDeps([7,0,1,2,3,8,9,10]),import.meta.url),loadingComponent:K,delay:200}),Wt=I({loader:()=>E(()=>import("./RandomPicker-D4SIlUxw.js"),__vite__mapDeps([11,0,1,2,3,12,13,14,15,16,17,18,19]),import.meta.url),delay:0}),Gt=I({loader:()=>E(()=>import("./FloatingToolbar-Hmj4Cwyb.js"),__vite__mapDeps([20,0,1,2,3,21,22,23,24,25,26,27]),import.meta.url),delay:200}),qt=I({loader:()=>E(()=>import("./ChatWidget-CC4arZYT.js").then(e=>e.C),__vite__mapDeps([28,29,30,0,1,2,3,6,31,17,18,32,24,25,15,16,33,34,35,36,37,13,14,38,39]),import.meta.url),delay:0}),Jt=I({loader:()=>E(()=>import("./HomeworkEditDialog-CzJk0Rhv.js"),__vite__mapDeps([40,4,5,0,1,2,3,6,37,13,14,38,17,18,41,42,43]),import.meta.url),delay:0}),Yt=I({loader:()=>E(()=>import("./InitServiceChooser-DBAmZLOu.js"),__vite__mapDeps([44,0,1,2,3,4,5,6,12,13,14,41,42,37,38,17,18,45,46,33,34,47]),import.meta.url),loadingComponent:K,delay:200}),Xt=I({loader:()=>E(()=>import("./StudentNameManager-CKU0cAHn.js"),__vite__mapDeps([48,0,1,2,3,4,5,6,49,13,14,50,12,21,22,51,52,53,17,18,54,55,56,57,41,42,58]),import.meta.url),delay:200}),Zt=I({loader:()=>E(()=>import("./UrgentTestDialog-DpliVwT_.js"),__vite__mapDeps([59,28,29,30,0,1,2,3,6,31,17,18,32,24,25,15,16,33,34,35,36,37,13,14,38,39,4,5,8,9,60,61,62,52,53,63,51,64,65]),import.meta.url),delay:0}),Qt=I({loader:()=>E(()=>import("./AttendanceSidebar-DFGkatIT.js"),__vite__mapDeps([66,0,1,2,3,33,34,58]),import.meta.url),loadingComponent:K,delay:200}),es=I({loader:()=>E(()=>import("./AttendanceManagementDialog-CCmX9Ffv.js"),__vite__mapDeps([67,0,1,2,3,17,18,33,34,12,13,14,68]),import.meta.url),delay:0}),ts=I({loader:()=>E(()=>import("./PwaInstallCard-CTQnZjV3.js"),__vite__mapDeps([69,2,0,1,3,17,18]),import.meta.url),delay:200}),ss=I({loader:()=>E(()=>import("./ExamScheduleCard-D_oQZ_gl.js"),__vite__mapDeps([70,2,0,1,3,41,42,4,5,6,17,18,60,61,29,30,32,8,9,33,34,15,16,71]),import.meta.url),loadingComponent:K,delay:200}),as=I({loader:()=>E(()=>import("./ExamConfigEditor-DzELjE-Y.js"),__vite__mapDeps([72,4,5,0,1,2,3,6,41,42,73,74,15,16,17,18,33,34,12,13,14,37,38,52,53,49,50,21,22,51,54,55,23,24,25,26,75]),import.meta.url),delay:0}),ns={name:"Classworks 作业板",components:{MessageLog:Kt,RandomPicker:Wt,FloatingToolbar:Gt,FloatingICP:Ut,HomeworkEditDialog:Jt,InitServiceChooser:Yt,ChatWidget:qt,StudentNameManager:Xt,UrgentTestDialog:Zt,AttendanceSidebar:Qt,AttendanceManagementDialog:es,HomeworkGrid:Vt,HomeActions:Pt,PwaInstallCard:ts,ExamScheduleCard:ss,ExamConfigEditor:as,HomeSkeleton:Ht},setup(){const{mobile:e}=Q(),t=ee();return{mobile:e,examStore:t}},data(){const e=[{name:"语文",order:0},{name:"数学",order:1},{name:"英语",order:2},{name:"物理",order:3},{name:"化学",order:4},{name:"生物",order:5},{name:"政治",order:6},{name:"历史",order:7},{name:"地理",order:8},{name:"其他",order:9}];return{showAddExamDialog:!1,showExamDetailDialog:!1,selectedExamId:null,upcomingExams:[],dataKey:"",provider:"",useDisplay:Q,state:{classNumber:"",namespaceInfo:null,deviceName:"",studentList:[],boardData:{homework:{},attendance:{absent:[],late:[],exclude:[]}},dialogVisible:!1,dialogTitle:"",textarea:"",dateString:"",synced:!1,attendDialogVisible:!1,contentStyle:{"font-size":`${k("font.size")}px`},uploadLoading:!1,downloadLoading:!1,snackbar:!1,snackbarText:"",fontSize:k("font.size"),datePickerDialog:!1,selectedDate:new Date().toISOString().split("T")[0].replace(/-/g,""),selectedDateObj:new Date,refreshInterval:null,showNoDataMessage:!1,noDataMessage:"",isToday:!1,attendanceDialog:!1,availableSubjects:e,isFullscreen:!1},loading:{download:!1,upload:!1,students:!1,copyToToday:!1},dataReady:!1,debouncedUpload:null,debouncedAttendanceSave:null,throttledReflow:null,sortedItemsCache:{key:"",value:[]},confirmDialog:{show:!1,resolve:null,reject:null},urlConfigDialog:{show:!1,config:null,changes:[],validSettings:{},confirmHandler:null,cancelHandler:null,icons:{}},settingsTick:0,isChatOpen:!1,highlightedCards:{},tokenDisplayInfo:{show:!1,readonly:!1,text:"",color:"primary",variant:"tonal",icon:"mdi-account",disabled:!1},realtimeInfo:{show:!1,time:"",key:""},$offKvChanged:null,$offConnect:null,debouncedRealtimeRefresh:null,preconfigData:{namespace:null,authCode:null,autoOpen:!1,autoExecute:!1},urgentTestDialog:!1,tokenInfo:null,persistentNotifications:[],notificationDetailDialog:!1,currentNotification:null}},computed:{isMobile(){return k("display.forceDesktopMode")?!1:this.mobile},titleText(){var v,d,w;const e=k("server.provider"),t=e==="kv-server"||e==="classworkscloud";let s;t&&this.state.namespaceInfo?s=((v=this.state.namespaceInfo)==null?void 0:v.name)||((w=(d=this.state.namespaceInfo)==null?void 0:d.device)==null?void 0:w.name)||this.state.classNumber||"高三八班":s=this.state.classNumber||"高三八班";const o=this.getToday(),a=new Date(o);a.setDate(a.getDate()-1);const n=this.state.dateString,c=this.formatDate(o),p=this.formatDate(a);return n===c?s+" - 今天的作业":n===p?s+" - 昨天的作业":`${s} - ${n}的作业`},sortedItems(){const e=[];this.isMobile&&e.push({key:"attendance-card",name:"出勤统计",type:"attendance",data:{total:this.state.studentList.length,absent:this.state.boardData.attendance.absent,late:this.state.boardData.attendance.late,exclude:this.state.boardData.attendance.exclude}});for(const t in this.state.boardData.homework)if(t.startsWith("exam-")){const s=this.state.boardData.homework[t];e.push({key:t,name:"考试安排",type:"exam",data:{examId:s.examId},order:-100,rowSpan:200})}for(const t of this.state.availableSubjects){const s=t.name,o=this.state.boardData.homework[s];if(o&&o.content){const n=100+o.content.split(` -`).filter(c=>c.trim()).length*24;e.push({key:s,name:s,type:"homework",content:o.content,order:t.order,rowSpan:n})}}k("timeCard.enabled")&&e.push({key:"time-card",name:"时间",type:"time",order:9997,rowSpan:150}),k("hitokoto.enabled")&&e.push({key:"hitokoto-card",name:"一言",type:"hitokoto",order:9998,rowSpan:150});for(const t in this.state.boardData.homework)if(t.startsWith("custom-")){const s=this.state.boardData.homework[t],a=100+s.content.split(` -`).filter(n=>n.trim()).length*24;e.push({key:t,name:s.name,type:"custom",content:s.content,order:9999,rowSpan:a})}return e.sort((t,s)=>t.order-s.order),e},unusedSubjects(){const e=Object.keys(this.state.boardData.homework).filter(t=>{var s;return(s=this.state.boardData.homework[t].content)==null?void 0:s.trim()});return this.state.availableSubjects.filter(t=>!e.includes(t.name)).sort((t,s)=>t.order-s.order)},emptySubjects(){return this.emptySubjectDisplay!=="button"?[]:this.unusedSubjects},autoSave(){return k("edit.autoSave")},blockNonTodayAutoSave(){return k("edit.blockNonTodayAutoSave")},isToday(){const e=(()=>{const t=new Date,s=t.getFullYear(),o=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0");return`${s}${o}${a}`})();return this.state.dateString===e},canAutoSave(){return this.autoSave&&(!this.blockNonTodayAutoSave||this.isToday)},needConfirmSave(){return!this.isToday&&this.confirmNonTodaySave},shouldShowBlockedMessage(){return!this.isToday&&this.autoSave&&this.blockNonTodayAutoSave},refreshBeforeEdit(){return k("edit.refreshBeforeEdit")},emptySubjectDisplay(){return k("display.emptySubjectDisplay")},dynamicSort(){return k("display.dynamicSort")},isEditingDisabled(){if(this.state.uploadLoading||this.state.downloadLoading)return!0;const e=this.$refs.studentNameManager;return!!(e!=null&&e.isReadOnly||!this.canEditCurrentDate)},unreadCount(){var e;return((e=this.$refs.messageLog)==null?void 0:e.unreadCount)||0},showRandomPickerButton(){return k("randomPicker.enabled")},showListCardButton(){return k("display.showListCard")},confirmNonTodaySave(){return k("edit.confirmNonTodaySave")},blockPastDataEdit(){return k("edit.blockPastDataEdit")},shouldShowSaveConfirm(){return!this.isToday&&this.confirmNonTodaySave},shouldBlockAutoSave(){return!this.isToday&&this.autoSave&&this.blockNonTodayAutoSave},canEditCurrentDate(){return this.isToday?!0:!this.blockPastDataEdit},isEditingPastData(){return!this.isToday},showFullscreenButton(){return k("display.showFullscreenButton")},showExamScheduleButton(){return k("display.showExamScheduleButton")},showAntiScreenBurnCard(){return k("display.showAntiScreenBurnCard")},showTestCardButton(){return k("developer.enabled")},shouldShowInit(){var a;const e=k("server.provider"),t=e==="kv-server"||e==="classworkscloud",s=k("server.kvToken"),o=((a=this.$route)==null?void 0:a.path)==="/";return this.settingsTick,o&&t&&(!s||s==="")},hasExamCard(){for(const e in this.state.boardData.homework)if(e.startsWith("exam-"))return!0;return!1},shouldShowUrgentTestButton(){const e=k("server.provider");return!(e==="kv-server"||e==="classworkscloud")||!k("server.kvToken")||!this.tokenInfo?!1:this.tokenInfo.deviceType==="teacher"||this.tokenInfo.deviceType==="classroom"},subjectOrder(){return[...this.state.availableSubjects].sort((e,t)=>e.order-t.order).map(e=>e.name)}},watch:{homeworkData:{handler(){this.$nextTick(()=>{this.$refs.waterfall&&this.$refs.waterfall.reflow()})},deep:!0},"$vuetify.display.width":{handler(){this.throttledReflow()},deep:!0},"state.attendanceDialog":{handler(e){this.handleAttendanceDialogClose(e)}}},created(){this.debouncedUpload=Y(this.uploadData,2e3),this.debouncedAttendanceSave=Y(async()=>{this.autoSave&&await this.trySave(!0)},2e3),this.throttledReflow=$t(()=>{this.$refs.gridContainer&&this.optimizeGridLayout(this.sortedItems)},200)},async mounted(){try{this.updateBackendUrl(),await this.initializeData(),this.dataReady=!0,await this.loadDeviceInfo(),this.setupAutoRefresh(),this.unwatchSettings=te(()=>{this.updateSettings()}),this.$nextTick(()=>{const e=this.$refs.studentNameManager;e&&(this.studentNameInfo.name=e.currentStudentName||e.currentTeacherName||"",this.studentNameInfo.isStudent=e.isStudentToken,this.studentNameInfo.isTeacher=e.isTeacherToken,this.studentNameInfo.openDialog=()=>e.openDialog(),this.$watch(()=>e.currentStudentName,t=>{this.studentNameInfo.name=t,this.updateTokenDisplayInfo()}),this.$watch(()=>e.currentTeacherName,t=>{e.isTeacherToken&&(this.studentNameInfo.name=t,this.updateTokenDisplayInfo())}),this.$watch(()=>e.isStudentToken,t=>{this.studentNameInfo.isStudent=t,this.updateTokenDisplayInfo()}),this.$watch(()=>e.isTeacherToken,t=>{this.studentNameInfo.isTeacher=t,this.updateTokenDisplayInfo()}))}),document.addEventListener("fullscreenchange",this.fullscreenChangeHandler),document.addEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.addEventListener("MSFullscreenChange",this.fullscreenChangeHandler),this.checkHashForRandomPicker(),window.addEventListener("hashchange",this.checkHashForRandomPicker),this.setupRealtimeChannel(),this.$nextTick(()=>{this.updateTokenDisplayInfo()}),await this.loadTokenInfo(),this.loadPersistentNotifications()}catch(e){console.error("初始化失败:",e),this.showError("初始化失败,请刷新页面重试")}},beforeUnmount(){this.unwatchSettings&&this.unwatchSettings(),this.state.refreshInterval&&clearInterval(this.state.refreshInterval),document.removeEventListener("fullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("webkitfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("mozfullscreenchange",this.fullscreenChangeHandler),document.removeEventListener("MSFullscreenChange",this.fullscreenChangeHandler),window.removeEventListener("hashchange",this.checkHashForRandomPicker);try{this.$offKvChanged&&typeof this.$offKvChanged=="function"&&(this.$offKvChanged(),this.$offKvChanged=null),this.$offDeviceEvent&&typeof this.$offDeviceEvent=="function"&&(this.$offDeviceEvent(),this.$offDeviceEvent=null),this.$offConnect&&typeof this.$offConnect=="function"&&(this.$offConnect(),this.$offConnect=null),Re()}catch(e){console.warn("主页面事件清理失败:",e)}},methods:{async loadDeviceInfo(){var e;try{const t=k("server.provider");if(!(t==="kv-server"||t==="classworkscloud"))return;const o=await Ne.loadNamespaceInfo();if(o&&o.success===!1)return;this.state.namespaceInfo=o||null,this.state.deviceName=((e=o==null?void 0:o.account)==null?void 0:e.deviceName)||""}catch(t){console.warn("加载设备信息失败:",t)}},async loadTokenInfo(){try{const e=k("server.provider");if(!(e==="kv-server"||e==="classworkscloud"))return;const s=k("server.kvToken");if(!s)return;const o=k("server.domain");if(!o)return;const a=await Ie.get(`${o}/kv/_token`,{headers:{Authorization:`Bearer ${s}`}});this.tokenInfo=a.data,console.log("Token info loaded:",this.tokenInfo)}catch(e){console.warn("Failed to load token info:",e),this.tokenInfo=null}},updateTokenDisplayInfo(){const e=this.$refs.studentNameManager;if(!e||!e.hasToken){this.tokenDisplayInfo.show=!1,this.tokenDisplayInfo.readonly=!1;return}const t=e.displayName,s=e.isReadOnly,o=e.isStudentToken,a=e.isTeacherToken;if(this.tokenDisplayInfo.readonly=s,!o&&!a){this.tokenDisplayInfo.show=!1;return}this.tokenDisplayInfo.text=t,this.tokenDisplayInfo.color="primary",this.tokenDisplayInfo.icon=a?"mdi-school":"mdi-account",this.tokenDisplayInfo.disabled=s,this.tokenDisplayInfo.show=!0},handleTokenChipClick(){console.log("Token chip clicked");const e=this.$refs.studentNameManager;console.log("Manager:",e),console.log("Is student token:",e==null?void 0:e.isStudentToken),console.log("Is teacher token:",e==null?void 0:e.isTeacherToken),e&&(e.isStudentToken||e.isTeacherToken)?(console.log("Opening dialog..."),e.openDialog()):console.log("Cannot open dialog - conditions not met")},ensureDate(e){if(e instanceof Date)return e;if(typeof e=="string"){const t=new Date(e);if(!isNaN(t.getTime()))return t}return new Date},formatDate(e){const t=this.ensureDate(e),s=t.getFullYear(),o=String(t.getMonth()+1).padStart(2,"0"),a=String(t.getDate()).padStart(2,"0");return`${s}${o}${a}`},formatTime(e){return e?new Date(e).toLocaleString():""},getToday(){return new Date},async initializeData(){this.parsePreconfigData();const e=await this.parseUrlConfig(),s=new URLSearchParams(window.location.search).get("date"),o=this.getToday();let a=o;if(s){if(/^\d{8}$/.test(s)){const n=s.substring(0,4),c=s.substring(4,6),p=s.substring(6,8);a=new Date(`${n}-${c}-${p}`)}else a=new Date(s);isNaN(a.getTime())&&(a=o)}if(this.state.dateString=this.formatDate(a),this.state.selectedDate=this.state.dateString,this.state.selectedDateObj=a,this.state.isToday=this.formatDate(a)===this.formatDate(o),!e){this.provider=k("server.provider");const n=k("server.classNumber");this.state.classNumber=n}await Promise.all([this.downloadData(),this.loadConfig()]),await this.examStore.fetchExamList();for(const n of this.examStore.examList)this.examStore.fetchExam(n.id);this.checkUpcomingExams()},async checkUpcomingExams(){this.upcomingExams=await this.examStore.getUpcomingExams()},loadExamCards(){},saveExamCards(){},addExamCard(e,t=!1,s=!1){const o=`exam-${e}`;!t&&this.state.boardData.homework[o]?delete this.state.boardData.homework[o]:this.state.boardData.homework[o]={type:"exam",examId:e,name:"考试安排",content:""},this.state.synced=!1,s||this.trySave(!0)},openExamDetail(e){this.selectedExamId=e,this.showExamDetailDialog=!0},removeCurrentExamCard(){this.selectedExamId&&(this.addExamCard(this.selectedExamId),this.showExamDetailDialog=!1)},async onExamConfigSaved(){this.selectedExamId&&(delete this.examStore.exams[this.selectedExamId],await this.examStore.fetchExam(this.selectedExamId),this.$message.success("保存成功","考试配置已更新"))},onExamConfigDeleted(){this.removeCurrentExamCard(),this.$message.success("删除成功","考试配置已删除")},isExamCardAdded(e){return!!this.state.boardData.homework[`exam-${e}`]},removeExamCard(e){},addAllUpcomingExams(){let e=0;for(const t of this.upcomingExams)this.isExamCardAdded(t.id)||(this.addExamCard(t.id,!0,!0),e++);e>0?(this.trySave(!0),this.$message.success("添加成功",`已添加 ${e} 个考试安排`)):this.$message.info("提示","所有考试已添加")},async downloadData(e=!1){var t,s,o;if(!this.loading.download)try{this.loading.download=!0;const a=await L.loadData("classworks-data-"+this.state.dateString);if(a.success==!1)if(a.error.code==="NOT_FOUND")this.state.showNoDataMessage=!0,this.state.noDataMessage=a.error.message,(e||!this.state.boardData||!this.state.boardData.homework&&!this.state.boardData.attendance)&&(this.state.boardData={homework:{},attendance:{absent:[],late:[],exclude:[]}});else throw new Error(a.error.message);else this.state.boardData={homework:a.homework||{},attendance:{absent:((t=a.attendance)==null?void 0:t.absent)||[],late:((s=a.attendance)==null?void 0:s.late)||[],exclude:((o=a.attendance)==null?void 0:o.exclude)||[]}},this.state.synced=!0,this.state.showNoDataMessage=!1,this.$message.success("下载成功","数据已更新")}catch(a){console.error("数据加载失败:",a),this.$message.error("下载失败",a.message),(e||!this.state.boardData||!this.state.boardData.homework&&!this.state.boardData.attendance)&&(this.state.boardData={homework:{},attendance:{absent:[],late:[],exclude:[]}})}finally{this.loading.download=!1}},async trySave(e=!1){if(e&&!this.canAutoSave)return this.shouldShowBlockedMessage&&this.showMessage("需要手动保存","已禁止自动保存非当天数据","warning"),!1;if(!e&&this.needConfirmSave)try{await this.showConfirmDialog()}catch{return!1}try{return await this.uploadData(),!0}catch(t){return this.$message.error("保存失败",t.message||"请重试"),!1}},async handleClose(){var s;if(!this.currentEditSubject)return;const e=this.state.textarea.trim(),t=((s=this.state.boardData.homework[this.currentEditSubject])==null?void 0:s.content)||"";if(e!==t.trim()){if(!e&&this.currentEditSubject.startsWith("custom-")){delete this.state.boardData.homework[this.currentEditSubject],this.state.synced=!1,this.autoSave&&await this.trySave(!0),this.state.dialogVisible=!1;return}this.state.boardData.homework[this.currentEditSubject].type==="custom"?this.state.boardData.homework[this.currentEditSubject].content=e:this.state.boardData.homework[this.currentEditSubject]={content:e},this.state.synced=!1,this.autoSave&&await this.trySave(!0)}this.state.dialogVisible=!1},async uploadData(){if(!this.loading.upload)try{this.loading.upload=!0;const e=await L.saveData("classworks-data-"+this.state.dateString,this.state.boardData);if(e.success==!1)throw new Error(e.error.message);this.state.synced=!0,this.$message.success(e.message||"保存成功")}finally{this.loading.upload=!1}},async loadConfig(){try{try{const e=await L.loadData("classworks-list-main");e.success!=!1&&Array.isArray(e)&&(this.state.studentList=e.map(t=>t.name))}catch(e){console.warn("Failed to load student list from dedicated key, falling back to config",e)}await this.loadSubjects()}catch(e){console.error("加载配置失败:",e),this.$message.error("加载配置失败",e.message)}},async loadSubjects(){try{const e=await L.loadData("classworks-config-subject");e&&Array.isArray(e)&&(this.state.availableSubjects=e)}catch(e){console.warn("Failed to load subject configuration:",e)}},showSyncMessage(){this.$message.success("数据已同步","数据已完成与服务器同步")},async openDialog(e){var t;if(this.isEditingDisabled){const s=this.$refs.studentNameManager;s!=null&&s.isReadOnly?this.$message.warning("无法编辑","当前使用的是只读令牌"):this.canEditCurrentDate?this.$message.warning("无法编辑","数据加载中,请稍候"):this.$message.warning("无法编辑","已禁止编辑过往数据");return}if(e.startsWith("custom-")){this.currentEditSubject=e,this.state.dialogTitle=this.state.boardData.homework[e].name,this.state.textarea=this.state.boardData.homework[e].content,this.state.dialogVisible=!0;return}if(this.refreshBeforeEdit)try{await this.downloadData()}catch(s){console.error("刷新数据失败:",s),this.$message.error("刷新数据失败,可能显示的不是最新数据")}this.currentEditSubject=e,this.state.boardData.homework[e]||(this.state.boardData.homework[e]={content:""}),this.state.dialogTitle=((t=this.state.availableSubjects.find(s=>s.name===e))==null?void 0:t.name)||e,this.state.textarea=this.state.boardData.homework[e].content,this.state.dialogVisible=!0},async handleHomeworkSave(e){this.currentEditSubject&&(this.state.boardData.homework[this.currentEditSubject].type==="custom"?this.state.boardData.homework[this.currentEditSubject].content=e:this.state.boardData.homework[this.currentEditSubject]={content:e},this.state.synced=!1,this.autoSave&&await this.trySave(!0))},setAttendanceArea(){if(this.isEditingDisabled){this.handleDisabledClick();return}this.state.attendanceDialog=!0},handleDisabledClick(){const e=this.$refs.studentNameManager;e!=null&&e.isReadOnly?this.$message.warning("无法编辑","当前使用的是只读令牌"):this.canEditCurrentDate?this.$message.warning("无法编辑","数据加载中,请稍候"):this.$message.warning("无法编辑","已禁止编辑过往数据")},zoom(e){e==="up"&&this.state.fontSize<100?this.state.fontSize+=2:e==="out"&&this.state.fontSize>16&&(this.state.fontSize-=2),this.state.contentStyle={"font-size":`${this.state.fontSize}px`},se("font.size",this.state.fontSize)},updateBackendUrl(){const e=k("server.provider"),t=k("server.classNumber");this.provider=e,this.state.classNumber=t},setupAutoRefresh(){const e=k("refresh.auto"),t=k("refresh.interval");this.state.refreshInterval&&clearInterval(this.state.refreshInterval),e&&(this.state.refreshInterval=setInterval(()=>{this.shouldSkipRefresh()||(this.downloadData(),this.loadPersistentNotifications())},t*1e3))},shouldSkipRefresh(){return!!(this.state.dialogVisible||this.state.attendanceDialog||this.confirmDialog.show||this.state.datePickerDialog||this.loading.upload||this.loading.download||!this.state.synced)},updateSettings(){this.state.fontSize=k("font.size"),this.state.contentStyle={"font-size":`${this.state.fontSize}px`},this.setupAutoRefresh(),this.updateBackendUrl(),this.loadDeviceInfo(),this.loadTokenInfo(),this.settingsTick++},async handleDateSelect(e){if(e)try{const t=this.ensureDate(e),s=this.formatDate(t);if(s===this.state.dateString)return;this.state.dateString=s,this.state.selectedDate=s,this.state.selectedDateObj=t,this.state.isToday=s===this.formatDate(this.getToday()),await Promise.all([this.downloadData(!0),this.loadSubjects()])}catch(t){console.error("Date processing error:",t),this.$message.error("日期处理错误","请重新选择日期")}},setupRealtimeChannel(){try{const e=k("server.kvToken");if(!e){console.warn("未配置 KV Token,无法加入实时频道");return}Ae(),ne(e),this.$offConnect=Ve(()=>ne(e)),this.debouncedRealtimeRefresh||(this.debouncedRealtimeRefresh=Y(async()=>{var d,w,B;const o=JSON.parse(JSON.stringify(this.state.boardData.homework));await this.downloadData();const a=new Date,n=String(a.getHours()).padStart(2,"0"),c=String(a.getMinutes()).padStart(2,"0"),p=String(a.getSeconds()).padStart(2,"0");(d=this.$message)==null||d.info("数据已更新",`已于 ${n}:${c}:${p} 自动刷新`);const v={};for(const P in this.state.boardData.homework){const W=((w=o[P])==null?void 0:w.content)||"",G=((B=this.state.boardData.homework[P])==null?void 0:B.content)||"";W!==G&&(v[P]=!0)}for(const P in o)this.state.boardData.homework[P]||(v[P]=!0);this.highlightedCards=v,setTimeout(()=>{this.highlightedCards={}},1e4)},800));const t=o=>{var n;if(!o)return;if(o.key==="notification-list"){this.loadPersistentNotifications();return}const a=`classworks-data-${this.state.dateString}`;o.key===a&&(o.action!=="upsert"&&o.action!=="delete"||(n=this.debouncedRealtimeRefresh)==null||n.call(this,o.key))},s=o=>{let a=o;o.content&&o.timestamp&&(a={uuid:o.senderId||"realtime",key:o.content.key,action:o.content.action,created:o.content.created,updatedAt:o.content.updatedAt||o.timestamp,deletedAt:o.content.deletedAt,batch:o.content.batch}),t(a)};this.$offKvChanged=oe("kv-key-changed",s),this.deviceEventHandler=Oe({onKvChanged:t,enableLegacySupport:!0}),this.$offDeviceEvent=oe("device-event",this.deviceEventHandler)}catch(e){console.warn("实时频道初始化失败",e)}},async saveAttendance(){try{await this.trySave(!0),this.state.attendanceDialog=!1}catch(e){console.error("保存出勤状态失败:",e),this.$message.error("保存失败","请重试")}},showMessage(e,t="",s="success"){this.$message[s](e,t)},updateSortedItemsCache(e,t){this._sortedItemsCache={key:e,value:t}},addTestCard(){const e=Date.now().toString();this.state.boardData.homework[`custom-${e}`]={name:"测试卡片",content:`这是一个测试卡片 -可以用来测试布局`,type:"custom"},this.state.synced=!1},showConfirmDialog(){return new Promise((e,t)=>{this.confirmDialog={show:!0,resolve:()=>{this.confirmDialog.show=!1,e()},reject:()=>{this.confirmDialog.show=!1,t(new Error("用户取消保存"))}}})},confirmSave(){this.confirmDialog.show=!1,this.confirmDialog.resolve&&this.confirmDialog.resolve(!0)},cancelSave(){this.confirmDialog.show=!1,this.confirmDialog.reject&&this.confirmDialog.reject(new Error("用户取消保存"))},async manualUpload(){return this.trySave(!1)},handleAttendanceChange(){this.state.synced=!1,this.debouncedAttendanceSave()},async handleAttendanceDialogClose(e){!e&&!this.state.synced&&await this.trySave(!0)},toggleFullscreen(){this.state.isFullscreen?this.exitFullscreen():this.enterFullscreen()},enterFullscreen(){const e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.msRequestFullscreen&&e.msRequestFullscreen()},exitFullscreen(){document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.msExitFullscreen&&document.msExitFullscreen()},fullscreenChangeHandler(){this.state.isFullscreen=!!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)},openRandomPicker(){this.$refs.randomPicker&&this.$refs.randomPicker.open()},checkHashForRandomPicker(){window.location.hash==="#random-picker"&&this.$nextTick(()=>{console.log("打开随机点名"),window.location.hash="",this.openRandomPicker()})},parseUrlConfig(){try{const t=new URLSearchParams(window.location.search).get("config");if(!t)return!1;try{const s=atob(t),o=Uint8Array.from(s,d=>d.charCodeAt(0)),a=new TextDecoder().decode(o),n=JSON.parse(a);console.log("从URL读取配置:",n);const c=[],p={},v={};return this.processSpecialSettings(n,c,p),this.processStandardSettings(n,c,p,v),Object.keys(p).length===0?(console.log("URL配置与当前配置相同,无需应用"),!1):new Promise(d=>{this.urlConfigDialog={show:!0,config:n,changes:c,validSettings:p,icons:v,confirmHandler:()=>{this.urlConfigDialog.show=!1,this.applyUrlConfig(p),d(!0)},cancelHandler:()=>{this.urlConfigDialog.show=!1,d(!1)}}})}catch(s){return console.error("解析URL配置错误:",s),this.$message.error("URL配置错误","无法解析配置数据"),!1}}catch(e){return console.error("处理URL配置错误:",e),!1}},processSpecialSettings(e,t,s){var o,a;if(e.classNumber!==void 0){const n=k("server.classNumber");e.classNumber!==n&&(t.push({key:"server.classNumber",name:"班级",oldValue:n,newValue:e.classNumber,description:((o=F["server.classNumber"])==null?void 0:o.description)||"班级编号",icon:((a=F["server.classNumber"])==null?void 0:a.icon)||"mdi-account-group"}),s["server.classNumber"]=e.classNumber)}e.date!==void 0&&e.date!==this.state.dateString&&(t.push({key:"date",name:"日期",oldValue:this.state.dateString,newValue:e.date,description:"查看的日期",icon:"mdi-calendar"}),s.date=e.date),e.subjects&&Array.isArray(e.subjects)&&(t.push({key:"subjects",name:"科目列表",oldValue:`${this.state.availableSubjects.length}个科目`,newValue:`${e.subjects.length}个科目`,description:"可用科目列表",icon:"mdi-notebook"}),s.subjects=e.subjects)},processStandardSettings(e,t,s,o){Object.entries(e).forEach(([a,n])=>{if(["classNumber","date","subjects"].includes(a))return;let c=a,p=F[a];if(!p&&!a.includes(".")){const v=["server.","display.","theme.","edit.","refresh.","font.","randomPicker."];for(const d of v){const w=`${d}${a}`;if(F[w]){c=w,p=F[w];break}}}if(p){let v=this.convertValueToCorrectType(n,p.type);if(p.validate&&!p.validate(v)){console.warn(`URL配置项 ${c} 的值无效: ${n}`);return}const d=k(c);v!==d&&(t.push({key:c,name:this.getSettingDisplayName(c),oldValue:this.formatSettingValue(d),newValue:this.formatSettingValue(v),description:p.description||c,icon:p.icon||"mdi-cog"}),s[c]=v,o[c]=p.icon||"mdi-cog")}else t.push({key:a,name:this.getSettingDisplayName(a),oldValue:"未知",newValue:this.formatSettingValue(n),description:"自定义配置项",icon:"mdi-cog-outline"}),s[a]=n,o[a]="mdi-cog-outline"})},convertValueToCorrectType(e,t){return t==="boolean"?!!e:t==="number"?Number(e):String(e)},formatSettingValue(e){return typeof e=="boolean"?e?"开启":"关闭":e===""||e===null||e===void 0?"空":e.toString()},getSettingDisplayName(e){const t=e.split("."),s=t[t.length-1];return{provider:"数据提供方",domain:"服务器域名",classNumber:"班级编号",emptySubjectDisplay:"空科目显示方式",dynamicSort:"动态排序",showRandomButton:"随机按钮",showFullscreenButton:"全屏按钮",cardHoverEffect:"卡片悬浮效果",enhancedTouchMode:"增强触摸模式",showAntiScreenBurnCard:"防烧屏卡片",mode:"主题模式",size:"字体大小",autoSave:"自动保存",blockNonTodayAutoSave:"禁止自动保存非当日",refreshBeforeEdit:"编辑前刷新",confirmNonTodaySave:"非当日保存确认",auto:"自动刷新",interval:"刷新间隔"}[s]||s},safeBase64Decode(e){try{return de.decode(e)}catch(t){throw console.error("Base64解码错误:",t),new Error("无法解码配置数据")}},applyUrlConfig(e){for(const[t,s]of Object.entries(e)){if(t==="date"){this.handleDateSelect(s);continue}if(t==="subjects"){this.state.availableSubjects=s;continue}se(t,s),t==="server.classNumber"&&(this.state.classNumber=s)}return this.updateBackendUrl(),this.$message.success("URL配置已应用","已从URL加载配置"),!0},navigateDay(e){const t=new Date(this.state.selectedDateObj);t.setDate(t.getDate()+e),this.handleDateSelect(t)},async copyHomeworkToToday(){if(!this.loading.copyToToday)try{this.loading.copyToToday=!0;const e=this.state.dateString,t=JSON.parse(JSON.stringify(this.state.boardData.homework)),s=this.getToday(),o=this.formatDate(s);this.state.dateString=o,await this.downloadData();const a={};for(const c in t)t[c]&&t[c].content&&(t[c].type==="custom"?a[c]=JSON.parse(JSON.stringify(t[c])):a[c]={content:t[c].content});this.state.boardData.homework=a,this.state.synced=!1,await this.uploadData(),this.state.selectedDate=o,this.state.selectedDateObj=s,this.state.isToday=!0;const n=new URL(window.location);n.searchParams.delete("date"),window.history.pushState({},"",n),this.$message.success("复制成功",`已将 ${e} 的作业内容复制到今天(已替换原有作业)`)}catch(e){console.error("复制作业失败:",e),this.$message.error("复制失败",e.message||"请重试")}finally{this.loading.copyToToday=!1}},parsePreconfigData(){try{const e=new URLSearchParams(window.location.search),t=e.get("namespace"),s=e.get("authCode")||e.get("auth_code"),o=e.get("autoExecute")||e.get("auto_execute");t&&(this.preconfigData.namespace=t,this.preconfigData.authCode=s,this.preconfigData.autoOpen=!0,this.preconfigData.autoExecute=this.parseBoolean(o),console.log("检测到预配数据:",{namespace:this.preconfigData.namespace,hasAuthCode:!!this.preconfigData.authCode,autoExecute:this.preconfigData.autoExecute}),this.cleanupUrlParams(["namespace","authCode","auth_code","autoExecute","auto_execute"]))}catch(e){console.error("解析预配数据失败:",e)}},parseBoolean(e){if(!e)return!1;const t=e.toLowerCase();return t==="true"||t==="1"||t==="yes"},cleanupUrlParams(e){try{const t=new URL(window.location);let s=!1;e.forEach(o=>{t.searchParams.has(o)&&(t.searchParams.delete(o),s=!0)}),s&&window.history.replaceState({},document.title,t.toString())}catch(t){console.error("清理URL参数失败:",t)}},async loadPersistentNotifications(){try{const e=await L.loadData("notification-list");e&&Array.isArray(e)?this.persistentNotifications=e:e&&e.success!==!1&&Array.isArray(e.data)?this.persistentNotifications=e.data:this.persistentNotifications=[]}catch(e){console.error("加载常驻通知失败",e)}},showNotificationDetail(e){this.currentNotification=e,this.notificationDetailDialog=!0},async removePersistentNotification(e){this.persistentNotifications=this.persistentNotifications.filter(s=>s.id!==e);const t=this.persistentNotifications.length>0?this.persistentNotifications:{};await L.saveData("notification-list",t),this.notificationDetailDialog=!1}}},os={key:3,class:"d-flex"},is={class:"text-h6 text-truncate font-weight-bold"},rs={class:"text-h4 font-weight-medium mb-4",style:{"line-height":"1.5"}},ls={class:"text-subtitle-1 text-grey"},ds={class:"d-flex align-center flex-wrap"},cs={class:"text-subtitle-1"},us={class:"text-grey-darken-1"},hs={class:"text-primary font-weight-medium"},ms={key:1,class:"text-center py-4 text-grey"};function fs(e,t,s,o,a,n){const c=x("init-service-chooser"),p=x("StudentNameManager"),v=x("HomeSkeleton"),d=x("homework-grid"),w=x("home-actions"),B=x("pwa-install-card"),P=x("attendance-sidebar"),W=x("homework-edit-dialog"),G=x("attendance-management-dialog"),ge=x("message-log"),ye=x("floating-toolbar"),pe=x("FloatingICP"),ke=x("ChatWidget"),we=x("UrgentTestDialog"),ve=x("random-picker"),De=x("exam-config-editor");return l(),g(b,null,[i(Pe,{class:"no-select"},{append:r(()=>[a.tokenDisplayInfo.readonly?(l(),y(z,{key:0,class:"mx-2",color:"warning","prepend-icon":"mdi-lock-alert",variant:"tonal"},{default:r(()=>[...t[29]||(t[29]=[h(" 只读 ",-1)])]),_:1})):S("",!0),a.tokenDisplayInfo.show?(l(),y(z,{key:1,style:A({cursor:a.tokenDisplayInfo.disabled?"default":"pointer"}),class:"mx-2",color:"primary","prepend-icon":"mdi-account",variant:"tonal",onClick:n.handleTokenChipClick},{default:r(()=>[h(m(a.tokenDisplayInfo.text),1)]),_:1},8,["style","onClick"])):S("",!0),n.shouldShowUrgentTestButton?(l(),y(D,{key:2,"prepend-icon":"mdi-chat",onClick:t[0]||(t[0]=u=>a.urgentTestDialog=!0),variant:"tonal"},{default:r(()=>[...t[30]||(t[30]=[h("发送通知",-1)])]),_:1})):S("",!0),i(D,{icon:"mdi-chat",variant:"text",onClick:t[1]||(t[1]=u=>a.isChatOpen=!0)}),i(D,{badge:n.unreadCount||void 0,"badge-color":n.unreadCount?"error":void 0,icon:"mdi-bell",variant:"text",onClick:t[2]||(t[2]=u=>e.$refs.messageLog.drawer=!0)},null,8,["badge","badge-color"]),i(D,{icon:"mdi-cog",variant:"text",onClick:t[3]||(t[3]=u=>e.$router.push("/settings"))})]),default:r(()=>[i(Le,null,{default:r(()=>[h(m(n.titleText),1)]),_:1}),i(V)]),_:1}),n.shouldShowInit?(l(),y(c,{key:0,preconfig:a.preconfigData,onDone:t[4]||(t[4]=u=>a.settingsTick++)},null,8,["preconfig"])):S("",!0),n.shouldShowInit?S("",!0):(l(),y(p,{key:1,ref:"studentNameManager",onTokenInfoUpdated:n.updateTokenDisplayInfo},null,8,["onTokenInfoUpdated"])),!n.shouldShowInit&&!a.dataReady?(l(),y(v,{key:2})):S("",!0),!n.shouldShowInit&&a.dataReady?(l(),g("div",os,[i(ce,{class:"main-window flex-grow-1 no-select bloom-container",fluid:""},{default:r(()=>[a.persistentNotifications.length>0?(l(),y(ze,{key:0,class:"mb-4"},{default:r(()=>[i(je,{cols:"12"},{default:r(()=>[(l(!0),g(b,null,C(a.persistentNotifications,u=>(l(),y(T,{key:u.id,color:u.isUrgent?"error":"primary",class:"mb-2 cursor-pointer",variant:"tonal",onClick:q=>n.showNotificationDetail(u)},{default:r(()=>[i(_,{class:"d-flex align-center py-3"},{default:r(()=>[f("span",is,m(u.message),1),i(V),i(D,{icon:"mdi-chevron-right",variant:"text"})]),_:2},1024)]),_:2},1032,["color","onClick"]))),128))]),_:1})]),_:1})):S("",!0),i(j,{modelValue:a.notificationDetailDialog,"onUpdate:modelValue":t[8]||(t[8]=u=>a.notificationDetailDialog=u),"max-width":"700",scrollable:""},{default:r(()=>[a.currentNotification?(l(),y(T,{key:0,class:"rounded-xl"},{default:r(()=>[i(N,{class:"d-flex align-center pa-4 text-h5"},{default:r(()=>[f("span",{class:U([a.currentNotification.isUrgent?"text-error":"","font-weight-bold"])},m(a.currentNotification.isUrgent?"强调通知":"通知详情"),3),i(V),i(D,{icon:"mdi-close",variant:"text",onClick:t[5]||(t[5]=u=>a.notificationDetailDialog=!1)})]),_:1}),i($),i(_,{class:"pa-6"},{default:r(()=>[f("div",rs,m(a.currentNotification.message),1),f("div",ls," 发布时间:"+m(n.formatTime(a.currentNotification.timestamp)),1)]),_:1}),i($),i(M,{class:"pa-4"},{default:r(()=>[i(D,{color:"error","prepend-icon":"mdi-delete",size:"x-large",variant:"tonal",class:"px-6",onClick:t[6]||(t[6]=u=>n.removePersistentNotification(a.currentNotification.id))},{default:r(()=>[...t[31]||(t[31]=[h(" 删除通知 ",-1)])]),_:1}),i(V),i(D,{color:"primary",size:"x-large",variant:"elevated",class:"px-8",onClick:t[7]||(t[7]=u=>a.notificationDetailDialog=!1)},{default:r(()=>[...t[32]||(t[32]=[h(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):S("",!0)]),_:1},8,["modelValue"]),i(d,{"sorted-items":n.sortedItems,"unused-subjects":n.unusedSubjects,"empty-subject-display":n.emptySubjectDisplay,"is-mobile":n.isMobile,"is-editing-disabled":n.isEditingDisabled,"content-style":a.state.contentStyle,"highlighted-cards":a.highlightedCards,onOpenDialog:n.openDialog,onOpenAttendance:n.setAttendanceArea,onDisabledClick:n.handleDisabledClick,onOpenExamDetail:n.openExamDetail},null,8,["sorted-items","unused-subjects","empty-subject-display","is-mobile","is-editing-disabled","content-style","highlighted-cards","onOpenDialog","onOpenAttendance","onDisabledClick","onOpenExamDetail"]),i(w,{synced:a.state.synced,"loading-upload":a.loading.upload,"show-random-picker-button":n.showRandomPickerButton,"show-exam-schedule-button":n.showExamScheduleButton,"show-list-card-button":n.showListCardButton,"show-fullscreen-button":n.showFullscreenButton,"is-fullscreen":a.state.isFullscreen,"show-anti-screen-burn-card":n.showAntiScreenBurnCard,"show-test-card-button":n.showTestCardButton,onUpload:n.manualUpload,onShowSyncMessage:n.showSyncMessage,onOpenRandomPicker:n.openRandomPicker,onToggleFullscreen:n.toggleFullscreen,onAddTestCard:n.addTestCard,onAddExamCard:t[9]||(t[9]=u=>a.showAddExamDialog=!0)},null,8,["synced","loading-upload","show-random-picker-button","show-exam-schedule-button","show-list-card-button","show-fullscreen-button","is-fullscreen","show-anti-screen-burn-card","show-test-card-button","onUpload","onShowSyncMessage","onOpenRandomPicker","onToggleFullscreen","onAddTestCard"]),i(B),a.upcomingExams.length>0&&!n.hasExamCard?(l(),y(Me,{key:1,class:"mt-4",color:"info",variant:"tonal",closable:"",icon:"mdi-calendar-clock",title:"近期有考试安排"},{append:r(()=>[i(D,{color:"primary",variant:"text",onClick:n.addAllUpcomingExams},{default:r(()=>[...t[34]||(t[34]=[h(" 一键添加 ",-1)])]),_:1},8,["onClick"])]),default:r(()=>[f("div",ds,[t[33]||(t[33]=f("span",{class:"mr-2"},"检测到未来两天内有以下考试:",-1)),(l(!0),g(b,null,C(a.upcomingExams,u=>(l(),y(z,{key:u.id,size:"small",class:"mr-1 mb-1",color:"primary"},{default:r(()=>[h(m(u.examName),1)]),_:2},1024))),128))])]),_:1})):S("",!0)]),_:1}),n.isMobile?S("",!0):(l(),y(P,{key:0,"student-list":a.state.studentList,attendance:a.state.boardData.attendance,"is-editing-disabled":n.isEditingDisabled,onClick:n.setAttendanceArea,onDisabledClick:n.handleDisabledClick},null,8,["student-list","attendance","is-editing-disabled","onClick","onDisabledClick"]))])):S("",!0),i(W,{modelValue:a.state.dialogVisible,"onUpdate:modelValue":t[10]||(t[10]=u=>a.state.dialogVisible=u),"auto-save":n.autoSave,"initial-content":a.state.textarea,title:a.state.dialogTitle,"is-editing-past-data":n.isEditingPastData,"current-date-string":a.state.dateString,onSave:n.handleHomeworkSave},null,8,["modelValue","auto-save","initial-content","title","is-editing-past-data","current-date-string","onSave"]),i(Se,{modelValue:a.state.snackbar,"onUpdate:modelValue":t[11]||(t[11]=u=>a.state.snackbar=u),timeout:2e3},{default:r(()=>[h(m(a.state.snackbarText),1)]),_:1},8,["modelValue"]),i(G,{modelValue:a.state.attendanceDialog,"onUpdate:modelValue":t[12]||(t[12]=u=>a.state.attendanceDialog=u),"student-list":a.state.studentList,attendance:a.state.boardData.attendance,"date-string":a.state.dateString,onSave:n.saveAttendance,onChange:n.handleAttendanceChange},null,8,["modelValue","student-list","attendance","date-string","onSave","onChange"]),i(ge,{ref:"messageLog"},null,512),i(ye,{"is-today":n.isToday,loading:a.loading.download,"copy-to-today-loading":a.loading.copyToToday,"selected-date":a.state.selectedDateObj,"unread-count":n.unreadCount,onRefresh:n.downloadData,onZoom:n.zoom,onOpenMessages:t[13]||(t[13]=u=>e.$refs.messageLog.drawer=!0),onOpenSettings:t[14]||(t[14]=u=>e.$router.push("/settings")),onDateSelect:n.handleDateSelect,onPrevDay:t[15]||(t[15]=u=>n.navigateDay(-1)),onNextDay:t[16]||(t[16]=u=>n.navigateDay(1)),onCopyToToday:n.copyHomeworkToToday},null,8,["is-today","loading","copy-to-today-loading","selected-date","unread-count","onRefresh","onZoom","onDateSelect","onCopyToToday"]),i(pe),i(ke,{modelValue:a.isChatOpen,"onUpdate:modelValue":t[17]||(t[17]=u=>a.isChatOpen=u),"show-button":!1},null,8,["modelValue"]),i(we,{modelValue:a.urgentTestDialog,"onUpdate:modelValue":t[18]||(t[18]=u=>a.urgentTestDialog=u)},null,8,["modelValue"]),i(j,{modelValue:a.confirmDialog.show,"onUpdate:modelValue":t[19]||(t[19]=u=>a.confirmDialog.show=u),"max-width":"400"},{default:r(()=>[i(T,null,{default:r(()=>[i(N,{class:"text-h6"},{default:r(()=>[...t[35]||(t[35]=[h(" 确认保存",-1)])]),_:1}),i(_,null,{default:r(()=>[h(" 您正在修改 "+m(a.state.dateString)+" 的数据,确定要保存吗? ",1)]),_:1}),i(M,null,{default:r(()=>[i(V),i(D,{color:"grey",variant:"text",onClick:a.confirmDialog.reject},{default:r(()=>[...t[36]||(t[36]=[h(" 取消 ",-1)])]),_:1},8,["onClick"]),i(D,{color:"primary",onClick:a.confirmDialog.resolve},{default:r(()=>[...t[37]||(t[37]=[h(" 确认保存",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),i(ve,{ref:"randomPicker",attendance:a.state.boardData.attendance,"student-list":a.state.studentList},null,8,["attendance","student-list"]),i(j,{modelValue:a.urlConfigDialog.show,"onUpdate:modelValue":t[20]||(t[20]=u=>a.urlConfigDialog.show=u),"max-width":"500"},{default:r(()=>[i(T,null,{default:r(()=>[i(N,{class:"text-h6"},{default:r(()=>[...t[38]||(t[38]=[h(" 确认应用URL配置",-1)])]),_:1}),i(_,null,{default:r(()=>[t[39]||(t[39]=f("p",null,"以下配置将应用于当前班级:",-1)),i(X,{density:"compact"},{default:r(()=>[(l(!0),g(b,null,C(a.urlConfigDialog.changes,u=>(l(),y(Z,{key:u.key},{prepend:r(()=>[i(R,{icon:u.icon,class:"mr-2",size:"small"},null,8,["icon"])]),default:r(()=>[i(be,{class:"d-flex align-center"},{default:r(()=>[f("span",cs,m(u.name),1),i(Ue,{activator:"parent",location:"top"},{default:r(()=>[h(m(u.description||u.key),1)]),_:2},1024)]),_:2},1024),i(xe,null,{default:r(()=>[f("span",us,m(u.oldValue),1),i(R,{class:"mx-1",icon:"mdi-arrow-right",size:"small"}),f("span",hs,m(u.newValue),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1}),i(M,null,{default:r(()=>[i(V),i(D,{color:"grey",variant:"text",onClick:a.urlConfigDialog.cancelHandler},{default:r(()=>[...t[40]||(t[40]=[h(" 取消 ",-1)])]),_:1},8,["onClick"]),i(D,{color:"primary",onClick:a.urlConfigDialog.confirmHandler},{default:r(()=>[...t[41]||(t[41]=[h(" 确认应用 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),i(j,{modelValue:a.showExamDetailDialog,"onUpdate:modelValue":t[23]||(t[23]=u=>a.showExamDetailDialog=u),persistent:"",fullscreen:""},{default:r(()=>[a.selectedExamId?(l(),y(T,{key:0},{default:r(()=>[i(N,{class:"d-flex align-center pa-4"},{default:r(()=>[t[42]||(t[42]=h(" 编辑考试配置 ",-1)),i(V),i(D,{icon:"mdi-close",variant:"text",onClick:t[21]||(t[21]=u=>a.showExamDetailDialog=!1)})]),_:1}),i(_,{class:"pa-4",style:{"max-height":"70vh","overflow-y":"auto"}},{default:r(()=>[i(De,{"config-id":a.selectedExamId,"dialog-mode":!0,onSaved:n.onExamConfigSaved,onDeleted:n.onExamConfigDeleted},null,8,["config-id","onSaved","onDeleted"])]),_:1}),i($),i(M,{class:"pa-4"},{default:r(()=>[i(D,{color:"error","prepend-icon":"mdi-delete",variant:"tonal",onClick:n.removeCurrentExamCard},{default:r(()=>[...t[43]||(t[43]=[h(" 移除卡片 ",-1)])]),_:1},8,["onClick"]),i(V),i(D,{color:"primary",variant:"text",onClick:t[22]||(t[22]=u=>a.showExamDetailDialog=!1)},{default:r(()=>[...t[44]||(t[44]=[h(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):S("",!0)]),_:1},8,["modelValue"]),i(j,{modelValue:a.showAddExamDialog,"onUpdate:modelValue":t[25]||(t[25]=u=>a.showAddExamDialog=u),"max-width":"500"},{default:r(()=>[i(T,null,{default:r(()=>[i(N,{class:"text-h6"},{default:r(()=>[...t[45]||(t[45]=[h("预览考试看板",-1)])]),_:1}),i(_,null,{default:r(()=>[o.examStore.examList.length>0?(l(),y(X,{key:0},{default:r(()=>[(l(!0),g(b,null,C(o.examStore.examList,u=>{var q;return l(),y(Z,{key:u.id,title:((q=o.examStore.exams[u.id])==null?void 0:q.examName)||u.id,subtitle:u.id,onClick:ys=>n.addExamCard(u.id)},{prepend:r(()=>[i(R,{color:"primary"},{default:r(()=>[...t[46]||(t[46]=[h("mdi-calendar-text",-1)])]),_:1})]),append:r(()=>[i(D,{icon:n.isExamCardAdded(u.id)?"mdi-check":"mdi-plus",color:n.isExamCardAdded(u.id)?"success":"grey",variant:"text"},null,8,["icon","color"])]),_:2},1032,["title","subtitle","onClick"])}),128))]),_:1})):(l(),g("div",ms," 暂无考试配置 "))]),_:1}),i(M,null,{default:r(()=>[i(V),i(D,{color:"primary",variant:"text",onClick:t[24]||(t[24]=u=>a.showAddExamDialog=!1)},{default:r(()=>[...t[47]||(t[47]=[h("关闭",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),i(j,{modelValue:a.notificationDetailDialog,"onUpdate:modelValue":t[28]||(t[28]=u=>a.notificationDetailDialog=u),"max-width":"600"},{default:r(()=>[a.currentNotification?(l(),y(T,{key:0},{default:r(()=>[i(N,{class:U(["headline",a.currentNotification.isUrgent?"text-error":"text-primary"])},{default:r(()=>[h(m(a.currentNotification.isUrgent?"强调通知":"通知详情"),1)]),_:1},8,["class"]),i(_,{class:"text-h5 py-4"},{default:r(()=>[h(m(a.currentNotification.message),1)]),_:1}),i(M,null,{default:r(()=>[i(D,{color:"error",variant:"text",onClick:t[26]||(t[26]=u=>n.removePersistentNotification(a.currentNotification.id))},{default:r(()=>[...t[48]||(t[48]=[h("删除",-1)])]),_:1}),i(V),i(D,{color:"primary",onClick:t[27]||(t[27]=u=>a.notificationDetailDialog=!1)},{default:r(()=>[...t[49]||(t[49]=[h("关闭",-1)])]),_:1})]),_:1})]),_:1})):S("",!0)]),_:1},8,["modelValue"]),t[50]||(t[50]=f("br",null,null,-1)),t[51]||(t[51]=f("br",null,null,-1)),t[52]||(t[52]=f("br",null,null,-1))],64)}const gs=O(ns,[["render",fs]]),Ns=Object.freeze(Object.defineProperty({__proto__:null,default:gs},Symbol.toStringTag,{value:"Module"}));export{Ns as i,ee as u}; diff --git a/assets/index-_6IQhlPZ.js b/assets/index-_6IQhlPZ.js deleted file mode 100644 index 627f1f4..0000000 --- a/assets/index-_6IQhlPZ.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./default-D6yehFKo.js","./vendor-vuetify-ChAgIwn2.js","./vendor-vue-H0jQBZ7T.js","./default-CmdaPMSp.css","./index-D3RRUIYd.js","./dataProvider-BwUtbSl1.js","./vendor-utils-DDRLRfsI.js","./serverRotation-BGVL0kta.js","./VChip-Veb3ShEh.js","./VChip-Dmz_1Lnv.css","./VContainer-Bg8RevuO.js","./VContainer-B1KSavhG.css","./socketClient-Cb2FghxN.js","./vendor-socket-CyTcV1HU.js","./deviceEvents-BnDFIf8a.js","./VAppBarTitle-Cvegbk0-.js","./VAppBarTitle-CczdD-Q2.css","./VRow-WkEz3xRr.js","./VRow-D2ArqUC2.css","./VAlert-D9G_9owC.js","./VAlert-D_OX1cfW.css","./VTooltip-C2Bprg_f.js","./VTooltip-DNuxJ6UK.css","./index-BqspaPWT.css","./404-BVft3pyR.js","./authorize-TN65-hp6.js","./CacheManagement-CrSS2Bn6.js","./VExpansionPanels-rcXmB3Pp.js","./VExpansionPanels-kEj4ZJQK.css","./VSkeletonLoader-CfCoJRep.js","./VSkeletonLoader-C11ZEozu.css","./cses2wakeup-DdLKal26.js","./VTabsWindowItem-DL2r3YhT.js","./VPagination-BiSMksGW.js","./VPagination-BF2MZmld.css","./VSelect-ANRyd3L-.js","./autofocus-BrMOVHY_.js","./autofocus-D1VSzmed.css","./VTextField-CuXGbmmC.js","./VSheet-U4CNWLuy.js","./VSheet-DxsDksIw.css","./VCheckboxBtn-DCkgbmVP.js","./VSwitch-CdpUb5tZ.js","./VSwitch-C87GkfUP.css","./VSelect-DHZViySU.css","./VTabsWindowItem-BWevsoWc.css","./VTextarea-CCCqy4pz.js","./VTextarea-_xVwaw_z.css","./VBadge-VwKD9DDf.js","./VBadge-BGqjJnM0.css","./VCheckbox-DhU7h1Z3.js","./VCheckbox-ZL-u1kGB.css","./cses2wakeup-BDtPgT2c.css","./debug-C-AM0tAt.js","./visitorId-ZHgZAIad.js","./debug-CbS14biG.css","./debug-init-CvHSowFZ.js","./VForm-Cskwow1F.js","./debug-socket-DTbWHWof.js","./_id_-6njfvvg5.js","./ExamConfigEditor-DzELjE-Y.js","./VAutocomplete-lO4hforf.js","./VAutocomplete-Ygy_KjMW.css","./VDatePicker-cLZU-Ed4.js","./VDatePicker-X4Ryb5EN.css","./ExamConfigEditor-DV8lOLSp.css","./examschedule-BWseMFw9.js","./examschedule-CU_Gxm4i.css","./index-Br7ywFJ9.js","./_id_-BRXvajnS.js","./settings-Bd7S8les.js","./MessageLog-DNZPN4Qf.js","./MessageLog-BGkFwivK.css","./soundList-BZnE47k0.js","./VCombobox-D6SxB9Ke.js","./VCombobox-r6cc1Iy_.css","./settings-cNI4NbxC.css","./socket-debugger-BnRHovO7.js","./socket-debugger-ykBk0O32.css","./sentry-CLY2_6wB.js","./vendor-sentry-B9EwL1LR.js"])))=>i.map(i=>d[i]); -import{c as yi,g as We,p as T,d as yn,i as Wn,a as hi,b as bi,e as Si,f as G,h as ye,j as $t,u as J,m as fe,k as ee,l as xe,n as Pe,o as Ye,w as hn,q as pi,r as wi,s as B,t as ha,v as ki,x as Ci,I as le,S as bn,y as ba,P as Vt,z as Ze,A as Dt,B as en,C as ht,D as qn,E as Ae,F as tn,G as _i,H as xi,J as jt,K as Sa,L as Lt,M as Ii,N as jn,O as Hn,Q as Ht,R as Gt,T as pa,U as Gn,V as Pi,W as Ai,X as Un,Y as Ei,Z as Vi,_ as Li,$ as xt,a0 as Ti,a1 as Oi,a2 as wa,a3 as Bi,a4 as Me,a5 as at,a6 as nn,a7 as Ri,a8 as Ni,a9 as $i,aa as Sn,ab as Kn,ac as Xn,ad as Di,ae as Mi,af as Fi,ag as ft,ah as an,ai as ke,aj as ka,ak as zi,al as Wi,am as qi}from"./vendor-vuetify-ChAgIwn2.js";import{J as ji,K as Hi,L as Gi,e as _,t as k,M as sn,l as se,k as P,n as H,F as Be,j as b,N as Q,E as pn,p as qe,d as Ee,A as je,o as W,D as it,O as Ui,r as vt,u as Ki,m as Y,y as Xi,T as Yi,s as z,q as ve,b as q,w as Re,P as Ne,Q as Ca,I as ce,R as ze,S as Ce,v as _a,x as ae,B as xa,U as wn,h as kn,V as Cn,W as Ji,X as Ie,Y as Fe,Z as ie,f as Qi,_ as Ia,$ as ln,a0 as _n,a1 as Ct,a2 as Zi,a3 as es,a4 as ts}from"./vendor-vue-H0jQBZ7T.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))a(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const l of s.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&a(l)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function a(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const ns="modulepreload",as=function(e,t){return new URL(e,t).href},Yn={},ne=function(t,n,a){let i=Promise.resolve();if(n&&n.length>0){const l=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),r=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));i=Promise.allSettled(n.map(u=>{if(u=as(u,a),u in Yn)return;Yn[u]=!0;const c=u.endsWith(".css"),m=c?'[rel="stylesheet"]':"";if(!!a)for(let y=l.length-1;y>=0;y--){const f=l[y];if(f.href===u&&(!c||f.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${u}"]${m}`))return;const d=document.createElement("link");if(d.rel=c?"stylesheet":ns,c||(d.as="script"),d.crossOrigin="",d.href=u,r&&d.setAttribute("nonce",r),document.head.appendChild(d),c)return new Promise((y,f)=>{d.addEventListener("load",y),d.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${u}`)))})}))}function s(l){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=l,window.dispatchEvent(o),!o.defaultPrevented)throw l}return i.then(l=>{for(const o of l||[])o.status==="rejected"&&s(o.reason);return t().catch(s)})},is=yi({theme:{defaultTheme:"dark"}}),ss=ji(),ls=e=>{const t={};Object.entries(Object.assign({"/src/layouts/default.vue":()=>ne(()=>import("./default-D6yehFKo.js"),__vite__mapDeps([0,1,2,3]),import.meta.url)})).forEach(([i,s])=>{let l=i.replace("/src/layouts/","").replace(".vue","");t[l]=s});function a(i,s=!0){return i.map(l=>{var o,r,u,c,m,v;if(((o=l.children)==null?void 0:o.length)>0&&(l.children=a(l.children,!1)),s){if(!l.component&&((r=l.children)==null?void 0:r.find(y=>{var f;return(y.path===""||y.path==="/")&&((f=y.meta)==null?void 0:f.isLayout)})))return l;if(((u=l.meta)==null?void 0:u.layout)!==!1)return{path:l.path,component:t[((c=l.meta)==null?void 0:c.layout)||"default"],children:l.path==="/"?[l]:[{...l,path:""}],meta:{isLayout:!0}}}return(m=l.meta)!=null&&m.layout?{path:l.path,component:t[(v=l.meta)==null?void 0:v.layout],children:[{...l,path:""}],meta:{isLayout:!0}}:l})}return a(e)},os=[{path:"/",name:"/",component:()=>ne(()=>import("./index-D3RRUIYd.js").then(e=>e.i),__vite__mapDeps([4,2,5,6,7,8,1,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]),import.meta.url)},{path:"/404",name:"/404",component:()=>ne(()=>import("./404-BVft3pyR.js"),__vite__mapDeps([24,17,1,2,18,10,11]),import.meta.url)},{path:"/authorize",name:"/authorize",component:()=>ne(()=>import("./authorize-TN65-hp6.js"),__vite__mapDeps([25,2,17,1,18,10,11]),import.meta.url)},{path:"/CacheManagement",name:"/CacheManagement",component:()=>ne(()=>import("./CacheManagement-CrSS2Bn6.js"),__vite__mapDeps([26,19,1,2,20,27,28,8,9,29,30,17,18,10,11]),import.meta.url)},{path:"/cses2wakeup",name:"/cses2wakeup",component:()=>ne(()=>import("./cses2wakeup-DdLKal26.js"),__vite__mapDeps([31,17,1,2,18,19,20,32,33,34,35,36,37,38,39,40,41,42,43,8,9,44,45,21,22,46,47,48,49,29,30,50,51,10,11,52]),import.meta.url)},{path:"/debug",name:"/debug",component:()=>ne(()=>import("./debug-C-AM0tAt.js"),__vite__mapDeps([53,54,1,2,10,11,55]),import.meta.url)},{path:"/debug-init",name:"/debug-init",component:()=>ne(()=>import("./debug-init-CvHSowFZ.js"),__vite__mapDeps([56,5,6,7,17,1,2,18,57,36,37,38,10,11]),import.meta.url)},{path:"/debug-socket",name:"/debug-socket",component:()=>ne(()=>import("./debug-socket-DTbWHWof.js"),__vite__mapDeps([58,12,13,7,14,17,1,2,18,8,9,38,36,37,46,47,10,11]),import.meta.url)},{path:"/exam-editor",children:[{path:":id",name:"/exam-editor/[id]",component:()=>ne(()=>import("./_id_-6njfvvg5.js"),__vite__mapDeps([59,60,5,6,7,2,19,1,20,29,30,21,22,8,9,17,18,38,36,37,46,47,42,43,61,35,39,40,41,44,62,63,48,49,64,65,15,16,10,11]),import.meta.url)}]},{path:"/examschedule",name:"/examschedule",component:()=>ne(()=>import("./examschedule-BWseMFw9.js"),__vite__mapDeps([66,60,5,6,7,2,19,1,20,29,30,21,22,8,9,17,18,38,36,37,46,47,42,43,61,35,39,40,41,44,62,63,48,49,64,65,10,11,67]),import.meta.url)},{path:"/list",children:[{path:"",name:"/list/",component:()=>ne(()=>import("./index-Br7ywFJ9.js"),__vite__mapDeps([68,5,6,7,2,15,1,16,38,36,37,10,11]),import.meta.url)},{path:":id",name:"/list/[id]",component:()=>ne(()=>import("./_id_-BRXvajnS.js"),__vite__mapDeps([69,5,6,7,2,15,1,16,38,36,37,41,42,43,8,9,46,47,10,11]),import.meta.url)}]},{path:"/settings",name:"/settings",component:()=>ne(()=>import("./settings-Bd7S8les.js"),__vite__mapDeps([70,71,15,1,2,16,72,8,9,42,36,37,43,35,38,39,40,41,44,5,6,7,19,20,17,18,10,11,50,51,46,47,73,57,27,28,32,33,34,45,74,75,54,76]),import.meta.url)},{path:"/socket-debugger",name:"/socket-debugger",component:()=>ne(()=>import("./socket-debugger-BnRHovO7.js"),__vite__mapDeps([77,12,13,7,17,1,2,18,8,9,38,36,37,46,47,42,43,19,20,10,11,78]),import.meta.url)}],xn=Hi({history:Gi("./"),routes:ls(os)});xn.onError((e,t)=>{var n,a;(a=(n=e==null?void 0:e.message)==null?void 0:n.includes)!=null&&a.call(n,"Failed to fetch dynamically imported module")?localStorage.getItem("vuetify:dynamic-reload")?console.error("Dynamic import error, reloading page did not fix it",e):(console.log("Reloading page to fix dynamic import error"),localStorage.setItem("vuetify:dynamic-reload","true"),location.assign(t.fullPath)):console.error(e)});xn.isReady().then(()=>{localStorage.removeItem("vuetify:dynamic-reload")});function rs(e){e.use(is).use(xn).use(ss)}async function us(){return typeof Notification<"u"&&Notification.requestPermission?await Notification.requestPermission()==="granted"?(console.log("通知权限已授予"),!0):(console.warn("通知权限被拒绝"),!1):(console.warn("浏览器不支持通知权限请求"),!1)}async function cs(){var e;try{return(e=navigator.storage)!=null&&e.persist?await navigator.storage.persist():!1}catch(t){return console.warn("请求持久性存储失败:",t),!1}}const Ut="Classworks_settings",Jn={"server.domain":"https://kv-service.houlang.cloud","server.siteKey":""},Oe={"device.uuid":{type:"string",default:"00000000-0000-4000-8000-000000000000",description:"设备唯一标识符",icon:"mdi-identifier"},"storage.persistOnLoad":{type:"boolean",default:!0,description:"是否在页面加载时自动请求持久性存储",icon:"mdi-database-sync"},"display.emptySubjectDisplay":{type:"string",default:"card",validate:e=>["card","button"].includes(e),description:"空科目的显示方式",icon:"mdi-card-outline"},"timeCard.enabled":{type:"boolean",default:!0,description:"启用时间卡片",icon:"mdi-clock-outline"},"hitokoto.enabled":{type:"boolean",default:!0,description:"启用一言",icon:"mdi-comment-quote"},"hitokoto.refreshInterval":{type:"number",default:300,description:"刷新时间(秒,0为不自动刷新)",icon:"mdi-timer-refresh"},"display.dynamicSort":{type:"boolean",default:!0,description:"是否启用动态排序",icon:"mdi-sort-variant"},"display.showRandomButton":{type:"boolean",default:!1,description:"是否显示随机点人按钮",icon:"mdi-shuffle-variant"},"display.showFullscreenButton":{type:"boolean",default:!0,description:"是否显示全屏按钮",icon:"mdi-fullscreen"},"display.cardHoverEffect":{type:"boolean",default:!0,description:"是否启用卡片悬浮效果",icon:"mdi-gesture-tap"},"display.enhancedTouchMode":{type:"boolean",default:!0,description:"是否启用增强触摸模式",icon:"mdi-gesture-tap-button"},"display.showAntiScreenBurnCard":{type:"boolean",default:!1,description:"是否显示防烧屏忽悠卡片",icon:"mdi-monitor-shimmer"},"display.showListCard":{type:"boolean",default:!0,description:"是否显示列表卡片",icon:"mdi-list-box"},"display.showExamScheduleButton":{type:"boolean",default:!0,description:"是否显示考试看板",icon:"mdi-calendar-check"},"display.showQuickTools":{type:"boolean",default:!0,description:"是否显示快捷键盘",icon:"mdi-dialpad"},"display.forceDesktopMode":{type:"boolean",default:!1,description:"强制使用一体机UI模式",icon:"mdi-monitor"},"display.lateStudentsArePresent":{type:"boolean",default:!1,description:"将迟到人数算入出勤人数",icon:"mdi-clock-fast"},"server.domain":{type:"string",default:"",validate:e=>{if(!e)return!0;try{return new URL(e),!0}catch(t){return console.error("域名格式无效:",t),!1}},description:"后端服务器域名",icon:"mdi-web"},"server.classNumber":{type:"string",default:"高三八班",validate:e=>/.*/.test(e),description:"班级编号",icon:"mdi-account-group"},"server.siteKey":{type:"string",default:"",description:"网站令牌",icon:"mdi-key-chain"},"server.kvToken":{type:"string",default:"",description:"KV授权令牌",icon:"mdi-shield-key"},"server.authDomain":{type:"string",default:"https://kv.houlang.cloud",description:"授权服务器域名",icon:"mdi-shield-account",validate:e=>{if(!e)return!0;try{return new URL(e),!0}catch(t){return console.error("授权域名格式无效:",t),!1}}},"server.provider":{type:"string",default:"classworkscloud",validate:e=>["kv-local","kv-server","classworkscloud"].includes(e),description:"数据提供者",icon:"mdi-database"},"refresh.auto":{type:"boolean",default:!1,description:"是否启用自动刷新",icon:"mdi-refresh-auto"},"refresh.interval":{type:"number",default:300,validate:e=>e>=10&&e<=3600,description:"自动刷新间隔(秒)",icon:"mdi-timer-outline"},"font.size":{type:"number",default:28,validate:e=>e>=16&&e<=100,description:"字体大小",icon:"mdi-format-size"},"edit.autoSave":{type:"boolean",default:!0,description:"是否启用自动保存",icon:"mdi-content-save-outline"},"edit.blockNonTodayAutoSave":{type:"boolean",default:!0,description:"禁止自动保存非当天数据",icon:"mdi-calendar-lock"},"edit.refreshBeforeEdit":{type:"boolean",default:!0,description:"编辑前是否自动刷新",icon:"mdi-refresh"},"edit.confirmNonTodaySave":{type:"boolean",default:!0,description:"保存非当天数据需确认",icon:"mdi-calendar-alert"},"edit.blockPastDataEdit":{type:"boolean",default:!1,description:"禁止编辑过往数据",icon:"mdi-lock-clock"},"edit.autoSavePromptText":{type:"string",default:"喵?喵呜!",description:"自动保存模式提示文本",icon:"mdi-text-box-outline"},"edit.manualSavePromptText":{type:"string",default:"写完后点击上传谢谢喵",description:"手动保存模式提示文本",icon:"mdi-text-box-outline"},"developer.enabled":{type:"boolean",default:!1,description:"是否启用开发者选项",icon:"mdi-developer-board"},"developer.showDebugConfig":{type:"boolean",default:!1,description:"是否显示调试配置",icon:"mdi-bug-outline"},"developer.disableMessageLog":{type:"boolean",default:!1,description:"禁用消息日志记录",requireDeveloper:!0,icon:"mdi-message-off-outline"},"message.showSidebar":{type:"boolean",default:!0,description:"是否显示消息记录侧栏",requireDeveloper:!0,icon:"mdi-message-text-outline"},"message.maxActiveMessages":{type:"number",default:5,validate:e=>e>=1&&e<=10,description:"同时显示的最大消息数量",requireDeveloper:!0,icon:"mdi-message-badge-outline"},"message.timeout":{type:"number",default:5e3,validate:e=>e>=1e3&&e<=3e4,description:"消息自动关闭时间(毫秒)",requireDeveloper:!0,icon:"mdi-timer-sand"},"message.saveHistory":{type:"boolean",default:!0,description:"是否保存消息历史记录",requireDeveloper:!0,icon:"mdi-history"},"theme.mode":{type:"string",default:"dark",validate:e=>["light","dark"].includes(e),description:"主题模式",icon:"mdi-theme-light-dark"},"notification.singleSound":{type:"string",default:"Teams 默认.mp3",description:"单次通知铃声",icon:"mdi-bell-ring"},"notification.urgentSound":{type:"string",default:"Teams 默认通话铃.mp3",description:"持续通知铃声",icon:"mdi-bell-alert"},"randomPicker.enabled":{type:"boolean",default:!0,description:"是否启用随机点名功能",icon:"mdi-account-question"},"randomPicker.animation":{type:"boolean",default:!0,description:"是否启用随机点名动画效果",icon:"mdi-animation-play"},"randomPicker.defaultCount":{type:"number",default:1,validate:e=>e>=1&&e,description:"默认抽取人数",icon:"mdi-counter"},"randomPicker.excludeAbsent":{type:"boolean",default:!0,description:"是否排除请假学生",icon:"mdi-account-off"},"randomPicker.excludeLate":{type:"boolean",default:!1,description:"是否排除迟到学生",icon:"mdi-clock-alert"},"randomPicker.excludeExcluded":{type:"boolean",default:!0,description:"是否排除不参与学生",icon:"mdi-account-cancel"},"randomPicker.mode":{type:"string",default:"name",validate:e=>["name","number"].includes(e),description:"随机点名模式",icon:"mdi-format-list-numbered"},"randomPicker.maxNumber":{type:"number",default:60,validate:e=>e>=1&&e,description:"学号模式最大值",icon:"mdi-numeric"},"randomPicker.minNumber":{type:"number",default:1,validate:e=>e>=1&&e,description:"学号模式最小值",icon:"mdi-numeric-negative-1"},"pwa.hideInstallCard":{type:"boolean",default:!1,description:"不显示PWA安装卡片",icon:"mdi-download-off"}};class ds{constructor(){this.settingsCache=null,this.isInitialized=!1}init(){this.isInitialized||(this.loadSettings(),this.isInitialized=!0)}loadSettings(){this.settingsCache={};try{const t=typeof localStorage<"u"?localStorage.getItem(Ut):null;t&&(this.settingsCache=JSON.parse(t))}catch(t){console.error("加载设置失败:",t)}for(const[t,n]of Object.entries(Oe))t in this.settingsCache||(this.settingsCache[t]=n.default);return this.settingsCache}saveSettings(){if(!(typeof localStorage>"u"))try{localStorage.setItem(Ut,JSON.stringify(this.settingsCache))}catch(t){console.error("保存设置失败:",t)}}getSetting(t){this.isInitialized||this.init();const n=Oe[t];if(!n)return console.warn(`未定义的设置项: ${t}`),null;if(n.requireDeveloper&&!this.settingsCache["developer.enabled"])return n.default;if(this.settingsCache["server.provider"]==="classworkscloud"&&Jn[t]!==void 0)return Jn[t];const a=this.settingsCache[t];return a!==void 0?a:n.default}setSetting(t,n){this.isInitialized||this.init();const a=Oe[t];if(!a)return console.warn(`未定义的设置项: ${t}`),!1;if(a.requireDeveloper&&!this.settingsCache["developer.enabled"])return console.warn(`设置项 ${t} 需要启用开发者选项`),!1;try{const i=this.settingsCache[t];if(typeof n!==a.type&&(n=a.type==="boolean"?!!n:a.type==="number"?Number(n):String(n)),a.validate&&!a.validate(n))return console.warn(`设置项 ${t} 的值无效`),!1;this.settingsCache[t]=n,this.saveSettings(),this.logSettingsChange(t,i,n);const s=a.legacyKey;return s&&typeof localStorage<"u"&&localStorage.setItem(s,n.toString()),!0}catch(i){return console.error(`设置配置项 ${t} 失败:`,i),!1}}logSettingsChange(t,n,a){this.settingsCache["developer.enabled"]&&this.settingsCache["developer.showDebugConfig"]&&console.log(`[Settings] ${t}:`,{old:n,new:a,time:new Date().toLocaleTimeString()})}resetSetting(t){this.isInitialized||this.init();const n=Oe[t];if(!n){console.warn(`未定义的设置项: ${t}`);return}this.settingsCache[t]=n.default,this.saveSettings()}resetAllSettings(){this.settingsCache={};for(const[t,n]of Object.entries(Oe))this.settingsCache[t]=n.default;this.saveSettings()}watchSettings(t){if(typeof window>"u")return()=>{};const n=a=>{a.key===Ut&&(this.settingsCache=JSON.parse(a.newValue),t(this.settingsCache))};return window.addEventListener("storage",n),()=>window.removeEventListener("storage",n)}getSettingDefinition(t){return Oe[t]||null}exportSettingsAsKeyValue(){this.isInitialized||this.init();const t={};for(const n in Oe)t[n]=this.getSetting(n);return t}}const Ve=new ds;typeof window<"u"&&Ve.init();const In=e=>Ve.getSetting(e),fs=(e,t)=>Ve.setSetting(e,t),vs=e=>Ve.resetSetting(e),ms=()=>Ve.resetAllSettings(),gs=e=>Ve.watchSettings(e),ys=e=>Ve.getSettingDefinition(e),hs=()=>Ve.exportSettingsAsKeyValue(),Mo=Object.freeze(Object.defineProperty({__proto__:null,SettingsManager:Ve,exportSettingsAsKeyValue:hs,getSetting:In,getSettingDefinition:ys,requestNotificationPermission:us,requestPersistentStorage:cs,resetAllSettings:ms,resetSetting:vs,setSetting:fs,settingsDefinitions:Oe,watchSettings:gs},Symbol.toStringTag,{value:"Module"}));class bs{constructor(){this.logs=[]}async addLog(t){return this.logs.push(t),this.logs.length>100&&this.logs.shift(),!0}async getLogs(t=20){return this.logs.slice(-t).reverse()}}const It=new bs,we=[];let Pt=null,pe=null;const ct={SUCCESS:"success",ERROR:"error",INFO:"info",WARNING:"warning"},Ss={timeout:3e3,showSnackbar:!0,addToLog:!0};async function _t(e,t,n="",a={}){const i={...Ss,...a},s={id:Date.now()+Math.random(),type:e,title:t,content:n.substring(0,500),timestamp:new Date};if(i.addToLog)try{for(await It.addLog(s),we.unshift(s);we.length>In("message.maxActiveMessages");)we.pop();pe==null||pe(we)}catch(l){console.error("保存日志失败:",l)}return i.showSnackbar&&(Pt==null||Pt(s)),s}function ps(e,t){let n=null;return function(...a){n&&clearTimeout(n),n=setTimeout(()=>{e.apply(this,a)},t)}}const Ke={install:e=>{e.config.globalProperties.$message={success:(t,n,a)=>_t(ct.SUCCESS,t,n,a),error:(t,n,a)=>_t(ct.ERROR,t,n,a),info:(t,n,a)=>_t(ct.INFO,t,n,a),warning:(t,n,a)=>_t(ct.WARNING,t,n,a)}},onSnackbar:e=>{Pt=e},onLog:e=>{pe=e},getMessages:async()=>{try{return await It.getLogs()}catch(e){return console.error("获取日志失败:",e),[...we]}},clearMessages:async()=>{try{await It.clearLogs(),we.length=0,pe==null||pe(we)}catch(e){console.error("清除日志失败:",e)}},MessageType:ct,markAsRead:()=>{},deleteMessage:async e=>{try{await It.deleteLog(e);const t=we.findIndex(n=>n.id===e);t!==-1&&we.splice(t,1),pe==null||pe(we)}catch(t){console.error("删除消息失败:",t)}},getUnreadCount:()=>0,debounce:ps},Pa=(e,t)=>{const n=e.__vccOpts||e;for(const[a,i]of t)n[a]=i;return n},st=T({border:[Boolean,Number,String]},"border");function lt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{borderClasses:_(()=>{const a=e.border;return a===!0||a===""?`${t}--border`:typeof a=="string"||a===0?String(a).split(" ").map(i=>`border-${i}`):[]})}}const ws=[null,"default","comfortable","compact"],He=T({density:{type:String,default:"default",validator:e=>ws.includes(e)}},"density");function ot(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{densityClasses:k(()=>`${t}--density-${e.density}`)}}const bt=T({elevation:{type:[Number,String],validator(e){const t=parseInt(e);return!isNaN(t)&&t>=0&&t<=24}}},"elevation");function St(e){return{elevationClasses:k(()=>{const n=sn(e)?e.value:e.elevation;return n==null?[]:[`elevation-${n}`]})}}const Le=T({rounded:{type:[Boolean,Number,String],default:void 0},tile:Boolean},"rounded");function Te(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{roundedClasses:_(()=>{const a=sn(e)?e.value:e.rounded,i=sn(e)?!1:e.tile,s=[];if(i||a===!1)s.push("rounded-0");else if(a===!0||a==="")s.push(`${t}--rounded`);else if(typeof a=="string"||a===0)for(const l of String(a).split(" "))s.push(`rounded-${l}`);return s})}}const oe=T({tag:{type:[String,Object,Function],default:"div"}},"tag");function Pn(e){return yn(()=>{const{class:t,style:n}=Cs(e);return{colorClasses:t,colorStyles:n}})}function et(e){const{colorClasses:t,colorStyles:n}=Pn(()=>({text:se(e)}));return{textColorClasses:t,textColorStyles:n}}function Je(e){const{colorClasses:t,colorStyles:n}=Pn(()=>({background:se(e)}));return{backgroundColorClasses:t,backgroundColorStyles:n}}function ks(e){return{text:typeof e.text=="string"?e.text.replace(/^text-/,""):e.text,background:typeof e.background=="string"?e.background.replace(/^bg-/,""):e.background}}function Cs(e){const t=ks(se(e)),n=[],a={};if(t.background)if(Wn(t.background)){if(a.backgroundColor=t.background,!t.text&&hi(t.background)){const i=bi(t.background);if(i.a==null||i.a===1){const s=Si(i);a.color=s,a.caretColor=s}}}else n.push(`bg-${t.background}`);return t.text&&(Wn(t.text)?(a.color=t.text,a.caretColor=t.text):n.push(`text-${t.text}`)),{class:n,style:a}}const _s=["elevated","flat","tonal","outlined","text","plain"];function pt(e,t){return P(Be,null,[e&&P("span",{key:"overlay",class:H(`${t}__overlay`)},null),P("span",{key:"underlay",class:H(`${t}__underlay`)},null)])}const Ge=T({color:String,variant:{type:String,default:"elevated",validator:e=>_s.includes(e)}},"variant");function wt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();const n=k(()=>{const{variant:s}=se(e);return`${t}--variant-${s}`}),{colorClasses:a,colorStyles:i}=Pn(()=>{const{variant:s,color:l}=se(e);return{[["elevated","flat"].includes(s)?"background":"text"]:l}});return{colorClasses:a,colorStyles:i,variantClasses:n}}const Aa=T({baseColor:String,divided:Boolean,direction:{type:String,default:"horizontal"},...st(),...ee(),...He(),...bt(),...Le(),...oe(),...fe(),...Ge()},"VBtnGroup"),Qn=G()({name:"VBtnGroup",props:Aa(),setup(e,t){let{slots:n}=t;const{themeClasses:a}=ye(e),{densityClasses:i}=ot(e),{borderClasses:s}=lt(e),{elevationClasses:l}=St(e),{roundedClasses:o}=Te(e);$t({VBtn:{height:k(()=>e.direction==="horizontal"?"auto":null),baseColor:k(()=>e.baseColor),color:k(()=>e.color),density:k(()=>e.density),flat:!0,variant:k(()=>e.variant)}}),J(()=>b(e.tag,{class:H(["v-btn-group",`v-btn-group--${e.direction}`,{"v-btn-group--divided":e.divided},a.value,s.value,i.value,l.value,o.value,e.class]),style:Q(e.style)},n))}}),xs=T({modelValue:{type:null,default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String,disabled:Boolean},"group"),Is=T({value:null,disabled:Boolean,selectedClass:String},"group-item");function Ps(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const a=xe("useGroupItem");if(!a)throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");const i=pn();qe(Symbol.for(`${t.description}:id`),i);const s=Ee(t,null);if(!s){if(!n)return s;throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`)}const l=k(()=>e.value),o=_(()=>!!(s.disabled.value||e.disabled));function r(){s==null||s.register({id:i,value:l,disabled:o},a)}function u(){s==null||s.unregister(i)}r(),je(()=>u());const c=_(()=>s.isSelected(i)),m=_(()=>s.items.value[0].id===i),v=_(()=>s.items.value[s.items.value.length-1].id===i),d=_(()=>c.value&&[s.selectedClass.value,e.selectedClass]);return W(c,y=>{a.emit("group:selected",{value:y})},{flush:"sync"}),{id:i,isSelected:c,isFirst:m,isLast:v,toggle:()=>s.select(i,!c.value),select:y=>s.select(i,y),selectedClass:d,value:l,disabled:o,group:s,register:r,unregister:u}}function As(e,t){let n=!1;const a=vt([]),i=Pe(e,"modelValue",[],v=>v===void 0?[]:Ea(a,v===null?[null]:hn(v)),v=>{const d=Vs(a,v);return e.multiple?d:d[0]}),s=xe("useGroup");function l(v,d){const y=v,f=Symbol.for(`${t.description}:id`),S=pi(f,s==null?void 0:s.vnode).indexOf(d);Ki(y.value)===void 0&&(y.value=S,y.useIndexAsValue=!0),S>-1?a.splice(S,0,y):a.push(y)}function o(v){if(n)return;r();const d=a.findIndex(y=>y.id===v);a.splice(d,1)}function r(){const v=a.find(d=>!d.disabled);v&&e.mandatory==="force"&&!i.value.length&&(i.value=[v.id])}it(()=>{r()}),je(()=>{n=!0}),Ui(()=>{for(let v=0;vf.id===v);if(!(d&&(y!=null&&y.disabled)))if(e.multiple){const f=i.value.slice(),p=f.findIndex(I=>I===v),S=~p;if(d=d??!S,S&&e.mandatory&&f.length<=1||!S&&e.max!=null&&f.length+1>e.max)return;p<0&&d?f.push(v):p>=0&&!d&&f.splice(p,1),i.value=f}else{const f=i.value.includes(v);if(e.mandatory&&f||!f&&!d)return;i.value=d??!f?[v]:[]}}function c(v){if(e.multiple,i.value.length){const d=i.value[0],y=a.findIndex(S=>S.id===d);let f=(y+v)%a.length,p=a[f];for(;p.disabled&&f!==y;)f=(f+v)%a.length,p=a[f];if(p.disabled)return;i.value=[a[f].id]}else{const d=a.find(y=>!y.disabled);d&&(i.value=[d.id])}}const m={register:l,unregister:o,selected:i,select:u,disabled:k(()=>e.disabled),prev:()=>c(a.length-1),next:()=>c(1),isSelected:v=>i.value.includes(v),selectedClass:k(()=>e.selectedClass),items:k(()=>a),getItemIndex:v=>Es(a,v)};return qe(t,m),m}function Es(e,t){const n=Ea(e,[t]);return n.length?e.findIndex(a=>a.id===n[0]):-1}function Ea(e,t){const n=[];return t.forEach(a=>{const i=e.find(l=>Ye(a,l.value)),s=e[a];(i==null?void 0:i.value)!==void 0?n.push(i.id):s!=null&&s.useIndexAsValue&&n.push(s.id)}),n}function Vs(e,t){const n=[];return t.forEach(a=>{const i=e.findIndex(s=>s.id===a);if(~i){const s=e[i];n.push(s.value!==void 0?s.value:i)}}),n}const Va=Symbol.for("vuetify:v-btn-toggle"),Ls=T({...Aa(),...xs()},"VBtnToggle"),Fo=G()({name:"VBtnToggle",props:Ls(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isSelected:a,next:i,prev:s,select:l,selected:o}=As(e,Va);return J(()=>{const r=Qn.filterProps(e);return b(Qn,Y({class:["v-btn-toggle",e.class]},r,{style:e.style}),{default:()=>{var u;return[(u=n.default)==null?void 0:u.call(n,{isSelected:a,next:i,prev:s,select:l,selected:o})]}})}),{next:i,prev:s,select:l}}}),Ts=T({defaults:Object,disabled:Boolean,reset:[Number,String],root:[Boolean,String],scoped:Boolean},"VDefaultsProvider"),ge=G(!1)({name:"VDefaultsProvider",props:Ts(),setup(e,t){let{slots:n}=t;const{defaults:a,disabled:i,reset:s,root:l,scoped:o}=Xi(e);return $t(a,{reset:s,root:l,scoped:o,disabled:i}),()=>{var r;return(r=n.default)==null?void 0:r.call(n)}}}),Os=["x-small","small","default","large","x-large"],Mt=T({size:{type:[String,Number],default:"default"}},"size");function Ft(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return yn(()=>{const n=e.size;let a,i;return wi(Os,n)?a=`${t}--size-${n}`:n&&(i={width:B(n),height:B(n)}),{sizeClasses:a,sizeStyles:i}})}const Bs=T({color:String,disabled:Boolean,start:Boolean,end:Boolean,icon:le,opacity:[String,Number],...ee(),...Mt(),...oe({tag:"i"}),...fe()},"VIcon"),_e=G()({name:"VIcon",props:Bs(),setup(e,t){let{attrs:n,slots:a}=t;const i=z(),{themeClasses:s}=ha(),{iconData:l}=ki(()=>i.value||e.icon),{sizeClasses:o}=Ft(e),{textColorClasses:r,textColorStyles:u}=et(()=>e.color);return J(()=>{var v,d;const c=(v=a.default)==null?void 0:v.call(a);c&&(i.value=(d=Ci(c).filter(y=>y.type===Yi&&y.children&&typeof y.children=="string")[0])==null?void 0:d.children);const m=!!(n.onClick||n.onClickOnce);return b(l.value.component,{tag:e.tag,icon:l.value.icon,class:H(["v-icon","notranslate",s.value,o.value,r.value,{"v-icon--clickable":m,"v-icon--disabled":e.disabled,"v-icon--start":e.start,"v-icon--end":e.end},e.class]),style:Q([{"--v-icon-opacity":e.opacity},o.value?void 0:{fontSize:B(e.size),height:B(e.size),width:B(e.size)},u.value,e.style]),role:m?"button":void 0,"aria-hidden":!m,tabindex:m?e.disabled?-1:0:void 0},{default:()=>[c]})}),{}}});function La(e,t){const n=q(),a=z(!1);if(bn){const i=new IntersectionObserver(s=>{a.value=!!s.find(l=>l.isIntersecting)},t);ve(()=>{i.disconnect()}),W(n,(s,l)=>{l&&(i.unobserve(l),a.value=!1),s&&i.observe(s)},{flush:"post"})}return{intersectionRef:n,isIntersecting:a}}const Rs=T({reveal:{type:[Boolean,Object],default:!1}},"reveal");function Ns(e){const n=k(()=>typeof e.reveal=="object"?Math.max(0,Number(e.reveal.duration??900)):900),a=z(e.reveal?"initial":"disabled");return it(async()=>{e.reveal&&(a.value="initial",await new Promise(i=>requestAnimationFrame(i)),a.value="pending",await new Promise(i=>setTimeout(i,n.value)),a.value="done")}),{duration:n,state:a}}const $s=T({bgColor:String,color:String,indeterminate:[Boolean,String],rounded:Boolean,modelValue:{type:[Number,String],default:0},rotate:{type:[Number,String],default:0},width:{type:[Number,String],default:4},...ee(),...Rs(),...Mt(),...oe({tag:"div"}),...fe()},"VProgressCircular"),Ds=G()({name:"VProgressCircular",props:$s(),setup(e,t){let{slots:n}=t;const a=20,i=2*Math.PI*a,s=q(),{themeClasses:l}=ye(e),{sizeClasses:o,sizeStyles:r}=Ft(e),{textColorClasses:u,textColorStyles:c}=et(()=>e.color),{textColorClasses:m,textColorStyles:v}=et(()=>e.bgColor),{intersectionRef:d,isIntersecting:y}=La(),{resizeRef:f,contentRect:p}=ba(),{state:S,duration:I}=Ns(e),L=k(()=>S.value==="initial"?0:Ze(parseFloat(e.modelValue),0,100)),w=k(()=>Number(e.width)),h=k(()=>r.value?Number(e.size):p.value?p.value.width:Math.max(w.value,32)),C=k(()=>a/(1-w.value/h.value)*2),x=k(()=>w.value/h.value*C.value),g=k(()=>{const M=(100-L.value)/100*i;return e.rounded&&L.value>0&&L.value<100?B(Math.min(i-.01,M+x.value)):B(M)}),R=_(()=>{const M=Number(e.rotate);return e.rounded?M+x.value/2/i*360:M});return Re(()=>{d.value=s.value,f.value=s.value}),J(()=>b(e.tag,{ref:s,class:H(["v-progress-circular",{"v-progress-circular--indeterminate":!!e.indeterminate,"v-progress-circular--visible":y.value,"v-progress-circular--disable-shrink":e.indeterminate&&(e.indeterminate==="disable-shrink"||Vt()),"v-progress-circular--revealing":["initial","pending"].includes(S.value)},l.value,o.value,u.value,e.class]),style:Q([r.value,c.value,{"--progress-reveal-duration":`${I.value}ms`},e.style]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.indeterminate?void 0:L.value},{default:()=>[P("svg",{style:{transform:`rotate(calc(-90deg + ${R.value}deg))`},xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${C.value} ${C.value}`},[P("circle",{class:H(["v-progress-circular__underlay",m.value]),style:Q(v.value),fill:"transparent",cx:"50%",cy:"50%",r:a,"stroke-width":x.value,"stroke-dasharray":i,"stroke-dashoffset":0},null),P("circle",{class:"v-progress-circular__overlay",fill:"transparent",cx:"50%",cy:"50%",r:a,"stroke-width":x.value,"stroke-dasharray":i,"stroke-dashoffset":g.value,"stroke-linecap":e.rounded?"round":void 0},null)]),n.default&&P("div",{class:"v-progress-circular__content"},[n.default({value:L.value})])]})),{}}}),rt=T({height:[Number,String],maxHeight:[Number,String],maxWidth:[Number,String],minHeight:[Number,String],minWidth:[Number,String],width:[Number,String]},"dimension");function ut(e){return{dimensionStyles:_(()=>{const n={},a=B(e.height),i=B(e.maxHeight),s=B(e.maxWidth),l=B(e.minHeight),o=B(e.minWidth),r=B(e.width);return a!=null&&(n.height=a),i!=null&&(n.maxHeight=i),s!=null&&(n.maxWidth=s),l!=null&&(n.minHeight=l),o!=null&&(n.minWidth=o),r!=null&&(n.width=r),n})}}const Zn={center:"center",top:"bottom",bottom:"top",left:"right",right:"left"},zt=T({location:String},"location");function An(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2?arguments[2]:void 0;const{isRtl:a}=Dt();return{locationStyles:_(()=>{if(!e.location)return{};const{side:s,align:l}=en(e.location.split(" ").length>1?e.location:`${e.location} center`,a.value);function o(u){return n?n(u):0}const r={};return s!=="center"&&(t?r[Zn[s]]=`calc(100% - ${o(s)}px)`:r[s]=0),l!=="center"?t?r[Zn[l]]=`calc(100% - ${o(l)}px)`:r[l]=0:(s==="center"?r.top=r.left="50%":r[{top:"left",bottom:"left",left:"top",right:"top"}[s]]="50%",r.transform={top:"translateX(-50%)",bottom:"translateX(-50%)",left:"translateY(-50%)",right:"translateY(-50%)",center:"translate(-50%, -50%)"}[s]),r})}}const Ms=T({chunkCount:{type:[Number,String],default:null},chunkWidth:{type:[Number,String],default:null},chunkGap:{type:[Number,String],default:4}},"chunks");function Fs(e,t){const n=k(()=>!!e.chunkCount||!!e.chunkWidth),a=_(()=>{const o=se(t);if(!o)return 0;if(!e.chunkCount)return Number(e.chunkWidth);const r=Number(e.chunkCount);return(o-Number(e.chunkGap)*(r-1))/r}),i=k(()=>Number(e.chunkGap)),s=_(()=>{if(!n.value)return{};const o=B(i.value),r=B(a.value);return{maskRepeat:"repeat-x",maskImage:`linear-gradient(90deg, #000, #000 ${r}, transparent ${r}, transparent)`,maskSize:`calc(${r} + ${o}) 100%`}});function l(o){const r=se(t);if(!r)return o;const u=100*i.value/r,c=100*(a.value+i.value)/r,m=Math.floor((o+u)/c);return Ze(0,m*c-u/2,100)}return{hasChunks:n,chunksMaskStyles:s,snapValueToChunk:l}}const zs=T({absolute:Boolean,active:{type:Boolean,default:!0},bgColor:String,bgOpacity:[Number,String],bufferValue:{type:[Number,String],default:0},bufferColor:String,bufferOpacity:[Number,String],clickable:Boolean,color:String,height:{type:[Number,String],default:4},indeterminate:Boolean,max:{type:[Number,String],default:100},modelValue:{type:[Number,String],default:0},opacity:[Number,String],reverse:Boolean,stream:Boolean,striped:Boolean,roundedBar:Boolean,...Ms(),...ee(),...zt({location:"top"}),...Le(),...oe(),...fe()},"VProgressLinear"),Ta=G()({name:"VProgressLinear",props:zs(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const a=q(),i=Pe(e,"modelValue"),{isRtl:s,rtlClasses:l}=Dt(),{themeClasses:o}=ye(e),{locationStyles:r}=An(e),{textColorClasses:u,textColorStyles:c}=et(()=>e.color),{backgroundColorClasses:m,backgroundColorStyles:v}=Je(()=>e.bgColor||e.color),{backgroundColorClasses:d,backgroundColorStyles:y}=Je(()=>e.bufferColor||e.bgColor||e.color),{backgroundColorClasses:f,backgroundColorStyles:p}=Je(()=>e.color),{roundedClasses:S}=Te(e),{intersectionRef:I,isIntersecting:L}=La(),w=_(()=>parseFloat(e.max)),h=_(()=>parseFloat(e.height)),C=_(()=>Ze(parseFloat(e.bufferValue)/w.value*100,0,100)),x=_(()=>Ze(parseFloat(i.value)/w.value*100,0,100)),g=_(()=>s.value!==e.reverse),R=_(()=>e.indeterminate?"fade-transition":"slide-x-transition"),M=z(0),{hasChunks:E,chunksMaskStyles:V,snapValueToChunk:A}=Fs(e,M);ht(E,()=>{const{resizeRef:X}=ba(te=>M.value=te[0].contentRect.width);Re(()=>X.value=a.value)});const N=_(()=>E.value?A(C.value):C.value),O=_(()=>E.value?A(x.value):x.value);function U(X){if(!I.value)return;const{left:te,right:he,width:K}=I.value.getBoundingClientRect(),$=g.value?K-X.clientX+(he-K):X.clientX-te;i.value=Math.round($/K*w.value)}return Re(()=>{I.value=a.value}),J(()=>b(e.tag,{ref:a,class:H(["v-progress-linear",{"v-progress-linear--absolute":e.absolute,"v-progress-linear--active":e.active&&L.value,"v-progress-linear--reverse":g.value,"v-progress-linear--rounded":e.rounded,"v-progress-linear--rounded-bar":e.roundedBar,"v-progress-linear--striped":e.striped,"v-progress-linear--clickable":e.clickable},S.value,o.value,l.value,e.class]),style:Q([{bottom:e.location==="bottom"?0:void 0,top:e.location==="top"?0:void 0,height:e.active?B(h.value):0,"--v-progress-linear-height":B(h.value),...e.absolute?r.value:{}},V.value,e.style]),role:"progressbar","aria-hidden":e.active?"false":"true","aria-valuemin":"0","aria-valuemax":e.max,"aria-valuenow":e.indeterminate?void 0:Math.min(parseFloat(i.value),w.value),onClick:e.clickable&&U},{default:()=>[e.stream&&P("div",{key:"stream",class:H(["v-progress-linear__stream",u.value]),style:{...c.value,[g.value?"left":"right"]:B(-h.value),borderTop:`${B(h.value/2)} dotted`,opacity:parseFloat(e.bufferOpacity),top:`calc(50% - ${B(h.value/4)})`,width:B(100-C.value,"%"),"--v-progress-linear-stream-to":B(h.value*(g.value?1:-1))}},null),P("div",{class:H(["v-progress-linear__background",m.value]),style:Q([v.value,{opacity:parseFloat(e.bgOpacity),width:e.stream?0:void 0}])},null),P("div",{class:H(["v-progress-linear__buffer",d.value]),style:Q([y.value,{opacity:parseFloat(e.bufferOpacity),width:B(N.value,"%")}])},null),b(Ne,{name:R.value},{default:()=>[e.indeterminate?P("div",{class:"v-progress-linear__indeterminate"},[["long","short"].map(X=>P("div",{key:X,class:H(["v-progress-linear__indeterminate",X,f.value]),style:Q(p.value)},null))]):P("div",{class:H(["v-progress-linear__determinate",f.value]),style:Q([p.value,{width:B(O.value,"%")}])},null)]}),n.default&&P("div",{class:"v-progress-linear__content"},[n.default({value:x.value,buffer:C.value})])]})),{}}}),Oa=T({loading:[Boolean,String]},"loader");function Ba(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{loaderClasses:k(()=>({[`${t}--loading`]:e.loading}))}}function Ws(e,t){var a;let{slots:n}=t;return P("div",{class:H(`${e.name}__loader`)},[((a=n.default)==null?void 0:a.call(n,{color:e.color,isActive:e.active}))||b(Ta,{absolute:e.absolute,active:e.active,color:e.color,height:"2",indeterminate:!0},null)])}const qs=["static","relative","fixed","absolute","sticky"],En=T({position:{type:String,validator:e=>qs.includes(e)}},"position");function Vn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:We();return{positionClasses:k(()=>e.position?`${t}--${e.position}`:void 0)}}function js(){const e=xe("useRoute");return _(()=>{var t;return(t=e==null?void 0:e.proxy)==null?void 0:t.$route})}function Hs(){var e,t;return(t=(e=xe("useRouter"))==null?void 0:e.proxy)==null?void 0:t.$router}function Ln(e,t){const n=Ca("RouterLink"),a=k(()=>!!(e.href||e.to)),i=_(()=>(a==null?void 0:a.value)||qn(t,"click")||qn(e,"click"));if(typeof n=="string"||!("useLink"in n)){const m=k(()=>e.href);return{isLink:a,isRouterLink:k(()=>!1),isClickable:i,href:m,linkProps:vt({href:m}),route:k(()=>{}),navigate:k(()=>{})}}const s=n.useLink({to:k(()=>e.to||""),replace:k(()=>e.replace)}),l=_(()=>e.to?s:void 0),o=js(),r=_(()=>{var m,v,d;return l.value?e.exact?o.value?((d=l.value.isExactActive)==null?void 0:d.value)&&Ye(l.value.route.value.query,o.value.query):((v=l.value.isExactActive)==null?void 0:v.value)??!1:((m=l.value.isActive)==null?void 0:m.value)??!1:!1}),u=_(()=>{var m;return e.to?(m=l.value)==null?void 0:m.route.value.href:e.href}),c=k(()=>!!e.to);return{isLink:a,isRouterLink:c,isClickable:i,isActive:r,route:k(()=>{var m;return(m=l.value)==null?void 0:m.route.value}),navigate:k(()=>{var m;return(m=l.value)==null?void 0:m.navigate}),href:u,linkProps:vt({href:u,"aria-current":k(()=>r.value?"page":void 0),"aria-disabled":k(()=>e.disabled&&a.value?"true":void 0),tabindex:k(()=>e.disabled&&a.value?"-1":void 0)})}}const Tn=T({href:String,replace:Boolean,to:[String,Object],exact:Boolean},"router");let Kt=!1;function Gs(e,t){let n=!1,a,i;Ae&&(e!=null&&e.beforeEach)&&(ce(()=>{window.addEventListener("popstate",s),a=e.beforeEach((l,o,r)=>{Kt?n?t(r):r():setTimeout(()=>n?t(r):r()),Kt=!0}),i=e==null?void 0:e.afterEach(()=>{Kt=!1})}),ve(()=>{window.removeEventListener("popstate",s),a==null||a(),i==null||i()}));function s(l){var o;(o=l.state)!=null&&o.replaced||(n=!0,setTimeout(()=>n=!1))}}function Us(e,t){W(()=>{var n;return(n=e.isActive)==null?void 0:n.value},n=>{e.isLink.value&&n!=null&&t&&ce(()=>{t(n)})},{immediate:!0})}const on=Symbol("rippleStop"),Ks=80;function ea(e,t){e.style.transform=t,e.style.webkitTransform=t}function rn(e){return e.constructor.name==="TouchEvent"}function Ra(e){return e.constructor.name==="KeyboardEvent"}const Xs=function(e,t){var m;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=0,i=0;if(!Ra(e)){const v=t.getBoundingClientRect(),d=rn(e)?e.touches[e.touches.length-1]:e;a=d.clientX-v.left,i=d.clientY-v.top}let s=0,l=.3;(m=t._ripple)!=null&&m.circle?(l=.15,s=t.clientWidth/2,s=n.center?s:s+Math.sqrt((a-s)**2+(i-s)**2)/4):s=Math.sqrt(t.clientWidth**2+t.clientHeight**2)/2;const o=`${(t.clientWidth-s*2)/2}px`,r=`${(t.clientHeight-s*2)/2}px`,u=n.center?o:`${a-s}px`,c=n.center?r:`${i-s}px`;return{radius:s,scale:l,x:u,y:c,centerX:o,centerY:r}},Tt={show(e,t){var d;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!((d=t==null?void 0:t._ripple)!=null&&d.enabled))return;const a=document.createElement("span"),i=document.createElement("span");a.appendChild(i),a.className="v-ripple__container",n.class&&(a.className+=` ${n.class}`);const{radius:s,scale:l,x:o,y:r,centerX:u,centerY:c}=Xs(e,t,n),m=`${s*2}px`;i.className="v-ripple__animation",i.style.width=m,i.style.height=m,t.appendChild(a);const v=window.getComputedStyle(t);v&&v.position==="static"&&(t.style.position="relative",t.dataset.previousPosition="static"),i.classList.add("v-ripple__animation--enter"),i.classList.add("v-ripple__animation--visible"),ea(i,`translate(${o}, ${r}) scale3d(${l},${l},${l})`),i.dataset.activated=String(performance.now()),requestAnimationFrame(()=>{requestAnimationFrame(()=>{i.classList.remove("v-ripple__animation--enter"),i.classList.add("v-ripple__animation--in"),ea(i,`translate(${u}, ${c}) scale3d(1,1,1)`)})})},hide(e){var s;if(!((s=e==null?void 0:e._ripple)!=null&&s.enabled))return;const t=e.getElementsByClassName("v-ripple__animation");if(t.length===0)return;const n=Array.from(t).findLast(l=>!l.dataset.isHiding);if(n)n.dataset.isHiding="true";else return;const a=performance.now()-Number(n.dataset.activated),i=Math.max(250-a,0);setTimeout(()=>{n.classList.remove("v-ripple__animation--in"),n.classList.add("v-ripple__animation--out"),setTimeout(()=>{var o;e.getElementsByClassName("v-ripple__animation").length===1&&e.dataset.previousPosition&&(e.style.position=e.dataset.previousPosition,delete e.dataset.previousPosition),((o=n.parentNode)==null?void 0:o.parentNode)===e&&e.removeChild(n.parentNode)},300)},i)}};function Na(e){return typeof e>"u"||!!e}function mt(e){const t={},n=e.currentTarget;if(!(!(n!=null&&n._ripple)||n._ripple.touched||e[on])){if(e[on]=!0,rn(e))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(t.center=n._ripple.centered||Ra(e),n._ripple.class&&(t.class=n._ripple.class),rn(e)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=()=>{Tt.show(e,n,t)},n._ripple.showTimer=window.setTimeout(()=>{var a;(a=n==null?void 0:n._ripple)!=null&&a.showTimerCommit&&(n._ripple.showTimerCommit(),n._ripple.showTimerCommit=null)},Ks)}else Tt.show(e,n,t)}}function Ot(e){e[on]=!0}function de(e){const t=e.currentTarget;if(t!=null&&t._ripple){if(window.clearTimeout(t._ripple.showTimer),e.type==="touchend"&&t._ripple.showTimerCommit){t._ripple.showTimerCommit(),t._ripple.showTimerCommit=null,t._ripple.showTimer=window.setTimeout(()=>{de(e)});return}window.setTimeout(()=>{t._ripple&&(t._ripple.touched=!1)}),Tt.hide(t)}}function $a(e){const t=e.currentTarget;t!=null&&t._ripple&&(t._ripple.showTimerCommit&&(t._ripple.showTimerCommit=null),window.clearTimeout(t._ripple.showTimer))}let gt=!1;function Ys(e,t){!gt&&t.includes(e.key)&&(gt=!0,mt(e))}function Da(e){gt=!1,de(e)}function Ma(e){gt&&(gt=!1,de(e))}function Fa(e,t,n){const{value:a,modifiers:i}=t,s=Na(a);s||Tt.hide(e),e._ripple=e._ripple??{},e._ripple.enabled=s,e._ripple.centered=i.center,e._ripple.circle=i.circle;const l=tn(a)?a:{};l.class&&(e._ripple.class=l.class);const o=l.keys??["Enter","Space"];if(e._ripple.keyDownHandler=r=>Ys(r,o),s&&!n){if(i.stop){e.addEventListener("touchstart",Ot,{passive:!0}),e.addEventListener("mousedown",Ot);return}e.addEventListener("touchstart",mt,{passive:!0}),e.addEventListener("touchend",de,{passive:!0}),e.addEventListener("touchmove",$a,{passive:!0}),e.addEventListener("touchcancel",de),e.addEventListener("mousedown",mt),e.addEventListener("mouseup",de),e.addEventListener("mouseleave",de),e.addEventListener("keydown",e._ripple.keyDownHandler),e.addEventListener("keyup",Da),e.addEventListener("blur",Ma),e.addEventListener("dragstart",de,{passive:!0})}else!s&&n&&za(e)}function za(e){var t;e.removeEventListener("touchstart",Ot),e.removeEventListener("mousedown",Ot),e.removeEventListener("touchstart",mt),e.removeEventListener("touchend",de),e.removeEventListener("touchmove",$a),e.removeEventListener("touchcancel",de),e.removeEventListener("mousedown",mt),e.removeEventListener("mouseup",de),e.removeEventListener("mouseleave",de),(t=e._ripple)!=null&&t.keyDownHandler&&e.removeEventListener("keydown",e._ripple.keyDownHandler),e.removeEventListener("keyup",Da),e.removeEventListener("blur",Ma),e.removeEventListener("dragstart",de)}function Js(e,t){Fa(e,t,!1)}function Qs(e){za(e),delete e._ripple}function Zs(e,t){if(t.value===t.oldValue)return;const n=Na(t.oldValue);Fa(e,t,n)}const yt={mounted:Js,unmounted:Qs,updated:Zs},el=T({active:{type:Boolean,default:void 0},activeColor:String,baseColor:String,symbol:{type:null,default:Va},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:le,appendIcon:le,block:Boolean,readonly:Boolean,slim:Boolean,stacked:Boolean,spaced:String,ripple:{type:[Boolean,Object],default:!0},text:{type:[String,Number,Boolean],default:void 0},...st(),...ee(),...He(),...rt(),...bt(),...Is(),...Oa(),...zt(),...En(),...Le(),...Tn(),...Mt(),...oe({tag:"button"}),...fe(),...Ge({variant:"elevated"})},"VBtn"),Wa=G()({name:"VBtn",props:el(),emits:{"group:selected":e=>!0},setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{borderClasses:s}=lt(e),{densityClasses:l}=ot(e),{dimensionStyles:o}=ut(e),{elevationClasses:r}=St(e),{loaderClasses:u}=Ba(e),{locationStyles:c}=An(e),{positionClasses:m}=Vn(e),{roundedClasses:v}=Te(e),{sizeClasses:d,sizeStyles:y}=Ft(e),f=Ps(e,e.symbol,!1),p=Ln(e,n),S=_(()=>{var E;return e.active!==void 0?e.active:p.isRouterLink.value?(E=p.isActive)==null?void 0:E.value:f==null?void 0:f.isSelected.value}),I=k(()=>S.value?e.activeColor??e.color:e.color),L=_(()=>{var V,A;return{color:(f==null?void 0:f.isSelected.value)&&(!p.isLink.value||((V=p.isActive)==null?void 0:V.value))||!f||((A=p.isActive)==null?void 0:A.value)?I.value??e.baseColor:e.baseColor,variant:e.variant}}),{colorClasses:w,colorStyles:h,variantClasses:C}=wt(L),x=_(()=>(f==null?void 0:f.disabled.value)||e.disabled),g=k(()=>e.variant==="elevated"&&!(e.disabled||e.flat||e.border)),R=_(()=>{if(!(e.value===void 0||typeof e.value=="symbol"))return Object(e.value)===e.value?JSON.stringify(e.value,null,0):e.value});function M(E){var V,A;x.value||p.isLink.value&&(E.metaKey||E.ctrlKey||E.shiftKey||E.button!==0||n.target==="_blank")||(p.isRouterLink.value?(A=(V=p.navigate).value)==null||A.call(V,E):f==null||f.toggle())}return Us(p,f==null?void 0:f.select),J(()=>{const E=p.isLink.value?"a":e.tag,V=!!(e.prependIcon||a.prepend),A=!!(e.appendIcon||a.append),N=!!(e.icon&&e.icon!==!0);return ze(b(E,Y(p.linkProps,{type:E==="a"?void 0:"button",class:["v-btn",f==null?void 0:f.selectedClass.value,{"v-btn--active":S.value,"v-btn--block":e.block,"v-btn--disabled":x.value,"v-btn--elevated":g.value,"v-btn--flat":e.flat,"v-btn--icon":!!e.icon,"v-btn--loading":e.loading,"v-btn--readonly":e.readonly,"v-btn--slim":e.slim,"v-btn--stacked":e.stacked},e.spaced?["v-btn--spaced",`v-btn--spaced-${e.spaced}`]:[],i.value,s.value,w.value,l.value,r.value,u.value,m.value,v.value,d.value,C.value,e.class],style:[h.value,o.value,c.value,y.value,e.style],"aria-busy":e.loading?!0:void 0,disabled:x.value&&E!=="a"||void 0,tabindex:e.loading||e.readonly?-1:void 0,onClick:M,value:R.value}),{default:()=>{var O;return[pt(!0,"v-btn"),!e.icon&&V&&P("span",{key:"prepend",class:"v-btn__prepend"},[a.prepend?b(ge,{key:"prepend-defaults",disabled:!e.prependIcon,defaults:{VIcon:{icon:e.prependIcon}}},a.prepend):b(_e,{key:"prepend-icon",icon:e.prependIcon},null)]),P("span",{class:"v-btn__content","data-no-activator":""},[!a.default&&N?b(_e,{key:"content-icon",icon:e.icon},null):b(ge,{key:"content-defaults",disabled:!N,defaults:{VIcon:{icon:e.icon}}},{default:()=>{var U;return[((U=a.default)==null?void 0:U.call(a))??Ce(e.text)]}})]),!e.icon&&A&&P("span",{key:"append",class:"v-btn__append"},[a.append?b(ge,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VIcon:{icon:e.appendIcon}}},a.append):b(_e,{key:"append-icon",icon:e.appendIcon},null)]),!!e.loading&&P("span",{key:"loader",class:"v-btn__loader"},[((O=a.loader)==null?void 0:O.call(a))??b(Ds,{color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0,width:"2"},null)])]}}),[[yt,!x.value&&e.ripple,"",{center:!!e.icon}]])}),{group:f}}});function Xt(e,t){return{x:e.x+t.x,y:e.y+t.y}}function tl(e,t){return{x:e.x-t.x,y:e.y-t.y}}function ta(e,t){if(e.side==="top"||e.side==="bottom"){const{side:n,align:a}=e,i=a==="left"?0:a==="center"?t.width/2:a==="right"?t.width:a,s=n==="top"?0:n==="bottom"?t.height:n;return Xt({x:i,y:s},t)}else if(e.side==="left"||e.side==="right"){const{side:n,align:a}=e,i=n==="left"?0:n==="right"?t.width:n,s=a==="top"?0:a==="center"?t.height/2:a==="bottom"?t.height:a;return Xt({x:i,y:s},t)}return Xt({x:t.width/2,y:t.height/2},t)}const qa={static:il,connected:ll},nl=T({locationStrategy:{type:[String,Function],default:"static",validator:e=>typeof e=="function"||e in qa},location:{type:String,default:"bottom"},origin:{type:String,default:"auto"},offset:[Number,String,Array],stickToTarget:Boolean,viewportMargin:{type:[Number,String],default:12}},"VOverlay-location-strategies");function al(e,t){const n=q({}),a=q();Ae&&ht(()=>!!(t.isActive.value&&e.locationStrategy),o=>{var r,u;W(()=>e.locationStrategy,o),ve(()=>{window.removeEventListener("resize",i),visualViewport==null||visualViewport.removeEventListener("resize",s),visualViewport==null||visualViewport.removeEventListener("scroll",l),a.value=void 0}),window.addEventListener("resize",i,{passive:!0}),visualViewport==null||visualViewport.addEventListener("resize",s,{passive:!0}),visualViewport==null||visualViewport.addEventListener("scroll",l,{passive:!0}),typeof e.locationStrategy=="function"?a.value=(r=e.locationStrategy(t,e,n))==null?void 0:r.updateLocation:a.value=(u=qa[e.locationStrategy](t,e,n))==null?void 0:u.updateLocation});function i(o){var r;(r=a.value)==null||r.call(a,o)}function s(o){var r;(r=a.value)==null||r.call(a,o)}function l(o){var r;(r=a.value)==null||r.call(a,o)}return{contentStyles:n,updateLocation:a}}function il(){}function sl(e,t){const n=pa(e);return t?n.x+=parseFloat(e.style.right||0):n.x-=parseFloat(e.style.left||0),n.y-=parseFloat(e.style.top||0),n}function ll(e,t,n){(Array.isArray(e.target.value)||_i(e.target.value))&&Object.assign(n.value,{position:"fixed",top:0,[e.isRtl.value?"right":"left"]:0});const{preferredAnchor:i,preferredOrigin:s}=yn(()=>{const S=en(t.location,e.isRtl.value),I=t.origin==="overlap"?S:t.origin==="auto"?Gt(S):en(t.origin,e.isRtl.value);return S.side===I.side&&S.align===Ht(I).align?{preferredAnchor:Gn(S),preferredOrigin:Gn(I)}:{preferredAnchor:S,preferredOrigin:I}}),[l,o,r,u]=["minWidth","minHeight","maxWidth","maxHeight"].map(S=>_(()=>{const I=parseFloat(t[S]);return isNaN(I)?1/0:I})),c=_(()=>{if(Array.isArray(t.offset))return t.offset;if(typeof t.offset=="string"){const S=t.offset.split(" ").map(parseFloat);return S.length<2&&S.push(0),S}return typeof t.offset=="number"?[t.offset,0]:[0,0]});let m=!1,v=-1;const d=new xi(4),y=new ResizeObserver(()=>{if(!m)return;if(requestAnimationFrame(I=>{I!==v&&d.clear(),requestAnimationFrame(L=>{v=L})}),d.isFull){const I=d.values();if(Ye(I.at(-1),I.at(-3))&&!Ye(I.at(-1),I.at(-2)))return}const S=p();S&&d.push(S.flipped)});let f=new jt({x:0,y:0,width:0,height:0});W(e.target,(S,I)=>{I&&!Array.isArray(I)&&y.unobserve(I),Array.isArray(S)?Ye(S,I)||p():S&&y.observe(S)},{immediate:!0}),W(e.contentEl,(S,I)=>{I&&y.unobserve(I),S&&y.observe(S)},{immediate:!0}),ve(()=>{y.disconnect()});function p(){if(m=!1,requestAnimationFrame(()=>m=!0),!e.target.value||!e.contentEl.value)return;(Array.isArray(e.target.value)||e.target.value.offsetParent||e.target.value.getClientRects().length)&&(f=Sa(e.target.value));const S=sl(e.contentEl.value,e.isRtl.value),I=Lt(e.contentEl.value),L=Number(t.viewportMargin);I.length||(I.push(document.documentElement),e.contentEl.value.style.top&&e.contentEl.value.style.left||(S.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),S.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const w=I.reduce((A,N)=>{const O=Ii(N);return A?new jt({x:Math.max(A.left,O.left),y:Math.max(A.top,O.top),width:Math.min(A.right,O.right)-Math.max(A.left,O.left),height:Math.min(A.bottom,O.bottom)-Math.max(A.top,O.top)}):O},void 0);t.stickToTarget?(w.x+=Math.min(L,f.x),w.y+=Math.min(L,f.y),w.width=Math.max(w.width-L*2,f.x+f.width-L),w.height=Math.max(w.height-L*2,f.y+f.height-L)):(w.x+=L,w.y+=L,w.width-=L*2,w.height-=L*2);let h={anchor:i.value,origin:s.value};function C(A){const N=new jt(S),O=ta(A.anchor,f),U=ta(A.origin,N);let{x:X,y:te}=tl(O,U);switch(A.anchor.side){case"top":te-=c.value[0];break;case"bottom":te+=c.value[0];break;case"left":X-=c.value[0];break;case"right":X+=c.value[0];break}switch(A.anchor.align){case"top":te-=c.value[1];break;case"bottom":te+=c.value[1];break;case"left":X-=c.value[1];break;case"right":X+=c.value[1];break}return N.x+=X,N.y+=te,N.width=Math.min(N.width,r.value),N.height=Math.min(N.height,u.value),{overflows:Hn(N,w),x:X,y:te}}let x=0,g=0;const R={x:0,y:0},M={x:!1,y:!1};let E=-1;for(;!(E++>10);){const{x:A,y:N,overflows:O}=C(h);x+=A,g+=N,S.x+=A,S.y+=N;{const U=jn(h.anchor),X=O.x.before||O.x.after,te=O.y.before||O.y.after;let he=!1;if(["x","y"].forEach(K=>{if(K==="x"&&X&&!M.x||K==="y"&&te&&!M.y){const $={anchor:{...h.anchor},origin:{...h.origin}},Z=K==="x"?U==="y"?Ht:Gt:U==="y"?Gt:Ht;$.anchor=Z($.anchor),$.origin=Z($.origin);const{overflows:j}=C($);(j[K].before<=O[K].before&&j[K].after<=O[K].after||j[K].before+j[K].after<(O[K].before+O[K].after)/2)&&(h=$,he=M[K]=!0)}}),he)continue}O.x.before&&(x+=O.x.before,S.x+=O.x.before),O.x.after&&(x-=O.x.after,S.x-=O.x.after),O.y.before&&(g+=O.y.before,S.y+=O.y.before),O.y.after&&(g-=O.y.after,S.y-=O.y.after);{const U=Hn(S,w);R.x=w.width-U.x.before-U.x.after,R.y=w.height-U.y.before-U.y.after,x+=U.x.before,S.x+=U.x.before,g+=U.y.before,S.y+=U.y.before}break}const V=jn(h.anchor);return Object.assign(n.value,{"--v-overlay-anchor-origin":`${h.anchor.side} ${h.anchor.align}`,transformOrigin:`${h.origin.side} ${h.origin.align}`,top:B(Yt(g)),left:e.isRtl.value?void 0:B(Yt(x)),right:e.isRtl.value?B(Yt(-x)):void 0,minWidth:B(V==="y"?Math.min(l.value,f.width):l.value),maxWidth:B(na(Ze(R.x,l.value===1/0?0:l.value,r.value))),maxHeight:B(na(Ze(R.y,o.value===1/0?0:o.value,u.value)))}),{available:R,contentBox:S,flipped:M}}return W(()=>[i.value,s.value,t.offset,t.minWidth,t.minHeight,t.maxWidth,t.maxHeight],()=>p()),ce(()=>{const S=p();if(!S)return;const{available:I,contentBox:L}=S;L.height>I.y&&requestAnimationFrame(()=>{p(),requestAnimationFrame(()=>{p()})})}),{updateLocation:p}}function Yt(e){return Math.round(e*devicePixelRatio)/devicePixelRatio}function na(e){return Math.ceil(e*devicePixelRatio)/devicePixelRatio}let un=!0;const Bt=[];function ol(e){!un||Bt.length?(Bt.push(e),cn()):(un=!1,e(),cn())}let aa=-1;function cn(){cancelAnimationFrame(aa),aa=requestAnimationFrame(()=>{const e=Bt.shift();e&&e(),Bt.length?cn():un=!0})}const At={none:null,close:cl,block:dl,reposition:fl},rl=T({scrollStrategy:{type:[String,Function],default:"block",validator:e=>typeof e=="function"||e in At}},"VOverlay-scroll-strategies");function ul(e,t){if(!Ae)return;let n;Re(async()=>{n==null||n.stop(),t.isActive.value&&e.scrollStrategy&&(n=_a(),await new Promise(a=>setTimeout(a)),n.active&&n.run(()=>{var a;typeof e.scrollStrategy=="function"?e.scrollStrategy(t,e,n):(a=At[e.scrollStrategy])==null||a.call(At,t,e,n)}))}),ve(()=>{n==null||n.stop()})}function cl(e){function t(n){e.isActive.value=!1}ja(On(e.target.value,e.contentEl.value),t)}function dl(e,t){var o;const n=(o=e.root.value)==null?void 0:o.offsetParent,a=On(e.target.value,e.contentEl.value),i=[...new Set([...Lt(a,t.contained?n:void 0),...Lt(e.contentEl.value,t.contained?n:void 0)])].filter(r=>!r.classList.contains("v-overlay-scroll-blocked")),s=window.innerWidth-document.documentElement.offsetWidth,l=(r=>Pi(r)&&r)(n||document.documentElement);l&&e.root.value.classList.add("v-overlay--scroll-blocked"),i.forEach((r,u)=>{r.style.setProperty("--v-body-scroll-x",B(-r.scrollLeft)),r.style.setProperty("--v-body-scroll-y",B(-r.scrollTop)),r!==document.documentElement&&r.style.setProperty("--v-scrollbar-offset",B(s)),r.classList.add("v-overlay-scroll-blocked")}),ve(()=>{i.forEach((r,u)=>{const c=parseFloat(r.style.getPropertyValue("--v-body-scroll-x")),m=parseFloat(r.style.getPropertyValue("--v-body-scroll-y")),v=r.style.scrollBehavior;r.style.scrollBehavior="auto",r.style.removeProperty("--v-body-scroll-x"),r.style.removeProperty("--v-body-scroll-y"),r.style.removeProperty("--v-scrollbar-offset"),r.classList.remove("v-overlay-scroll-blocked"),r.scrollLeft=-c,r.scrollTop=-m,r.style.scrollBehavior=v}),l&&e.root.value.classList.remove("v-overlay--scroll-blocked")})}function fl(e,t,n){let a=!1,i=-1,s=-1;function l(o){ol(()=>{var c,m;const r=performance.now();(m=(c=e.updateLocation).value)==null||m.call(c,o),a=(performance.now()-r)/(1e3/60)>2})}s=(typeof requestIdleCallback>"u"?o=>o():requestIdleCallback)(()=>{n.run(()=>{ja(On(e.target.value,e.contentEl.value),o=>{a?(cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=requestAnimationFrame(()=>{l(o)})})):l(o)})})}),ve(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(s),cancelAnimationFrame(i)})}function On(e,t){return Array.isArray(e)?document.elementsFromPoint(...e).find(n=>!(t!=null&&t.contains(n))):e??t}function ja(e,t){const n=[document,...Lt(e)];n.forEach(a=>{a.addEventListener("scroll",t,{passive:!0})}),ve(()=>{n.forEach(a=>{a.removeEventListener("scroll",t)})})}const vl=Symbol.for("vuetify:v-menu"),ml=T({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function gl(e,t){let n=()=>{};function a(l,o){n==null||n();const r=l?e.openDelay:e.closeDelay,u=Math.max((o==null?void 0:o.minDelay)??0,Number(r??0));return new Promise(c=>{n=Ai(u,()=>{t==null||t(l),c(l)})})}function i(){return a(!0)}function s(l){return a(!1,l)}return{clearDelay:n,runOpenDelay:i,runCloseDelay:s}}const yl=T({target:[String,Object],activator:[String,Object],activatorProps:{type:Object,default:()=>({})},openOnClick:{type:Boolean,default:void 0},openOnHover:Boolean,openOnFocus:{type:Boolean,default:void 0},closeOnContentClick:Boolean,...ml()},"VOverlay-activator");function hl(e,t){let{isActive:n,isTop:a,contentEl:i}=t;const s=xe("useActivator"),l=q();let o=!1,r=!1,u=!0;const c=_(()=>e.openOnFocus||e.openOnFocus==null&&e.openOnHover),m=_(()=>e.openOnClick||e.openOnClick==null&&!e.openOnHover&&!c.value),{runOpenDelay:v,runCloseDelay:d}=gl(e,g=>{g===(e.openOnHover&&o||c.value&&r)&&!(e.openOnHover&&n.value&&!a.value)&&(n.value!==g&&(u=!0),n.value=g)}),y=q(),f={onClick:g=>{g.stopPropagation(),l.value=g.currentTarget||g.target,n.value||(y.value=[g.clientX,g.clientY]),n.value=!n.value},onMouseenter:g=>{o=!0,l.value=g.currentTarget||g.target,v()},onMouseleave:g=>{o=!1,d()},onFocus:g=>{Li(g.target,":focus-visible")!==!1&&(r=!0,g.stopPropagation(),l.value=g.currentTarget||g.target,v())},onBlur:g=>{r=!1,g.stopPropagation(),d({minDelay:1})}},p=_(()=>{const g={};return m.value&&(g.onClick=f.onClick),e.openOnHover&&(g.onMouseenter=f.onMouseenter,g.onMouseleave=f.onMouseleave),c.value&&(g.onFocus=f.onFocus,g.onBlur=f.onBlur),g}),S=_(()=>{const g={};if(e.openOnHover&&(g.onMouseenter=()=>{o=!0,v()},g.onMouseleave=()=>{o=!1,d()}),c.value&&(g.onFocusin=R=>{R.target.matches(":focus-visible")&&(r=!0,v())},g.onFocusout=()=>{r=!1,d({minDelay:1})}),e.closeOnContentClick){const R=Ee(vl,null);g.onClick=()=>{n.value=!1,R==null||R.closeParents()}}return g}),I=_(()=>{const g={};return e.openOnHover&&(g.onMouseenter=()=>{u&&(o=!0,u=!1,v())},g.onMouseleave=()=>{o=!1,d()}),g});W(a,g=>{var R;g&&(e.openOnHover&&!o&&(!c.value||!r)||c.value&&!r&&(!e.openOnHover||!o))&&!((R=i.value)!=null&&R.contains(document.activeElement))&&(n.value=!1)}),W(n,g=>{g||setTimeout(()=>{y.value=void 0})},{flush:"post"});const L=Un();Re(()=>{L.value&&ce(()=>{l.value=L.el})});const w=Un(),h=_(()=>e.target==="cursor"&&y.value?y.value:w.value?w.el:Ha(e.target,s)||l.value),C=_(()=>Array.isArray(h.value)?void 0:h.value);let x;return W(()=>!!e.activator,g=>{g&&Ae?(x=_a(),x.run(()=>{bl(e,s,{activatorEl:l,activatorEvents:p})})):x&&x.stop()},{flush:"post",immediate:!0}),ve(()=>{x==null||x.stop()}),{activatorEl:l,activatorRef:L,target:h,targetEl:C,targetRef:w,activatorEvents:p,contentEvents:S,scrimEvents:I}}function bl(e,t,n){let{activatorEl:a,activatorEvents:i}=n;W(()=>e.activator,(r,u)=>{if(u&&r!==u){const c=o(u);c&&l(c)}r&&ce(()=>s())},{immediate:!0}),W(()=>e.activatorProps,()=>{s()}),ve(()=>{l()});function s(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:o(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;r&&Ei(r,Y(i.value,u))}function l(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:o(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;r&&Vi(r,Y(i.value,u))}function o(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activator;const u=Ha(r,t);return a.value=(u==null?void 0:u.nodeType)===Node.ELEMENT_NODE?u:void 0,a.value}}function Ha(e,t){var a,i;if(!e)return;let n;if(e==="parent"){let s=(i=(a=t==null?void 0:t.proxy)==null?void 0:a.$el)==null?void 0:i.parentNode;for(;s!=null&&s.hasAttribute("data-no-activator");)s=s.parentNode;n=s}else typeof e=="string"?n=document.querySelector(e):"$el"in e?n=e.$el:n=e;return n}const Sl=T({retainFocus:Boolean,captureFocus:Boolean,disableInitialFocus:Boolean},"focusTrap"),Et=new Map;let ia=0;function sa(e){const t=document.activeElement;if(e.key!=="Tab"||!t)return;const n=Array.from(Et.values()).filter(u=>{var v;let{isActive:c,contentEl:m}=u;return c.value&&((v=m.value)==null?void 0:v.contains(t))}).map(u=>u.contentEl.value);let a,i=t.parentElement;for(;i;){if(n.includes(i)){a=i;break}i=i.parentElement}if(!a)return;const s=xt(a).filter(u=>u.tabIndex>=0);if(!s.length)return;const l=document.activeElement;if(s.length===1&&s[0].classList.contains("v-list")&&s[0].contains(l)){e.preventDefault();return}const o=s[0],r=s[s.length-1];e.shiftKey&&(l===o||o.classList.contains("v-list")&&o.contains(l))&&(e.preventDefault(),r.focus()),!e.shiftKey&&(l===r||r.classList.contains("v-list")&&r.contains(l))&&(e.preventDefault(),o.focus())}function pl(e,t){let{isActive:n,localTop:a,activatorEl:i,contentEl:s}=t;const l=Symbol("trap");let o=!1,r=-1;async function u(){o=!0,r=window.setTimeout(()=>{o=!1},100)}async function c(d){var p;const y=d.relatedTarget,f=d.target;document.removeEventListener("pointerdown",u),document.removeEventListener("keydown",m),await ce(),n.value&&!o&&y!==f&&s.value&&se(a)&&![document,s.value].includes(f)&&!s.value.contains(f)&&((p=xt(s.value)[0])==null||p.focus())}function m(d){if(d.key==="Tab"&&(document.removeEventListener("keydown",m),n.value&&s.value&&d.target&&!s.value.contains(d.target))){const y=xt(document.documentElement);if(d.shiftKey&&d.target===y.at(0)||!d.shiftKey&&d.target===y.at(-1)){const f=xt(s.value);f.length>0&&(d.preventDefault(),f[0].focus())}}}const v=k(()=>n.value&&e.captureFocus&&!e.disableInitialFocus);Ae&&(W(()=>e.retainFocus,d=>{d?Et.set(l,{isActive:n,contentEl:s}):Et.delete(l)},{immediate:!0}),W(v,d=>{d?(document.addEventListener("pointerdown",u),document.addEventListener("focusin",c,{once:!0}),document.addEventListener("keydown",m)):(document.removeEventListener("pointerdown",u),document.removeEventListener("focusin",c),document.removeEventListener("keydown",m))},{immediate:!0}),ia++<1&&document.addEventListener("keydown",sa)),ve(()=>{Et.delete(l),clearTimeout(r),document.removeEventListener("pointerdown",u),document.removeEventListener("focusin",c),document.removeEventListener("keydown",m),--ia<1&&document.removeEventListener("keydown",sa)})}function wl(){if(!Ae)return z(!1);const{ssr:e}=Ti();if(e){const t=z(!1);return it(()=>{t.value=!0}),t}else return z(!0)}const kl=T({eager:Boolean},"lazy");function Cl(e,t){const n=z(!1),a=k(()=>n.value||e.eager||t.value);W(t,()=>n.value=!0);function i(){e.eager||(n.value=!1)}return{isBooted:n,hasContent:a,onAfterLeave:i}}function Bn(){const t=xe("useScopeId").vnode.scopeId;return{scopeId:t?{[t]:""}:void 0}}const la=Symbol.for("vuetify:stack"),dt=vt([]);function _l(e,t,n){const a=xe("useStack"),i=!n,s=Ee(la,void 0),l=vt({activeChildren:new Set});qe(la,l);const o=z(Number(se(t)));ht(e,()=>{var m;const c=(m=dt.at(-1))==null?void 0:m[1];o.value=c?c+10:Number(se(t)),i&&dt.push([a.uid,o.value]),s==null||s.activeChildren.add(a.uid),ve(()=>{if(i){const v=ae(dt).findIndex(d=>d[0]===a.uid);dt.splice(v,1)}s==null||s.activeChildren.delete(a.uid)})});const r=z(!0);i&&Re(()=>{var m;const c=((m=dt.at(-1))==null?void 0:m[0])===a.uid;setTimeout(()=>r.value=c)});const u=k(()=>!l.activeChildren.size);return{globalTop:xa(r),localTop:u,stackStyles:k(()=>({zIndex:o.value}))}}function xl(e){return{teleportTarget:_(()=>{const n=e();if(n===!0||!Ae)return;const a=n===!1?document.body:typeof n=="string"?document.querySelector(n):n;if(a==null)return;let i=[...a.children].find(s=>s.matches(".v-overlay-container"));return i||(i=document.createElement("div"),i.className="v-overlay-container",a.appendChild(i)),i})}}const Ga=T({transition:{type:null,default:"fade-transition",validator:e=>e!==!0}},"transition"),Xe=(e,t)=>{let{slots:n}=t;const{transition:a,disabled:i,group:s,...l}=e,{component:o=s?wn:Ne,...r}=tn(a)?a:{};let u;return tn(a)?u=Y(r,Oi({disabled:i,group:s}),l):u=Y({name:i||!a?"":a},l),kn(o,u,n)};function Il(){return!0}function Ua(e,t,n){if(!e||Ka(e,n)===!1)return!1;const a=wa(t);if(typeof ShadowRoot<"u"&&a instanceof ShadowRoot&&a.host===e.target)return!1;const i=(typeof n.value=="object"&&n.value.include||(()=>[]))();return i.push(t),!i.some(s=>s==null?void 0:s.contains(e.target))}function Ka(e,t){return(typeof t.value=="object"&&t.value.closeConditional||Il)(e)}function Pl(e,t,n){const a=typeof n.value=="function"?n.value:n.value.handler;e.shadowTarget=e.target,t._clickOutside.lastMousedownWasOutside&&Ua(e,t,n)&&setTimeout(()=>{Ka(e,n)&&a&&a(e)},0)}function oa(e,t){const n=wa(e);t(document),typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&t(n)}const ra={mounted(e,t){const n=i=>Pl(i,e,t),a=i=>{e._clickOutside.lastMousedownWasOutside=Ua(i,e,t)};oa(e,i=>{i.addEventListener("click",n,!0),i.addEventListener("mousedown",a,!0)}),e._clickOutside||(e._clickOutside={lastMousedownWasOutside:!1}),e._clickOutside[t.instance.$.uid]={onClick:n,onMousedown:a}},beforeUnmount(e,t){e._clickOutside&&(oa(e,n=>{var s;if(!n||!((s=e._clickOutside)!=null&&s[t.instance.$.uid]))return;const{onClick:a,onMousedown:i}=e._clickOutside[t.instance.$.uid];n.removeEventListener("click",a,!0),n.removeEventListener("mousedown",i,!0)}),delete e._clickOutside[t.instance.$.uid])}};function Al(e){const{modelValue:t,color:n,...a}=e;return b(Ne,{name:"fade-transition",appear:!0},{default:()=>[e.modelValue&&P("div",Y({class:["v-overlay__scrim",e.color.backgroundColorClasses.value],style:e.color.backgroundColorStyles.value},a),null)]})}const Rn=T({absolute:Boolean,attach:[Boolean,String,Object],closeOnBack:{type:Boolean,default:!0},contained:Boolean,contentClass:null,contentProps:null,disabled:Boolean,opacity:[Number,String],noClickAnimation:Boolean,modelValue:Boolean,persistent:Boolean,scrim:{type:[Boolean,String],default:!0},zIndex:{type:[Number,String],default:2e3},...yl(),...ee(),...rt(),...kl(),...nl(),...rl(),...Sl(),...fe(),...Ga()},"VOverlay"),Rt=G()({name:"VOverlay",directives:{vClickOutside:ra},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...at(Rn(),["disableInitialFocus"])},emits:{"click:outside":e=>!0,"update:modelValue":e=>!0,keydown:e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(e,t){let{slots:n,attrs:a,emit:i}=t;const s=xe("VOverlay"),l=q(),o=q(),r=q(),u=Pe(e,"modelValue"),c=_({get:()=>u.value,set:F=>{F&&e.disabled||(u.value=F)}}),{themeClasses:m}=ye(e),{rtlClasses:v,isRtl:d}=Dt(),{hasContent:y,onAfterLeave:f}=Cl(e,c),p=Je(()=>typeof e.scrim=="string"?e.scrim:null),{globalTop:S,localTop:I,stackStyles:L}=_l(c,()=>e.zIndex,e._disableGlobalStack),{activatorEl:w,activatorRef:h,target:C,targetEl:x,targetRef:g,activatorEvents:R,contentEvents:M,scrimEvents:E}=hl(e,{isActive:c,isTop:I,contentEl:r}),{teleportTarget:V}=xl(()=>{var De,D,re;const F=e.attach||e.contained;if(F)return F;const ue=((De=w==null?void 0:w.value)==null?void 0:De.getRootNode())||((re=(D=s.proxy)==null?void 0:D.$el)==null?void 0:re.getRootNode());return ue instanceof ShadowRoot?ue:!1}),{dimensionStyles:A}=ut(e),N=wl(),{scopeId:O}=Bn();W(()=>e.disabled,F=>{F&&(c.value=!1)});const{contentStyles:U,updateLocation:X}=al(e,{isRtl:d,contentEl:r,target:C,isActive:c});ul(e,{root:l,contentEl:r,targetEl:x,target:C,isActive:c,updateLocation:X});function te(F){i("click:outside",F),e.persistent?be():c.value=!1}function he(F){return c.value&&I.value&&(!e.scrim||F.target===o.value||F instanceof MouseEvent&&F.shadowTarget===o.value)}pl(e,{isActive:c,localTop:I,contentEl:r,activatorEl:w}),Ae&&W(c,F=>{F?window.addEventListener("keydown",K):window.removeEventListener("keydown",K)},{immediate:!0}),je(()=>{Ae&&window.removeEventListener("keydown",K)});function K(F){var ue,De,D;F.key==="Escape"&&S.value&&((ue=r.value)!=null&&ue.contains(document.activeElement)||i("keydown",F),e.persistent?be():(c.value=!1,(De=r.value)!=null&&De.contains(document.activeElement)&&((D=w.value)==null||D.focus())))}function $(F){F.key==="Escape"&&!S.value||i("keydown",F)}const Z=Hs();ht(()=>e.closeOnBack,()=>{Gs(Z,F=>{S.value&&c.value?(F(!1),e.persistent?be():c.value=!1):F()})});const j=q();W(()=>c.value&&(e.absolute||e.contained)&&V.value==null,F=>{if(F){const ue=Bi(l.value);ue&&ue!==document.scrollingElement&&(j.value=ue.scrollTop)}});function be(){e.noClickAnimation||r.value&&Me(r.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:nn})}function Ue(){i("afterEnter")}function $e(){f(),i("afterLeave")}return J(()=>{var F;return P(Be,null,[(F=n.activator)==null?void 0:F.call(n,{isActive:c.value,targetRef:g,props:Y({ref:h},R.value,e.activatorProps)}),N.value&&y.value&&b(Ji,{disabled:!V.value,to:V.value},{default:()=>[P("div",Y({class:["v-overlay",{"v-overlay--absolute":e.absolute||e.contained,"v-overlay--active":c.value,"v-overlay--contained":e.contained},m.value,v.value,e.class],style:[L.value,{"--v-overlay-opacity":e.opacity,top:B(j.value)},e.style],ref:l,onKeydown:$},O,a),[b(Al,Y({color:p,modelValue:c.value&&!!e.scrim,ref:o},E.value),null),b(Xe,{appear:!0,persisted:!0,transition:e.transition,target:C.value,onAfterEnter:Ue,onAfterLeave:$e},{default:()=>{var ue;return[ze(P("div",Y({ref:r,class:["v-overlay__content",e.contentClass],style:[A.value,U.value]},M.value,e.contentProps),[(ue=n.default)==null?void 0:ue.call(n,{isActive:c})]),[[Cn,c.value],[ra,{handler:te,closeConditional:he,include:()=>[w.value]}]])]}})])]})])}),{activatorEl:w,scrimEl:o,target:C,animateClick:be,contentEl:r,rootEl:l,globalTop:S,localTop:I,updateLocation:X}}}),Jt=Symbol("Forwarded refs");function Qt(e,t){let n=e;for(;n;){const a=Reflect.getOwnPropertyDescriptor(n,t);if(a)return a;n=Object.getPrototypeOf(n)}}function Xa(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;at.value=e())}function s(l){const o=l?getComputedStyle(l):{transitionDuration:.2},r=parseFloat(o.transitionDuration)*1e3||200;if(a(),t.value<=0)return;const u=performance.now();n=window.setInterval(()=>{const c=performance.now()-u+r;t.value=Math.max(e()-c,0),t.value<=0&&a()},r)}return ve(a),{clear:a,time:t,start:s,reset:i}}const Vl=T({multiLine:Boolean,text:String,timer:[Boolean,String],timeout:{type:[Number,String],default:5e3},vertical:Boolean,...zt({location:"bottom"}),...En(),...Le(),...Ge(),...fe(),...at(Rn({transition:"v-snackbar-transition"}),["persistent","noClickAnimation","retainFocus","captureFocus","disableInitialFocus","scrim","scrollStrategy","stickToTarget","viewportMargin"])},"VSnackbar"),Ll=G()({name:"VSnackbar",props:Vl(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const a=Pe(e,"modelValue"),{positionClasses:i}=Vn(e),{scopeId:s}=Bn(),{themeClasses:l}=ye(e),{colorClasses:o,colorStyles:r,variantClasses:u}=wt(e),{roundedClasses:c}=Te(e),m=El(()=>Number(e.timeout)),v=q(),d=q(),y=z(!1),f=z(0),p=q(),S=Ee($i,void 0);ht(()=>!!S,()=>{const E=Ri();Re(()=>{p.value=E.mainStyles.value})}),W(a,L),W(()=>e.timeout,L),it(()=>{a.value&&L()});let I=-1;function L(){m.reset(),window.clearTimeout(I);const E=Number(e.timeout);if(!a.value||E===-1)return;const V=Ni(d.value);m.start(V),I=window.setTimeout(()=>{a.value=!1},E)}function w(){m.reset(),window.clearTimeout(I)}function h(){y.value=!0,w()}function C(){y.value=!1,L()}function x(E){f.value=E.touches[0].clientY}function g(E){Math.abs(f.value-E.changedTouches[0].clientY)>50&&(a.value=!1)}function R(){y.value&&C()}const M=_(()=>e.location.split(" ").reduce((E,V)=>(E[`v-snackbar--${V}`]=!0,E),{}));return J(()=>{const E=Rt.filterProps(e),V=!!(n.default||n.text||e.text);return b(Rt,Y({ref:v,class:["v-snackbar",{"v-snackbar--active":a.value,"v-snackbar--multi-line":e.multiLine&&!e.vertical,"v-snackbar--timer":!!e.timer,"v-snackbar--vertical":e.vertical},M.value,i.value,e.class],style:[p.value,e.style]},E,{modelValue:a.value,"onUpdate:modelValue":A=>a.value=A,contentProps:Y({class:["v-snackbar__wrapper",l.value,o.value,c.value,u.value],style:[r.value],onPointerenter:h,onPointerleave:C},E.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",_disableGlobalStack:!0,onTouchstartPassive:x,onTouchend:g,onAfterLeave:R},s),{default:()=>{var A,N;return[pt(!1,"v-snackbar"),e.timer&&!y.value&&P("div",{key:"timer",class:"v-snackbar__timer"},[b(Ta,{ref:d,color:typeof e.timer=="string"?e.timer:"info",max:e.timeout,modelValue:m.time.value},null)]),V&&P("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[((A=n.text)==null?void 0:A.call(n))??e.text,(N=n.default)==null?void 0:N.call(n)]),n.actions&&b(ge,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[P("div",{class:"v-snackbar__actions"},[n.actions({isActive:a})])]})]},activator:n.activator})}),Xa({},v)}}),Tl=Qi({name:"GlobalMessage",setup(){var s;const e=q(!1),t=q(null),n={success:"mdi-check-circle",error:"mdi-alert-circle",warning:"mdi-alert",info:"mdi-information"},a={success:"success",error:"error",warning:"warning",info:"info"},i=(s=Ke==null?void 0:Ke.onSnackbar)==null?void 0:s.call(Ke,async l=>{l&&(e.value&&(e.value=!1,await ce()),t.value=l,e.value=!0)});return je(()=>i==null?void 0:i()),{snackbar:e,message:t,icons:n,colors:a}}}),Ol={class:"d-flex align-center"},Bl={class:"text-subtitle-2 font-weight-medium"},Rl={key:0,class:"text-body-2"};function Nl(e,t,n,a,i,s){var l;return Ie(),Fe(Ll,{modelValue:e.snackbar,"onUpdate:modelValue":t[1]||(t[1]=o=>e.snackbar=o),color:e.colors[(l=e.message)==null?void 0:l.type]||e.colors.info,timeout:2e3,location:"top right","multi-line":"",variant:"tonal"},{actions:ie(()=>[b(Wa,{icon:"mdi-close",variant:"text",onClick:t[0]||(t[0]=o=>e.snackbar=!1)})]),default:ie(()=>{var o,r,u,c;return[P("div",Ol,[b(_e,{icon:e.icons[(o=e.message)==null?void 0:o.type]||e.icons.info,class:"mr-2"},null,8,["icon"]),P("div",null,[P("div",Bl,Ce((r=e.message)==null?void 0:r.title),1),(u=e.message)!=null&&u.content?(Ie(),Ia("div",Rl,Ce((c=e.message)==null?void 0:c.content),1)):ln("",!0)])])]}),_:1},8,["modelValue","color"])}const Ya=Pa(Tl,[["render",Nl]]),$l=T({...ee(),...oe()},"VCardActions"),Ja=G()({name:"VCardActions",props:$l(),setup(e,t){let{slots:n}=t;return $t({VBtn:{slim:!0,variant:"text"}}),J(()=>b(e.tag,{class:H(["v-card-actions",e.class]),style:Q(e.style)},n)),{}}}),Dl=T({opacity:[Number,String],...ee(),...oe()},"VCardSubtitle"),Ml=G()({name:"VCardSubtitle",props:Dl(),setup(e,t){let{slots:n}=t;return J(()=>b(e.tag,{class:H(["v-card-subtitle",e.class]),style:Q([{"--v-card-subtitle-opacity":e.opacity},e.style])},n)),{}}}),Qa=Sn("v-card-title");function Fl(e){return{aspectStyles:_(()=>{const t=Number(e.aspectRatio);return t?{paddingBottom:String(1/t*100)+"%"}:void 0})}}const Za=T({aspectRatio:[String,Number],contentClass:null,inline:Boolean,...ee(),...rt()},"VResponsive"),ua=G()({name:"VResponsive",props:Za(),setup(e,t){let{slots:n}=t;const{aspectStyles:a}=Fl(e),{dimensionStyles:i}=ut(e);return J(()=>{var s;return P("div",{class:H(["v-responsive",{"v-responsive--inline":e.inline},e.class]),style:Q([i.value,e.style])},[P("div",{class:"v-responsive__sizer",style:Q(a.value)},null),(s=n.additional)==null?void 0:s.call(n),n.default&&P("div",{class:H(["v-responsive__content",e.contentClass])},[n.default()])])}),{}}});function ca(e,t){if(!bn)return;const n=t.modifiers||{},a=t.value,{handler:i,options:s}=typeof a=="object"?a:{handler:a,options:{}},l=new IntersectionObserver(function(){var m;let o=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],r=arguments.length>1?arguments[1]:void 0;const u=(m=e._observe)==null?void 0:m[t.instance.$.uid];if(!u)return;const c=o.some(v=>v.isIntersecting);i&&(!n.quiet||u.init)&&(!n.once||c||u.init)&&i(c,o,r),c&&n.once?dn(e,t):u.init=!0},s);e._observe=Object(e._observe),e._observe[t.instance.$.uid]={init:!1,observer:l},l.observe(e)}function dn(e,t){var a;const n=(a=e._observe)==null?void 0:a[t.instance.$.uid];n&&(n.observer.unobserve(e),delete e._observe[t.instance.$.uid])}const da={mounted:ca,unmounted:dn,updated:(e,t)=>{var n;(n=e._observe)!=null&&n[t.instance.$.uid]&&(dn(e,t),ca(e,t))}},zl=T({absolute:Boolean,alt:String,cover:Boolean,color:String,draggable:{type:[Boolean,String],default:void 0},eager:Boolean,gradient:String,imageClass:null,lazySrc:String,options:{type:Object,default:()=>({root:void 0,rootMargin:void 0,threshold:void 0})},sizes:String,src:{type:[String,Object],default:""},crossorigin:String,referrerpolicy:String,srcset:String,position:String,...Za(),...ee(),...Le(),...Ga()},"VImg"),ei=G()({name:"VImg",directives:{vIntersect:da},props:zl(),emits:{loadstart:e=>!0,load:e=>!0,error:e=>!0},setup(e,t){let{emit:n,slots:a}=t;const{backgroundColorClasses:i,backgroundColorStyles:s}=Je(()=>e.color),{roundedClasses:l}=Te(e),o=xe("VImg"),r=z(""),u=q(),c=z(e.eager?"loading":"idle"),m=z(),v=z(),d=_(()=>e.src&&typeof e.src=="object"?{src:e.src.src,srcset:e.srcset||e.src.srcset,lazySrc:e.lazySrc||e.src.lazySrc,aspect:Number(e.aspectRatio||e.src.aspect||0)}:{src:e.src,srcset:e.srcset,lazySrc:e.lazySrc,aspect:Number(e.aspectRatio||0)}),y=_(()=>d.value.aspect||m.value/v.value||0);W(()=>e.src,()=>{f(c.value!=="idle")}),W(y,(V,A)=>{!V&&A&&u.value&&w(u.value)}),_n(()=>f());function f(V){if(!(e.eager&&V)&&!(bn&&!V&&!e.eager)){if(c.value="loading",d.value.lazySrc){const A=new Image;A.src=d.value.lazySrc,w(A,null)}d.value.src&&ce(()=>{var A;n("loadstart",((A=u.value)==null?void 0:A.currentSrc)||d.value.src),setTimeout(()=>{var N;if(!o.isUnmounted)if((N=u.value)!=null&&N.complete){if(u.value.naturalWidth||S(),c.value==="error")return;y.value||w(u.value,null),c.value==="loading"&&p()}else y.value||w(u.value),I()})})}}function p(){var V;o.isUnmounted||(I(),w(u.value),c.value="loaded",n("load",((V=u.value)==null?void 0:V.currentSrc)||d.value.src))}function S(){var V;o.isUnmounted||(c.value="error",n("error",((V=u.value)==null?void 0:V.currentSrc)||d.value.src))}function I(){const V=u.value;V&&(r.value=V.currentSrc||V.src)}let L=-1;je(()=>{clearTimeout(L)});function w(V){let A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100;const N=()=>{if(clearTimeout(L),o.isUnmounted)return;const{naturalHeight:O,naturalWidth:U}=V;O||U?(m.value=U,v.value=O):!V.complete&&c.value==="loading"&&A!=null?L=window.setTimeout(N,A):(V.currentSrc.endsWith(".svg")||V.currentSrc.startsWith("data:image/svg+xml"))&&(m.value=1,v.value=1)};N()}const h=k(()=>({"v-img__img--cover":e.cover,"v-img__img--contain":!e.cover})),C=()=>{var N;if(!d.value.src||c.value==="idle")return null;const V=P("img",{class:H(["v-img__img",h.value,e.imageClass]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:d.value.src,srcset:d.value.srcset,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable,sizes:e.sizes,ref:u,onLoad:p,onError:S},null),A=(N=a.sources)==null?void 0:N.call(a);return b(Xe,{transition:e.transition,appear:!0},{default:()=>[ze(A?P("picture",{class:"v-img__picture"},[A,V]):V,[[Cn,c.value==="loaded"]])]})},x=()=>b(Xe,{transition:e.transition},{default:()=>[d.value.lazySrc&&c.value!=="loaded"&&P("img",{class:H(["v-img__img","v-img__img--preload",h.value]),style:{objectPosition:e.position},crossorigin:e.crossorigin,src:d.value.lazySrc,alt:e.alt,referrerpolicy:e.referrerpolicy,draggable:e.draggable},null)]}),g=()=>a.placeholder?b(Xe,{transition:e.transition,appear:!0},{default:()=>[(c.value==="loading"||c.value==="error"&&!a.error)&&P("div",{class:"v-img__placeholder"},[a.placeholder()])]}):null,R=()=>a.error?b(Xe,{transition:e.transition,appear:!0},{default:()=>[c.value==="error"&&P("div",{class:"v-img__error"},[a.error()])]}):null,M=()=>e.gradient?P("div",{class:"v-img__gradient",style:{backgroundImage:`linear-gradient(${e.gradient})`}},null):null,E=z(!1);{const V=W(y,A=>{A&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{E.value=!0})}),V())})}return J(()=>{const V=ua.filterProps(e);return ze(b(ua,Y({class:["v-img",{"v-img--absolute":e.absolute,"v-img--booting":!E.value,"v-img--fit-content":e.width==="fit-content"},i.value,l.value,e.class],style:[{width:B(e.width==="auto"?m.value:e.width)},s.value,e.style]},V,{aspectRatio:y.value,"aria-label":e.alt,role:e.alt?"img":void 0}),{additional:()=>P(Be,null,[b(C,null,null),b(x,null,null),b(M,null,null),b(g,null,null),b(R,null,null)]),default:a.default}),[[da,{handler:f,options:e.options},null,{once:!0}]])}),{currentSrc:r,image:u,state:c,naturalWidth:m,naturalHeight:v}}}),Wl=T({start:Boolean,end:Boolean,icon:le,image:String,text:String,...st(),...ee(),...He(),...Le(),...Mt(),...oe(),...fe(),...Ge({variant:"flat"})},"VAvatar"),Nt=G()({name:"VAvatar",props:Wl(),setup(e,t){let{slots:n}=t;const{themeClasses:a}=ye(e),{borderClasses:i}=lt(e),{colorClasses:s,colorStyles:l,variantClasses:o}=wt(e),{densityClasses:r}=ot(e),{roundedClasses:u}=Te(e),{sizeClasses:c,sizeStyles:m}=Ft(e);return J(()=>b(e.tag,{class:H(["v-avatar",{"v-avatar--start":e.start,"v-avatar--end":e.end},a.value,i.value,s.value,r.value,u.value,c.value,o.value,e.class]),style:Q([l.value,m.value,e.style])},{default:()=>[n.default?b(ge,{key:"content-defaults",defaults:{VImg:{cover:!0,src:e.image},VIcon:{icon:e.icon}}},{default:()=>[n.default()]}):e.image?b(ei,{key:"image",src:e.image,alt:"",cover:!0},null):e.icon?b(_e,{key:"icon",icon:e.icon},null):e.text,pt(!1,"v-avatar")]})),{}}}),ql=T({appendAvatar:String,appendIcon:le,prependAvatar:String,prependIcon:le,subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...ee(),...He(),...oe()},"VCardItem"),jl=G()({name:"VCardItem",props:ql(),setup(e,t){let{slots:n}=t;return J(()=>{const a=!!(e.prependAvatar||e.prependIcon),i=!!(a||n.prepend),s=!!(e.appendAvatar||e.appendIcon),l=!!(s||n.append),o=!!(e.title!=null||n.title),r=!!(e.subtitle!=null||n.subtitle);return b(e.tag,{class:H(["v-card-item",e.class]),style:Q(e.style)},{default:()=>{var u;return[i&&P("div",{key:"prepend",class:"v-card-item__prepend"},[n.prepend?b(ge,{key:"prepend-defaults",disabled:!a,defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon}}},n.prepend):P(Be,null,[e.prependAvatar&&b(Nt,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&b(_e,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)])]),P("div",{class:"v-card-item__content"},[o&&b(Qa,{key:"title"},{default:()=>{var c;return[((c=n.title)==null?void 0:c.call(n))??Ce(e.title)]}}),r&&b(Ml,{key:"subtitle"},{default:()=>{var c;return[((c=n.subtitle)==null?void 0:c.call(n))??Ce(e.subtitle)]}}),(u=n.default)==null?void 0:u.call(n)]),l&&P("div",{key:"append",class:"v-card-item__append"},[n.append?b(ge,{key:"append-defaults",disabled:!s,defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon}}},n.append):P(Be,null,[e.appendIcon&&b(_e,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&b(Nt,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)])])]}})}),{}}}),Hl=T({opacity:[Number,String],...ee(),...oe()},"VCardText"),fn=G()({name:"VCardText",props:Hl(),setup(e,t){let{slots:n}=t;return J(()=>b(e.tag,{class:H(["v-card-text",e.class]),style:Q([{"--v-card-text-opacity":e.opacity},e.style])},n)),{}}}),Gl=T({appendAvatar:String,appendIcon:le,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:le,ripple:{type:[Boolean,Object],default:!0},subtitle:{type:[String,Number,Boolean],default:void 0},text:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...st(),...ee(),...He(),...rt(),...bt(),...Oa(),...zt(),...En(),...Le(),...Tn(),...oe(),...fe(),...Ge({variant:"elevated"})},"VCard"),fa=G()({name:"VCard",directives:{vRipple:yt},props:Gl(),setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{borderClasses:s}=lt(e),{colorClasses:l,colorStyles:o,variantClasses:r}=wt(e),{densityClasses:u}=ot(e),{dimensionStyles:c}=ut(e),{elevationClasses:m}=St(e),{loaderClasses:v}=Ba(e),{locationStyles:d}=An(e),{positionClasses:y}=Vn(e),{roundedClasses:f}=Te(e),p=Ln(e,n),S=z(void 0);return W(()=>e.loading,(I,L)=>{S.value=!I&&typeof L=="string"?L:typeof I=="boolean"?void 0:I},{immediate:!0}),J(()=>{const I=e.link!==!1&&p.isLink.value,L=!e.disabled&&e.link!==!1&&(e.link||p.isClickable.value),w=I?"a":e.tag,h=!!(a.title||e.title!=null),C=!!(a.subtitle||e.subtitle!=null),x=h||C,g=!!(a.append||e.appendAvatar||e.appendIcon),R=!!(a.prepend||e.prependAvatar||e.prependIcon),M=!!(a.image||e.image),E=x||R||g,V=!!(a.text||e.text!=null);return ze(b(w,Y(p.linkProps,{class:["v-card",{"v-card--disabled":e.disabled,"v-card--flat":e.flat,"v-card--hover":e.hover&&!(e.disabled||e.flat),"v-card--link":L},i.value,s.value,l.value,u.value,m.value,v.value,y.value,f.value,r.value,e.class],style:[o.value,c.value,d.value,{"--v-card-height":B(e.height)},e.style],onClick:L&&p.navigate.value,tabindex:e.disabled?-1:void 0}),{default:()=>{var A;return[M&&P("div",{key:"image",class:"v-card__image"},[a.image?b(ge,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},a.image):b(ei,{key:"image-img",cover:!0,src:e.image},null)]),b(Ws,{name:"v-card",active:!!e.loading,color:S.value},{default:a.loader}),E&&b(jl,{key:"item",prependAvatar:e.prependAvatar,prependIcon:e.prependIcon,title:e.title,subtitle:e.subtitle,appendAvatar:e.appendAvatar,appendIcon:e.appendIcon},{default:a.item,prepend:a.prepend,title:a.title,subtitle:a.subtitle,append:a.append}),V&&b(fn,{key:"text"},{default:()=>{var N;return[((N=a.text)==null?void 0:N.call(a))??e.text]}}),(A=a.default)==null?void 0:A.call(a),a.actions&&b(Ja,null,{default:a.actions}),pt(L,"v-card")]}}),[[yt,L&&e.ripple]])}),{}}}),Ul=T({disabled:Boolean,group:Boolean,hideOnLeave:Boolean,leaveAbsolute:Boolean,mode:String,origin:String},"transition");function me(e,t,n){return G()({name:e,props:Ul({mode:n,origin:t}),setup(a,i){let{slots:s}=i;const l={onBeforeEnter(o){a.origin&&(o.style.transformOrigin=a.origin)},onLeave(o){if(a.leaveAbsolute){const{offsetTop:r,offsetLeft:u,offsetWidth:c,offsetHeight:m}=o;o._transitionInitialStyles={position:o.style.position,top:o.style.top,left:o.style.left,width:o.style.width,height:o.style.height},o.style.position="absolute",o.style.top=`${r}px`,o.style.left=`${u}px`,o.style.width=`${c}px`,o.style.height=`${m}px`}a.hideOnLeave&&o.style.setProperty("display","none","important")},onAfterLeave(o){if(a.leaveAbsolute&&(o!=null&&o._transitionInitialStyles)){const{position:r,top:u,left:c,width:m,height:v}=o._transitionInitialStyles;delete o._transitionInitialStyles,o.style.position=r||"",o.style.top=u||"",o.style.left=c||"",o.style.width=m||"",o.style.height=v||""}}};return()=>{const o=a.group?wn:Ne;return kn(o,{name:a.disabled?"":e,css:!a.disabled,...a.group?void 0:{mode:a.mode},...a.disabled?{}:l},s.default)}}})}function Nn(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"in-out";return G()({name:e,props:{mode:{type:String,default:n},disabled:{type:Boolean,default:Vt()},group:Boolean,hideOnLeave:Boolean},setup(a,i){let{slots:s}=i;const l=a.group?wn:Ne;return()=>kn(l,{name:a.disabled?"":e,css:!a.disabled,...a.disabled?{}:{...t,onLeave:o=>{var r;a.hideOnLeave?o.style.setProperty("display","none","important"):(r=t.onLeave)==null||r.call(t,o)}}},s.default)}})}function $n(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"y";return{onBeforeEnter(i){i._parent=i.parentNode,i._initialStyle={transition:i.style.transition,overflow:i.style.overflow,width:i.style.width,height:i.style.height}},onEnter(i){const s=i._initialStyle;if(!s)return;i.style.setProperty("transition","none","important"),i.style.overflow="hidden";const l=`${i.offsetWidth}px`,o=`${i.offsetHeight}px`;["x","both"].includes(t)&&(i.style.width="0"),["y","both"].includes(t)&&(i.style.height="0"),i.offsetHeight,i.style.transition=s.transition,e&&i._parent&&i._parent.classList.add(e),requestAnimationFrame(()=>{["x","both"].includes(t)&&(i.style.width=l),["y","both"].includes(t)&&(i.style.height=o)})},onAfterEnter:a,onEnterCancelled:a,onLeave(i){i._initialStyle={transition:"",overflow:i.style.overflow,width:i.style.width,height:i.style.height},i.style.overflow="hidden",["x","both"].includes(t)&&(i.style.width=`${i.offsetWidth}px`),["y","both"].includes(t)&&(i.style.height=`${i.offsetHeight}px`),i.offsetHeight,requestAnimationFrame(()=>{["x","both"].includes(t)&&(i.style.width="0"),["y","both"].includes(t)&&(i.style.height="0")})},onAfterLeave:n,onLeaveCancelled:n};function n(i){e&&i._parent&&i._parent.classList.remove(e),a(i)}function a(i){if(!i._initialStyle)return;const{width:s,height:l}=i._initialStyle;i.style.overflow=i._initialStyle.overflow,s!=null&&["x","both"].includes(t)&&(i.style.width=s),l!=null&&["y","both"].includes(t)&&(i.style.height=l),delete i._initialStyle}}const Kl=T({target:[Object,Array]},"v-dialog-transition"),Zt=new WeakMap,Xl=G()({name:"VDialogTransition",props:Kl(),setup(e,t){let{slots:n}=t;const a={onBeforeEnter(i){i.style.pointerEvents="none",i.style.visibility="hidden"},async onEnter(i,s){var v;await new Promise(d=>requestAnimationFrame(d)),await new Promise(d=>requestAnimationFrame(d)),i.style.visibility="";const l=ma(e.target,i),{x:o,y:r,sx:u,sy:c,speed:m}=l;if(Zt.set(i,l),Vt())Me(i,[{opacity:0},{}],{duration:125*m,easing:Xn}).finished.then(()=>s());else{const d=Me(i,[{transform:`translate(${o}px, ${r}px) scale(${u}, ${c})`,opacity:0},{}],{duration:225*m,easing:Xn});(v=va(i))==null||v.forEach(y=>{Me(y,[{opacity:0},{opacity:0,offset:.33},{}],{duration:225*2*m,easing:nn})}),d.finished.then(()=>s())}},onAfterEnter(i){i.style.removeProperty("pointer-events")},onBeforeLeave(i){i.style.pointerEvents="none"},async onLeave(i,s){var v;await new Promise(d=>requestAnimationFrame(d));let l;!Zt.has(i)||Array.isArray(e.target)||e.target.offsetParent||e.target.getClientRects().length?l=ma(e.target,i):l=Zt.get(i);const{x:o,y:r,sx:u,sy:c,speed:m}=l;Vt()?Me(i,[{},{opacity:0}],{duration:85*m,easing:Kn}).finished.then(()=>s()):(Me(i,[{},{transform:`translate(${o}px, ${r}px) scale(${u}, ${c})`,opacity:0}],{duration:125*m,easing:Kn}).finished.then(()=>s()),(v=va(i))==null||v.forEach(y=>{Me(y,[{},{opacity:0,offset:.2},{opacity:0}],{duration:125*2*m,easing:nn})}))},onAfterLeave(i){i.style.removeProperty("pointer-events")}};return()=>e.target?b(Ne,Y({name:"dialog-transition"},a,{css:!1}),n):b(Ne,{name:"dialog-transition"},n)}});function va(e){var n;const t=(n=e.querySelector(":scope > .v-card, :scope > .v-sheet, :scope > .v-list"))==null?void 0:n.children;return t&&[...t]}function ma(e,t){const n=Sa(e),a=pa(t),[i,s]=getComputedStyle(t).transformOrigin.split(" ").map(S=>parseFloat(S)),[l,o]=getComputedStyle(t).getPropertyValue("--v-overlay-anchor-origin").split(" ");let r=n.left+n.width/2;l==="left"||o==="left"?r-=n.width/2:(l==="right"||o==="right")&&(r+=n.width/2);let u=n.top+n.height/2;l==="top"||o==="top"?u-=n.height/2:(l==="bottom"||o==="bottom")&&(u+=n.height/2);const c=n.width/a.width,m=n.height/a.height,v=Math.max(1,c,m),d=c/v||0,y=m/v||0,f=a.width*a.height/(window.innerWidth*window.innerHeight),p=f>.12?Math.min(1.5,(f-.12)*10+1):1;return{x:r-(i+a.left),y:u-(s+a.top),sx:d,sy:y,speed:p}}me("fab-transition","center center","out-in");me("dialog-bottom-transition");me("dialog-top-transition");const zo=me("fade-transition"),Wo=me("scale-transition");me("scroll-x-transition");me("scroll-x-reverse-transition");me("scroll-y-transition");me("scroll-y-reverse-transition");me("slide-x-transition");const qo=me("slide-x-reverse-transition"),jo=me("slide-y-transition");me("slide-y-reverse-transition");const Yl=Nn("expand-transition",$n()),Ho=Nn("expand-x-transition",$n("","x"));Nn("expand-both-transition",$n("","both"));const Jl=T({fullscreen:Boolean,scrollable:Boolean,...at(Rn({captureFocus:!0,origin:"center center",scrollStrategy:"block",transition:{component:Xl},zIndex:2400,retainFocus:!0}),["disableInitialFocus"])},"VDialog"),Ql=G()({name:"VDialog",props:Jl(),emits:{"update:modelValue":e=>!0,afterEnter:()=>!0,afterLeave:()=>!0},setup(e,t){let{emit:n,slots:a}=t;const i=Pe(e,"modelValue"),{scopeId:s}=Bn(),l=q();function o(){var u;n("afterEnter"),(e.scrim||e.retainFocus)&&((u=l.value)!=null&&u.contentEl)&&!l.value.contentEl.contains(document.activeElement)&&l.value.contentEl.focus({preventScroll:!0})}function r(){n("afterLeave")}return W(i,async u=>{var c;u||(await ce(),(c=l.value.activatorEl)==null||c.focus({preventScroll:!0}))}),J(()=>{const u=Rt.filterProps(e),c=Y({"aria-haspopup":"dialog"},e.activatorProps),m=Y({tabindex:-1},e.contentProps);return b(Rt,Y({ref:l,class:["v-dialog",{"v-dialog--fullscreen":e.fullscreen,"v-dialog--scrollable":e.scrollable},e.class],style:e.style},u,{modelValue:i.value,"onUpdate:modelValue":v=>i.value=v,"aria-modal":"true",activatorProps:c,contentProps:m,height:e.fullscreen?void 0:e.height,width:e.fullscreen?void 0:e.width,maxHeight:e.fullscreen?void 0:e.maxHeight,maxWidth:e.fullscreen?void 0:e.maxWidth,role:"dialog",onAfterEnter:o,onAfterLeave:r},s),{activator:a.activator,default:function(){for(var v=arguments.length,d=new Array(v),y=0;y{var f;return[(f=a.default)==null?void 0:f.call(a,...d)]}})}})}),Xa({},l)}}),Zl=["dotted","dashed","solid","double"],eo=T({color:String,contentOffset:[Number,String,Array],gradient:Boolean,inset:Boolean,length:[Number,String],opacity:[Number,String],thickness:[Number,String],vertical:Boolean,variant:{type:String,default:"solid",validator:e=>Zl.includes(e)},...ee(),...fe()},"VDivider"),ti=G()({name:"VDivider",props:eo(),setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{textColorClasses:s,textColorStyles:l}=et(()=>e.color),o=_(()=>{const u={};return e.length&&(u[e.vertical?"height":"width"]=B(e.length)),e.thickness&&(u[e.vertical?"borderRightWidth":"borderTopWidth"]=B(e.thickness)),u}),r=k(()=>{const u=Array.isArray(e.contentOffset)?e.contentOffset[0]:e.contentOffset,c=Array.isArray(e.contentOffset)?e.contentOffset[1]:0;return{marginBlock:e.vertical&&u?B(u):void 0,marginInline:!e.vertical&&u?B(u):void 0,transform:c?`translate${e.vertical?"X":"Y"}(${B(c)})`:void 0}});return J(()=>{const u=P("hr",{class:H([{"v-divider":!0,"v-divider--gradient":e.gradient&&!a.default,"v-divider--inset":e.inset,"v-divider--vertical":e.vertical},i.value,s.value,e.class]),style:Q([o.value,l.value,{"--v-border-opacity":e.opacity},{"border-style":e.variant},e.style]),"aria-orientation":!n.role||n.role==="separator"?e.vertical?"vertical":"horizontal":void 0,role:`${n.role||"separator"}`},null);return a.default?P("div",{class:H(["v-divider__wrapper",{"v-divider__wrapper--gradient":e.gradient,"v-divider__wrapper--inset":e.inset,"v-divider__wrapper--vertical":e.vertical}])},[u,P("div",{class:"v-divider__content",style:Q(r.value)},[a.default()]),u]):u}),{}}}),to=Sn("v-spacer","div","VSpacer"),vn=Symbol.for("vuetify:list");function ni(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{filterable:!1};const t=Ee(vn,{filterable:!1,hasPrepend:z(!1),updateHasPrepend:()=>null,trackingIndex:z(-1),navigationStrategy:z("focus"),uid:""}),{filterable:n,trackingIndex:a=t.trackingIndex,navigationStrategy:i=t.navigationStrategy,uid:s=t.uid||pn()}=e,l={filterable:t.filterable||n,hasPrepend:z(!1),updateHasPrepend:o=>{o&&(l.hasPrepend.value=o)},trackingIndex:a,navigationStrategy:i,uid:s};return qe(vn,l),t}function ai(){return Ee(vn,null)}const Dn=e=>{const t={activate:n=>{let{id:a,value:i,activated:s}=n;return a=ae(a),e&&!i&&s.size===1&&s.has(a)||(i?s.add(a):s.delete(a)),s},in:(n,a,i)=>{let s=new Set;if(n!=null)for(const l of hn(n))s=t.activate({id:l,value:!0,activated:new Set(s),children:a,parents:i});return s},out:n=>Array.from(n)};return t},ii=e=>{const t=Dn(e);return{activate:a=>{let{activated:i,id:s,...l}=a;s=ae(s);const o=i.has(s)?new Set([s]):new Set;return t.activate({...l,id:s,activated:o})},in:(a,i,s)=>{let l=new Set;if(a!=null){const o=hn(a);o.length&&(l=t.in(o.slice(0,1),i,s))}return l},out:(a,i,s)=>t.out(a,i,s)}},no=e=>{const t=Dn(e);return{activate:a=>{let{id:i,activated:s,children:l,...o}=a;return i=ae(i),l.has(i)?s:t.activate({id:i,activated:s,children:l,...o})},in:t.in,out:t.out}},ao=e=>{const t=ii(e);return{activate:a=>{let{id:i,activated:s,children:l,...o}=a;return i=ae(i),l.has(i)?s:t.activate({id:i,activated:s,children:l,...o})},in:t.in,out:t.out}},io={open:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(n){const s=new Set;s.add(t);let l=i.get(t);for(;l!=null;)s.add(l),l=i.get(l);return s}else return a.delete(t),a},select:()=>null},si={open:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(n){let s=i.get(t);for(a.add(t);s!=null&&s!==t;)a.add(s),s=i.get(s);return a}else a.delete(t);return a},select:()=>null},so={open:si.open,select:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(!n)return a;const s=[];let l=i.get(t);for(;l!=null;)s.push(l),l=i.get(l);return new Set(s)}},Mn=e=>{const t={select:n=>{let{id:a,value:i,selected:s}=n;if(a=ae(a),e&&!i){const l=Array.from(s.entries()).reduce((o,r)=>{let[u,c]=r;return c==="on"&&o.push(u),o},[]);if(l.length===1&&l[0]===a)return s}return s.set(a,i?"on":"off"),s},in:(n,a,i,s)=>{const l=new Map;for(const o of n||[])t.select({id:o,value:!0,selected:l,children:a,parents:i,disabled:s});return l},out:n=>{const a=[];for(const[i,s]of n.entries())s==="on"&&a.push(i);return a}};return t},li=e=>{const t=Mn(e);return{select:a=>{let{selected:i,id:s,...l}=a;s=ae(s);const o=i.has(s)?new Map([[s,i.get(s)]]):new Map;return t.select({...l,id:s,selected:o})},in:(a,i,s,l)=>a!=null&&a.length?t.in(a.slice(0,1),i,s,l):new Map,out:(a,i,s)=>t.out(a,i,s)}},lo=e=>{const t=Mn(e);return{select:a=>{let{id:i,selected:s,children:l,...o}=a;return i=ae(i),l.has(i)?s:t.select({id:i,selected:s,children:l,...o})},in:t.in,out:t.out}},oo=e=>{const t=li(e);return{select:a=>{let{id:i,selected:s,children:l,...o}=a;return i=ae(i),l.has(i)?s:t.select({id:i,selected:s,children:l,...o})},in:t.in,out:t.out}},Fn=e=>{const t={select:n=>{let{id:a,value:i,selected:s,children:l,parents:o,disabled:r}=n;a=ae(a);const u=new Map(s),c=[a];for(;c.length;){const v=c.shift();r.has(v)||s.set(ae(v),i?"on":"off"),l.has(v)&&c.push(...l.get(v))}let m=ae(o.get(a));for(;m;){let v=!0,d=!0;for(const y of l.get(m)){const f=ae(y);if(!r.has(f)&&(s.get(f)!=="on"&&(v=!1),s.has(f)&&s.get(f)!=="off"&&(d=!1),!v&&!d))break}s.set(m,v?"on":d?"off":"indeterminate"),m=ae(o.get(m))}return e&&!i&&Array.from(s.entries()).reduce((d,y)=>{let[f,p]=y;return p==="on"&&d.push(f),d},[]).length===0?u:s},in:(n,a,i)=>{let s=new Map;for(const l of n||[])s=t.select({id:l,value:!0,selected:s,children:a,parents:i,disabled:new Set});return s},out:(n,a)=>{const i=[];for(const[s,l]of n.entries())l==="on"&&!a.has(s)&&i.push(s);return i}};return t},ro=e=>{const t=Fn(e);return{select:t.select,in:t.in,out:(a,i,s)=>{const l=[];for(const[o,r]of a.entries())if(r==="on"){if(s.has(o)){const u=s.get(o);if(a.get(u)==="on")continue}l.push(o)}return l}}},uo=e=>{const n={select:Fn(e).select,in:(a,i,s,l)=>{let o=new Map;for(const r of a||[])i.has(r)||(o=n.select({id:r,value:!0,selected:o,children:i,parents:s,disabled:l}));return o},out:a=>{const i=[];for(const[s,l]of a.entries())(l==="on"||l==="indeterminate")&&i.push(s);return i}};return n},tt=Symbol.for("vuetify:nested"),oi={id:z(),root:{itemsRegistration:q("render"),register:()=>null,unregister:()=>null,updateDisabled:()=>null,children:q(new Map),parents:q(new Map),disabled:q(new Set),open:()=>null,openOnSelect:()=>null,activate:()=>null,select:()=>null,activatable:q(!1),scrollToActive:q(!1),selectable:q(!1),opened:q(new Set),activated:q(new Set),selected:q(new Map),selectedValues:q([]),getPath:()=>[]}},co=T({activatable:Boolean,selectable:Boolean,activeStrategy:[String,Function,Object],selectStrategy:[String,Function,Object],openStrategy:[String,Object],opened:null,activated:null,selected:null,mandatory:Boolean,itemsRegistration:{type:String,default:"render"}},"nested"),fo=(e,t)=>{let{items:n,returnObject:a,scrollToActive:i}=t,s=!1;const l=z(new Map),o=z(new Map),r=z(new Set),u=Pe(e,"opened",e.opened,h=>new Set(Array.isArray(h)?h.map(C=>ae(C)):h),h=>[...h.values()]),c=_(()=>{if(typeof e.activeStrategy=="object")return e.activeStrategy;if(typeof e.activeStrategy=="function")return e.activeStrategy(e.mandatory);switch(e.activeStrategy){case"leaf":return no(e.mandatory);case"single-leaf":return ao(e.mandatory);case"independent":return Dn(e.mandatory);case"single-independent":default:return ii(e.mandatory)}}),m=_(()=>{if(typeof e.selectStrategy=="object")return e.selectStrategy;if(typeof e.selectStrategy=="function")return e.selectStrategy(e.mandatory);switch(e.selectStrategy){case"single-leaf":return oo(e.mandatory);case"leaf":return lo(e.mandatory);case"independent":return Mn(e.mandatory);case"single-independent":return li(e.mandatory);case"trunk":return ro(e.mandatory);case"branch":return uo(e.mandatory);case"classic":default:return Fn(e.mandatory)}}),v=_(()=>{if(typeof e.openStrategy=="object")return e.openStrategy;switch(e.openStrategy){case"list":return so;case"single":return io;case"multiple":default:return si}}),d=Pe(e,"activated",e.activated,h=>c.value.in(h,l.value,o.value),h=>c.value.out(h,l.value,o.value)),y=Pe(e,"selected",e.selected,h=>m.value.in(h,l.value,o.value,r.value),h=>m.value.out(h,l.value,o.value));je(()=>{s=!0});function f(h){const C=[];let x=ae(h);for(;x!==void 0;)C.unshift(x),x=o.value.get(x);return C}const p=xe("nested"),S=new Set,I=Di(()=>{ce(()=>{l.value=new Map(l.value),o.value=new Map(o.value)})},100);W(()=>[n.value,se(a)],()=>{e.itemsRegistration==="props"&&L()},{immediate:!0});function L(){const h=new Map,C=new Map,x=new Set,g=se(a)?E=>ae(E.raw):E=>E.value,R=[...n.value];let M=0;for(;Me.activatable),scrollToActive:k(()=>se(i)),selectable:k(()=>e.selectable),activated:d,selected:y,selectedValues:_(()=>{const h=[];for(const[C,x]of y.value.entries())x==="on"&&h.push(C);return h}),itemsRegistration:k(()=>e.itemsRegistration),register:(h,C,x,g)=>{if(S.has(h)){f(h).map(String).join(" -> "),f(C).concat(h).map(String).join(" -> ");return}else S.add(h);C&&h!==C&&o.value.set(h,C),x&&r.value.add(h),g&&l.value.set(h,[]),C!=null&&l.value.set(C,[...l.value.get(C)||[],h]),I()},unregister:h=>{if(s)return;S.delete(h),l.value.delete(h),r.value.delete(h);const C=o.value.get(h);if(C){const x=l.value.get(C)??[];l.value.set(C,x.filter(g=>g!==h))}o.value.delete(h),I()},updateDisabled:(h,C)=>{C?r.value.add(h):r.value.delete(h)},open:(h,C,x)=>{p.emit("click:open",{id:h,value:C,path:f(h),event:x});const g=v.value.open({id:h,value:C,opened:new Set(u.value),children:l.value,parents:o.value,event:x});g&&(u.value=g)},openOnSelect:(h,C,x)=>{const g=v.value.select({id:h,value:C,selected:new Map(y.value),opened:new Set(u.value),children:l.value,parents:o.value,event:x});g&&(u.value=g)},select:(h,C,x)=>{p.emit("click:select",{id:h,value:C,path:f(h),event:x});const g=m.value.select({id:h,value:C,selected:new Map(y.value),children:l.value,parents:o.value,disabled:r.value,event:x});g&&(y.value=g),w.root.openOnSelect(h,C,x)},activate:(h,C,x)=>{if(!e.activatable)return w.root.select(h,!0,x);p.emit("click:activate",{id:h,value:C,path:f(h),event:x});const g=c.value.activate({id:h,value:C,activated:new Set(d.value),children:l.value,parents:o.value,event:x});if(g.size!==d.value.size)d.value=g;else{for(const R of g)if(!d.value.has(R)){d.value=g;return}for(const R of d.value)if(!g.has(R)){d.value=g;return}}},children:l,parents:o,disabled:r,getPath:f}};return qe(tt,w),w.root},ri=(e,t,n)=>{const a=Ee(tt,oi),i=Symbol("nested item"),s=_(()=>{const o=ae(se(e));return o!==void 0?o:i}),l={...a,id:s,open:(o,r)=>a.root.open(s.value,o,r),openOnSelect:(o,r)=>a.root.openOnSelect(s.value,o,r),isOpen:_(()=>a.root.opened.value.has(s.value)),parent:_(()=>a.root.parents.value.get(s.value)),activate:(o,r)=>a.root.activate(s.value,o,r),isActivated:_(()=>a.root.activated.value.has(s.value)),scrollToActive:a.root.scrollToActive,select:(o,r)=>a.root.select(s.value,o,r),isSelected:_(()=>a.root.selected.value.get(s.value)==="on"),isIndeterminate:_(()=>a.root.selected.value.get(s.value)==="indeterminate"),isLeaf:_(()=>!a.root.children.value.get(s.value)),isGroupActivator:a.isGroupActivator};return _n(()=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||ce(()=>{a.root.register(s.value,a.id.value,se(t),n)})}),je(()=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||a.root.unregister(s.value)}),W(s,(o,r)=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||(a.root.unregister(r),ce(()=>{a.root.register(o,a.id.value,se(t),n)}))}),W(()=>se(t),o=>{a.root.updateDisabled(s.value,o)}),n&&qe(tt,l),l},vo=()=>{const e=Ee(tt,oi);qe(tt,{...e,isGroupActivator:!0})};function mo(){const e=z(!1);return it(()=>{window.requestAnimationFrame(()=>{e.value=!0})}),{ssrBootStyles:k(()=>e.value?void 0:{transition:"none !important"}),isBooted:xa(e)}}const go=Mi({name:"VListGroupActivator",setup(e,t){let{slots:n}=t;return vo(),()=>{var a;return(a=n.default)==null?void 0:a.call(n)}}}),yo=T({activeColor:String,baseColor:String,color:String,collapseIcon:{type:le,default:"$collapse"},disabled:Boolean,expandIcon:{type:le,default:"$expand"},rawId:[String,Number],prependIcon:le,appendIcon:le,fluid:Boolean,subgroup:Boolean,title:String,value:null,...ee(),...oe()},"VListGroup"),ga=G()({name:"VListGroup",props:yo(),setup(e,t){let{slots:n}=t;const{isOpen:a,open:i,id:s}=ri(()=>e.value,()=>e.disabled,!0),l=_(()=>`v-list-group--id-${String(e.rawId??s.value)}`),o=ai(),{isBooted:r}=mo(),u=Ee(tt),c=k(()=>{var f;return((f=u==null?void 0:u.root)==null?void 0:f.itemsRegistration.value)==="render"});function m(f){var p;["INPUT","TEXTAREA"].includes((p=f.target)==null?void 0:p.tagName)||i(!a.value,f)}const v=_(()=>({onClick:m,class:"v-list-group__header",id:l.value})),d=_(()=>a.value?e.collapseIcon:e.expandIcon),y=_(()=>({VListItem:{activeColor:e.activeColor,baseColor:e.baseColor,color:e.color,prependIcon:e.prependIcon||e.subgroup&&d.value,appendIcon:e.appendIcon||!e.subgroup&&d.value,title:e.title,value:e.value}}));return J(()=>b(e.tag,{class:H(["v-list-group",{"v-list-group--prepend":o==null?void 0:o.hasPrepend.value,"v-list-group--fluid":e.fluid,"v-list-group--subgroup":e.subgroup,"v-list-group--open":a.value},e.class]),style:Q(e.style)},{default:()=>[n.activator&&b(ge,{defaults:y.value},{default:()=>[b(go,null,{default:()=>[n.activator({props:v.value,isOpen:a.value})]})]}),b(Xe,{transition:{component:Yl},disabled:!r.value},{default:()=>{var f,p;return[c.value?ze(P("div",{class:"v-list-group__items",role:"group","aria-labelledby":l.value},[(f=n.default)==null?void 0:f.call(n)]),[[Cn,a.value]]):a.value&&P("div",{class:"v-list-group__items",role:"group","aria-labelledby":l.value},[(p=n.default)==null?void 0:p.call(n)])]}})]})),{isOpen:a}}}),ho=T({opacity:[Number,String],...ee(),...oe()},"VListItemSubtitle"),ui=G()({name:"VListItemSubtitle",props:ho(),setup(e,t){let{slots:n}=t;return J(()=>b(e.tag,{class:H(["v-list-item-subtitle",e.class]),style:Q([{"--v-list-item-subtitle-opacity":e.opacity},e.style])},n)),{}}}),ci=Sn("v-list-item-title"),bo=T({active:{type:Boolean,default:void 0},activeClass:String,activeColor:String,appendAvatar:String,appendIcon:le,baseColor:String,disabled:Boolean,lines:[Boolean,String],link:{type:Boolean,default:void 0},nav:Boolean,prependAvatar:String,prependIcon:le,ripple:{type:[Boolean,Object],default:!0},slim:Boolean,prependGap:[Number,String],subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},value:null,index:Number,tabindex:[Number,String],onClick:ft(),onClickOnce:ft(),...st(),...ee(),...He(),...rt(),...bt(),...Le(),...Tn(),...oe(),...fe(),...Ge({variant:"text"})},"VListItem"),mn=G()({name:"VListItem",directives:{vRipple:yt},props:bo(),emits:{click:e=>!0},setup(e,t){let{attrs:n,slots:a,emit:i}=t;const s=Ln(e,n),l=q(),o=_(()=>e.value===void 0?s.href.value:e.value),{activate:r,isActivated:u,select:c,isOpen:m,isSelected:v,isIndeterminate:d,isGroupActivator:y,root:f,parent:p,openOnSelect:S,scrollToActive:I,id:L}=ri(o,()=>e.disabled,!1),w=ai(),h=_(()=>{var D;return e.active!==!1&&(e.active||((D=s.isActive)==null?void 0:D.value)||(f.activatable.value?u.value:v.value))}),C=k(()=>e.link!==!1&&s.isLink.value),x=_(()=>!!w&&(f.selectable.value||f.activatable.value||e.value!=null)),g=_(()=>!e.disabled&&e.link!==!1&&(e.link||s.isClickable.value||x.value)),R=_(()=>w&&w.navigationStrategy.value==="track"&&e.index!==void 0&&w.trackingIndex.value===e.index),M=_(()=>w?C.value?"link":x.value?"option":"listitem":void 0),E=_(()=>{if(x.value)return f.activatable.value?u.value:f.selectable.value?v.value:h.value}),V=k(()=>e.rounded||e.nav),A=k(()=>e.color??e.activeColor),N=k(()=>({color:h.value?A.value??e.baseColor:e.baseColor,variant:e.variant}));W(()=>{var D;return(D=s.isActive)==null?void 0:D.value},D=>{D&&O()}),W(u,D=>{var re;!D||!I||(re=l.value)==null||re.scrollIntoView({block:"nearest",behavior:"instant"})}),W(R,D=>{var re;D&&((re=l.value)==null||re.scrollIntoView({block:"nearest",behavior:"instant"}))}),_n(()=>{var D;(D=s.isActive)!=null&&D.value&&ce(()=>O())});function O(){p.value!=null&&f.open(p.value,!0),S(!0)}const{themeClasses:U}=ye(e),{borderClasses:X}=lt(e),{colorClasses:te,colorStyles:he,variantClasses:K}=wt(N),{densityClasses:$}=ot(e),{dimensionStyles:Z}=ut(e),{elevationClasses:j}=St(e),{roundedClasses:be}=Te(V),Ue=k(()=>e.lines?`v-list-item--${e.lines}-line`:void 0),$e=k(()=>e.ripple!==void 0&&e.ripple&&(w!=null&&w.filterable)?{keys:["Enter"]}:e.ripple),F=_(()=>({isActive:h.value,select:c,isOpen:m.value,isSelected:v.value,isIndeterminate:d.value,isDisabled:e.disabled}));function ue(D){var re,kt,Wt;i("click",D),!["INPUT","TEXTAREA"].includes((re=D.target)==null?void 0:re.tagName)&&g.value&&((Wt=(kt=s.navigate).value)==null||Wt.call(kt,D),!y&&(f.activatable.value?r(!u.value,D):(f.selectable.value||e.value!=null&&!C.value)&&c(!v.value,D)))}function De(D){const re=D.target;["INPUT","TEXTAREA"].includes(re.tagName)||(D.key==="Enter"||D.key===" "&&!(w!=null&&w.filterable))&&(D.preventDefault(),D.stopPropagation(),D.target.dispatchEvent(new MouseEvent("click",D)))}return J(()=>{const D=C.value?"a":e.tag,re=a.title||e.title!=null,kt=a.subtitle||e.subtitle!=null,gi=!!(!!(e.appendAvatar||e.appendIcon)||a.append),qt=!!(!!(e.prependAvatar||e.prependIcon)||a.prepend);return w==null||w.updateHasPrepend(qt),e.activeColor&&Fi("active-color",["color","base-color"]),ze(b(D,Y(s.linkProps,{ref:l,id:e.index!==void 0&&w?`v-list-item-${w.uid}-${e.index}`:void 0,class:["v-list-item",{"v-list-item--active":h.value,"v-list-item--disabled":e.disabled,"v-list-item--link":g.value,"v-list-item--nav":e.nav,"v-list-item--prepend":!qt&&(w==null?void 0:w.hasPrepend.value),"v-list-item--slim":e.slim,"v-list-item--focus-visible":R.value,[`${e.activeClass}`]:e.activeClass&&h.value},U.value,X.value,te.value,$.value,j.value,Ue.value,be.value,K.value,e.class],style:[{"--v-list-prepend-gap":B(e.prependGap)},he.value,Z.value,e.style],tabindex:e.tabindex??(g.value?w?-2:0:void 0),"aria-selected":E.value,role:M.value,onClick:ue,onKeydown:g.value&&!C.value&&De}),{default:()=>{var zn;return[pt(g.value||h.value,"v-list-item"),qt&&P("div",{key:"prepend",class:"v-list-item__prepend"},[a.prepend?b(ge,{key:"prepend-defaults",defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon},VListItemAction:{start:!0},VCheckboxBtn:{density:e.density}}},{default:()=>{var Se;return[(Se=a.prepend)==null?void 0:Se.call(a,F.value)]}}):P(Be,null,[e.prependAvatar&&b(Nt,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&b(_e,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)]),P("div",{class:"v-list-item__spacer"},null)]),P("div",{class:"v-list-item__content","data-no-activator":""},[re&&b(ci,{key:"title"},{default:()=>{var Se;return[((Se=a.title)==null?void 0:Se.call(a,{title:e.title}))??Ce(e.title)]}}),kt&&b(ui,{key:"subtitle"},{default:()=>{var Se;return[((Se=a.subtitle)==null?void 0:Se.call(a,{subtitle:e.subtitle}))??Ce(e.subtitle)]}}),(zn=a.default)==null?void 0:zn.call(a,F.value)]),gi&&P("div",{key:"append",class:"v-list-item__append"},[a.append?b(ge,{key:"append-defaults",defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon},VListItemAction:{end:!0},VCheckboxBtn:{density:e.density}}},{default:()=>{var Se;return[(Se=a.append)==null?void 0:Se.call(a,F.value)]}}):P(Be,null,[e.appendIcon&&b(_e,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&b(Nt,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)]),P("div",{class:"v-list-item__spacer"},null)])]}}),[[yt,g.value&&$e.value]])}),{activate:r,isActivated:u,isGroupActivator:y,isSelected:v,list:w,select:c,root:f,id:L,link:s}}}),So=T({color:String,inset:Boolean,sticky:Boolean,title:String,...ee(),...oe()},"VListSubheader"),po=G()({name:"VListSubheader",props:So(),setup(e,t){let{slots:n}=t;const{textColorClasses:a,textColorStyles:i}=et(()=>e.color);return J(()=>{const s=!!(n.default||e.title);return b(e.tag,{class:H(["v-list-subheader",{"v-list-subheader--inset":e.inset,"v-list-subheader--sticky":e.sticky},a.value,e.class]),style:Q([{textColorStyles:i},e.style])},{default:()=>{var l;return[s&&P("div",{class:"v-list-subheader__text"},[((l=n.default)==null?void 0:l.call(n))??e.title])]}})}),{}}}),wo=T({items:Array,returnObject:Boolean},"VListChildren"),di=G()({name:"VListChildren",props:wo(),setup(e,t){let{slots:n}=t;return ni(),()=>{var a,i;return((a=n.default)==null?void 0:a.call(n))??((i=e.items)==null?void 0:i.map((s,l)=>{var d,y;let{children:o,props:r,type:u,raw:c}=s;if(u==="divider")return((d=n.divider)==null?void 0:d.call(n,{props:r}))??b(ti,r,null);if(u==="subheader")return((y=n.subheader)==null?void 0:y.call(n,{props:r}))??b(po,r,null);const m={subtitle:n.subtitle?f=>{var p;return(p=n.subtitle)==null?void 0:p.call(n,{...f,item:c})}:void 0,prepend:n.prepend?f=>{var p;return(p=n.prepend)==null?void 0:p.call(n,{...f,item:c})}:void 0,append:n.append?f=>{var p;return(p=n.append)==null?void 0:p.call(n,{...f,item:c})}:void 0,title:n.title?f=>{var p;return(p=n.title)==null?void 0:p.call(n,{...f,item:c})}:void 0},v=ga.filterProps(r);return o?b(ga,Y(v,{value:e.returnObject?c:r==null?void 0:r.value,rawId:r==null?void 0:r.value}),{activator:f=>{let{props:p}=f;const S=Y(r,p,{value:e.returnObject?c:r.value});return n.header?n.header({props:S}):b(mn,Y(S,{index:l}),m)},default:()=>b(di,{items:o,returnObject:e.returnObject},n)}):n.item?n.item({props:{...r,index:l}}):b(mn,Y(r,{index:l,value:e.returnObject?c:r.value}),m)}))}}}),ko=T({items:{type:Array,default:()=>[]},itemTitle:{type:[String,Array,Function],default:"title"},itemValue:{type:[String,Array,Function],default:"value"},itemChildren:{type:[Boolean,String,Array,Function],default:"children"},itemProps:{type:[Boolean,String,Array,Function],default:"props"},itemType:{type:[Boolean,String,Array,Function],default:"type"},returnObject:Boolean,valueComparator:Function},"list-items"),Co=new Set(["item","divider","subheader"]);function Qe(e,t){const n=ke(t,e.itemTitle,t),a=ke(t,e.itemValue,n),i=ke(t,e.itemChildren),s=e.itemProps===!0?typeof t=="object"&&t!=null&&!Array.isArray(t)?"children"in t?at(t,["children"]):t:void 0:ke(t,e.itemProps);let l=ke(t,e.itemType,"item");Co.has(l)||(l="item");const o={title:n,value:a,...s};return{type:l,title:String(o.title??""),value:o.value,props:o,children:l==="item"&&Array.isArray(i)?fi(e,i):void 0,raw:t}}Qe.neededProps=["itemTitle","itemValue","itemChildren","itemProps","itemType"];function fi(e,t){const n=ka(e,Qe.neededProps),a=[];for(const i of t)a.push(Qe(n,i));return a}function Go(e){const t=_(()=>fi(e,e.items)),n=_(()=>t.value.some(o=>o.value===null)),a=z(new Map),i=z([]);Re(()=>{const o=t.value,r=new Map,u=[];for(let c=0;c{let{raw:u}=r;return u}):o.map(r=>{let{value:u}=r;return u})}return{items:t,transformIn:s,transformOut:l}}const _o=new Set(["item","divider","subheader"]);function xo(e,t){const n=an(t)?t:ke(t,e.itemTitle),a=an(t)?t:ke(t,e.itemValue,void 0),i=ke(t,e.itemChildren),s=e.itemProps===!0?at(t,["children"]):ke(t,e.itemProps);let l=ke(t,e.itemType,"item");_o.has(l)||(l="item");const o={title:n,value:a,...s};return{type:l,title:o.title,value:o.value,props:o,children:l==="item"&&i?vi(e,i):void 0,raw:t}}function vi(e,t){const n=[];for(const a of t)n.push(xo(e,a));return n}function Io(e){return{items:_(()=>vi(e,e.items))}}const Po=T({baseColor:String,activeColor:String,activeClass:String,bgColor:String,disabled:Boolean,filterable:Boolean,expandIcon:le,collapseIcon:le,lines:{type:[Boolean,String],default:"one"},slim:Boolean,prependGap:[Number,String],indent:[Number,String],nav:Boolean,navigationStrategy:{type:String,default:"focus"},navigationIndex:Number,"onClick:open":ft(),"onClick:select":ft(),"onUpdate:opened":ft(),...co({selectStrategy:"single-leaf",openStrategy:"list"}),...st(),...ee(),...He(),...rt(),...bt(),...ko(),...Le(),...oe(),...fe(),...Ge({variant:"text"})},"VList"),Ao=G()({name:"VList",props:Po(),emits:{"update:selected":e=>!0,"update:activated":e=>!0,"update:opened":e=>!0,"update:navigationIndex":e=>!0,"click:open":e=>!0,"click:activate":e=>!0,"click:select":e=>!0},setup(e,t){let{attrs:n,slots:a,emit:i}=t;const{items:s}=Io(e),{themeClasses:l}=ye(e),{backgroundColorClasses:o,backgroundColorStyles:r}=Je(()=>e.bgColor),{borderClasses:u}=lt(e),{densityClasses:c}=ot(e),{dimensionStyles:m}=ut(e),{elevationClasses:v}=St(e),{roundedClasses:d}=Te(e),{children:y,open:f,parents:p,select:S,getPath:I}=fo(e,{items:s,returnObject:k(()=>e.returnObject),scrollToActive:k(()=>e.navigationStrategy==="track")}),L=k(()=>e.lines?`v-list--${e.lines}-line`:void 0),w=k(()=>e.activeColor),h=k(()=>e.baseColor),C=k(()=>e.color),x=k(()=>e.selectable||e.activatable),g=Pe(e,"navigationIndex",-1,$=>$??-1),R=pn();ni({filterable:e.filterable,trackingIndex:g,navigationStrategy:k(()=>e.navigationStrategy),uid:R}),W(s,()=>{e.navigationStrategy==="track"&&(g.value=-1)}),$t({VListGroup:{activeColor:w,baseColor:h,color:C,expandIcon:k(()=>e.expandIcon),collapseIcon:k(()=>e.collapseIcon)},VListItem:{activeClass:k(()=>e.activeClass),activeColor:w,baseColor:h,color:C,density:k(()=>e.density),disabled:k(()=>e.disabled),lines:k(()=>e.lines),nav:k(()=>e.nav),slim:k(()=>e.slim),variant:k(()=>e.variant),tabindex:k(()=>e.navigationStrategy==="track"?-1:void 0)}});const M=z(!1),E=q();function V($){M.value=!0}function A($){M.value=!1}function N($){var Z;e.navigationStrategy==="track"?~g.value||(g.value=X("first")):!M.value&&!($.relatedTarget&&((Z=E.value)!=null&&Z.contains($.relatedTarget)))&&K()}function O(){e.navigationStrategy==="track"&&(g.value=-1)}function U($){switch($){case"ArrowDown":return"next";case"ArrowUp":return"prev";case"Home":return"first";case"End":return"last";default:return null}}function X($){const Z=s.value.length;if(Z===0)return-1;let j;$==="first"?j=0:$==="last"?j=Z-1:(j=g.value+($==="next"?1:-1),j<0&&(j=Z-1),j>=Z&&(j=0));const be=j;let Ue=0;for(;Ue=Z&&(j=0),j===be)return-1;Ue++}return-1}function te($){const Z=$.target;if(!E.value||Z.tagName==="INPUT"&&["Home","End"].includes($.key)||Z.tagName==="TEXTAREA")return;const j=U($.key);if(j!==null)if($.preventDefault(),e.navigationStrategy==="track"){const be=X(j);be!==-1&&(g.value=be)}else K(j)}function he($){M.value=!0}function K($){if(E.value)return zi(E.value,$)}return J(()=>{const $=e.indent??(e.prependGap?Number(e.prependGap)+24:void 0),Z=x.value?n.ariaMultiselectable??!String(e.selectStrategy).startsWith("single-"):void 0;return b(e.tag,{ref:E,class:H(["v-list",{"v-list--disabled":e.disabled,"v-list--nav":e.nav,"v-list--slim":e.slim},l.value,o.value,u.value,c.value,v.value,L.value,d.value,e.class]),style:Q([{"--v-list-indent":B($),"--v-list-group-prepend":$?"0px":void 0,"--v-list-prepend-gap":B(e.prependGap)},r.value,m.value,e.style]),tabindex:e.disabled?-1:0,role:x.value?"listbox":"list","aria-activedescendant":e.navigationStrategy==="track"&&g.value>=0?`v-list-item-${R}-${g.value}`:void 0,"aria-multiselectable":Z,onFocusin:V,onFocusout:A,onFocus:N,onBlur:O,onKeydown:te,onMousedown:he},{default:()=>[b(di,{items:s.value,returnObject:e.returnObject},a)]})}),{open:f,select:S,focus:K,children:y,parents:p,getPath:I,navigationIndex:g}}});let gn=null;const mi={name:"RateLimitModal",data(){return{isVisible:!1,activeRequests:[]}},computed:{hasActiveRequests(){return this.activeRequests.length>0}},watch:{hasActiveRequests(e){this.isVisible=e}},methods:{close(){this.isVisible=!1},show(e,t,n){const a=Date.now()+Math.random().toString(36).substring(2,9),i=Math.max(0,Math.floor((new Date(e)-new Date)/1e3)),s={id:a,resetTime:e,path:t,method:n,remainingSeconds:i};this.activeRequests.push(s),this.startCountdown(a),this.isVisible=!0},startCountdown(e){const t=this.activeRequests.find(a=>a.id===e);if(!t)return;const n=setInterval(()=>{const a=this.activeRequests.findIndex(i=>i.id===e);if(a===-1){clearInterval(n);return}this.activeRequests[a].remainingSeconds--,this.activeRequests[a].remainingSeconds<=0&&(clearInterval(n),this.activeRequests.splice(a,1))},1e3);t.intervalId=n},clearAllCountdowns(){this.activeRequests.forEach(e=>{e.intervalId&&clearInterval(e.intervalId)}),this.activeRequests=[]}},beforeUnmount(){this.clearAllCountdowns()},created(){gn=this}};mi.show=function(e,t,n){gn&&gn.show(e,t,n)};const Eo=mi,Vo={class:"text-primary font-weight-bold"};function Lo(e,t,n,a,i,s){return Ie(),Fe(Ql,{modelValue:e.isVisible,"onUpdate:modelValue":t[0]||(t[0]=l=>e.isVisible=l),"max-width":"500",persistent:""},{default:ie(()=>[b(fa,{class:"rate-limit-modal"},{default:ie(()=>[b(Qa,{class:"text-center pa-4 bg-error text-white"},{default:ie(()=>[b(_e,{class:"mr-2",icon:"mdi-clock-alert-outline",size:"large"}),t[1]||(t[1]=Ct(" 请求频率超限 ",-1))]),_:1}),b(fn,{class:"pa-6"},{default:ie(()=>[t[3]||(t[3]=P("div",{class:"text-body-1 mb-4"},"您的请求过于频繁,请稍后再试。",-1)),e.activeRequests.length>0?(Ie(),Fe(fa,{key:0,class:"mb-4",flat:""},{default:ie(()=>[b(fn,null,{default:ie(()=>[(Ie(!0),Ia(Be,null,Zi(e.activeRequests,(l,o)=>(Ie(),Fe(Ao,{key:o,class:"mb-4"},{default:ie(()=>[b(mn,{color:"primary","prepend-icon":"mdi-web"},{default:ie(()=>[b(ci,null,{default:ie(()=>[t[2]||(t[2]=Ct(" 等待时间: ",-1)),P("span",Vo,Ce(l.remainingSeconds),1)]),_:2},1024),b(ui,null,{default:ie(()=>[Ct(Ce(l.method)+" "+Ce(l.path),1)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128)),e.index[b(to),b(Wa,{color:"primary",variant:"tonal",onClick:e.close},{default:ie(()=>[...t[5]||(t[5]=[Ct(" 我知道了",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])}const To=Pa(Eo,[["render",Lo]]),Oo=T({...ee(),...at(qi(),["fullHeight"]),...fe()},"VApp"),Bo=G()({name:"VApp",props:Oo(),setup(e,t){let{slots:n}=t;const a=ye(e),{layoutClasses:i,getLayoutItem:s,items:l,layoutRef:o}=Wi({...e,fullHeight:!0}),{rtlClasses:r}=Dt();return J(()=>{var u;return P("div",{ref:o,class:H(["v-application",a.themeClasses.value,i.value,r.value,e.class]),style:Q([e.style])},[P("div",{class:"v-application__wrap"},[(u=n.default)==null?void 0:u.call(n)])])}),{getLayoutItem:s,items:l,theme:a}}}),Ro={__name:"App",setup(e){const t=ha();return it(()=>{const n=In("theme.mode");t.global.name.value=n,window.addEventListener("beforeinstallprompt",a=>{a.preventDefault(),window.deferredPwaPrompt=a,window.dispatchEvent(new Event("pwa-prompt-ready"))})}),(n,a)=>{const i=es("router-view"),s=Ya;return Ie(),Fe(Bo,null,{default:ie(()=>[b(i,null,{default:ie(({Component:l,route:o})=>[b(Ne,{mode:"out-in",name:"md3"},{default:ie(()=>[(Ie(),Fe(Ca(l),{key:o.path}))]),_:2},1024)]),_:1}),b(s),b(To)]),_:1})}}},nt=ts(Ro);rs(nt);nt.use(Ke);nt.component("GlobalMessage",Ya);nt.mount("#app");setTimeout(()=>{ne(async()=>{const{initSentry:e}=await import("./sentry-CLY2_6wB.js");return{initSentry:e}},__vite__mapDeps([79,54,1,2,80]),import.meta.url).then(({initSentry:e})=>{const t=nt.config.globalProperties.$router;e(nt,t)}).catch(e=>{console.warn("Sentry 初始化失败:",e)})},1e3);const ya=async()=>{try{const{getVisitorId:e}=await ne(async()=>{const{getVisitorId:a}=await import("./visitorId-ZHgZAIad.js");return{getVisitorId:a}},__vite__mapDeps([54,1,2]),import.meta.url),t=(await ne(async()=>{const{default:a}=await import("./index-ghQi_28l.js");return{default:a}},[],import.meta.url)).default;t.init("rhp8uqoc3l");const n=await e();console.log("Visitor ID:",n),t.identify(n),t.setTag("fingerprintjs",n)}catch(e){console.warn("Clarity 加载或标识设置失败:",e)}};document.readyState==="complete"?ya():window.addEventListener("load",ya,{once:!0});export{As as $,Rt as A,Ta as B,Xa as C,et as D,Je as E,el as F,ot as G,Bn as H,He as I,Ml as J,Fo as K,Nt as L,Rn as M,jl as N,vs as O,ys as P,hs as Q,gl as R,Ve as S,ml as T,Yl as U,Ds as V,po as W,Ba as X,Ws as Y,Oa as Z,Pa as _,rt as a,Ps as a0,Cl as a1,Xe as a2,kl as a3,Is as a4,lt as a5,An as a6,Te as a7,ge as a8,St as a9,us as aA,cs as aB,da as aC,Ga as aD,Wo as aE,Xl as aF,ko as aG,vl as aH,Mo as aI,Le as aa,zt as ab,bt as ac,st as ad,To as ae,wt as af,Vn as ag,pt as ah,Ge as ai,En as aj,zo as ak,xs as al,yt as am,Ft as an,Ln as ao,Ho as ap,Mt as aq,Tn as ar,Hs as as,pl as at,Sl as au,Ke as av,jo as aw,qo as ax,Go as ay,Qe as az,ut as b,Qa as c,fn as d,fa as e,ne as f,In as g,_e as h,ti as i,Ao as j,mn as k,Wa as l,oe as m,Qn as n,to as o,Ql as p,Ja as q,Ll as r,ci as s,ui as t,mo as u,fs as v,gs as w,Oe as x,ua as y,ei as z}; diff --git a/assets/index-gUbV_oUn.css b/assets/index-gUbV_oUn.css new file mode 100644 index 0000000..f168d9d --- /dev/null +++ b/assets/index-gUbV_oUn.css @@ -0,0 +1 @@ +.async-loading-placeholder[data-v-2d12e0c7]{width:100%;opacity:.6}.gap-1[data-v-33424f55]{gap:0px}.border-b-sm[data-v-33424f55]{border-bottom:1px solid rgba(0,0,0,.05)}.border-none[data-v-33424f55]{border-bottom:none}.hover-elevation[data-v-33424f55]{transition:box-shadow .2s}.hover-elevation[data-v-33424f55]:hover{box-shadow:0 4px 8px #0000001a!important}.hitokoto-card[data-v-de957b7d]{cursor:pointer;transition:all .3s ease}.hitokoto-card[data-v-de957b7d]:hover{transform:translateY(-2px)}.serif-font[data-v-de957b7d]{font-family:"Noto Serif SC","Source Han Serif SC","Source Han Serif",source-han-serif-sc,Songti SC,SimSun,Hiragino Sans GB,system-ui,serif}.time-card[data-v-9443751e]{transition:all .3s ease;overflow:hidden}.time-card[data-v-9443751e]:hover{transform:translateY(-2px)}.time-display[data-v-9443751e]{font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;white-space:nowrap}.seconds-text[data-v-9443751e]{font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace}.date-line[data-v-9443751e]{opacity:.75;letter-spacing:1px}.fullscreen-time-card[data-v-9443751e]{position:relative;height:100vh;width:100vw;overflow:hidden}.fullscreen-toolbar[data-v-9443751e]{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;justify-content:center;padding-top:16px}.fullscreen-tabs[data-v-9443751e]{background:transparent;border-radius:16px}.toolbar-fade-enter-active[data-v-9443751e],.toolbar-fade-leave-active[data-v-9443751e]{transition:opacity .4s ease,transform .4s ease}.toolbar-fade-enter-from[data-v-9443751e],.toolbar-fade-leave-to[data-v-9443751e]{opacity:0;transform:translateY(-20px)}.fullscreen-tabs-window[data-v-9443751e]{width:100%}.fullscreen-time-body[data-v-9443751e]{-webkit-user-select:none;user-select:none;padding:0 24px}.fullscreen-time-display[data-v-9443751e]{font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:clamp(4rem,15vw,12rem);font-weight:700;line-height:1;letter-spacing:8px;font-variant-numeric:tabular-nums;white-space:nowrap}.fullscreen-seconds[data-v-9443751e]{font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:.45em;vertical-align:baseline;margin-left:4px;opacity:.5}.fullscreen-date-line[data-v-9443751e]{font-size:clamp(1rem,3vw,2.2rem);opacity:.7;letter-spacing:2px}.fullscreen-progress[data-v-9443751e]{display:flex;flex-direction:column;align-items:center}.fullscreen-extra[data-v-9443751e]{font-variant-numeric:tabular-nums}.fullscreen-actions[data-v-9443751e]{position:absolute;bottom:24px;right:24px;display:flex;align-items:center;opacity:.5;transition:opacity .3s ease}.fullscreen-actions[data-v-9443751e]:hover{opacity:1}.countdown-setup[data-v-9443751e]{-webkit-user-select:none;user-select:none}.countdown-digit[data-v-9443751e]{font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:clamp(3rem,10vw,8rem);font-weight:700;line-height:1;font-variant-numeric:tabular-nums;min-width:1.2em;text-align:center}.countdown-sep[data-v-9443751e]{font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;font-size:clamp(3rem,10vw,8rem);font-weight:300;line-height:1;opacity:.4;padding-bottom:1.8em}.countdown-ended[data-v-9443751e]{animation:pulse-red-9443751e 1s ease-in-out infinite}@keyframes pulse-red-9443751e{0%,to{opacity:1}50%{opacity:.3}}.stopwatch-laps[data-v-9443751e]{max-height:30vh;overflow-y:auto;width:min(90vw,400px)}.stopwatch-laps-table[data-v-9443751e]{background:transparent!important;font-family:JetBrains Mono,Fira Code,Cascadia Code,Consolas,monospace;font-variant-numeric:tabular-nums}.cursor-not-allowed[data-v-5f84fa28]{cursor:not-allowed!important}.cursor-pointer[data-v-5f84fa28]{cursor:pointer}.v-card.cursor-not-allowed[data-v-5f84fa28]:hover{transform:none!important}.floating-icp-link[data-v-fa73670f]{position:fixed;right:4px;bottom:0;z-index:100;font-size:14px;font-weight:500;letter-spacing:.2px;color:#6b6b6b;text-decoration:none;background:transparent;border:none;box-shadow:none;transition:none!important}.floating-icp-link[data-v-fa73670f]:hover,.floating-icp-link[data-v-fa73670f]:focus,.floating-icp-link[data-v-fa73670f]:active{color:#414141;text-decoration:none;outline:none}@media (max-width: 600px){.floating-icp-link[data-v-fa73670f]{right:16px;bottom:0;font-size:14px}}.skeleton-grid[data-v-ea69d8df]{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.skeleton-card[data-v-ea69d8df]{border:1px solid rgba(var(--v-border-color),var(--v-border-opacity, .12));border-radius:12px;padding:16px}.skeleton-heading[data-v-ea69d8df]{height:24px;width:60%;background:rgba(var(--v-theme-on-surface),.08);border-radius:4px;margin-bottom:12px}.skeleton-line[data-v-ea69d8df]{height:14px;width:100%;background:rgba(var(--v-theme-on-surface),.08);border-radius:4px;margin-bottom:8px}.skeleton-line--short[data-v-ea69d8df]{width:40%}.skeleton-btn[data-v-ea69d8df]{height:36px;width:100px;background:rgba(var(--v-theme-on-surface),.08);border-radius:8px}.skeleton-pulse[data-v-ea69d8df]{animation:skeleton-pulse-ea69d8df 1.5s ease-in-out infinite}@keyframes skeleton-pulse-ea69d8df{0%,to{opacity:1}50%{opacity:.4}} diff --git a/assets/sentry-CLY2_6wB.js b/assets/sentry-BV2lBeZ_.js similarity index 90% rename from assets/sentry-CLY2_6wB.js rename to assets/sentry-BV2lBeZ_.js index a36aeca..d94687d 100644 --- a/assets/sentry-CLY2_6wB.js +++ b/assets/sentry-BV2lBeZ_.js @@ -1 +1 @@ -import{getVisitorId as s}from"./visitorId-ZHgZAIad.js";import{i as l,b as i,r as c,f as u,s as g,a as f,g as p}from"./vendor-sentry-B9EwL1LR.js";import"./index-_6IQhlPZ.js";import"./vendor-vuetify-ChAgIwn2.js";import"./vendor-vue-H0jQBZ7T.js";let t=null;function k(a,o){l({app:a,dsn:"https://dc34ab47426f49c0925445f0d87b7007@report.houlang.cloud/6",sendDefaultPii:!0,integrations:[i({router:o}),c({maskAllText:!1,blockAllMedia:!1}),t=u({autoInject:!1,colorScheme:"system",showBranding:!1,showName:!0,showEmail:!0,isNameRequired:!1,isEmailRequired:!1,useSentryUser:{name:"username",email:"email"},themeDark:{submitBackground:"#6200EA",submitBackgroundHover:"#7C4DFF"},themeLight:{submitBackground:"#6200EA",submitBackgroundHover:"#7C4DFF"}})],tracesSampleRate:1,tracePropagationTargets:["localhost",/^https?:\/\/cs\.(houlang\.cloud|houlangs\.com)/],replaysSessionSampleRate:0,replaysOnErrorSampleRate:0,enableLogs:!0,beforeSend(e){return e}}),s().then(e=>{g({id:e,username:e}),f("fingerprint",e),console.log("Sentry 用户标识已设置:",e)}).catch(e=>{console.warn("设置 Sentry 用户标识失败:",e)}),window.openSentryFeedback=()=>{try{if(!t)return console.warn("Sentry Feedback integration 未初始化"),!1;if(typeof t.createWidget=="function"){const e=t.createWidget();if(e&&typeof e.open=="function")return e.open(),console.log("Sentry Feedback 对话框已打开"),!0}return typeof t.openDialog=="function"?(t.openDialog(),console.log("Sentry Feedback 对话框已打开"),!0):(console.warn("无法找到打开 Feedback 的方法"),console.log("可用方法:",Object.keys(t)),!1)}catch(e){return console.error("打开 Sentry Feedback 时出错:",e),!1}},window.startSentryReplay=()=>{try{const e=p();if(!e)return console.warn("Sentry 客户端未初始化"),!1;const r=(e.getOptions().integrations||[]).find(n=>n&&n.name==="Replay");return r&&typeof r.start=="function"?(r.start(),console.log("Sentry Replay 已手动启动"),!0):(console.warn("无法找到 Sentry Replay integration"),!1)}catch(e){return console.error("启动 Sentry Replay 时出错:",e),!1}}}export{k as initSentry}; +import{getVisitorId as s}from"./visitorId-BqmEfSoz.js";import{i as l,b as i,r as c,f as u,s as g,a as f,g as p}from"./vendor-sentry-B9EwL1LR.js";import"./index-CFUCTEXJ.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./vendor-vue-B2vxubPy.js";let t=null;function k(a,o){l({app:a,dsn:"https://dc34ab47426f49c0925445f0d87b7007@report.houlang.cloud/6",sendDefaultPii:!0,integrations:[i({router:o}),c({maskAllText:!1,blockAllMedia:!1}),t=u({autoInject:!1,colorScheme:"system",showBranding:!1,showName:!0,showEmail:!0,isNameRequired:!1,isEmailRequired:!1,useSentryUser:{name:"username",email:"email"},themeDark:{submitBackground:"#6200EA",submitBackgroundHover:"#7C4DFF"},themeLight:{submitBackground:"#6200EA",submitBackgroundHover:"#7C4DFF"}})],tracesSampleRate:1,tracePropagationTargets:["localhost",/^https?:\/\/cs\.(houlang\.cloud|houlangs\.com)/],replaysSessionSampleRate:0,replaysOnErrorSampleRate:0,enableLogs:!0,beforeSend(e){return e}}),s().then(e=>{g({id:e,username:e}),f("fingerprint",e),console.log("Sentry 用户标识已设置:",e)}).catch(e=>{console.warn("设置 Sentry 用户标识失败:",e)}),window.openSentryFeedback=()=>{try{if(!t)return console.warn("Sentry Feedback integration 未初始化"),!1;if(typeof t.createWidget=="function"){const e=t.createWidget();if(e&&typeof e.open=="function")return e.open(),console.log("Sentry Feedback 对话框已打开"),!0}return typeof t.openDialog=="function"?(t.openDialog(),console.log("Sentry Feedback 对话框已打开"),!0):(console.warn("无法找到打开 Feedback 的方法"),console.log("可用方法:",Object.keys(t)),!1)}catch(e){return console.error("打开 Sentry Feedback 时出错:",e),!1}},window.startSentryReplay=()=>{try{const e=p();if(!e)return console.warn("Sentry 客户端未初始化"),!1;const r=(e.getOptions().integrations||[]).find(n=>n&&n.name==="Replay");return r&&typeof r.start=="function"?(r.start(),console.log("Sentry Replay 已手动启动"),!0):(console.warn("无法找到 Sentry Replay integration"),!1)}catch(e){return console.error("启动 Sentry Replay 时出错:",e),!1}}}export{k as initSentry}; diff --git a/assets/serverRotation-BGVL0kta.js b/assets/serverRotation-CdH9Xda8.js similarity index 93% rename from assets/serverRotation-BGVL0kta.js rename to assets/serverRotation-CdH9Xda8.js index 5cf3476..512a987 100644 --- a/assets/serverRotation-BGVL0kta.js +++ b/assets/serverRotation-CdH9Xda8.js @@ -1 +1 @@ -import{g as n}from"./index-_6IQhlPZ.js";const u=["https://kv-service.houlang.cloud","https://kv-service.wuyuan.dev"];function f(t){if(t==="classworkscloud")return[...u];const o=n("server.domain");return o?[o]:[]}async function p(t,o={}){const d=o.provider||n("server.provider"),i=o.onServerTried,a=typeof i=="function",v=f(d),r=[];let c=null;for(const s of v)try{r.push({url:s,status:"trying"}),a&&i({url:s,status:"trying",tried:[...r]});const e=await t(s);return r[r.length-1].status="success",a&&i({url:s,status:"success",tried:[...r]}),e}catch(e){c=e,r[r.length-1].status="failed",r[r.length-1].error=e.message||String(e),a&&i({url:s,status:"failed",error:e,tried:[...r]}),console.warn(`Server ${s} failed:`,e.message)}console.error("All servers failed. Tried:",r);const l=c||new Error("All servers failed");throw l.triedServers=r,l}function S(){return n("server.provider")==="classworkscloud"?u[0]:n("server.domain")||""}function h(){return n("server.provider")==="classworkscloud"}export{S as g,h as i,p as t}; +import{g as n}from"./index-CFUCTEXJ.js";const u=["https://kv-service.houlang.cloud","https://kv-service.wuyuan.dev"];function f(t){if(t==="classworkscloud")return[...u];const o=n("server.domain");return o?[o]:[]}async function p(t,o={}){const d=o.provider||n("server.provider"),i=o.onServerTried,a=typeof i=="function",v=f(d),r=[];let c=null;for(const s of v)try{r.push({url:s,status:"trying"}),a&&i({url:s,status:"trying",tried:[...r]});const e=await t(s);return r[r.length-1].status="success",a&&i({url:s,status:"success",tried:[...r]}),e}catch(e){c=e,r[r.length-1].status="failed",r[r.length-1].error=e.message||String(e),a&&i({url:s,status:"failed",error:e,tried:[...r]}),console.warn(`Server ${s} failed:`,e.message)}console.error("All servers failed. Tried:",r);const l=c||new Error("All servers failed");throw l.triedServers=r,l}function S(){return n("server.provider")==="classworkscloud"?u[0]:n("server.domain")||""}function h(){return n("server.provider")==="classworkscloud"}export{S as g,h as i,p as t}; diff --git a/assets/settings-BYcqfiQi.js b/assets/settings-BYcqfiQi.js new file mode 100644 index 0000000..558d9cf --- /dev/null +++ b/assets/settings-BYcqfiQi.js @@ -0,0 +1,24 @@ +import{_ as qe,V as At}from"./MessageLog-BB5IiJ1u.js";import{_ as E,O as we,c as P,f as g,d as S,h as Ae,q as G,e as C,M as Ie,B as Xe,t as $e,P as et,g as y,s as ne,Q as It,o as j,p as Q,i as f,l as M,n as x,v as A,y as Pe,R as xe,w as Me,z as Ne,r as K,E as Se,k as $,V as tt,F as Tt,T as Ut,U as jt,W as nt,X as Bt,x as Re}from"./index-CFUCTEXJ.js";import{X as c,Y as p,Z as n,j as t,a1 as o,S as w,$ as v,ae as Ce,k as m,P as Nt,_ as k,m as ge,F as O,a2 as W,r as Pt,ad as ae,a8 as fe,n as _e,o as Oe,b as Z,ab as Mt,D as Et,e as ke,a3 as zt}from"./vendor-vue-B2vxubPy.js";import{V as z}from"./VChip-DR8Ljy6R.js";import{V as st}from"./VSwitch-DKh_Uq_M.js";import{V as Ve}from"./VSelect-Fp4MUhJW.js";import{V as N}from"./VTextField-ByBRYn99.js";import{V as it,a as Lt}from"./VSheet-B8D7XEg5.js";import{d as H,b as Fe,a as Kt,o as Rt,k as Ot}from"./dataProvider-bUkzKSNt.js";import{V as L,a as he}from"./VAlert-DO0N7oM6.js";import{V as Y,a as B}from"./VRow-Dw4j2TKL.js";import{V as Ee}from"./VContainer-RtoBp6rB.js";import{a as De}from"./vendor-utils-DDRLRfsI.js";import{V as ie}from"./VCheckbox-iNdH9PmZ.js";import{V as pe}from"./VTextarea-BxmmuONa.js";import{s as Ft,a as Jt}from"./soundList-D9U-Grcp.js";import{t as Qt,f as Ht,n as Gt,p as Wt,a0 as Yt}from"./vendor-vuetify-s-yw_Hr8.js";import{V as lt}from"./VForm-zpXHQBRK.js";import{V as ze,a as Le,b as ot,c as Ke}from"./VExpansionPanels-qZkn9NEQ.js";import{V as at}from"./VDataTable-B9bubX3K.js";import{V as Je}from"./VCombobox-B2hcOM7z.js";import{V as Qe}from"./VCheckboxBtn-DOw5vjpY.js";import{i as Zt,t as qt}from"./serverRotation-CdH9Xda8.js";import{getVisitorId as Xt}from"./visitorId-BqmEfSoz.js";import{b as He,c as Ge,V as $t,a as en}from"./VAppBarTitle-vVO0I21U.js";import{V as tn,a as X}from"./VTabsWindowItem-CU31Uty7.js";import"./VLabel-CU-8PdVS.js";import"./autofocus-BAgnxQiD.js";import"./VPagination-D-juuf4L.js";const nn={name:"SettingsCard",props:{title:{type:String,required:!0},icon:{type:String,required:!0},loading:{type:Boolean,default:!1}}};function sn(s,e,a,r,i,l){return c(),p(C,{class:"settings-card rounded-lg",elevation:"2"},{default:n(()=>[t(we,null,{prepend:n(()=>[t(g,{icon:a.icon,class:"mr-2",size:"large"},null,8,["icon"])]),default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[o(w(a.title),1)]),_:1})]),_:1}),t(S,null,{default:n(()=>[a.loading?(c(),p(Ae,{key:0,class:"mb-4",color:"primary",indeterminate:""})):v("",!0),Ce(s.$slots,"default",{},void 0,!0)]),_:3}),s.$slots.actions?(c(),p(G,{key:0,class:"pa-4"},{default:n(()=>[Ce(s.$slots,"actions",{},void 0,!0)]),_:3})):v("",!0)]),_:3})}const F=E(nn,[["render",sn],["__scopeId","data-v-9c035df1"]]),ln=[{text:"帝高阳之苗裔兮,朕皇考曰伯庸。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"摄提贞于孟陬兮,惟庚寅吾以降。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇览揆余初度兮,肇锡余以嘉名。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"名余曰正则兮,字余曰灵均。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷吾既有此内美兮,又重之以修能。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扈江离与辟芷兮,纫秋兰以为佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汩余若将不及兮,恐年岁之不吾与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝搴阰之木兰兮,夕揽洲之宿莽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日月忽其不淹兮,春与秋其代序。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟草木之零落兮,恐美人之迟暮。(惟 通:唯)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不抚壮而弃秽兮,何不改此度?(改此度 一作:改乎此度)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乘骐骥以驰骋兮,来吾道夫先路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"昔三后之纯粹兮,固众芳之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"杂申椒与菌桂兮,岂惟纫夫蕙茝!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"彼尧舜之耿介兮,既遵道而得路。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何桀纣之猖披兮,夫唯捷径以窘步。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟夫党人之偷乐兮,路幽昧以险隘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂余身之惮殃兮,恐皇舆之败绩!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽奔走以先后兮,及前王之踵武。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"荃不查余之中情兮,反信谗而齌怒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余固知謇謇之为患兮,忍而不能舍也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"指九天以为正兮,夫唯灵修之故也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰黄昏以为期兮,羌中道而改路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"初既与余成言兮,后悔遁而有他。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既不难夫离别兮,伤灵修之数化。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既滋兰之九畹兮,又树蕙之百亩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"畦留夷与揭车兮,杂杜衡与芳芷。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"冀枝叶之峻茂兮,愿俟时乎吾将刈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽萎绝其亦何伤兮,哀众芳之芜秽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众皆竞进以贪婪兮,凭不厌乎求索。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羌内恕己以量人兮,各兴心而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽驰骛以追逐兮,非余心之所急。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"老冉冉其将至兮,恐修名之不立。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝饮木兰之坠露兮,夕餐秋菊之落英。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟余情其信姱以练要兮,长顑颔亦何伤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"掔木根以结茝兮,贯薜荔之落蕊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"矫菌桂以纫蕙兮,索胡绳之纚纚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"謇吾法夫前修兮,非世俗之所服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽不周于今之人兮,愿依彭咸之遗则。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"长太息以掩涕兮,哀民生之多艰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余虽好修姱以鞿羁兮,謇朝谇而夕替。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既替余以蕙纕兮,又申之以揽茝。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"亦余心之所善兮,虽九死其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怨灵修之浩荡兮,终不察夫民心。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众女嫉余之蛾眉兮,谣诼谓余以善淫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之工巧兮,偭规矩而改错。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"背绳墨以追曲兮,竞周容以为度。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忳郁邑余侘傺兮,吾独穷困乎此时也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁溘死以流亡兮,余不忍为此态也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸷鸟之不群兮,自前世而固然。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何方圜之能周兮,夫孰异道而相安?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屈心而抑志兮,忍尤而攘诟。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"伏清白以死直兮,固前圣之所厚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"悔相道之不察兮,延伫乎吾将反。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"回朕车以复路兮,及行迷之未远。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"步余马于兰皋兮,驰椒丘且焉止息。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"进不入以离尤兮,退将复修吾初服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"制芰荷以为衣兮,集芙蓉以为裳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不吾知其亦已兮,苟余情其信芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"高余冠之岌岌兮,长余佩之陆离。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳与泽其杂糅兮,唯昭质其犹未亏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以游目兮,将往观乎四荒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"佩缤纷其繁饰兮,芳菲菲其弥章。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民生各有所乐兮,余独好修以为常。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽体解吾犹未变兮,岂余心之可惩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"女媭之婵媛兮,申申其詈予,曰:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鲧婞直以亡身兮,终然夭乎羽之野。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汝何博謇而好修兮,纷独有此姱节?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"薋菉葹以盈室兮,判独离而不服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众不可户说兮,孰云察余之中情?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世并举而好朋兮,夫何茕独而不予听?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"依前圣以节中兮,喟凭心而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"济沅湘以南征兮,就重华而陈词:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"启《九辩》与《九歌》兮,夏康娱以自纵。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不顾难以图后兮,五子用失乎家衖。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羿淫游以佚畋兮,又好射夫封狐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固乱流其鲜终兮,浞又贪夫厥家。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"浇身被服强圉兮,纵欲而不忍。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日康娱而自忘兮,厥首用夫颠陨。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夏桀之常违兮,乃遂焉而逢殃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"后辛之菹醢兮,殷宗用而不长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而祗敬兮,周论道而莫差。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"举贤才而授能兮,循绳墨而不颇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇天无私阿兮,览民德焉错辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫维圣哲以茂行兮,苟得用此下土。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"瞻前而顾后兮,相观民之计极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫孰非义而可用兮?孰非善而可服?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"阽余身而危死兮,览余初其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不量凿而正枘兮,固前修以菹醢。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曾歔欷余郁邑兮,哀朕时之不当。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"揽茹蕙以掩涕兮,沾余襟之浪浪。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"跪敷衽以陈辞兮,耿吾既得此中正。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驷玉虬以椉鹥兮,溘埃风余上征。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于苍梧兮,夕余至乎县圃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲少留此灵琐兮,日忽忽其将暮。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令羲和弭节兮,望崦嵫而勿迫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路曼曼其修远兮,吾将上下而求索。(曼曼 一作:漫漫)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"饮余马于咸池兮,总余辔乎扶桑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折若木以拂日兮,聊逍遥以相羊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"前望舒使先驱兮,后飞廉使奔属。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸾皇为余先戒兮,雷师告余以未具。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令凤鸟飞腾兮,继之以日夜。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"飘风屯其相离兮,帅云霓而来御。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,斑陆离其上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令帝阍开关兮,倚阊阖而望予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时暧暧其将罢兮,结幽兰而延伫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而不分兮,好蔽美而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝吾将济于白水兮,登阆风而绁马。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以流涕兮,哀高丘之无女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"溘吾游此春宫兮,折琼枝以继佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及荣华之未落兮,相下女之可诒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令丰隆乘云兮,求宓妃之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"解佩纕以结言兮,吾令謇修以为理。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,忽纬繣其难迁。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夕归次于穷石兮,朝濯发乎洧盘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"保厥美以骄傲兮,日康娱以淫游。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽信美而无礼兮,来违弃而改求。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览相观于四极兮,周流乎天余乃下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"望瑶台之偃蹇兮,见有娀之佚女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令鸩为媒兮,鸩告余以不好。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"雄鸠之鸣逝兮,余犹恶其佻巧。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"心犹豫而狐疑兮,欲自适而不可。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇既受诒兮,恐高辛之先我。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲远集而无所止兮,聊浮游以逍遥。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及少康之未家兮,留有虞之二姚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"理弱而媒拙兮,恐导言之不固。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而嫉贤兮,好蔽美而称恶。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"闺中既以邃远兮,哲王又不寤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怀朕情而不发兮,余焉能忍而与此终古?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"索琼茅以筳篿兮,命灵氛为余占之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:两美其必合兮,孰信修而慕之?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"思九州之博大兮,岂惟是其有女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉远逝而无狐疑兮,孰求美而释女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何所独无芳草兮,尔何怀乎故宇?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世幽昧以昡曜兮,孰云察余之善恶?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民好恶其不同兮,惟此党人其独异!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"户服艾以盈要兮,谓幽兰其不可佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览察草木其犹未得兮,岂珵美之能当?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苏粪壤以充帏兮,谓申椒其不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲从灵氛之吉占兮,心犹豫而狐疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"巫咸将夕降兮,怀椒糈而要之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"百神翳其备降兮,九疑缤其并迎。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇剡剡其扬灵兮,告余以吉故。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉升降以上下兮,求矩矱之所同。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而求合兮,挚咎繇而能调。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟中情其好修兮,又何必用夫行媒?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"说操筑于傅岩兮,武丁用而不疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吕望之鼓刀兮,遭周文而得举。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁戚之讴歌兮,齐桓闻以该辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及年岁之未晏兮,时亦犹其未央。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"恐鹈鴂之先鸣兮,使夫百草为之不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何琼佩之偃蹇兮,众薆然而蔽之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟此党人之不谅兮,恐嫉妒而折之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时缤纷其变易兮,又何可以淹留?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"兰芷变而不芳兮,荃蕙化而为茅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何昔日之芳草兮,今直为此萧艾也?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂其有他故兮,莫好修之害也!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余以兰为可恃兮,羌无实而容长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"委厥美以从俗兮,苟得列乎众芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"椒专佞以慢慆兮,樧又欲充夫佩帏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既干进而务入兮,又何芳之能祗?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之流从兮,又孰能无变化?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览椒兰其若兹兮,又况揭车与江离?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟兹佩之可贵兮,委厥美而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳菲菲而难亏兮,芬至今犹未沬。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"和调度以自娱兮,聊浮游而求女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及余饰之方壮兮,周流观乎上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"灵氛既告余以吉占兮,历吉日乎吾将行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折琼枝以为羞兮,精琼爢以为粻。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"为余驾飞龙兮,杂瑶象以为车。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何离心之可同兮?吾将远逝以自疏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"邅吾道夫昆仑兮,路修远以周流。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扬云霓之晻蔼兮,鸣玉鸾之啾啾。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于天津兮,夕余至乎西极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇翼其承旗兮,高翱翔之翼翼。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽吾行此流沙兮,遵赤水而容与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"麾蛟龙使梁津兮,诏西皇使涉予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路修远以多艰兮,腾众车使径待。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路不周以左转兮,指西海以为期。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屯余车其千乘兮,齐玉轪而并驰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驾八龙之婉婉兮,载云旗之委蛇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"抑志而弭节兮,神高驰之邈邈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"奏《九歌》而舞《韶》兮,聊假日以媮乐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"陟升皇之赫戏兮,忽临睨夫旧乡。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"仆夫悲余马怀兮,蜷局顾而不行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乱曰:已矣哉!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"国无人莫我知兮,又何怀乎故都!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既莫足与为美政兮,吾将从彭咸之所居!",author:"离骚",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"}],We={quotes:ln};let je=null;async function on(){return je||(je=(await $e(async()=>{const{default:s}=await import("./core-IlBOtVFl.js").then(e=>e.c);return{default:s}},[],import.meta.url)).default),je}const Ye={text:"点击此处可以查看 Classworks 用户群里沙雕群友们的发言",author:"点击后会复制当前句子到剪贴板中"},Ze={main:{delay:50,deleteSpeed:100},source:{delay:10,deleteSpeed:10,cursor:""}},an={name:"EchoChamberCard",components:{SettingsCard:F},data:()=>({typewriter:null,sourceWriter:null,currentQuote:Ye,hasClicked:!1}),mounted(){this.initTypewriters()},methods:{async initTypewriters(){const s=await on();this.typewriter=new s(this.$refs.typewriter,Ze.main),this.sourceWriter=new s(this.$refs.sourceWriter,Ze.source),this.typeQuote(Ye)},typeQuote(s){this.typewriter.deleteAll(30).typeString(s.text).start(),s.author&&this.sourceWriter.deleteAll(20).typeString(s.author).start()},async handleClick(){this.hasClicked||(this.hasClicked=!0),await this.copyToClipboard(),this.currentQuote=this.getRandomQuote(),this.typeQuote(this.currentQuote)},getRandomQuote(){return We.quotes[Math.floor(Math.random()*We.quotes.length)]},async copyToClipboard(){if(!this.currentQuote)return;const{text:s,author:e,contributor:a,link:r}=this.currentQuote,i=[s,e&&`作者:${e}`,a&&`贡献者:${a}`,(r||a)&&`来源:${r||`https://github.com/${a}`}`].filter(Boolean);try{await navigator.clipboard.writeText(i.join(` +`))}catch(l){console.error("复制失败:",l)}}},beforeUnmount(){[this.typewriter,this.sourceWriter].forEach(s=>s==null?void 0:s.stop())}},rn={ref:"typewriter",class:"typewriter-text"},un={ref:"sourceWriter",class:"source-text"};function dn(s,e,a,r,i,l){const d=F;return c(),p(d,{border:"",icon:"mdi-thought-bubble",title:"回声洞",onClick:l.handleClick},{default:n(()=>[t(S,null,{default:n(()=>[m("div",rn,null,512),m("div",un,null,512)]),_:1}),t(Nt,{name:"fade"},{default:n(()=>{var h;return[(h=s.currentQuote)!=null&&h.contributor?(c(),p(z,{key:0,class:"contributor"},{default:n(()=>[t(Ie,{start:""},{default:n(()=>[t(Xe,{src:`https://github.com/${s.currentQuote.contributor}.png`},null,8,["src"])]),_:1}),o(" "+w(s.currentQuote.contributor),1)]),_:1})):v("",!0)]}),_:1})]),_:1},8,["onClick"])}const rt=E(an,[["render",dn],["__scopeId","data-v-2acb3fbb"]]),cn={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 s=this.settingKey.split(".");return s[s.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=It(this.settingKey),!this.definition){console.error(`未找到设置项定义: ${this.settingKey}`);return}if(this.type=this.definition.type,this.localValue=y(this.settingKey),this.type==="string"){if(this.isFontFamily)this.selectOptions=this.fontFamilies,this.hasOptions=!0;else if(this.settingKey in this.displayValueMappings){const s=this.displayValueMappings[this.settingKey];this.selectOptions=Object.entries(s).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 r=e[1].split(",").map(i=>{const l=i.trim().replace(/['"]/g,"");return{title:this.getDisplayValue(l)||l,value:l}});r.length>0&&(this.selectOptions=r,this.hasOptions=!0)}}}if(this.type==="number"&&this.definition.validate){const s=this.definition.validate.toString(),e=s.match(/value\s*>=\s*(\d+)/);e&&(this.minValue=Number(e[1]));const a=s.match(/value\s*<=\s*(\d+)/);a&&(this.maxValue=Number(a[1]));const r=this.maxValue-this.minValue;r>100?this.stepValue=10:r>20?this.stepValue=5:r>10?this.stepValue=2:this.stepValue=1}},getDisplayValue(s){return this.settingKey in this.displayValueMappings&&this.displayValueMappings[this.settingKey][s]||s},updateSetting(s){let e=s;this.type==="boolean"?e=!!s:this.type==="number"&&(e=Number(s),ethis.maxValue&&(e=this.maxValue)),ne(this.settingKey,e)?this.$emit("update",this.settingKey,e):(this.localValue=y(this.settingKey),this.$emit("error",this.settingKey))},adjustValue(s){if(this.type!=="number")return;const e=this.localValue+s;e>=this.minValue&&e<=this.maxValue&&(this.localValue=e,this.updateSetting(e))},copySettingId(){navigator.clipboard.writeText(this.settingKey).then(()=>{this.showSnackbarMessage("设置ID已复制到剪贴板")}).catch(s=>{console.error("复制失败:",s)})},copySettingValue(){let s="";typeof this.localValue=="object"&&this.localValue!==null?s=JSON.stringify(this.localValue):s=String(this.localValue),navigator.clipboard.writeText(s).then(()=>{this.showSnackbarMessage("设置值已复制到剪贴板")}).catch(e=>{console.error("复制失败:",e)})},resetToDefault(){this.definition&&(et(this.settingKey),this.localValue=y(this.settingKey),this.showSnackbarMessage("已重置为默认值"),this.$emit("update",this.settingKey,this.localValue))},showSnackbarMessage(s){this.snackbarText=s,this.showSnackbar=!0}}},mn={class:"text-caption text-grey-darken-1"},fn={class:"d-flex flex-column flex-sm-row align-center"},hn={key:0,class:"me-2"},pn={key:2,class:"d-flex align-center"},wn={key:0,class:"px-4 pb-2 pt-0"};function gn(s,e,a,r,i,l){return c(),k(O,null,[t(x,{disabled:a.disabled,class:"setting-item"},{prepend:n(()=>[t(g,{icon:l.settingIcon},null,8,["icon"])]),append:n(()=>[m("div",fn,[i.type!=="string"||i.hasOptions?(c(),k("div",hn,[i.type==="boolean"?(c(),p(st,{key:0,modelValue:i.localValue,"onUpdate:modelValue":[e[0]||(e[0]=d=>i.localValue=d),l.updateSetting],disabled:a.disabled,density:"comfortable","hide-details":""},null,8,["modelValue","disabled","onUpdate:modelValue"])):i.type==="string"&&i.hasOptions?(c(),p(Ve,{key:1,modelValue:i.localValue,"onUpdate:modelValue":[e[1]||(e[1]=d=>i.localValue=d),l.updateSetting],disabled:a.disabled,items:i.selectOptions,"bg-color":"surface",class:"setting-select",density:"compact","hide-details":"","item-title":"title","item-value":"value",variant:"outlined"},null,8,["modelValue","disabled","items","onUpdate:modelValue"])):i.type==="number"?(c(),k("div",pn,[t(f,{disabled:a.disabled||i.localValue<=i.minValue,icon:"mdi-minus",size:"small",variant:"text",onClick:e[2]||(e[2]=d=>l.adjustValue(-i.stepValue))},null,8,["disabled"]),t(N,{modelValue:i.localValue,"onUpdate:modelValue":[e[3]||(e[3]=d=>i.localValue=d),l.updateSetting],modelModifiers:{number:!0},disabled:a.disabled,max:i.maxValue,min:i.minValue,step:i.stepValue,"bg-color":"surface",class:"mx-2 setting-number-field",density:"compact","hide-details":"",style:{width:"80px"},type:"number",variant:"outlined"},null,8,["modelValue","disabled","max","min","step","onUpdate:modelValue"]),t(f,{disabled:a.disabled||i.localValue>=i.maxValue,icon:"mdi-plus",size:"small",variant:"text",onClick:e[4]||(e[4]=d=>l.adjustValue(i.stepValue))},null,8,["disabled"])])):v("",!0)])):v("",!0),t(it,{location:"bottom"},{activator:n(({props:d})=>[t(f,ge({disabled:a.disabled,class:"ml-2",icon:"mdi-dots-vertical",size:"small"},d,{variant:"text"}),null,16,["disabled"])]),default:n(()=>[t(M,{density:"compact"},{default:n(()=>[t(x,{onClick:l.copySettingId},{prepend:n(()=>[t(g,{icon:"mdi-key",size:"small"})]),default:n(()=>[t(j,null,{default:n(()=>[...e[7]||(e[7]=[o("复制设置ID",-1)])]),_:1})]),_:1},8,["onClick"]),t(x,{onClick:l.copySettingValue},{prepend:n(()=>[t(g,{icon:"mdi-content-copy",size:"small"})]),default:n(()=>[t(j,null,{default:n(()=>[...e[8]||(e[8]=[o("复制设置值",-1)])]),_:1})]),_:1},8,["onClick"]),t(A),t(x,{disabled:l.isDefaultValue,onClick:l.resetToDefault},{prepend:n(()=>[t(g,{icon:"mdi-restore",size:"small"})]),default:n(()=>[t(j,null,{default:n(()=>[...e[9]||(e[9]=[o("重置为默认值",-1)])]),_:1})]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})])]),default:n(()=>[t(j,{class:"text-wrap"},{default:n(()=>[o(w(l.displayTitle),1)]),_:1}),t(Q,{class:"d-flex align-center text-wrap"},{default:n(()=>[m("span",mn,w(a.settingKey),1)]),_:1})]),_:1},8,["disabled"]),i.type==="string"&&!i.hasOptions?(c(),k("div",wn,[t(N,{modelValue:i.localValue,"onUpdate:modelValue":[e[5]||(e[5]=d=>i.localValue=d),l.updateSetting],disabled:a.disabled,"bg-color":"surface",class:"setting-text-field mt-1",density:"compact","hide-details":"",variant:"outlined"},null,8,["modelValue","disabled","onUpdate:modelValue"])])):v("",!0),t(Pe,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[6]||(e[6]=d=>i.showSnackbar=d),timeout:2e3,color:"success",location:"top"},{default:n(()=>[o(w(i.snackbarText),1)]),_:1},8,["modelValue"])],64)}const le=E(cn,[["render",gn],["__scopeId","data-v-08b49b47"]]),vn={name:"SettingsExplorer",components:{SettingItem:le},data(){return{searchQuery:"",currentSettings:{},unwatchFunction:null}},computed:{isDeveloperMode(){return y("developer.enabled")},allSettings(){var e;const s=[];for(const[a,r]of Object.entries(Ne))this.searchQuery&&!a.toLowerCase().includes(this.searchQuery.toLowerCase())&&!((e=r.description)!=null&&e.toLowerCase().includes(this.searchQuery.toLowerCase()))||s.push({key:a,...r});return s},formattedSettings(){return JSON.stringify(this.currentSettings,null,2)}},created(){this.updateCurrentSettings(),this.unwatchFunction=Me(()=>{this.updateCurrentSettings()})},beforeUnmount(){this.unwatchFunction&&this.unwatchFunction()},methods:{updateCurrentSettings(){this.currentSettings=xe()},onSettingUpdate(s,e){this.$emit("update",s,e),this.updateCurrentSettings()},onSettingError(s){this.$emit("error",s)},copySettingsToClipboard(){navigator.clipboard.writeText(JSON.stringify(this.currentSettings)).then(()=>{this.$emit("message",{type:"success",text:"设置已复制到剪贴板"})}).catch(s=>{console.error("复制到剪贴板失败:",s),this.$emit("message",{type:"error",text:"复制到剪贴板失败"})})}}},bn={class:"settings-explorer"},kn={class:"settings-json"};function yn(s,e,a,r,i,l){const d=le;return c(),k("div",bn,[m("div",null,[t(N,{modelValue:i.searchQuery,"onUpdate:modelValue":e[0]||(e[0]=h=>i.searchQuery=h),class:"mb-4",clearable:"",density:"comfortable",label:"搜索设置","prepend-inner-icon":"mdi-magnify",variant:"outlined"},null,8,["modelValue"]),t(M,null,{default:n(()=>[(c(!0),k(O,null,W(l.allSettings,h=>(c(),k("div",{key:h.key},[(c(),p(d,{key:h.key,disabled:h.requireDeveloper&&!l.isDeveloperMode,"setting-key":h.key,onError:l.onSettingError,onUpdate:l.onSettingUpdate},null,8,["disabled","setting-key","onError","onUpdate"])),t(A,{class:"my-2"})]))),128))]),_:1}),t(C,{border:""},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[...e[1]||(e[1]=[o("当前配置",-1)])]),_:1}),t(S,null,{default:n(()=>[m("pre",kn,w(l.formattedSettings),1)]),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{onClick:l.copySettingsToClipboard},{default:n(()=>[e[3]||(e[3]=o(" 复制到剪贴板 ",-1)),t(g,{right:""},{default:n(()=>[...e[2]||(e[2]=[o("mdi-content-copy",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1})]),_:1})])])}const ut=E(vn,[["render",yn],["__scopeId","data-v-4d032f99"]]),xn={name:"SettingGroup",props:{title:{type:String,default:null},description:{type:String,default:null},icon:{type:String,default:null},border:{type:Boolean,default:!1}},methods:{onSettingUpdate(s,e){this.$emit("update",s,e)},onSettingError(s){this.$emit("error",s)}}};function Sn(s,e,a,r,i,l){return c(),p(C,{border:a.border,class:"setting-group"},{default:n(()=>[a.title?(c(),p(P,{key:0,class:"d-flex align-center"},{default:n(()=>[a.icon?(c(),p(g,{key:0,icon:a.icon,class:"mr-2"},null,8,["icon"])):v("",!0),o(" "+w(a.title),1)]),_:1})):v("",!0),a.description?(c(),p(Se,{key:1},{default:n(()=>[o(w(a.description),1)]),_:1})):v("",!0),t(S,null,{default:n(()=>[t(M,null,{default:n(()=>[Ce(s.$slots,"default",{},void 0,!0)]),_:3})]),_:3}),s.$slots.actions?(c(),p(G,{key:2},{default:n(()=>[Ce(s.$slots,"actions",{},void 0,!0)]),_:3})):v("",!0)]),_:3},8,["border"])}const Te=E(xn,[["render",Sn],["__scopeId","data-v-9af32ae4"]]),Cn={subjects:{语文:{books:{课本:["第一单元","第二单元"],练习册:["第一章","第二章"]}},数学:{books:{课本:["第一章","第二章"],习题册:["基础练习","提高练习"]}},英语:{books:{课本:["Unit 1","Unit 2"],练习册:["Chapter 1","Chapter 2"]}}},commonSubject:{books:{试卷:["单元测试","期中测试","期末测试"],假期作业:["必做题","选做题"]}},actions:["写完","下一课","不交","明天交"]},_n={name:"HomeworkTemplateCard",components:{SettingsCard:F,SettingGroup:Te},data(){return{loading:!1,error:null,config:Pt(JSON.parse(JSON.stringify(Cn))),originalConfig:null,newSubject:"",newCommonBook:"",newAction:"",newTask:"",editedSubjects:{},editedBookTypes:{},newBookTypes:{},newBooks:{},showSnackbar:!1,snackbarText:"",snackbarColor:"success",isNewConfig:!0,dialog:{show:!1,title:"",nameLabel:"",editedItem:{name:"",type:"",subject:"",bookType:"",originalName:"",tasks:[]}}}},computed:{subjectList(){return Object.keys(this.config.subjects)},hasChanges(){return this.isNewConfig?!0:this.originalConfig&&JSON.stringify(this.config)!==JSON.stringify(this.originalConfig)}},created(){this.loadConfig()},methods:{async loadConfig(){var s,e;this.loading=!0;try{const a=await H.loadData("classworks-config-homework-template");if(a){const r=a;Object.assign(this.config,r),this.originalConfig=JSON.parse(JSON.stringify(r)),this.isNewConfig=!1,this.showMessage("配置已加载","success")}else if(((s=a.error)==null?void 0:s.code)==="NOT_FOUND")this.showMessage("使用默认配置","info"),this.isNewConfig=!0;else{const r=((e=a.error)==null?void 0:e.message)||"加载失败";this.showMessage(`加载失败: ${r},可继续编辑当前配置`,"warning")}}catch(a){console.error("Failed to load config:",a),this.showMessage("加载失败,可继续编辑当前配置","warning")}this.loading=!1},async saveConfig(){this.loading=!0;try{const s=await H.saveData("classworks-config-homework-template",this.config);if(s)this.originalConfig=JSON.parse(JSON.stringify(this.config)),this.isNewConfig=!1,this.showMessage("配置已保存","success");else throw new Error(s||"保存失败")}catch(s){console.error("Failed to save config:",s),this.showMessage(`保存失败: ${s.message},请稍后重试`,"error")}this.loading=!1},showMessage(s,e="success"){this.snackbarText=s,this.snackbarColor=e,this.showSnackbar=!0},addSubject(){this.newSubject&&(this.config.subjects[this.newSubject]||(this.config.subjects[this.newSubject]={books:{}}),this.newSubject="")},updateSubject(s){const e=this.editedSubjects[s];if(e&&e!==s){const a=this.config.subjects[s];this.config.subjects[e]=a,delete this.config.subjects[s]}delete this.editedSubjects[s]},deleteSubject(s){delete this.config.subjects[s]},addBookType(s){const e=this.newBookTypes[s];e&&(this.config.subjects[s].books[e]||(this.config.subjects[s].books[e]=[]),this.newBookTypes[s]="")},updateBookType(s,e){const a=`${s}-${e}`,r=this.editedBookTypes[a];if(r&&r!==e){const i=this.config.subjects[s].books[e];this.config.subjects[s].books[r]=i,delete this.config.subjects[s].books[e]}delete this.editedBookTypes[a]},deleteBookType(s,e){s==="common"?delete this.config.commonSubject.books[e]:delete this.config.subjects[s].books[e]},addBook(s,e){const a=`${s}-${e}`,r=this.newBooks[a];r&&(this.config.subjects[s].books[e].includes(r)||this.config.subjects[s].books[e].push(r),this.newBooks[a]="")},removeBook(s,e,a){const r=this.config.subjects[s].books[e],i=r.indexOf(a);i>-1&&r.splice(i,1)},addCommonBook(){this.newCommonBook&&(this.config.commonSubject.books[this.newCommonBook]||(this.config.commonSubject.books[this.newCommonBook]=[]),this.newCommonBook="")},removeCommonBook(s){delete this.config.commonSubject.books[s]},addAction(){this.newAction&&(this.config.actions.includes(this.newAction)||this.config.actions.push(this.newAction),this.newAction="")},removeAction(s){const e=this.config.actions.indexOf(s);e>-1&&this.config.actions.splice(e,1)},openBookDialog(s,e,a){this.dialog.show=!0,this.dialog.title="编辑需完成部分",this.dialog.nameLabel="部分名称",this.dialog.editedItem={name:a,type:"book",subject:s,bookType:e,originalName:a,tasks:this.config.subjects[s].books[e]}},openCommonBookDialog(s){this.dialog.show=!0,this.dialog.title="编辑通用作业本",this.dialog.nameLabel="作业本名称",this.dialog.editedItem={name:s,type:"commonBook",originalName:s,tasks:Array.isArray(this.config.commonSubject.books[s])?[...this.config.commonSubject.books[s]]:[]}},openActionDialog(s){this.dialog={show:!0,title:"编辑操作",nameLabel:"操作名称",editedItem:{name:s,type:"action",originalName:s,tasks:[]}}},addTask(){this.newTask&&(this.dialog.editedItem.tasks||(this.dialog.editedItem.tasks=[]),this.dialog.editedItem.tasks.push(this.newTask),this.newTask="")},removeTask(s){this.dialog.editedItem.tasks.splice(s,1)},openSubjectBookDialog(s,e,a){this.dialog.show=!0,this.dialog.title=s==="common"?"编辑通用作业本":"编辑作业本",this.dialog.nameLabel="作业本名称",this.dialog.editedItem={name:e,type:"subjectBook",subject:s,originalName:e,tasks:Array.isArray(a)?[...a]:[]}},saveDialog(){const{type:s,name:e,subject:a,originalName:r,tasks:i}=this.dialog.editedItem;if(!e){this.showMessage("名称不能为空","error");return}let l;const d=a==="common"?this.config.commonSubject.books:a?this.config.subjects[a].books:null;switch(s){case"subjectBook":d&&(r!==e?(d[e]=i||[],delete d[r]):d[e]=i||[]);break;case"action":l=this.config.actions.indexOf(r),l>-1&&(this.config.actions[l]=e);break}this.closeDialog()},closeDialog(){this.dialog={show:!1,title:"",nameLabel:"",editedItem:{name:"",type:"",subject:"",originalName:"",tasks:[]}},this.newTask=""}}},Vn={class:"d-flex justify-space-between align-center mb-6"};function Dn(s,e,a,r,i,l){const d=Te,h=F;return c(),p(h,{loading:i.loading,border:"",icon:"mdi-book-edit",title:"作业模板配置"},{default:n(()=>[i.error?(c(),p(L,{key:0,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.error),1)]),_:1})):v("",!0),m("div",Vn,[m("div",null,[t(f,{loading:i.loading,class:"mr-2",color:"primary","prepend-icon":"mdi-refresh",size:"large",onClick:l.loadConfig},{default:n(()=>[...e[7]||(e[7]=[o(" 重新加载配置 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{loading:i.loading,color:"success","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveConfig},{default:n(()=>[...e[8]||(e[8]=[o(" 保存所有更改 ",-1)])]),_:1},8,["loading","onClick"])]),l.hasChanges?(c(),p(z,{key:0,color:"warning",variant:"elevated"},{default:n(()=>[...e[9]||(e[9]=[o(" 有未保存的更改 ",-1)])]),_:1})):v("",!0)]),t(Y,null,{default:n(()=>[t(B,{cols:"12",md:"6"},{default:n(()=>[t(d,{border:"",icon:"mdi-book",title:"科目配置"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{default:n(()=>[t(N,{modelValue:i.newSubject,"onUpdate:modelValue":e[0]||(e[0]=u=>i.newSubject=u),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加新科目",variant:"outlined","onClick:appendInner":l.addSubject,onKeyup:ae(l.addSubject,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),(c(!0),k(O,null,W(l.subjectList,u=>(c(),p(x,{key:u},{default:n(()=>[t(C,{border:"",class:"w-100 mb-2"},{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(N,{modelValue:i.editedSubjects[u],"onUpdate:modelValue":b=>i.editedSubjects[u]=b,placeholder:u,density:"comfortable","hide-details":"",variant:"plain",onBlur:b=>l.updateSubject(u)},null,8,["modelValue","onUpdate:modelValue","placeholder","onBlur"]),t(K),t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:b=>l.deleteSubject(u)},null,8,["onClick"])]),_:2},1024),t(S,null,{default:n(()=>[t(N,{modelValue:i.newBookTypes[u],"onUpdate:modelValue":b=>i.newBookTypes[u]=b,"append-inner-icon":"mdi-plus",class:"mb-2",density:"comfortable",label:"添加作业本名称",variant:"outlined","onClick:appendInner":()=>l.addBookType(u),onKeyup:ae(()=>l.addBookType(u),["enter"])},null,8,["modelValue","onUpdate:modelValue","onClick:appendInner","onKeyup"]),t(M,{border:"",density:"compact",rounded:""},{default:n(()=>[(c(!0),k(O,null,W(i.config.subjects[u].books,(b,T)=>(c(),p(x,{key:T,title:T,onClick:I=>l.openSubjectBookDialog(u,T,b)},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-book-open-variant"})]),append:n(()=>[t(z,{class:"mr-2",color:"info",size:"small"},{default:n(()=>[o(w(b.length)+"个部分 ",1)]),_:2},1024),t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:fe(()=>l.deleteBookType(u,T),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),t(B,{cols:"12",md:"6"},{default:n(()=>[t(d,{border:"",icon:"mdi-cog",title:"通用配置"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{default:n(()=>[t(N,{modelValue:i.newCommonBook,"onUpdate:modelValue":e[1]||(e[1]=u=>i.newCommonBook=u),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加作业本名称",variant:"outlined","onClick:appendInner":l.addCommonBook,onKeyup:ae(l.addCommonBook,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),t(x,null,{default:n(()=>[t(M,{border:"",density:"compact",rounded:""},{default:n(()=>[(c(!0),k(O,null,W(i.config.commonSubject.books,(u,b)=>(c(),p(x,{key:b,title:b,onClick:T=>l.openSubjectBookDialog("common",b,u)},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-book-multiple"})]),append:n(()=>[t(z,{class:"mr-2",color:"info",size:"small"},{default:n(()=>[o(w(u.length)+"个部分 ",1)]),_:2},1024),t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:fe(()=>l.deleteBookType("common",b),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1}),t(A,{class:"my-2"}),t(x,null,{default:n(()=>[t(N,{modelValue:i.newAction,"onUpdate:modelValue":e[2]||(e[2]=u=>i.newAction=u),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加操作",variant:"outlined","onClick:appendInner":l.addAction,onKeyup:ae(l.addAction,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),t(x,null,{default:n(()=>[t(M,{border:"",density:"compact",rounded:""},{default:n(()=>[(c(!0),k(O,null,W(i.config.actions,u=>(c(),p(x,{key:u,title:u,onClick:b=>l.openActionDialog(u)},{append:n(()=>[t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:fe(b=>l.removeAction(u),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t($,{modelValue:i.dialog.show,"onUpdate:modelValue":e[5]||(e[5]=u=>i.dialog.show=u),"max-width":"600px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"text-h5 pa-4"},{default:n(()=>[o(w(i.dialog.title),1)]),_:1}),t(S,null,{default:n(()=>[t(Ee,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{cols:"12"},{default:n(()=>[t(N,{modelValue:i.dialog.editedItem.name,"onUpdate:modelValue":e[3]||(e[3]=u=>i.dialog.editedItem.name=u),label:i.dialog.nameLabel,rules:[u=>!!u||"名称不能为空"],density:"comfortable",variant:"outlined"},null,8,["modelValue","label","rules"])]),_:1}),i.dialog.editedItem.type==="subjectBook"?(c(),p(B,{key:0,cols:"12"},{default:n(()=>[e[10]||(e[10]=m("div",{class:"text-subtitle-2 mb-2"},"所属科目",-1)),t(z,{color:"primary"},{default:n(()=>[o(w(i.dialog.editedItem.subject),1)]),_:1})]),_:1})):v("",!0),["subjectBook","commonBook"].includes(i.dialog.editedItem.type)?(c(),p(B,{key:1,cols:"12"},{default:n(()=>[t(C,{variant:"outlined"},{default:n(()=>[t(P,{class:"text-subtitle-1 py-2"},{default:n(()=>[...e[11]||(e[11]=[o("需完成部分",-1)])]),_:1}),t(S,{class:"pt-0"},{default:n(()=>[t(M,{border:"",class:"mb-2",density:"compact",rounded:""},{default:n(()=>[(c(!0),k(O,null,W(i.dialog.editedItem.tasks,(u,b)=>(c(),p(x,{key:b},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-checkbox-blank-circle-outline",size:"small"})]),append:n(()=>[t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:T=>l.removeTask(b)},null,8,["onClick"])]),default:n(()=>[t(N,{modelValue:i.dialog.editedItem.tasks[b],"onUpdate:modelValue":T=>i.dialog.editedItem.tasks[b]=T,density:"compact","hide-details":"",variant:"plain"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024))),128))]),_:1}),t(N,{modelValue:i.newTask,"onUpdate:modelValue":e[4]||(e[4]=u=>i.newTask=u),"append-inner-icon":"mdi-plus",class:"mt-2",density:"comfortable",label:"添加需完成部分",variant:"outlined","onClick:appendInner":l.addTask,onKeyup:ae(l.addTask,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1})]),_:1})]),_:1})):v("",!0)]),_:1})]),_:1})]),_:1}),t(G,{class:"pa-4"},{default:n(()=>[t(K),t(f,{color:"primary",variant:"elevated",onClick:l.saveDialog},{default:n(()=>[...e[12]||(e[12]=[o(" 关闭 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"error",variant:"text",onClick:l.closeDialog},{default:n(()=>[...e[13]||(e[13]=[o(" 取消 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(Pe,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[6]||(e[6]=u=>i.showSnackbar=u),color:i.snackbarColor,timeout:3e3},{default:n(()=>[o(w(i.snackbarText),1)]),_:1},8,["modelValue","color"])]),_:1},8,["loading"])}const dt=E(_n,[["render",Dn],["__scopeId","data-v-67769fa2"]]),An={name:"SubjectManagementCard",components:{SettingsCard:F},data(){return{loading:!1,error:null,subjects:[],originalSubjects:null,newSubjectName:"",showSnackbar:!1,snackbarText:"",snackbarColor:"success",defaultSubjects:[{name:"语文",order:0},{name:"数学",order:1},{name:"英语",order:2},{name:"物理",order:3},{name:"化学",order:4},{name:"生物",order:5},{name:"政治",order:6},{name:"历史",order:7},{name:"地理",order:8},{name:"其他",order:9}]}},computed:{hasChanges(){return this.originalSubjects&&JSON.stringify(this.subjects)!==JSON.stringify(this.originalSubjects)}},created(){this.loadConfig()},methods:{async loadConfig(){this.loading=!0;try{const s=await H.loadData("classworks-config-subject");s?(this.subjects=s.map((e,a)=>({name:e.name,order:e.order??a})).sort((e,a)=>e.order-a.order),this.originalSubjects=JSON.parse(JSON.stringify(this.subjects)),this.showMessage("配置已加载","success")):(this.subjects=[],this.originalSubjects=[],this.showMessage("使用默认配置","info"))}catch(s){console.error("Failed to load config:",s),this.showMessage("加载失败,可继续编辑当前配置","warning")}this.loading=!1},async saveConfig(){this.loading=!0;try{const s=await H.saveData("classworks-config-subject",this.subjects);if(s)this.originalSubjects=JSON.parse(JSON.stringify(this.subjects)),this.showMessage("配置已保存","success");else throw new Error(s||"保存失败")}catch(s){console.error("Failed to save config:",s),this.showMessage(`保存失败: ${s.message},请稍后重试`,"error")}this.loading=!1},showMessage(s,e="success"){this.snackbarText=s,this.snackbarColor=e,this.showSnackbar=!0},addSubject(){if(!this.newSubjectName)return;const s={name:this.newSubjectName,order:this.subjects.length};this.subjects.push(s),this.newSubjectName=""},updateSubject(s){const e=this.subjects.findIndex(a=>a.order===s.order);e>-1&&(this.subjects[e]={...s})},deleteSubject(s){const e=this.subjects.findIndex(a=>a.order===s.order);e>-1&&(this.subjects.splice(e,1),this.subjects.forEach((a,r)=>{a.order=r}))},moveSubject(s,e){const a=s+e;if(a>=0&&a{i.order=l})}},resetToDefault(){this.subjects=JSON.parse(JSON.stringify(this.defaultSubjects)),this.showMessage("已重置为默认科目列表","info")}}},In={class:"d-flex justify-space-between align-center mb-6"},Tn={class:"d-flex flex-column align-center mr-2"};function Un(s,e,a,r,i,l){const d=F;return c(),p(d,{loading:i.loading,border:"",icon:"mdi-book-multiple",title:"科目管理"},{default:n(()=>[i.error?(c(),p(L,{key:0,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.error),1)]),_:1})):v("",!0),m("div",In,[m("div",null,[t(f,{loading:i.loading,class:"mr-2",color:"primary","prepend-icon":"mdi-refresh",size:"large",variant:"text",onClick:l.loadConfig},{default:n(()=>[...e[2]||(e[2]=[o(" 重新加载 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{loading:i.loading,color:"success","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveConfig},{default:n(()=>[...e[3]||(e[3]=[o(" 保存 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{loading:i.loading,class:"mr-2","prepend-icon":"mdi-restore",variant:"text",onClick:l.resetToDefault},{default:n(()=>[...e[4]||(e[4]=[o(" 重置为默认 ",-1)])]),_:1},8,["loading","onClick"])]),l.hasChanges?(c(),p(z,{key:0,color:"warning",variant:"elevated"},{default:n(()=>[...e[5]||(e[5]=[o(" 有未保存的更改 ",-1)])]),_:1})):v("",!0)]),t(C,{class:"mb-4",variant:"outlined"},{default:n(()=>[t(S,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{cols:"12",sm:"6"},{default:n(()=>[t(N,{modelValue:i.newSubjectName,"onUpdate:modelValue":e[0]||(e[0]=h=>i.newSubjectName=h),rules:[h=>!!h||"科目名称不能为空"],"append-inner-icon":"mdi-plus",density:"comfortable",label:"科目名称",variant:"outlined",onKeyup:ae(l.addSubject,["enter"]),"onClick:appendInner":l.addSubject},null,8,["modelValue","rules","onKeyup","onClick:appendInner"])]),_:1})]),_:1})]),_:1})]),_:1}),t(C,{variant:"outlined"},{default:n(()=>[t(S,{class:"pa-0"},{default:n(()=>[t(M,{lines:"one"},{default:n(()=>[(c(!0),k(O,null,W(i.subjects,(h,u)=>(c(),p(x,{key:h.order},{prepend:n(()=>[m("div",Tn,[t(f,{disabled:u===0,icon:"mdi-chevron-up",size:"small",variant:"text",onClick:b=>l.moveSubject(u,-1)},null,8,["disabled","onClick"]),t(f,{disabled:u===i.subjects.length-1,icon:"mdi-chevron-down",size:"small",variant:"text",onClick:b=>l.moveSubject(u,1)},null,8,["disabled","onClick"])])]),append:n(()=>[t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:b=>l.deleteSubject(h)},null,8,["onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[t(N,{modelValue:h.name,"onUpdate:modelValue":b=>h.name=b,density:"compact","hide-details":"",variant:"plain",onBlur:b=>l.updateSubject(h)},null,8,["modelValue","onUpdate:modelValue","onBlur"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),t(Pe,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[1]||(e[1]=h=>i.showSnackbar=h),color:i.snackbarColor,timeout:3e3},{default:n(()=>[o(w(i.snackbarText),1)]),_:1},8,["modelValue","color"])]),_:1},8,["loading"])}const ct=E(An,[["render",Un],["__scopeId","data-v-f87674cf"]]),jn={};function Bn(s,e,a,r,i,l){const d=le,h=F;return c(),p(h,{icon:"mdi-cog",title:"编辑设置"},{default:n(()=>[t(M,null,{default:n(()=>[t(d,{"setting-key":"randomPicker.enabled"}),t(A,{class:"my-2"}),t(d,{"setting-key":"randomPicker.mode"}),t(A,{class:"my-2"}),t(d,{"setting-key":"randomPicker.minNumber"}),t(A,{class:"my-2"}),t(d,{"setting-key":"randomPicker.maxNumber"}),t(A,{class:"my-2"}),t(d,{"setting-key":"randomPicker.defaultCount"}),t(A,{class:"my-2"}),t(d,{"setting-key":"randomPicker.animation"})]),_:1})]),_:1})}const mt=E(jn,[["render",Bn]]),Nn={name:"HitokotoSettings",components:{SettingGroup:Te,SettingItem:le},data(){return{kvConfig:{sources:["zhaoyu"],sensitiveWords:"",jinrishiciToken:null},loading:!1,testLoading:!1,testMessage:"",testColor:"info",testResultDialog:!1,testResultData:null,enableCloudSensitiveWords:!0}},mounted(){this.loadKvSettings()},methods:{async loadKvSettings(){this.loading=!0;try{const s=await H.loadData("sentence-info");let e=s;s&&s.data&&(e=s.data),e&&(this.kvConfig={sources:Array.isArray(e.sources)?e.sources:["zhaoyu"],sensitiveWords:e.sensitiveWords||"",jinrishiciToken:e.jinrishiciToken})}catch(s){console.error("Failed to load sentence-info",s)}finally{this.loading=!1}},async saveKvSettings(){this.loading=!0;try{if(this.kvConfig.sources.includes("jinrishici")&&!this.kvConfig.jinrishiciToken)try{const s=await De.get("https://v2.jinrishici.com/token");s.data.status==="success"&&(this.kvConfig.jinrishiciToken=s.data.data)}catch(s){console.error("Failed to get jinrishici token",s)}await H.saveData("sentence-info",this.kvConfig)}catch(s){console.error("Failed to save sentence-info",s)}finally{this.loading=!1}},async testJinrishici(){var s,e;this.testLoading=!0,this.testMessage="",this.testColor="info";try{const a={};this.kvConfig.jinrishiciToken&&(a["X-User-Token"]=this.kvConfig.jinrishiciToken);const r=await De.get("https://v2.jinrishici.com/info?X-User-Token="+encodeURIComponent(this.kvConfig.jinrishiciToken));if(r.data&&r.data.status==="success"){this.testResultData=r.data,this.testResultDialog=!0;const i=(s=r.data.data)==null?void 0:s.token,l=(e=r.data.data)==null?void 0:e.region,d=this.kvConfig.jinrishiciToken?i===this.kvConfig.jinrishiciToken:!0;this.testColor=d?"success":"warning",this.testMessage=d?`接口正常,Token 一致:${i}${l?`,地区:${l}`:""}`:`接口返回 Token 与当前设置不一致:${i}${l?`,地区:${l}`:""}`}else this.testColor="error",this.testMessage="接口返回非 success,请检查网络或 Token 配置。"}catch(a){console.error("Failed to test jinrishici info",a),this.testColor="error",this.testMessage="接口测试失败,请检查网络或 Token。"}finally{this.testLoading=!1}}}},Pn={class:"d-flex flex-wrap gap-2"},Mn={class:"text-caption text-orange mt-2"},En={class:"d-flex flex-column flex-sm-row align-center w-100"},zn={key:2,class:"text-center pb-4"},Ln={class:"d-flex align-center mb-2"},Kn={class:"text-body-1 font-weight-medium"},Rn={class:"d-flex align-center mb-2"},On={class:"text-body-1 font-weight-medium"},Fn={class:"d-flex align-center mb-2"},Jn={class:"text-body-1 font-weight-medium"},Qn={class:"d-flex align-center mb-2"},Hn={class:"text-body-2 font-weight-medium"},Gn={class:"d-flex align-center mb-2"},Wn={class:"text-body-1 font-weight-medium"},Yn={class:"d-flex align-center mb-2"},Zn={class:"text-body-1 font-weight-medium"},qn={class:"px-4 py-3"},Xn={class:"d-flex flex-wrap gap-2"};function $n(s,e,a,r,i,l){const d=le,h=Te;return c(),k("div",null,[t(h,{title:"一言设置",icon:"mdi-comment-quote"},{default:n(()=>[t(d,{"setting-key":"hitokoto.enabled"}),t(d,{"setting-key":"hitokoto.refreshInterval"})]),_:1}),t(h,{title:"数据源配置",icon:"mdi-cloud-sync",class:"mt-4"},{default:n(()=>[e[13]||(e[13]=m("div",{class:"text-caption text-grey px-4 pt-2 pb-2"},"以下配置将同步到云端,对所有连接此班级的设备生效。",-1)),t(x,null,{default:n(()=>[t(j,{class:"mb-2"},{default:n(()=>[...e[7]||(e[7]=[o("启用数据源",-1)])]),_:1}),m("div",Pn,[t(ie,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[0]||(e[0]=u=>i.kvConfig.sources=u),l.saveKvSettings],label:"一言 (Hitokoto)",value:"hitokoto","hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"]),t(ie,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[1]||(e[1]=u=>i.kvConfig.sources=u),l.saveKvSettings],label:"诏预 (Zhaoyu)",value:"zhaoyu","hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"]),t(ie,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[2]||(e[2]=u=>i.kvConfig.sources=u),l.saveKvSettings],label:"今日诗词 (Jinrishici)",value:"jinrishici","hide-details":"",density:"compact",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"])]),m("div",Mn,[t(g,{size:"x-small",color:"orange",class:"mr-1"},{default:n(()=>[...e[8]||(e[8]=[o("mdi-alert",-1)])]),_:1}),e[9]||(e[9]=o(" 一言(Hitokoto)数据源已收到关于存在负面内容的大量反馈,请用户谨慎启用。 ",-1))])]),_:1}),i.kvConfig.sources.includes("jinrishici")?(c(),p(x,{key:0},{default:n(()=>[t(N,{modelValue:i.kvConfig.jinrishiciToken,"onUpdate:modelValue":e[3]||(e[3]=u=>i.kvConfig.jinrishiciToken=u),label:"今日诗词 Token",variant:"outlined",density:"comfortable",disabled:i.loading,hint:"留空则自动获取,也可以手动输入已有 Token","persistent-hint":"",class:"mt-2",onChange:l.saveKvSettings},null,8,["modelValue","disabled","onChange"])]),_:1})):v("",!0),i.kvConfig.sources.includes("jinrishici")?(c(),p(x,{key:1},{default:n(()=>[m("div",En,[t(f,{loading:i.testLoading,color:"primary",variant:"outlined",class:"mr-sm-4 mb-2 mb-sm-0",onClick:l.testJinrishici},{default:n(()=>[...e[10]||(e[10]=[o(" 测试今日诗词接口 ",-1)])]),_:1},8,["loading","onClick"]),i.testMessage?(c(),p(L,{key:0,type:i.testColor,density:"comfortable",border:"start",class:"flex-grow-1"},{default:n(()=>[o(w(i.testMessage),1)]),_:1},8,["type"])):v("",!0)])]),_:1})):v("",!0),t(x,null,{default:n(()=>[t(pe,{modelValue:i.kvConfig.sensitiveWords,"onUpdate:modelValue":e[4]||(e[4]=u=>i.kvConfig.sensitiveWords=u),disabled:i.loading,label:"敏感词过滤 (用逗号分隔)",variant:"outlined",rows:"3","auto-grow":"","hide-details":"",class:"mt-2 mb-2",onChange:l.saveKvSettings},null,8,["modelValue","disabled","onChange"])]),_:1}),t(x,null,{default:n(()=>[t(ie,{label:"启用云端敏感词列表","hide-details":"",modelValue:i.enableCloudSensitiveWords,"onUpdate:modelValue":e[5]||(e[5]=u=>i.enableCloudSensitiveWords=u),density:"compact",disabled:"",class:"mb-2"},null,8,["modelValue"]),e[11]||(e[11]=m("div",{class:"text-caption text-grey"},[o(" 已启用的数据源将在获取一言时随机尝试,直到成功获取内容为止。"),m("br"),o(" 敏感词过滤会将包含任意敏感词的句子过滤掉,避免显示不当内容。"),m("br")],-1))]),_:1}),i.loading?(c(),k("div",zn,[t(tt,{indeterminate:"",size:"24",color:"primary"}),e[12]||(e[12]=m("span",{class:"ml-2 text-caption"},"正在同步配置...",-1))])):v("",!0)]),_:1}),t($,{modelValue:i.testResultDialog,"onUpdate:modelValue":e[6]||(e[6]=u=>i.testResultDialog=u),"max-width":"600"},{default:n(()=>[i.testResultData?(c(),p(C,{key:0,class:"rounded-lg"},{default:n(()=>[t(S,{class:"pa-0"},{default:n(()=>[t(M,{lines:"two",class:"py-0"},{default:n(()=>[t(x,{class:"px-4 py-3"},{prepend:n(()=>[t(Ie,{color:"primary",variant:"tonal",class:"mr-2"},{default:n(()=>[t(g,{icon:"mdi-key-variant"})]),_:1})]),default:n(()=>[t(j,{class:"text-subtitle-2 font-weight-bold mb-1"},{default:n(()=>[...e[14]||(e[14]=[o("Token",-1)])]),_:1}),t(Q,{class:"text-body-2 text-high-emphasis",style:{"word-break":"break-all"}},{default:n(()=>[o(w(i.testResultData.data.token),1)]),_:1})]),_:1}),t(A),t(Y,{"no-gutters":""},{default:n(()=>[t(B,{cols:"6"},{default:n(()=>[t(x,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-ip-network",color:"grey-darken-1",class:"mr-2"})]),default:n(()=>[t(j,{class:"text-caption text-grey-darken-1"},{default:n(()=>[...e[15]||(e[15]=[o("IP 地址",-1)])]),_:1}),t(Q,{class:"text-body-2"},{default:n(()=>[o(w(i.testResultData.data.ip),1)]),_:1})]),_:1})]),_:1}),t(B,{cols:"6"},{default:n(()=>[t(x,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-map-marker-radius",color:"grey-darken-1",class:"mr-2"})]),default:n(()=>[t(j,{class:"text-caption text-grey-darken-1"},{default:n(()=>[...e[16]||(e[16]=[o("地区",-1)])]),_:1}),t(Q,{class:"text-body-2"},{default:n(()=>[o(w(i.testResultData.data.region),1)]),_:1})]),_:1})]),_:1})]),_:1}),t(A),t(Ee,{class:"px-4 py-3"},{default:n(()=>[t(Y,{dense:""},{default:n(()=>[t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Ln,[t(g,{icon:"mdi-thermometer",color:"orange",class:"mr-2"}),m("div",null,[e[17]||(e[17]=m("div",{class:"text-caption text-grey"},"温度",-1)),m("div",Kn,w(i.testResultData.data.weatherData.temperature)+"°C",1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Rn,[t(g,{icon:"mdi-weather-cloudy",color:"blue-grey",class:"mr-2"}),m("div",null,[e[18]||(e[18]=m("div",{class:"text-caption text-grey"},"天气",-1)),m("div",On,w(i.testResultData.data.weatherData.weather),1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Fn,[t(g,{icon:"mdi-water-percent",color:"blue",class:"mr-2"}),m("div",null,[e[19]||(e[19]=m("div",{class:"text-caption text-grey"},"湿度",-1)),m("div",Jn,w(i.testResultData.data.weatherData.humidity)+"%",1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Qn,[t(g,{icon:"mdi-weather-windy",color:"teal",class:"mr-2"}),m("div",null,[e[20]||(e[20]=m("div",{class:"text-caption text-grey"},"风向/风力",-1)),m("div",Hn,w(i.testResultData.data.weatherData.windDirection)+" "+w(i.testResultData.data.weatherData.windPower)+"级 ",1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Gn,[t(g,{icon:"mdi-blur",color:"grey",class:"mr-2"}),m("div",null,[e[21]||(e[21]=m("div",{class:"text-caption text-grey"},"PM2.5",-1)),m("div",Wn,w(i.testResultData.data.weatherData.pm25),1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Yn,[t(g,{icon:"mdi-eye",color:"indigo",class:"mr-2"}),m("div",null,[e[22]||(e[22]=m("div",{class:"text-caption text-grey"},"能见度",-1)),m("div",Zn,w(i.testResultData.data.weatherData.visibility),1)])])]),_:1})]),_:1})]),_:1}),t(A),m("div",qn,[e[23]||(e[23]=m("div",{class:"text-caption text-grey mb-2"},"环境标签",-1)),m("div",Xn,[(c(!0),k(O,null,W(i.testResultData.data.tags,u=>(c(),p(z,{key:u,size:"small",color:"primary",variant:"tonal",class:"mr-1 mb-1"},{default:n(()=>[o(w(u),1)]),_:2},1024))),128))])]),t(A),t(x,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-clock-outline",size:"small",class:"mr-2"})]),default:n(()=>[t(j,{class:"text-caption text-grey-darken-1"},{default:n(()=>[o(" 北京时间: "+w(new Date(i.testResultData.data.beijingTime).toLocaleString()),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})):v("",!0)]),_:1},8,["modelValue"])])}const ft=E(Nn,[["render",$n]]),es={name:"NotificationSoundSettings",data(){return{singleSound:"",urgentSound:"",currentAudio:null,showAutoplayWarning:!0}},computed:{soundOptions(){return Jt.map(s=>({title:s.replace(".mp3",""),value:s}))}},mounted(){this.loadSettings()},beforeUnmount(){this.stopPreview()},methods:{loadSettings(){this.singleSound=y("notification.singleSound"),this.urgentSound=y("notification.urgentSound")},onSingleSoundChange(s){var e;ne("notification.singleSound",s),(e=this.$message)==null||e.success("设置已保存",`单次通知铃声: ${s}`)},onUrgentSoundChange(s){var e;ne("notification.urgentSound",s),(e=this.$message)==null||e.success("设置已保存",`紧急通知铃声: ${s}`)},async previewSound(s){var e,a;this.showAutoplayWarning=!1,this.stopPreview();try{const r=await this.playSoundWithPromise(s,!1);this.currentAudio=r,this.currentAudio&&this.currentAudio.addEventListener("ended",()=>{this.currentAudio=null},{once:!0})}catch(r){console.error("播放音频失败:",r),r.name==="NotAllowedError"?(e=this.$message)==null||e.warning("无法播放音频","浏览器阻止了自动播放,请再次点击试听按钮"):(a=this.$message)==null||a.error("播放失败","音频文件加载失败,请稍后重试")}},playSoundWithPromise(s,e=!1){return new Promise((a,r)=>{const i=this.getSoundPath(s);if(!i){r(new Error("音频文件不存在"));return}try{const l=new Audio(i);l.loop=e,l.play().then(()=>{a(l)}).catch(d=>{r(d)})}catch(l){r(l)}})},getSoundPath(s){if(!s)return null;try{return`/sounds/${s}`}catch{return null}},stopPreview(){this.currentAudio&&(Ft(this.currentAudio),this.currentAudio=null)},resetSingleSound(){var s;this.singleSound="Teams 默认.mp3",ne("notification.singleSound",this.singleSound),(s=this.$message)==null||s.success("已恢复单次通知铃声默认设置")},resetUrgentSound(){var s;this.urgentSound="Teams 默认通话铃.mp3",ne("notification.urgentSound",this.urgentSound),(s=this.$message)==null||s.success("已恢复紧急通知铃声默认设置")}}},ts={class:"d-flex align-center"},ns={class:"mt-3 d-flex gap-2"},ss={class:"mt-3 d-flex gap-2"};function is(s,e,a,r,i,l){return c(),p(C,{class:"notification-sound-settings"},{default:n(()=>[t(P,null,{default:n(()=>[...e[5]||(e[5]=[o(" 通知铃声设置 ",-1)])]),_:1}),t(S,null,{default:n(()=>[i.showAutoplayWarning?(c(),p(L,{key:0,type:"info",variant:"tonal",closable:"",class:"mb-4","onClick:close":e[0]||(e[0]=d=>i.showAutoplayWarning=!1)},{default:n(()=>[m("div",ts,[t(g,{class:"mr-2"},{default:n(()=>[...e[6]||(e[6]=[o("mdi-information",-1)])]),_:1}),e[7]||(e[7]=m("span",null,"首次使用请点击试听按钮测试音频播放是否正常",-1))])]),_:1})):v("",!0),t(Y,null,{default:n(()=>[t(B,{cols:"12"},{default:n(()=>[t(C,{border:""},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[8]||(e[8]=[o("mdi-bell-ring",-1)])]),_:1}),e[9]||(e[9]=o(" 单次通知铃声 ",-1))]),_:1}),t(S,null,{default:n(()=>[t(Ve,{modelValue:i.singleSound,"onUpdate:modelValue":[e[1]||(e[1]=d=>i.singleSound=d),l.onSingleSoundChange],items:l.soundOptions,label:"选择铃声","prepend-icon":"mdi-music-note",variant:"outlined",density:"comfortable"},{item:n(({props:d,item:h})=>[t(x,ge(d,{onClick:u=>l.previewSound(h.value)}),{prepend:n(()=>[t(g,null,{default:n(()=>[...e[10]||(e[10]=[o("mdi-music-note",-1)])]),_:1})]),append:n(()=>[t(f,{icon:"",size:"small",variant:"text",onClick:fe(u=>l.previewSound(h.value),["stop"])},{default:n(()=>[t(g,null,{default:n(()=>[...e[11]||(e[11]=[o("mdi-play",-1)])]),_:1})]),_:1},8,["onClick"])]),_:2},1040,["onClick"])]),_:1},8,["modelValue","items","onUpdate:modelValue"]),m("div",ns,[t(f,{color:"primary",variant:"tonal",onClick:e[2]||(e[2]=d=>l.previewSound(i.singleSound))},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[12]||(e[12]=[o("mdi-play",-1)])]),_:1}),e[13]||(e[13]=o(" 试听 ",-1))]),_:1}),t(f,{onClick:l.resetSingleSound},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[14]||(e[14]=[o("mdi-restore",-1)])]),_:1}),e[15]||(e[15]=o(" 恢复 ",-1))]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1}),t(B,{cols:"12"},{default:n(()=>[t(C,{border:""},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{left:"",color:"error"},{default:n(()=>[...e[16]||(e[16]=[o("mdi-bell-alert",-1)])]),_:1}),e[17]||(e[17]=o(" 紧急通知铃声 ",-1))]),_:1}),t(S,null,{default:n(()=>[t(Ve,{modelValue:i.urgentSound,"onUpdate:modelValue":[e[3]||(e[3]=d=>i.urgentSound=d),l.onUrgentSoundChange],items:l.soundOptions,label:"选择铃声","prepend-icon":"mdi-music-note",variant:"outlined",density:"comfortable"},{item:n(({props:d,item:h})=>[t(x,ge(d,{onClick:u=>l.previewSound(h.value)}),{prepend:n(()=>[t(g,null,{default:n(()=>[...e[18]||(e[18]=[o("mdi-music-note",-1)])]),_:1})]),append:n(()=>[t(f,{icon:"",size:"small",variant:"text",onClick:fe(u=>l.previewSound(h.value),["stop"])},{default:n(()=>[t(g,null,{default:n(()=>[...e[19]||(e[19]=[o("mdi-play",-1)])]),_:1})]),_:1},8,["onClick"])]),_:2},1040,["onClick"])]),_:1},8,["modelValue","items","onUpdate:modelValue"]),m("div",ss,[t(f,{color:"error",variant:"tonal",onClick:e[4]||(e[4]=d=>l.previewSound(i.urgentSound))},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[20]||(e[20]=[o("mdi-play",-1)])]),_:1}),e[21]||(e[21]=o(" 试听 ",-1))]),_:1}),t(f,{onClick:l.resetUrgentSound},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[22]||(e[22]=[o("mdi-restore",-1)])]),_:1}),e[23]||(e[23]=o(" 恢复 ",-1))]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const ht=E(es,[["render",is],["__scopeId","data-v-55be56a4"]]),ls={name:"DisplaySettingsCard",components:{SettingsCard:F,SettingItem:le},setup(){return{theme:Qt()}},data(){return{localTheme:y("theme.mode")}},watch:{localTheme(s){ne("theme.mode",s),this.theme.global.name.value=s}}};function os(s,e,a,r,i,l){const d=le,h=F;return c(),p(h,{border:"",icon:"mdi-monitor",title:"显示设置"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-theme-light-dark"})]),append:n(()=>[t(Tt,{modelValue:i.localTheme,"onUpdate:modelValue":e[0]||(e[0]=u=>i.localTheme=u),color:"primary",density:"comfortable"},{default:n(()=>[t(f,{value:"light"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-white-balance-sunny"}),e[3]||(e[3]=o(" 明亮 ",-1))]),_:1}),t(f,{value:"dark"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-moon-waning-crescent"}),e[4]||(e[4]=o(" 暗黑 ",-1))]),_:1})]),_:1},8,["modelValue"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[1]||(e[1]=[o("主题模式",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[2]||(e[2]=[o("选择明亮或暗黑主题",-1)])]),_:1})]),_:1}),t(A,{class:"my-2"}),t(d,{"setting-key":"timeCard.enabled"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.emptySubjectDisplay"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.dynamicSort"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.showRandomButton"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.showFullscreenButton"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.cardHoverEffect"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.enhancedTouchMode"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.showQuickTools"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.showAntiScreenBurnCard"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.showExamScheduleButton"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.forceDesktopMode"}),t(A,{class:"my-2"}),t(d,{"setting-key":"display.lateStudentsArePresent"})]),_:1})]),_:1})}const pt=E(ls,[["render",os]]),as={};function rs(s,e,a,r,i,l){const d=le,h=F;return c(),p(h,{icon:"mdi-cog",title:"编辑设置"},{default:n(()=>[t(M,null,{default:n(()=>[t(d,{"setting-key":"edit.autoSave"}),t(A,{class:"my-2"}),t(d,{"setting-key":"edit.blockNonTodayAutoSave"}),t(A,{class:"my-2"}),t(d,{"setting-key":"edit.confirmNonTodaySave"}),t(A,{class:"my-2"}),t(d,{"setting-key":"edit.refreshBeforeEdit"}),t(A,{class:"my-2"}),t(d,{"setting-key":"edit.autoSavePromptText"}),t(A,{class:"my-2"}),t(d,{"setting-key":"edit.manualSavePromptText"})]),_:1})]),_:1})}const wt=E(as,[["render",rs]]),us={name:"RefreshSettingsCard",components:{SettingsCard:F},data(){return{}}};function ds(s,e,a,r,i,l){const d=le,h=F;return c(),p(h,{icon:"mdi-refresh-circle",title:"刷新设置"},{default:n(()=>[t(lt,null,{default:n(()=>[t(M,null,{default:n(()=>[t(d,{"setting-key":"refresh.auto",title:"自动刷新"}),t(A,{class:"my-2"}),t(d,{"setting-key":"refresh.interval",title:"刷新间隔"})]),_:1})]),_:1})]),_:1})}const gt=E(us,[["render",ds]]),cs={name:"SettingsLinkGenerator",data(){return{selectedItems:[],generatedLink:"",linkCopied:!1,search:"",preconfigForm:{namespace:"",authCode:"",autoExecute:!1},unifiedLink:"",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 s=xe(),e=[];for(const[a,r]of Object.entries(Ne)){if(r.requireDeveloper&&!s["developer.enabled"])continue;const i=s[a]!==r.default;e.push({key:a,description:r.description||a,value:s[a],icon:r.icon||"mdi-cog",isChanged:i,defaultValue:r.default})}return e.sort((a,r)=>a.key.localeCompare(r.key))},filteredItems(){if(!this.search)return this.settingItems;const s=this.search.toLowerCase();return s==="已修改"?this.settingItems.filter(e=>e.isChanged):s==="是"||s==="否"?this.settingItems.filter(e=>typeof e.value=="boolean"&&(s==="是"?e.value:!e.value)):this.settingItems.filter(e=>{const a=e.description.toLowerCase(),r=e.key.toLowerCase(),i=String(e.value).toLowerCase(),l=e.isChanged?"已修改":"默认";return a.includes(s)||r.includes(s)||i.includes(s)||l.includes(s)})},hasDisplaySettings(){return this.selectedItems.some(s=>s.startsWith("display."))},hasEditSettings(){return this.selectedItems.some(s=>s.startsWith("edit."))},hasServerSettings(){return this.selectedItems.some(s=>s.startsWith("server."))},hasChangedSettings(){const s=xe();return this.selectedItems.some(e=>{const a=Ne[e];return a&&s[e]!==a.default})}},methods:{handleSelectionChange(s){this.selectedItems=s.map(e=>e.key),this.generateLink()},generateLink(){const s=`${window.location.protocol}//${window.location.host}/`,e=xe(),a={};for(const r of this.selectedItems)a[r]=e[r];if(Object.keys(a).length===0){this.generatedLink=s;return}try{const r=JSON.stringify(a),l=new TextEncoder().encode(r),h={config:btoa(Array.from(l).map(I=>String.fromCharCode(I)).join(""))},b=new URLSearchParams(window.location.search).get("date");b&&(h.date=b);const T=new URLSearchParams(h).toString();this.generatedLink=`${s}?${T}`}catch(r){console.error("生成链接失败:",r),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(s){console.error("复制链接失败:",s)}},resetSelection(){this.selectedItems=[],this.generatedLink="",this.linkCopied=!1},selectAll(){this.selectedItems=this.settingItems.map(s=>s.key),this.generateLink()},selectDataSourceSettings(){const s=this.settingItems.filter(e=>e.key.startsWith("server.")&&e.key!=="server.kvToken").map(e=>e.key);this.selectedItems=s,this.generateLink()},selectChangedSettings(){const s=this.settingItems.filter(e=>e.isChanged&&e.key!=="server.kvToken").map(e=>e.key);this.selectedItems=s,this.generateLink()},selectByPrefix(s){const e=this.settingItems.filter(a=>a.key.startsWith(`${s}.`)).map(a=>a.key);this.selectedItems=e},autoGenerateLink(){this.selectedItems.length>0?this.generateLink():this.generatedLink=""},getSettingDescription(s){const e=this.settingItems.find(a=>a.key===s);return e?e.description:s},generateUnifiedLink(){if(this.preconfigForm.namespace.trim())try{const s=`${window.location.protocol}//${window.location.host}/`,e=new URLSearchParams;if(e.append("namespace",this.preconfigForm.namespace.trim()),this.preconfigForm.authCode.trim()&&e.append("authCode",this.preconfigForm.authCode.trim()),this.preconfigForm.autoExecute&&e.append("autoExecute","true"),this.selectedItems.length>0){const a=xe(),r={};for(const u of this.selectedItems)r[u]=a[u];const i=JSON.stringify(r),d=new TextEncoder().encode(i),h=btoa(Array.from(d).map(u=>String.fromCharCode(u)).join(""));e.append("config",h)}this.unifiedLink=`${s}?${e.toString()}`,this.linkCopied=!1,console.log("生成统一链接:",this.unifiedLink),console.log("包含预配置:",!!this.preconfigForm.namespace),console.log("包含设置数量:",this.selectedItems.length)}catch(s){console.error("生成统一链接失败:",s),this.unifiedLink="链接生成失败,请重试"}},async copyUnifiedLink(){if(this.unifiedLink||this.generateUnifiedLink(),!(!this.unifiedLink||this.unifiedLink.includes("失败")))try{await navigator.clipboard.writeText(this.unifiedLink),this.linkCopied=!0,setTimeout(()=>{this.linkCopied=!1},3e3)}catch(s){console.error("复制统一链接失败:",s)}},openTestLink(){this.unifiedLink&&!this.unifiedLink.includes("失败")&&window.open(this.unifiedLink,"_blank")},clearAll(){this.preconfigForm={namespace:"",authCode:"",autoExecute:!1},this.selectedItems=[],this.unifiedLink="",this.generatedLink="",this.linkCopied=!1}},watch:{selectedItems:{handler(){this.preconfigForm.namespace.trim()&&this.generateUnifiedLink()},deep:!0},"preconfigForm.namespace":{handler(){this.preconfigForm.namespace.trim()?this.generateUnifiedLink():this.unifiedLink=""}},"preconfigForm.authCode":{handler(){this.preconfigForm.namespace.trim()&&this.generateUnifiedLink()}},"preconfigForm.autoExecute":{handler(){this.preconfigForm.namespace.trim()&&this.generateUnifiedLink()}}}},ms={class:"d-flex mb-3 gap-2 flex-wrap"},fs={class:"d-flex align-center mb-3 flex-wrap gap-2"},hs={class:"d-flex align-center"},ps={class:"d-flex align-center"},ws={key:0},gs={key:1},vs={key:2},bs={class:"text-caption text-grey"},ks={class:"d-flex mb-3 gap-2 flex-wrap"},ys={class:"d-flex flex-wrap gap-1"};function xs(s,e,a,r,i,l){return c(),k("div",null,[t(C,{border:"",class:"unified-link-generator"},{default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-link-variant",start:""}),e[6]||(e[6]=o(" 统一链接生成器 ",-1))]),_:1}),t(S,null,{default:n(()=>[e[35]||(e[35]=m("div",{class:"text-body-2 text-medium-emphasis mb-4"}," 生成包含预配置认证信息和设置的统一链接。可以同时预配置设备认证和应用设置。 ",-1)),t(C,{class:"mb-4",variant:"tonal"},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[7]||(e[7]=[o("mdi-account-key",-1)])]),_:1}),e[8]||(e[8]=o(" 预配置认证信息 ",-1))]),_:1}),t(S,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{cols:"12",md:"6"},{default:n(()=>[t(N,{modelValue:i.preconfigForm.namespace,"onUpdate:modelValue":e[0]||(e[0]=d=>i.preconfigForm.namespace=d),hint:"设备的命名空间标识符",label:"命名空间","persistent-hint":"",placeholder:"例如: classroom-001","prepend-inner-icon":"mdi-identifier",variant:"outlined"},null,8,["modelValue"])]),_:1}),t(B,{cols:"12",md:"6"},{default:n(()=>[t(N,{modelValue:i.preconfigForm.authCode,"onUpdate:modelValue":e[1]||(e[1]=d=>i.preconfigForm.authCode=d),hint:"留空则需要用户手动输入",label:"认证码","persistent-hint":"",placeholder:"设备认证码(可选)","prepend-inner-icon":"mdi-lock-outline",variant:"outlined"},null,8,["modelValue"])]),_:1})]),_:1}),t(Y,{class:"mt-2"},{default:n(()=>[t(B,{cols:"12"},{default:n(()=>[t(ie,{modelValue:i.preconfigForm.autoExecute,"onUpdate:modelValue":e[2]||(e[2]=d=>i.preconfigForm.autoExecute=d),density:"compact",hint:"启用后会自动尝试认证,即使没有认证码也会尝试",label:"自动执行认证","persistent-hint":""},null,8,["modelValue"])]),_:1})]),_:1}),i.preconfigForm.namespace?(c(),p(L,{key:0,class:"mt-3",type:"info",variant:"tonal"},{default:n(()=>[e[13]||(e[13]=m("div",{class:"text-subtitle-2 mb-2"},"预配置信息:",-1)),t(z,{class:"mr-2 mb-1",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[9]||(e[9]=[o("mdi-identifier",-1)])]),_:1}),o(" 命名空间: "+w(i.preconfigForm.namespace),1)]),_:1}),i.preconfigForm.authCode?(c(),p(z,{key:0,class:"mr-2 mb-1",color:"warning",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[10]||(e[10]=[o("mdi-lock",-1)])]),_:1}),o(" 认证码: "+w(i.preconfigForm.authCode.length>8?i.preconfigForm.authCode.substring(0,8)+"...":i.preconfigForm.authCode),1)]),_:1})):(c(),p(z,{key:1,class:"mr-2 mb-1",color:"grey",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[11]||(e[11]=[o("mdi-lock-open",-1)])]),_:1}),e[12]||(e[12]=o(" 无认证码 ",-1))]),_:1})),t(z,{color:i.preconfigForm.autoExecute?"success":"orange",class:"mr-2 mb-1",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[o(w(i.preconfigForm.autoExecute?"mdi-play-circle":"mdi-hand-back-left"),1)]),_:1}),o(" "+w(i.preconfigForm.autoExecute?"自动认证":"手动认证"),1)]),_:1},8,["color"])]),_:1})):v("",!0)]),_:1})]),_:1}),t(C,{class:"mb-4",variant:"tonal"},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[14]||(e[14]=[o("mdi-cog-transfer",-1)])]),_:1}),e[15]||(e[15]=o(" 设置分享(可选) ",-1))]),_:1}),t(S,null,{default:n(()=>[e[22]||(e[22]=m("div",{class:"text-body-2 text-medium-emphasis mb-3"}," 选择需要包含在链接中的设置项。如果不选择任何设置,将只生成预配置认证链接。 ",-1)),m("div",ms,[t(f,{color:"primary","prepend-icon":"mdi-server-network",size:"small",variant:"tonal",onClick:l.selectDataSourceSettings},{default:n(()=>[...e[16]||(e[16]=[o(" 数据源设置 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"primary","prepend-icon":"mdi-compare",size:"small",variant:"tonal",onClick:l.selectChangedSettings},{default:n(()=>[...e[17]||(e[17]=[o(" 已变更设置 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"success","prepend-icon":"mdi-select-all",size:"small",variant:"tonal",onClick:l.selectAll},{default:n(()=>[...e[18]||(e[18]=[o(" 全选 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"error","prepend-icon":"mdi-select-remove",size:"small",variant:"tonal",onClick:l.resetSelection},{default:n(()=>[...e[19]||(e[19]=[o(" 清除选择 ",-1)])]),_:1},8,["onClick"])]),m("div",fs,[t(z,{class:"mr-2",color:"primary"},{default:n(()=>[o(" 已选 "+w(i.selectedItems.length)+" 项设置 ",1)]),_:1}),i.selectedItems.length>0?(c(),k(O,{key:0},[(c(!0),k(O,null,W(i.selectedItems.slice(0,3),d=>(c(),p(z,{key:d,class:"mr-1",size:"small",variant:"text"},{default:n(()=>[o(w(l.getSettingDescription(d)),1)]),_:2},1024))),128)),i.selectedItems.length>3?(c(),p(z,{key:0,color:"grey",size:"small",variant:"text"},{default:n(()=>[o(" +"+w(i.selectedItems.length-3)+" 更多 ",1)]),_:1})):v("",!0)],64)):v("",!0)]),t(ze,{variant:"accordion"},{default:n(()=>[t(Le,null,{default:n(()=>[t(ot,null,{default:n(({expanded:d})=>[m("div",hs,[t(g,{class:"mr-2"},{default:n(()=>[o(w(d?"mdi-chevron-up":"mdi-chevron-down"),1)]),_:2},1024),e[20]||(e[20]=o(" 显示设置列表详情 ",-1))])]),_:1}),t(Ke,null,{default:n(()=>[t(N,{modelValue:i.search,"onUpdate:modelValue":e[3]||(e[3]=d=>i.search=d),class:"mb-4",clearable:"","hide-details":"",label:"搜索设置","prepend-inner-icon":"mdi-magnify","single-line":""},null,8,["modelValue"]),t(at,{modelValue:i.selectedItems,"onUpdate:modelValue":e[4]||(e[4]=d=>i.selectedItems=d),headers:i.headers,items:l.filteredItems,"items-per-page":l.settingItems.length,"sort-by":[{key:"isChanged",order:"desc"}],class:"rounded setting-table",density:"compact","item-value":"key","show-select":"","onUpdate:selected":l.handleSelectionChange},{"item.description":n(({item:d})=>[m("div",ps,[t(g,{icon:d.icon,class:"mr-2",size:"small"},null,8,["icon"]),o(" "+w(d.description)+" ",1),d.key==="server.kvToken"?(c(),p(z,{key:0,class:"ml-2",color:"error",size:"x-small"},{default:n(()=>[...e[21]||(e[21]=[o(" 敏感 ",-1)])]),_:1})):v("",!0)])]),"item.value":n(({item:d})=>[typeof d.value=="boolean"?(c(),k("span",ws,w(d.value?"是":"否"),1)):d.key==="server.kvToken"&&d.value?(c(),k("span",gs,w(d.value.substring(0,8))+"... ",1)):(c(),k("span",vs,w(d.value),1))]),"item.key":n(({item:d})=>[m("span",bs,w(d.key),1)]),"item.isChanged":n(({item:d})=>[t(z,{color:d.isChanged?"warning":"success",text:d.isChanged?"已修改":"默认",density:"compact",size:"x-small"},null,8,["color","text"])]),_:2},1032,["modelValue","headers","items","items-per-page","onUpdate:selected"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(C,{class:"mb-4",variant:"outlined"},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[23]||(e[23]=[o("mdi-link",-1)])]),_:1}),e[24]||(e[24]=o(" 生成的统一链接 ",-1))]),_:1}),t(S,null,{default:n(()=>[m("div",ks,[t(f,{disabled:!i.preconfigForm.namespace.trim(),color:"primary","prepend-icon":"mdi-auto-fix",variant:"flat",onClick:l.generateUnifiedLink},{default:n(()=>[...e[25]||(e[25]=[o(" 生成统一链接 ",-1)])]),_:1},8,["disabled","onClick"]),t(f,{disabled:!i.unifiedLink,color:"success","prepend-icon":"mdi-test-tube",variant:"tonal",onClick:l.openTestLink},{default:n(()=>[...e[26]||(e[26]=[o(" 测试链接 ",-1)])]),_:1},8,["disabled","onClick"]),t(f,{color:"error","prepend-icon":"mdi-delete",variant:"tonal",onClick:l.clearAll},{default:n(()=>[...e[27]||(e[27]=[o(" 清空所有 ",-1)])]),_:1},8,["onClick"])]),t(N,{modelValue:i.unifiedLink,"onUpdate:modelValue":e[5]||(e[5]=d=>i.unifiedLink=d),"append-inner-icon":i.linkCopied?"mdi-check":"mdi-content-copy",placeholder:i.preconfigForm.namespace?"点击「生成统一链接」按钮":"请先输入命名空间",class:"mb-3",label:"统一链接",readonly:"",variant:"outlined","onClick:appendInner":l.copyUnifiedLink},null,8,["modelValue","append-inner-icon","placeholder","onClick:appendInner"]),i.unifiedLink?(c(),p(L,{key:0,class:"mb-3",type:"success",variant:"tonal"},{default:n(()=>[e[33]||(e[33]=m("div",{class:"text-subtitle-2 mb-2"},"链接包含内容:",-1)),m("div",ys,[t(z,{color:"primary",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[28]||(e[28]=[o("mdi-account-key",-1)])]),_:1}),e[29]||(e[29]=o(" 预配置认证 ",-1))]),_:1}),i.selectedItems.length>0?(c(),p(z,{key:0,color:"secondary",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[30]||(e[30]=[o("mdi-cog",-1)])]),_:1}),o(" "+w(i.selectedItems.length)+" 项设置 ",1)]),_:1})):(c(),p(z,{key:1,color:"grey",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[31]||(e[31]=[o("mdi-cog-off",-1)])]),_:1}),e[32]||(e[32]=o(" 无额外设置 ",-1))]),_:1}))])]),_:1})):v("",!0)]),_:1})]),_:1}),t(L,{type:"warning",variant:"tonal"},{default:n(()=>[...e[34]||(e[34]=[m("div",{class:"text-subtitle-2 mb-2"},"⚠️ 安全提醒",-1),m("ul",{class:"text-body-2 pl-4"},[m("li",null,"认证码和设置信息会在URL中传输,请谨慎分发"),m("li",null,"建议仅在受信任的网络环境中使用"),m("li",null,"生产环境建议使用HTTPS协议"),m("li",null,"数据源设置和已变更设置默认不包含敏感Token信息")],-1)])]),_:1})]),_:1})]),_:1})])}const vt=E(cs,[["render",xs]]),Ss={name:"UnsavedWarning",props:{show:Boolean,message:{type:String,default:"未保存"}}},Cs={class:"warning-container"};function _s(s,e,a,r,i,l){return c(),k("div",Cs,[a.show?(c(),p(z,{key:0,class:"warning-chip",color:"warning",size:"small"},{default:n(()=>[o(w(a.message),1)]),_:1})):v("",!0)])}const Ue=E(Ss,[["render",_s],["__scopeId","data-v-0f36b655"]]),Vs=Wt({disabled:Boolean,modelValue:{type:Boolean,default:null},...jt()},"VHover"),bt=Ht()({name:"VHover",props:Vs(),emits:{"update:modelValue":s=>!0},setup(s,e){let{slots:a}=e;const r=Gt(s,"modelValue"),{runOpenDelay:i,runCloseDelay:l}=Ut(s,d=>!s.disabled&&(r.value=d));return()=>{var d;return(d=a.default)==null?void 0:d.call(a,{isHovering:r.value,props:{onMouseenter:i,onMouseleave:l}})}}}),Ds={name:"TeacherListCard",components:{UnsavedWarning:Ue},props:{isMobile:Boolean},data(){return{newTeacher:{name:"",subjects:[],isHeadTeacher:!1},editState:{index:-1,teacher:null},modelValue:{list:[],text:"",advanced:!1},loading:!1,error:null,lastSavedData:null,unsavedChanges:!1,commonSubjects:["语文","数学","英语","物理","化学","生物","政治","历史","地理","信息技术","音乐","美术","体育"]}},watch:{modelValue:{handler(s){this.lastSavedData&&(this.unsavedChanges=JSON.stringify(s.list)!==JSON.stringify(this.lastSavedData)),this.modelValue.advanced||(this.modelValue.text=JSON.stringify(s.list,null,2))},deep:!0}},mounted(){this.loadTeachers()},methods:{async loadTeachers(){var s;this.error=null;try{if(this.loading=!0,!y("server.classNumber"))throw new Error("请先设置班号");try{const a=await H.loadData("classworks-list-teacher");a.success!==!1&&Array.isArray(a)&&(this.modelValue.list=a.map(r=>({name:r.name||"",subjects:Array.isArray(r.subjects)?r.subjects:[],isHeadTeacher:!!r.isHeadTeacher})),this.modelValue.text=JSON.stringify(this.modelValue.list,null,2),this.lastSavedData=JSON.parse(JSON.stringify(this.modelValue.list)),this.unsavedChanges=!1)}catch(a){console.warn("Failed to load teacher list, initializing empty list",a),this.modelValue.list=[],this.modelValue.text="[]",this.lastSavedData=[]}}catch(e){console.error("加载教师列表失败:",e),this.error=e.message||"加载失败,请检查设置",(s=this.$message)==null||s.error("加载失败",this.error)}finally{this.loading=!1}},async saveTeachers(){var s,e,a;try{if(!y("server.classNumber"))throw new Error("请先设置班号");const i=this.modelValue.list.map(d=>({name:d.name,subjects:Array.isArray(d.subjects)?d.subjects:[],isHeadTeacher:!!d.isHeadTeacher})),l=await H.saveData("classworks-list-teacher",i);if(l.success===!1)throw new Error(((s=l.error)==null?void 0:s.message)||"保存失败");this.modelValue.list=i,this.lastSavedData=JSON.parse(JSON.stringify(i)),this.unsavedChanges=!1,(e=this.$message)==null||e.success("保存成功","教师列表已更新")}catch(r){console.error("保存教师列表失败:",r),(a=this.$message)==null||a.error("保存失败",r.message||"请重试")}},toggleAdvanced(){this.modelValue.advanced=!this.modelValue.advanced,this.modelValue.advanced&&(this.modelValue.text=JSON.stringify(this.modelValue.list,null,2))},handleTextInput(s){if(this.modelValue.advanced)try{const e=JSON.parse(s);Array.isArray(e)?(this.modelValue.list=e.map(a=>({name:a.name||"",subjects:Array.isArray(a.subjects)?a.subjects:[],isHeadTeacher:!!a.isHeadTeacher})),this.error=null):this.error="JSON 必须是一个数组"}catch(e){this.error="JSON 格式错误: "+e.message}},addTeacher(){var e,a;const s=this.newTeacher.name.trim();if(!s){(e=this.$message)==null||e.warning("提示","请输入教师姓名");return}if(this.newTeacher.subjects.length===0){(a=this.$message)==null||a.warning("提示","请选择至少一个任教科目");return}this.modelValue.list.push({name:s,subjects:[...this.newTeacher.subjects],isHeadTeacher:this.newTeacher.isHeadTeacher}),this.newTeacher={name:"",subjects:[],isHeadTeacher:!1}},startEdit(s,e){this.editState.index=s,this.editState.teacher={name:e.name,subjects:[...e.subjects],isHeadTeacher:e.isHeadTeacher}},saveEdit(){var s,e;if(this.editState.index!==-1){const a=this.editState.teacher.name.trim();if(!a){(s=this.$message)==null||s.warning("提示","教师姓名不能为空");return}if(this.editState.teacher.subjects.length===0){(e=this.$message)==null||e.warning("提示","请选择至少一个任教科目");return}this.modelValue.list[this.editState.index]={name:a,subjects:[...this.editState.teacher.subjects],isHeadTeacher:this.editState.teacher.isHeadTeacher},this.editState.index=-1,this.editState.teacher=null}},cancelEdit(){this.editState.index=-1,this.editState.teacher=null},removeTeacher(s){s!==void 0&&this.modelValue.list.splice(s,1)},handleClick(s,e){this.isMobile&&this.startEdit(s,e)}}},As={key:0},Is={class:"d-flex align-start mb-3"},Ts={class:"flex-grow-1"},Us={class:"d-flex align-center mb-1"},js=["onClick"],Bs={key:0,class:"mt-2"},Ns={key:1,class:"mt-1"},Ps={key:1,class:"pt-2"};function Ms(s,e,a,r,i,l){const d=Ue;return c(),p(C,{class:_e({"unsaved-changes":i.unsavedChanges}),color:i.unsavedChanges?"warning-subtle":void 0,border:""},{default:n(()=>[t(we,null,{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-account-tie",size:"large"})]),append:n(()=>[t(d,{show:i.unsavedChanges,message:"有未保存的更改"},null,8,["show"]),t(f,{color:i.modelValue.advanced?"primary":void 0,"prepend-icon":"mdi-code-braces",variant:"text",onClick:l.toggleAdvanced},{default:n(()=>[o(w(i.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[...e[4]||(e[4]=[o("教师列表",-1)])]),_:1})]),_:1}),t(S,null,{default:n(()=>[i.loading?(c(),p(Ae,{key:0,class:"mb-4",color:"primary",indeterminate:""})):v("",!0),i.error?(c(),p(L,{key:1,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.error),1)]),_:1})):v("",!0),t(nt,null,{default:n(()=>[i.modelValue.advanced?(c(),k("div",Ps,[t(pe,{modelValue:i.modelValue.text,"onUpdate:modelValue":[e[3]||(e[3]=h=>i.modelValue.text=h),l.handleTextInput],hint:"JSON 格式编辑教师列表。每个教师需包含 name、subjects(数组)、isHeadTeacher(布尔值)",label:"批量编辑教师列表 (JSON)","persistent-hint":"",placeholder:'[{"name":"教师姓名","subjects":["语文","数学"],"isHeadTeacher":true}]',rows:"15",variant:"outlined"},null,8,["modelValue","onUpdate:modelValue"])])):(c(),k("div",As,[t(C,{class:"mb-6",variant:"outlined"},{default:n(()=>[t(S,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{cols:"12",md:"4"},{default:n(()=>[t(N,{modelValue:i.newTeacher.name,"onUpdate:modelValue":e[0]||(e[0]=h=>i.newTeacher.name=h),density:"comfortable","hide-details":"",label:"教师姓名",placeholder:"输入教师姓名","prepend-inner-icon":"mdi-account",variant:"outlined"},null,8,["modelValue"])]),_:1}),t(B,{cols:"12",md:"5"},{default:n(()=>[t(Je,{modelValue:i.newTeacher.subjects,"onUpdate:modelValue":e[1]||(e[1]=h=>i.newTeacher.subjects=h),items:i.commonSubjects,chips:"",clearable:"","closable-chips":"",density:"comfortable","hide-details":"",label:"任教科目",multiple:"",placeholder:"选择或输入科目","prepend-inner-icon":"mdi-book-open-variant",variant:"outlined"},null,8,["modelValue","items"])]),_:1}),t(B,{cols:"12",md:"3",class:"d-flex align-center gap-2"},{default:n(()=>[t(ie,{modelValue:i.newTeacher.isHeadTeacher,"onUpdate:modelValue":e[2]||(e[2]=h=>i.newTeacher.isHeadTeacher=h),density:"comfortable","hide-details":"",label:"班主任"},null,8,["modelValue"]),t(f,{disabled:!i.newTeacher.name.trim()||i.newTeacher.subjects.length===0,color:"primary","prepend-icon":"mdi-plus",onClick:l.addTeacher},{default:n(()=>[...e[5]||(e[5]=[o(" 添加教师 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1}),i.modelValue.list.length===0?(c(),p(Y,{key:0},{default:n(()=>[t(B,{cols:"12"},{default:n(()=>[t(L,{type:"info",variant:"tonal"},{default:n(()=>[...e[6]||(e[6]=[o(" 暂无教师信息,请添加教师 ",-1)])]),_:1})]),_:1})]),_:1})):(c(),p(Y,{key:1},{default:n(()=>[(c(!0),k(O,null,W(i.modelValue.list,(h,u)=>(c(),p(B,{key:u,cols:"12",lg:"6",xl:"4"},{default:n(()=>[t(bt,null,{default:n(({isHovering:b,props:T})=>[t(C,ge({elevation:a.isMobile?1:b?4:1,border:"",class:"teacher-card"},{ref_for:!0},T),{default:n(()=>[t(S,{class:"pa-4"},{default:n(()=>[m("div",Is,[t(Ie,{color:h.isHeadTeacher?"primary":"grey-lighten-1",class:"mr-3",size:"48"},{default:n(()=>[t(g,{icon:h.isHeadTeacher?"mdi-star":"mdi-account",size:"28"},null,8,["icon"])]),_:2},1032,["color"]),m("div",Ts,[m("div",Us,[i.editState.index===u?(c(),p(N,{key:0,modelValue:i.editState.teacher.name,"onUpdate:modelValue":I=>i.editState.teacher.name=I,autofocus:"",class:"flex-grow-1",density:"compact","hide-details":"",variant:"underlined"},null,8,["modelValue","onUpdate:modelValue"])):(c(),k("span",{key:1,class:"text-h6 font-weight-medium",onClick:I=>l.handleClick(u,h)},w(h.name),9,js)),h.isHeadTeacher?(c(),p(z,{key:2,class:"ml-2",color:"primary",density:"comfortable",size:"small",variant:"flat"},{default:n(()=>[...e[7]||(e[7]=[o(" 班主任 ",-1)])]),_:1})):v("",!0)]),i.editState.index===u?(c(),k("div",Bs,[t(Je,{modelValue:i.editState.teacher.subjects,"onUpdate:modelValue":I=>i.editState.teacher.subjects=I,items:i.commonSubjects,chips:"","closable-chips":"",density:"compact","hide-details":"",label:"任教科目",multiple:"",variant:"outlined"},null,8,["modelValue","onUpdate:modelValue","items"]),t(ie,{modelValue:i.editState.teacher.isHeadTeacher,"onUpdate:modelValue":I=>i.editState.teacher.isHeadTeacher=I,class:"mt-2",density:"compact","hide-details":"",label:"班主任"},null,8,["modelValue","onUpdate:modelValue"])])):(c(),k("div",Ns,[(c(!0),k(O,null,W(h.subjects,(I,te)=>(c(),p(z,{key:te,class:"mr-1 mb-1",density:"comfortable",size:"small",variant:"tonal"},{default:n(()=>[o(w(I),1)]),_:2},1024))),128))]))]),m("div",{class:_e([{"opacity-100":b||a.isMobile||i.editState.index===u},"d-flex gap-1 action-buttons ml-2"])},[i.editState.index===u?(c(),p(f,{key:0,color:"success",icon:"mdi-check",size:"small",variant:"text",onClick:l.saveEdit},null,8,["onClick"])):v("",!0),i.editState.index===u?(c(),p(f,{key:1,color:"grey",icon:"mdi-close",size:"small",variant:"text",onClick:l.cancelEdit},null,8,["onClick"])):(c(),p(f,{key:2,color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:I=>l.startEdit(u,h)},null,8,["onClick"])),i.editState.index!==u?(c(),p(f,{key:3,color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:I=>l.removeTeacher(u)},null,8,["onClick"])):v("",!0)],2)])]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1}))]))]),_:1}),t(Y,{class:"mt-6"},{default:n(()=>[t(B,{class:"d-flex gap-2",cols:"12"},{default:n(()=>[t(f,{disabled:i.loading,loading:i.loading,color:"primary","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveTeachers},{default:n(()=>[...e[8]||(e[8]=[o(" 保存教师列表 ",-1)])]),_:1},8,["disabled","loading","onClick"]),t(f,{disabled:i.loading,loading:i.loading,color:"error","prepend-icon":"mdi-refresh",size:"large",variant:"outlined",onClick:l.loadTeachers},{default:n(()=>[...e[9]||(e[9]=[o(" 重载教师列表 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["class","color"])}const kt=E(Ds,[["render",Ms],["__scopeId","data-v-16455a49"]]);let Be=null;async function Es(){return Be||(Be=(await $e(async()=>{const{pinyin:s}=await import("./index-fer6T-lk.js");return{pinyin:s}},[],import.meta.url)).pinyin),Be}const zs={name:"StudentListCard",components:{UnsavedWarning:Ue},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(s){this.lastSavedData&&(this.unsavedChanges=JSON.stringify(s.list)!==JSON.stringify(this.lastSavedData)),this.modelValue.advanced||(this.modelValue.text=s.list.slice().sort((e,a)=>e.id-a.id).map(e=>e.name).join(` +`))},deep:!0}},mounted(){this.loadStudents()},methods:{async loadStudents(){var s;this.error=null;try{if(this.loading=!0,!y("server.classNumber"))throw new Error("请先设置班号");try{const a=await H.loadData("classworks-list-main");a.success!=!1&&Array.isArray(a)&&(this.modelValue.list=a.map((r,i)=>typeof r=="string"?{id:i+1,name:r}:{id:r.id||i+1,name:r.name||r.toString()}),this.modelValue.list.sort((r,i)=>r.id-i.id),this.modelValue.text=this.modelValue.list.map(r=>r.name).join(` +`),this.lastSavedData=JSON.parse(JSON.stringify(this.modelValue.list)),this.unsavedChanges=!1)}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||"加载失败,请检查设置",(s=this.$message)==null||s.error("加载失败",this.error)}finally{this.loading=!1}},async saveStudents(){var s,e,a;try{if(!y("server.classNumber"))throw new Error("请先设置班号");const i=this.modelValue.list.slice().sort((d,h)=>d.id-h.id).map((d,h)=>({id:h+1,name:d.name})),l=await H.saveData("classworks-list-main",i);if(l.success===!1)throw new Error(((s=l.error)==null?void 0:s.message)||"保存失败");this.modelValue.list=i,this.lastSavedData=JSON.parse(JSON.stringify(i)),this.unsavedChanges=!1,(e=this.$message)==null||e.success("保存成功","学生列表已更新")}catch(r){console.error("保存学生列表失败:",r),(a=this.$message)==null||a.error("保存失败",r.message||"请重试")}},toggleAdvanced(){this.modelValue.advanced=!this.modelValue.advanced},handleTextInput(s){if(!this.modelValue.advanced)return;const e=s.split(` +`).filter(l=>l.trim()),a=new Map(this.modelValue.list.map(l=>[l.name,l.id]));let r=Math.max(0,...this.modelValue.list.map(l=>l.id));const i=e.map(l=>(l=l.trim(),a.has(l)?{id:a.get(l),name:l}:{id:++r,name:l}));this.modelValue.list=i},addStudent(){const s=this.newStudentName.trim();if(s&&!this.modelValue.list.some(e=>e.name===s)){const e=Math.max(0,...this.modelValue.list.map(a=>a.id));this.modelValue.list.push({id:e+1,name:s}),this.newStudentName=""}},startEdit(s,e){this.editState.index=s,this.editState.name=e.name},saveEdit(){if(this.editState.index!==-1){const s=this.editState.name.trim();s&&s!==this.modelValue.list[this.editState.index].name&&(this.modelValue.list[this.editState.index].name=s),this.editState.index=-1,this.editState.name=""}},removeStudent(s){s!==void 0&&this.modelValue.list.splice(s,1)},moveStudent(s,e){if(e==="top"){if(s>0){const a=this.modelValue.list[s];this.modelValue.list.splice(s,1),this.modelValue.list.unshift(a),this.modelValue.list.forEach((r,i)=>r.id=i+1)}}else{const a=e==="up"?s-1:s+1;a>=0&&a{const i=s(a.name,{toneType:"none"}),l=s(r.name,{toneType:"none"});return i.localeCompare(l)});e.forEach((a,r)=>a.id=r+1),this.modelValue.list=e}}},Ls={key:0},Ks=["onClick"],Rs={key:1,class:"pt-2"};function Os(s,e,a,r,i,l){const d=Ue;return c(),p(C,{class:_e({"unsaved-changes":i.unsavedChanges}),color:i.unsavedChanges?"warning-subtle":void 0,border:""},{default:n(()=>[t(we,null,{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-account-group",size:"large"})]),append:n(()=>[t(d,{show:i.unsavedChanges,message:"有未保存的更改"},null,8,["show"]),t(f,{disabled:i.modelValue.list.length===0,class:"mr-2","prepend-icon":"mdi-sort-alphabetical-variant",variant:"text",onClick:l.sortStudentsByPinyin},{default:n(()=>[...e[4]||(e[4]=[o(" 按姓名首字母排序 ",-1)])]),_:1},8,["disabled","onClick"]),t(f,{color:i.modelValue.advanced?"primary":void 0,"prepend-icon":"mdi-code-braces",variant:"text",onClick:l.toggleAdvanced},{default:n(()=>[o(w(i.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[...e[3]||(e[3]=[o("学生列表",-1)])]),_:1})]),_:1}),t(S,null,{default:n(()=>[i.loading?(c(),p(Ae,{key:0,class:"mb-4",color:"primary",indeterminate:""})):v("",!0),i.error?(c(),p(L,{key:1,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.error),1)]),_:1})):v("",!0),t(nt,null,{default:n(()=>[i.modelValue.advanced?(c(),k("div",Rs,[t(pe,{modelValue:i.modelValue.text,"onUpdate:modelValue":[e[2]||(e[2]=h=>i.modelValue.text=h),l.handleTextInput],hint:"使用文本编辑模式批量编辑学生名单,保存时会自动去除空行",label:"批量编辑学生列表","persistent-hint":"",placeholder:"每行输入一个学生姓名",rows:"10",variant:"outlined"},null,8,["modelValue","onUpdate:modelValue"])])):(c(),k("div",Ls,[t(Y,{class:"mb-6"},{default:n(()=>[t(B,{cols:"12",md:"4",sm:"6"},{default:n(()=>[t(N,{modelValue:i.newStudentName,"onUpdate:modelValue":e[0]||(e[0]=h=>i.newStudentName=h),class:"mb-4","hide-details":"",label:"添加学生",placeholder:"输入学生姓名后回车添加","prepend-inner-icon":"mdi-account-plus",variant:"outlined",onKeyup:ae(l.addStudent,["enter"])},{append:n(()=>[t(f,{disabled:!i.newStudentName.trim(),color:"primary",icon:"mdi-plus",variant:"text",onClick:l.addStudent},null,8,["disabled","onClick"])]),_:1},8,["modelValue","onKeyup"])]),_:1})]),_:1}),t(Y,null,{default:n(()=>[(c(!0),k(O,null,W(i.modelValue.list,(h,u)=>(c(),p(B,{key:u,cols:"12",lg:"3",md:"4",sm:"6"},{default:n(()=>[t(bt,null,{default:n(({isHovering:b,props:T})=>[t(C,ge({elevation:a.isMobile?1:b?4:1,border:"",class:"student-card"},{ref_for:!0},T),{default:n(()=>[t(S,{class:"d-flex align-center pa-3"},{default:n(()=>[t(it,{"open-on-hover":!a.isMobile,location:"bottom"},{activator:n(({props:I})=>[t(f,ge({class:"mr-3 font-weight-medium",size:"small"},{ref_for:!0},I,{variant:"tonal"}),{default:n(()=>[o(w(u+1),1)]),_:2},1040)]),default:n(()=>[t(M,{density:"compact",nav:""},{default:n(()=>[t(x,{disabled:u===0,"prepend-icon":"mdi-arrow-up-bold",onClick:I=>l.moveStudent(u,"top")},{default:n(()=>[...e[5]||(e[5]=[o(" 置顶 ",-1)])]),_:1},8,["disabled","onClick"]),t(A),t(x,{disabled:u===0,"prepend-icon":"mdi-arrow-up",onClick:I=>l.moveStudent(u,"up")},{default:n(()=>[...e[6]||(e[6]=[o(" 上移 ",-1)])]),_:1},8,["disabled","onClick"]),t(x,{disabled:u===i.modelValue.list.length-1,"prepend-icon":"mdi-arrow-down",onClick:I=>l.moveStudent(u,"down")},{default:n(()=>[...e[7]||(e[7]=[o(" 下移 ",-1)])]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:2},1032,["open-on-hover"]),i.editState.index===u?(c(),p(N,{key:0,modelValue:i.editState.name,"onUpdate:modelValue":e[1]||(e[1]=I=>i.editState.name=I),autofocus:"",class:"flex-grow-1",density:"compact","hide-details":"",variant:"underlined",onBlur:l.saveEdit,onKeyup:ae(l.saveEdit,["enter"])},null,8,["modelValue","onBlur","onKeyup"])):(c(),k("span",{key:1,class:"text-body-1 flex-grow-1",onClick:I=>l.handleClick(u,h)},w(h.name),9,Ks)),m("div",{class:_e([{"opacity-100":b||a.isMobile},"d-flex gap-1 action-buttons"])},[t(f,{color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:I=>l.startEdit(u,h)},null,8,["onClick"]),t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:I=>l.removeStudent(u)},null,8,["onClick"])],2)]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]))]),_:1}),t(Y,{class:"mt-6"},{default:n(()=>[t(B,{class:"d-flex gap-2",cols:"12"},{default:n(()=>[t(f,{disabled:i.loading,loading:i.loading,color:"primary","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveStudents},{default:n(()=>[...e[8]||(e[8]=[o(" 保存名单 ",-1)])]),_:1},8,["disabled","loading","onClick"]),t(f,{disabled:i.loading,loading:i.loading,color:"error","prepend-icon":"mdi-refresh",size:"large",variant:"outlined",onClick:l.loadStudents},{default:n(()=>[...e[9]||(e[9]=[o(" 重载名单 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["class","color"])}const yt=E(zs,[["render",Os],["__scopeId","data-v-4feed29c"]]),Fs={key:0,class:"d-flex justify-center align-center fill-height"},Js={key:1,class:"d-flex justify-center align-center fill-height"},Qs={key:2},Hs={class:"text-caption ml-4 text-medium-emphasis"},Gs={key:0},Ws={key:1},Ys={class:"text-error"},xt={__name:"CloudMigrationDialog",props:{modelValue:Boolean},emits:["update:modelValue"],setup(s,{emit:e}){const a=s,r=e,i=Z(!1),l=Z(!1),d=Z(!1),h=Z([]),u=Z([]),b=Z(!1),T=Z(null),I=Z(null),te=[{id:"student-list",label:"学生列表",description:"classworks-list-main",matcher:D=>D==="classworks-list-main"||D.startsWith("classworks-list-main")},{id:"homework-data",label:"作业数据",description:"classworks-data-*",matcher:D=>D.startsWith("classworks-data-")},{id:"lists",label:"列表",description:"classworks-list-*",matcher:D=>D.startsWith("classworks-list-")},{id:"other",label:"其他",description:"所有其他键",matcher:D=>!D.startsWith("classworks-data-")&&!D.startsWith("classworks-list-")}];Oe(()=>a.modelValue,D=>{i.value=D,D&&re()}),Oe(i,D=>{r("update:modelValue",D)});const re=async()=>{l.value=!0;try{const D=await Fe.loadKeys({limit:1e3});h.value=D.keys||[],u.value=[]}catch(D){console.error(D)}finally{l.value=!1}},q=D=>h.value.filter(D.matcher),ve=D=>q(D).length,ue=D=>{const _=q(D);return _.length===0?!1:_.filter(V=>u.value.includes(V)).length===_.length},de=D=>{const _=q(D);if(_.length===0)return!1;const U=_.filter(V=>u.value.includes(V)).length;return U>0&&U<_.length},oe=D=>{const _=q(D);if(_.length===0)return;const U=ue(D),V=new Set(u.value);U?_.forEach(J=>V.delete(J)):_.forEach(J=>V.add(J)),u.value=Array.from(V)},be=async()=>{var D,_,U;d.value=!0,I.value=null,T.value=null;try{const V={};for(const me of u.value){const se=await Fe.loadData(me);if(se){if(se&&se.success===!1&&se.error){console.warn(`Skipping key ${me} due to load error`,se.error);continue}V[me]=se}}const J=y("server.domain"),ee=y("server.kvToken");if(!J||!ee)throw new Error("请先配置服务器地址和 Token");const R=J.replace(/\/$/,""),ce=await Kt.post(`${R}/kv/_batchimport`,V,{headers:{Authorization:`Bearer ${ee}`,"Content-Type":"application/json"}});if(ce.data&&ce.data.code===200)T.value=ce.data.data,b.value=!0,i.value=!1;else throw new Error(((D=ce.data)==null?void 0:D.message)||"迁移失败")}catch(V){console.error(V),I.value=((U=(_=V.response)==null?void 0:_.data)==null?void 0:U.message)||V.message||"发生未知错误",b.value=!0}finally{d.value=!1}};return(D,_)=>(c(),k(O,null,[t($,{modelValue:i.value,"onUpdate:modelValue":_[2]||(_[2]=U=>i.value=U),"max-width":"600",scrollable:""},{default:n(()=>[t(C,null,{default:n(()=>[t(P,null,{default:n(()=>[..._[5]||(_[5]=[o("迁移到云端",-1)])]),_:1}),t(S,{style:{height:"400px"}},{default:n(()=>[l.value?(c(),k("div",Fs,[t(tt,{indeterminate:"",color:"primary"})])):h.value.length===0?(c(),k("div",Js," 没有找到本地数据 ")):(c(),k("div",Qs,[t(M,{"select-strategy":"classic",class:"mb-4"},{default:n(()=>[t(Bt,null,{default:n(()=>[..._[6]||(_[6]=[o("选择数据类型",-1)])]),_:1}),(c(),k(O,null,W(te,U=>t(x,{key:U.id,onClick:V=>oe(U)},{prepend:n(()=>[t(Qe,{"model-value":ue(U),indeterminate:de(U),onClick:fe(V=>oe(U),["stop"])},null,8,["model-value","indeterminate","onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[o(w(U.label),1)]),_:2},1024),t(Q,null,{default:n(()=>[o(w(U.description)+" ("+w(ve(U))+" 项)",1)]),_:2},1024)]),_:2},1032,["onClick"])),64))]),_:1}),t(A,{class:"mb-4"}),t(ze,null,{default:n(()=>[t(Le,{title:"详细数据列表"},{default:n(()=>[t(Ke,null,{default:n(()=>[t(M,{"select-strategy":"classic",density:"compact"},{default:n(()=>[(c(!0),k(O,null,W(h.value,U=>(c(),p(x,{key:U,value:U},{prepend:n(()=>[t(Qe,{modelValue:u.value,"onUpdate:modelValue":_[0]||(_[0]=V=>u.value=V),value:U},null,8,["modelValue","value"])]),default:n(()=>[t(j,null,{default:n(()=>[o(w(U),1)]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]))]),_:1}),t(A),t(G,null,{default:n(()=>[m("div",Hs," 已选择 "+w(u.value.length)+" 项 ",1),t(K),t(f,{variant:"text",onClick:_[1]||(_[1]=U=>i.value=!1)},{default:n(()=>[..._[7]||(_[7]=[o("取消",-1)])]),_:1}),t(f,{color:"primary",onClick:be,loading:d.value,disabled:u.value.length===0},{default:n(()=>[..._[8]||(_[8]=[o(" 开始迁移 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:b.value,"onUpdate:modelValue":_[4]||(_[4]=U=>b.value=U),"max-width":"500"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,null,{default:n(()=>[..._[9]||(_[9]=[o("迁移结果",-1)])]),_:1}),t(S,null,{default:n(()=>[T.value?(c(),k("div",Gs,[m("p",null,"总计: "+w(T.value.summary.total),1),m("p",null,"成功: "+w(T.value.summary.successful),1),m("p",null,"失败: "+w(T.value.summary.failed),1)])):I.value?(c(),k("div",Ws,[m("p",Ys,w(I.value),1)])):v("",!0)]),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{color:"primary",onClick:_[3]||(_[3]=U=>b.value=!1)},{default:n(()=>[..._[10]||(_[10]=[o("关闭",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])],64))}},Zs={name:"KvDatabaseCard",components:{SettingsCard:F,CloudMigrationDialog:xt},data(){return{loading:!1,loadingData:!1,savingData:!1,deletingData:!1,kvData:[],searchQuery:"",viewDialog:!1,editDialog:!1,deleteDialog:!1,createDialog:!1,cloudUrlDialog:!1,showMigrationDialog:!1,selectedItem:null,editingItem:null,itemToDelete:null,selectedCloudItem:null,gettingCloudUrl:!1,cloudUrlResult:null,cloudUrlError:null,cloudUrlOptions:{migrateFromLocal:!0,autoConfigureCloud:!0},editingData:"",newKey:"",newData:"",tableHeaders:[{title:"键名",key:"key",sortable:!0},{title:"操作",key:"actions",sortable:!1,width:"120px"}]}},computed:{currentProvider(){return y("server.provider")},isKvProvider(){return this.currentProvider==="kv-local"||this.currentProvider==="kv-server"||this.currentProvider==="classworkscloud"},connectionStatus(){return this.isKvProvider?this.currentProvider==="kv-local"?"本地数据库":"服务器数据库":"当前数据提供者不支持KV数据库管理"},connectionIcon(){return this.isKvProvider?this.currentProvider==="kv-local"?"mdi-database":"mdi-database-sync":"mdi-database-off"},connectionColor(){return this.isKvProvider?"success":"error"},filteredKvData(){return this.searchQuery?this.kvData.filter(s=>s.key.toLowerCase().includes(this.searchQuery.toLowerCase())):this.kvData},isValidJson(){if(!this.editingData)return!0;try{return JSON.parse(this.editingData),!0}catch{return!1}},isValidNewJson(){if(!this.newData)return!0;try{return JSON.parse(this.newData),!0}catch{return!1}},isValidKey(){return!this.newKey||this.newKey.trim()===""?!1:!this.kvData.some(s=>s.key===this.newKey.trim())}},async mounted(){this.isKvProvider&&await this.loadKvData()},methods:{async refreshConnection(){this.loading=!0;try{await new Promise(s=>setTimeout(s,500)),this.$message.success("连接状态已刷新")}catch(s){this.$message.error("刷新失败",s.message)}finally{this.loading=!1}},async loadKvData(){var s;if(!this.isKvProvider){this.$message.warning("当前数据提供者不支持KV数据库管理");return}this.loadingData=!0;try{this.kvData=[];const e=await H.loadKeys({sortBy:"key",sortDir:"asc",limit:1e3});if(e.success===!1)throw new Error(((s=e.error)==null?void 0:s.message)||"获取键名列表失败");this.kvData=e.keys.map(a=>({key:a,value:null,loaded:!1})),this.$message.success("键名加载完成",`共找到 ${this.kvData.length} 个键,总计 ${e.total_rows} 个键`)}catch(e){this.$message.error("加载数据失败",e.message)}finally{this.loadingData=!1}},async viewItem(s){this.selectedItem=s,this.viewDialog=!0,(!s.loaded||s.value===null)&&await this.loadItemData(s)},async editItem(s){this.editingItem=s,(!s.loaded||s.value===null)&&await this.loadItemData(s),this.editingData=this.formatJsonData(s.value),this.editDialog=!0},async loadItemData(s){try{const e=await H.loadData(s.key);if(e&&e.success!==!1)s.value=e,s.loaded=!0;else throw new Error("数据加载失败")}catch(e){this.$message.error("加载数据失败",e.message),s.value=null,s.loaded=!1}},closeEditDialog(){this.editDialog=!1,this.editingItem=null,this.editingData=""},createNewItem(){this.newKey="",this.newData=`{ + "example": "value" +}`,this.createDialog=!0},closeCreateDialog(){this.createDialog=!1,this.newKey="",this.newData=""},async saveNewData(){var s;if(!(!this.isValidKey||!this.isValidNewJson)){this.savingData=!0;try{const e=JSON.parse(this.newData),a=this.newKey.trim(),r=await H.saveData(a,e);if(r&&!r.error)this.kvData.push({key:a,value:e,loaded:!0}),this.$message.success("数据创建成功"),this.closeCreateDialog();else throw new Error(((s=r.error)==null?void 0:s.message)||"创建失败")}catch(e){this.$message.error("创建失败",e.message)}finally{this.savingData=!1}}},async saveEditedData(){var s;if(!(!this.isValidJson||!this.editingItem)){this.savingData=!0;try{const e=JSON.parse(this.editingData),a=await H.saveData(this.editingItem.key,e);if(a&&!a.error){const r=this.kvData.findIndex(i=>i.key===this.editingItem.key);r!==-1&&(this.kvData[r].value=e,this.kvData[r].loaded=!0),this.$message.success("数据保存成功"),this.closeEditDialog()}else throw new Error(((s=a.error)==null?void 0:s.message)||"保存失败")}catch(e){this.$message.error("保存失败",e.message)}finally{this.savingData=!1}}},confirmDelete(s){this.itemToDelete=s,this.deleteDialog=!0},async deleteItem(){if(this.itemToDelete){this.deletingData=!0;try{this.currentProvider==="kv-local"?await(await Rt("ClassworksDB",2)).transaction("kv","readwrite").objectStore("kv").delete(this.itemToDelete.key):await H.saveData(this.itemToDelete.key,null);const s=this.kvData.findIndex(e=>e.key===this.itemToDelete.key);s!==-1&&this.kvData.splice(s,1),this.$message.success("数据删除成功"),this.deleteDialog=!1,this.itemToDelete=null}catch(s){this.$message.error("删除失败",s.message)}finally{this.deletingData=!1}}},formatJsonData(s){try{return JSON.stringify(s,null,2)}catch{return String(s)}},async copyToClipboard(s){try{const e=this.formatJsonData(s);await navigator.clipboard.writeText(e),this.$message.success("数据已复制到剪贴板")}catch(e){this.$message.error("复制失败",e.message)}},async getCloudUrl(s){this.selectedCloudItem=s,this.cloudUrlResult=null,this.cloudUrlError=null,this.cloudUrlDialog=!0,await this.fetchCloudUrl()},async fetchCloudUrl(){var s;if(this.selectedCloudItem){this.gettingCloudUrl=!0,this.cloudUrlError=null;try{const e=await H.getKeyCloudUrl(this.selectedCloudItem.key,this.cloudUrlOptions);e.success?(this.cloudUrlResult=e,this.$message.success("云端地址获取成功")):(this.cloudUrlError=((s=e.error)==null?void 0:s.message)||"获取云端地址失败",this.$message.error("获取失败",this.cloudUrlError))}catch(e){this.cloudUrlError=e.message||"获取云端地址时发生错误",this.$message.error("获取失败",this.cloudUrlError)}finally{this.gettingCloudUrl=!1}}},async refreshCloudUrl(){await this.fetchCloudUrl()},async copyCloudUrl(){var s;if((s=this.cloudUrlResult)!=null&&s.url)try{await navigator.clipboard.writeText(this.cloudUrlResult.url),this.$message.success("云端地址已复制到剪贴板")}catch(e){this.$message.error("复制失败",e.message)}},openCloudUrl(){var s;if((s=this.cloudUrlResult)!=null&&s.url)try{window.open(this.cloudUrlResult.url,"_blank")}catch(e){this.$message.error("打开链接失败",e.message)}}}},qs={class:"text-primary"},Xs={class:"mt-2"},$s={key:0,class:"mb-2"},ei={key:1,class:"mb-2"};function ti(s,e,a,r,i,l){const d=xt,h=F;return c(),p(h,{loading:i.loading,icon:"mdi-database-edit",title:"KV数据库管理"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{prepend:n(()=>[t(g,{color:l.connectionColor,icon:l.connectionIcon,class:"mr-3"},null,8,["color","icon"])]),append:n(()=>[t(f,{loading:i.loading,variant:"tonal",onClick:l.refreshConnection},{default:n(()=>[...e[20]||(e[20]=[o(" 刷新 ",-1)])]),_:1},8,["loading","onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[19]||(e[19]=[o("数据库状态",-1)])]),_:1}),t(Q,null,{default:n(()=>[o(w(l.connectionStatus),1)]),_:1})]),_:1}),t(A,{class:"my-2"}),t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-format-list-bulleted"})]),append:n(()=>[t(Re,{variant:"tonal"},{default:n(()=>[t(f,{loading:i.loadingData,onClick:l.loadKvData},{default:n(()=>[...e[22]||(e[22]=[o(" 加载数据 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{disabled:!l.isKvProvider,onClick:l.createNewItem},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-plus"}),e[23]||(e[23]=o(" 新建 ",-1))]),_:1},8,["disabled","onClick"]),t(f,{onClick:e[0]||(e[0]=u=>i.showMigrationDialog=!0)},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-cloud-upload"}),e[24]||(e[24]=o(" 从本地迁移 ",-1))]),_:1})]),_:1})]),default:n(()=>[t(j,null,{default:n(()=>[...e[21]||(e[21]=[o("数据条目",-1)])]),_:1}),t(Q,null,{default:n(()=>[o("共 "+w(i.kvData.length)+" 条记录",1)]),_:1})]),_:1})]),_:1}),i.kvData.length>0?(c(),p(C,{key:0,class:"mt-4",variant:"outlined"},{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-table"}),e[25]||(e[25]=o(" KV数据列表 ",-1)),t(K),t(N,{modelValue:i.searchQuery,"onUpdate:modelValue":e[1]||(e[1]=u=>i.searchQuery=u),clearable:"",density:"compact","hide-details":"",label:"搜索键名","prepend-inner-icon":"mdi-magnify",style:{"max-width":"300px"},variant:"outlined"},null,8,["modelValue"])]),_:1}),t(at,{headers:i.tableHeaders,items:l.filteredKvData,"items-per-page":10,loading:i.loadingData,class:"elevation-0","item-value":"key"},{"item.key":n(({item:u})=>[m("code",qs,w(u.key),1)]),"item.actions":n(({item:u})=>[t(Re,{density:"compact",variant:"text"},{default:n(()=>[t(f,{icon:"mdi-eye",size:"small",title:"查看",onClick:b=>l.viewItem(u)},null,8,["onClick"]),t(f,{icon:"mdi-pencil",size:"small",title:"编辑",onClick:b=>l.editItem(u)},null,8,["onClick"]),t(f,{color:"primary",icon:"mdi-cloud-download",size:"small",title:"获取云端地址",onClick:b=>l.getCloudUrl(u)},null,8,["onClick"]),t(f,{color:"error",icon:"mdi-delete",size:"small",title:"删除",onClick:b=>l.confirmDelete(u)},null,8,["onClick"])]),_:2},1024)]),_:2},1032,["headers","items","loading"])]),_:1})):v("",!0),t($,{modelValue:i.viewDialog,"onUpdate:modelValue":e[5]||(e[5]=u=>i.viewDialog=u),"max-width":"800px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-eye"}),e[26]||(e[26]=o(" 查看数据 ",-1)),t(K),t(f,{icon:"mdi-close",variant:"text",onClick:e[2]||(e[2]=u=>i.viewDialog=!1)})]),_:1}),i.selectedItem?(c(),p(Se,{key:0},{default:n(()=>[e[27]||(e[27]=o(" 键名: ",-1)),m("code",null,w(i.selectedItem.key),1)]),_:1})):v("",!0),t(S,null,{default:n(()=>[i.selectedItem?(c(),p(pe,{key:0,"model-value":l.formatJsonData(i.selectedItem.value),class:"font-monospace",label:"数据内容",readonly:"",rows:"15",variant:"outlined"},null,8,["model-value"])):v("",!0)]),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{variant:"tonal",onClick:e[3]||(e[3]=u=>{var b;return l.copyToClipboard((b=i.selectedItem)==null?void 0:b.value)})},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-content-copy"}),e[28]||(e[28]=o(" 复制数据 ",-1))]),_:1}),t(f,{variant:"text",onClick:e[4]||(e[4]=u=>i.viewDialog=!1)},{default:n(()=>[...e[29]||(e[29]=[o(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:i.editDialog,"onUpdate:modelValue":e[7]||(e[7]=u=>i.editDialog=u),"max-width":"800px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-pencil"}),e[30]||(e[30]=o(" 编辑数据 ",-1)),t(K),t(f,{icon:"mdi-close",variant:"text",onClick:l.closeEditDialog},null,8,["onClick"])]),_:1}),i.editingItem?(c(),p(Se,{key:0},{default:n(()=>[e[31]||(e[31]=o(" 键名: ",-1)),m("code",null,w(i.editingItem.key),1)]),_:1})):v("",!0),t(S,null,{default:n(()=>[t(pe,{modelValue:i.editingData,"onUpdate:modelValue":e[6]||(e[6]=u=>i.editingData=u),error:!l.isValidJson,"error-messages":l.isValidJson?[]:["请输入有效的JSON格式"],class:"font-monospace",label:"数据内容 (JSON格式)",rows:"15",variant:"outlined"},null,8,["modelValue","error","error-messages"])]),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{variant:"text",onClick:l.closeEditDialog},{default:n(()=>[...e[32]||(e[32]=[o(" 取消 ",-1)])]),_:1},8,["onClick"]),t(f,{disabled:!l.isValidJson,loading:i.savingData,color:"primary",variant:"tonal",onClick:l.saveEditedData},{default:n(()=>[...e[33]||(e[33]=[o(" 保存 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:i.createDialog,"onUpdate:modelValue":e[10]||(e[10]=u=>i.createDialog=u),"max-width":"800px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-plus"}),e[34]||(e[34]=o(" 新建数据 ",-1)),t(K),t(f,{icon:"mdi-close",variant:"text",onClick:l.closeCreateDialog},null,8,["onClick"])]),_:1}),t(S,null,{default:n(()=>[t(N,{modelValue:i.newKey,"onUpdate:modelValue":e[8]||(e[8]=u=>i.newKey=u),error:!l.isValidKey,"error-messages":l.isValidKey?[]:["键名不能为空且不能与现有键重复"],class:"mb-4",label:"键名",placeholder:"请输入键名,如:my-config",variant:"outlined"},null,8,["modelValue","error","error-messages"]),t(pe,{modelValue:i.newData,"onUpdate:modelValue":e[9]||(e[9]=u=>i.newData=u),error:!l.isValidNewJson,"error-messages":l.isValidNewJson?[]:["请输入有效的JSON格式"],class:"font-monospace",label:"数据内容 (JSON格式)",placeholder:'请输入JSON数据,如:{"name": "value"}',rows:"15",variant:"outlined"},null,8,["modelValue","error","error-messages"])]),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{variant:"text",onClick:l.closeCreateDialog},{default:n(()=>[...e[35]||(e[35]=[o(" 取消 ",-1)])]),_:1},8,["onClick"]),t(f,{disabled:!l.isValidKey||!l.isValidNewJson,loading:i.savingData,color:"primary",variant:"tonal",onClick:l.saveNewData},{default:n(()=>[...e[36]||(e[36]=[o(" 创建 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:i.cloudUrlDialog,"onUpdate:modelValue":e[15]||(e[15]=u=>i.cloudUrlDialog=u),"max-width":"800px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cloud-download"}),e[37]||(e[37]=o(" 获取云端访问地址 ",-1)),t(K),t(f,{icon:"mdi-close",variant:"text",onClick:e[11]||(e[11]=u=>i.cloudUrlDialog=!1)})]),_:1}),i.selectedCloudItem?(c(),p(Se,{key:0},{default:n(()=>[e[38]||(e[38]=o(" 键名: ",-1)),m("code",null,w(i.selectedCloudItem.key),1)]),_:1})):v("",!0),t(S,null,{default:n(()=>[i.cloudUrlError?(c(),p(L,{key:0,class:"mb-4",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.cloudUrlError),1)]),_:1})):v("",!0),i.cloudUrlResult&&i.cloudUrlResult.success?(c(),p(L,{key:1,class:"mb-4",type:"success",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[39]||(e[39]=[o("云端地址获取成功",-1)])]),_:1}),m("div",Xs,[i.cloudUrlResult.migrated?(c(),k("div",$s,[t(g,{class:"mr-1",color:"success",icon:"mdi-database-arrow-up"}),e[40]||(e[40]=o(" 数据已从本地迁移到云端 ",-1))])):v("",!0),i.cloudUrlResult.configured?(c(),k("div",ei,[t(g,{class:"mr-1",color:"info",icon:"mdi-cog"}),e[41]||(e[41]=o(" 云端配置已自动设置 ",-1))])):v("",!0)])]),_:1})):v("",!0),i.cloudUrlResult&&i.cloudUrlResult.url?(c(),p(N,{key:2,"model-value":i.cloudUrlResult.url,"append-inner-icon":"mdi-content-copy",class:"font-monospace",label:"云端访问地址",readonly:"",variant:"outlined","onClick:appendInner":l.copyCloudUrl},null,8,["model-value","onClick:appendInner"])):v("",!0),i.cloudUrlResult&&i.cloudUrlResult.url?(c(),p(ze,{key:3,class:"mt-4"},{default:n(()=>[t(Le,null,{default:n(()=>[t(ot,null,{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cog"}),e[42]||(e[42]=o(" 高级选项 ",-1))]),_:1}),t(Ke,null,{default:n(()=>[t(ie,{modelValue:i.cloudUrlOptions.migrateFromLocal,"onUpdate:modelValue":e[12]||(e[12]=u=>i.cloudUrlOptions.migrateFromLocal=u),density:"compact",label:"从本地迁移数据到云端"},null,8,["modelValue"]),t(ie,{modelValue:i.cloudUrlOptions.autoConfigureCloud,"onUpdate:modelValue":e[13]||(e[13]=u=>i.cloudUrlOptions.autoConfigureCloud=u),density:"compact",label:"自动配置云端默认设置"},null,8,["modelValue"]),t(f,{loading:i.gettingCloudUrl,class:"mt-2",color:"primary",variant:"tonal",onClick:l.refreshCloudUrl},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-refresh"}),e[43]||(e[43]=o(" 重新获取 ",-1))]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1})):v("",!0)]),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{variant:"text",onClick:e[14]||(e[14]=u=>i.cloudUrlDialog=!1)},{default:n(()=>[...e[44]||(e[44]=[o(" 关闭 ",-1)])]),_:1}),i.cloudUrlResult&&i.cloudUrlResult.url?(c(),p(f,{key:0,color:"primary",variant:"tonal",onClick:l.openCloudUrl},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-open-in-new"}),e[45]||(e[45]=o(" 在新窗口打开 ",-1))]),_:1},8,["onClick"])):v("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:i.deleteDialog,"onUpdate:modelValue":e[17]||(e[17]=u=>i.deleteDialog=u),"max-width":"400px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center text-error"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-alert"}),e[46]||(e[46]=o(" 确认删除 ",-1))]),_:1}),t(S,null,{default:n(()=>{var u;return[e[48]||(e[48]=o(" 确定要删除键名为 ",-1)),m("code",null,w((u=i.itemToDelete)==null?void 0:u.key),1),e[49]||(e[49]=o(" 的数据吗? ",-1)),e[50]||(e[50]=m("br",null,null,-1)),e[51]||(e[51]=m("br",null,null,-1)),t(L,{class:"mt-2",type:"warning",variant:"tonal"},{default:n(()=>[...e[47]||(e[47]=[o(" 此操作不可撤销,请谨慎操作! ",-1)])]),_:1})]}),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{variant:"text",onClick:e[16]||(e[16]=u=>i.deleteDialog=!1)},{default:n(()=>[...e[52]||(e[52]=[o(" 取消 ",-1)])]),_:1}),t(f,{loading:i.deletingData,color:"error",variant:"tonal",onClick:l.deleteItem},{default:n(()=>[...e[53]||(e[53]=[o(" 删除 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(d,{modelValue:i.showMigrationDialog,"onUpdate:modelValue":e[18]||(e[18]=u=>i.showMigrationDialog=u)},null,8,["modelValue"])]),_:1},8,["loading"])}const St=E(Zs,[["render",ti],["__scopeId","data-v-67879974"]]),ni={name:"DataProviderSettingsCard",components:{SettingsCard:F},data(){return{loading:!1,serverchecktime:{},confirmDialog:!1,confirmTitle:"",confirmMessage:"",confirmAction:null,machineId:null,migrateLoading:!1}},computed:{currentProvider(){return y("server.provider")},isKvProvider(){return this.currentProvider==="kv-local"||this.currentProvider==="kv-server"||this.currentProvider==="classworkscloud"}},async created(){this.machineId=y("device.uuid")},methods:{async checkServerConnection(){this.loading=!0,this.serverchecktime=new Date;const s=[];try{const e=y("server.siteKey"),a={Accept:"application/json"};if(e&&(a["x-site-key"]=e),Zt()){const r=await qt(async h=>{const u=await De.get(`${h}/check`,{method:"GET",headers:a});if(u.data.status!=="success")throw new Error("服务器响应异常");return u},{onServerTried:({url:h,status:u,tried:b})=>{s.length=0,s.push(...b)}}),i=new Date-this.serverchecktime,l=s.find(h=>h.status==="success");let d=`服务器连接正常 延迟${i}ms`;if(s.length>1){const h=s.map((u,b)=>`${b+1}. ${u.url} (${u.status==="success"?"成功":"失败"})`).join(` +`);d+=` + +依次尝试的服务器: +${h}`}else l&&(d+=` +服务器: ${l.url}`);this.$message.success("连接成功",d)}else{const r=y("server.domain");if((await De.get(`${r}/check`,{method:"GET",headers:a})).data.status==="success")this.$message.success("连接成功","服务器连接正常 延迟"+(new Date-this.serverchecktime)+"ms");else throw new Error("服务器响应异常")}}catch(e){let a=e.message||"无法连接到服务器";if(s.length>0){const r=s.map((i,l)=>`${l+1}. ${i.url} (失败${i.error?`: ${i.error}`:""})`).join(` +`);a+=` + +依次尝试的服务器: +${r} + +所有服务器均连接失败`}this.$message.error("连接失败",a)}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(s){this.$message.error("清除失败",s.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(s){this.$message.error("清除失败",s.message)}},async exportData(){try{const s="ClassworksDB",e={indexedDB:{}},a=await new Promise((u,b)=>{const T=window.indexedDB.open(s);T.onerror=()=>b(T.error),T.onsuccess=()=>u(T.result)}),r=Array.from(a.objectStoreNames);for(const u of r){const T=a.transaction(u,"readonly").objectStore(u),I=await new Promise((te,re)=>{const q=T.getAll();q.onerror=()=>re(q.error),q.onsuccess=()=>te(q.result)});e.indexedDB[u]=I}const i=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),l=URL.createObjectURL(i),d=document.createElement("a"),h=new Date().toISOString().split("T")[0];d.href=l,d.download=`homework-indexeddb-${h}.json`,d.click(),URL.revokeObjectURL(l),this.$message.success("导出成功","IndexedDB数据已导出")}catch(s){console.error("导出失败:",s),this.$message.error("导出失败",s.message||"无法导出数据库数据")}},async migrateData(){this.migrateLoading=!0,this.$router.push("/datamigration"),this.migrateLoading=!1},handleConfirm(){this.confirmAction&&this.confirmAction()}}};function si(s,e,a,r,i,l){const d=F;return c(),p(d,{icon:"mdi-database-cog",title:"数据源设置"},{default:n(()=>[t(M,null,{default:n(()=>[l.currentProvider==="kv-server"||l.currentProvider==="classworkscloud"?(c(),p(x,{key:0},{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-lan-connect"})]),append:n(()=>[t(f,{loading:i.loading,variant:"tonal",onClick:l.checkServerConnection},{default:n(()=>[...e[3]||(e[3]=[o(" 测试连接 ",-1)])]),_:1},8,["loading","onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[2]||(e[2]=[o("检查服务器连接",-1)])]),_:1})]),_:1})):v("",!0),l.currentProvider==="kv-local"?(c(),k(O,{key:1},[t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-database"})]),append:n(()=>[t(f,{color:"error",variant:"tonal",onClick:l.confirmClearIndexedDB},{default:n(()=>[...e[6]||(e[6]=[o(" 清除 ",-1)])]),_:1},8,["onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[4]||(e[4]=[o("清除数据库缓存",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[5]||(e[5]=[o("这将清除所有本地数据库中的数据 ",-1)])]),_:1})]),_:1}),t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-database-export"})]),append:n(()=>[t(f,{variant:"tonal",onClick:l.exportData},{default:n(()=>[...e[8]||(e[8]=[o(" 导出",-1)])]),_:1},8,["onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[7]||(e[7]=[o("导出数据库",-1)])]),_:1})]),_:1})],64)):v("",!0),t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-lan-connect"})]),append:n(()=>[t(f,{to:"/cachemanagement",variant:"tonal"},{default:n(()=>[...e[10]||(e[10]=[o(" 查看",-1)])]),_:1})]),default:n(()=>[t(j,null,{default:n(()=>[...e[9]||(e[9]=[o("查看本地缓存",-1)])]),_:1})]),_:1})]),_:1}),t($,{modelValue:i.confirmDialog,"onUpdate:modelValue":e[1]||(e[1]=h=>i.confirmDialog=h),"max-width":"400"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,null,{default:n(()=>[o(w(i.confirmTitle),1)]),_:1}),t(S,null,{default:n(()=>[o(w(i.confirmMessage),1)]),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{color:"grey",variant:"text",onClick:e[0]||(e[0]=h=>i.confirmDialog=!1)},{default:n(()=>[...e[11]||(e[11]=[o("取消 ",-1)])]),_:1}),t(f,{color:"error",variant:"tonal",onClick:l.handleConfirm},{default:n(()=>[...e[12]||(e[12]=[o("确认 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const Ct=E(ni,[["render",si]]),ii={name:"CloudNamespaceInfoCard",props:{visible:{type:Boolean,default:!0}},data(){return{namespaceInfo:{},loading:!1,hasNamespaceInfo:!1,showReinitDialog:!1,defaultAuthServer:y("server.authDomain")}},watch:{visible(s){s===!0&&this.fetchNamespaceInfo()}},mounted(){this.visible&&this.fetchNamespaceInfo()},methods:{formatDate(s){if(!s)return"未知";try{return new Date(s).toLocaleString("zh-CN")}catch{return s}},async fetchNamespaceInfo(){this.loading=!0;try{const s=await Ot.loadNamespaceInfo();this.namespaceInfo=s,this.hasNamespaceInfo=!0,this.loading=!1}catch(s){console.error("获取命名空间信息失败:",s),this.hasNamespaceInfo=!1,this.namespaceInfo={}}finally{this.loading=!1}},async reloadInfo(){await this.fetchNamespaceInfo()},getBindAccountUrl(){var e,a;const s=(a=(e=this.namespaceInfo)==null?void 0:e.device)==null?void 0:a.uuid;return s?`${this.defaultAuthServer}?uuid=${encodeURIComponent(s)}&tolinktoaccount=true`:this.defaultAuthServer},confirmReinitialize(){ne("server.kvToken",""),ne("device.uuid",""),this.showReinitDialog=!1,this.$router.push("/")}}},li={key:0,class:"mb-4"},oi={key:1,class:"d-flex align-center mb-4"},ai={class:"d-flex flex-column gap-1"},ri={class:"d-flex align-center"},ui={class:"d-flex align-center"},di={key:0,class:"d-flex align-center"},ci={class:"text-truncate"},mi={class:"d-flex align-center"},fi={key:1,class:"d-flex align-center"};function hi(s,e,a,r,i,l){return c(),p(C,{disabled:!i.hasNamespaceInfo,loading:i.loading,class:"my-4"},{loader:n(()=>[i.loading?(c(),p(Ae,{key:0,color:"primary",indeterminate:""})):v("",!0)]),default:n(()=>[t(P,null,{default:n(()=>[t(g,{class:"me-2"},{default:n(()=>[...e[3]||(e[3]=[o(" mdi-cloud-check ",-1)])]),_:1}),e[4]||(e[4]=o(" 设备信息 ",-1))]),_:1}),i.hasNamespaceInfo?(c(),p(S,{key:0},{default:n(()=>[i.namespaceInfo.hasAccount===!1?(c(),k("div",li,[t(L,{border:"",type:"warning",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[5]||(e[5]=[o("设备未绑定账号",-1)])]),_:1}),e[7]||(e[7]=m("div",null,"当前设备尚未绑定账号,部分功能可能受限。请前往绑定账号以获得完整体验。",-1)),t(f,{href:l.getBindAccountUrl(),"append-icon":"mdi-open-in-new",class:"mt-3",target:"_blank",variant:"outlined"},{default:n(()=>[...e[6]||(e[6]=[o(" 前往绑定账号 ",-1)])]),_:1},8,["href"])]),_:1})])):v("",!0),i.namespaceInfo.hasAccount&&i.namespaceInfo.account?(c(),k("div",oi,[t(C,{"prepend-avatar":i.namespaceInfo.account.avatarUrl,subtitle:"此设备由贵校管理 管理员账号 ID: "+i.namespaceInfo.account.id,title:i.namespaceInfo.account.name||"未命名用户",border:"",class:"w-100",hover:"",variant:"tonal"},{default:n(()=>[t(S,null,{default:n(()=>[...e[8]||(e[8]=[o(" 此设备由贵校或贵单位管理,该管理员系此空间所有者,如有疑问请咨询他,对于恶意绑定、滥用行为请反馈。 ",-1)])]),_:1})]),_:1},8,["prepend-avatar","subtitle","title"])])):v("",!0),i.namespaceInfo.device?(c(),p(C,{key:2,border:"",class:"mb-4",hover:"",variant:"tonal"},{default:n(()=>[t(P,{class:"pb-1"},{default:n(()=>[...e[9]||(e[9]=[o(" 设备信息 ",-1)])]),_:1}),t(S,null,{default:n(()=>[m("div",ai,[m("div",ri,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[10]||(e[10]=[o(" mdi-tag ",-1)])]),_:1}),e[11]||(e[11]=m("span",{class:"font-weight-medium me-2"},"设备名称:",-1)),m("span",null,w(i.namespaceInfo.device.name||"未命名设备"),1)]),m("div",ui,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[12]||(e[12]=[o(" mdi-identifier ",-1)])]),_:1}),e[13]||(e[13]=m("span",{class:"font-weight-medium me-2"},"设备 ID:",-1)),m("span",null,w(i.namespaceInfo.device.id),1)]),i.namespaceInfo.hasAccount===!1&&i.namespaceInfo.device.uuid?(c(),k("div",di,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[14]||(e[14]=[o(" mdi-uuid ",-1)])]),_:1}),e[15]||(e[15]=m("span",{class:"font-weight-medium me-2"},"UUID:",-1)),m("span",ci,w(i.namespaceInfo.device.uuid),1)])):v("",!0),m("div",mi,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[16]||(e[16]=[o(" mdi-calendar ",-1)])]),_:1}),e[17]||(e[17]=m("span",{class:"font-weight-medium me-2"},"创建时间:",-1)),m("span",null,w(l.formatDate(i.namespaceInfo.device.createdAt)),1)]),i.namespaceInfo.device.updatedAt?(c(),k("div",fi,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[18]||(e[18]=[o(" mdi-calendar-clock ",-1)])]),_:1}),e[19]||(e[19]=m("span",{class:"font-weight-medium me-2"},"更新时间:",-1)),m("span",null,w(l.formatDate(i.namespaceInfo.device.updatedAt)),1)])):v("",!0)])]),_:1})]),_:1})):v("",!0),t(C,{border:"",hover:"",subtitle:"文档形键值数据库",title:"Classworks KV"},{default:n(()=>[t(S,null,{default:n(()=>[...e[20]||(e[20]=[o(" Classworks KV 是厚浪云推出的文档形键值数据库,其是一个开放的云应用平台,为各种应用提供存储服务。此设备正在使用其服务,如果您希望管理设备信息,请前往 Classworks KV 的网站,如果您在服务推出前就在使用 Classworks,您的数据已被自动迁移。 ",-1),m("br",null,null,-1),m("br",null,null,-1),o(" Classworks KV 的全域管理员是 ",-1),m("a",{href:"https://wuyuan.dev",target:"_blank"}," 孙悟元 ",-1)])]),_:1}),t(G,null,{default:n(()=>[t(f,{href:i.defaultAuthServer,"append-icon":"mdi-open-in-new",class:"text-none",target:"_blank"},{default:n(()=>[...e[21]||(e[21]=[o(" 前往 Classworks KV ",-1)])]),_:1},8,["href"])]),_:1})]),_:1})]),_:1})):(c(),p(S,{key:1},{default:n(()=>[t(L,{type:"info",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[22]||(e[22]=[o("未获取到设备信息",-1)])]),_:1}),e[23]||(e[23]=m("p",null,"您尚未完成云端存储授权或连接失败,请点击下方按钮进行初始化。",-1))]),_:1})]),_:1})),t(G,null,{default:n(()=>[t(K),t(f,{loading:i.loading,color:"primary",variant:"outlined",onClick:l.reloadInfo},{default:n(()=>[...e[24]||(e[24]=[o(" 刷新设备信息 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{color:"error",variant:"outlined",onClick:e[0]||(e[0]=d=>i.showReinitDialog=!0)},{default:n(()=>[...e[25]||(e[25]=[o(" 重新初始化云端存储 ",-1)])]),_:1})]),_:1}),t($,{modelValue:i.showReinitDialog,"onUpdate:modelValue":e[2]||(e[2]=d=>i.showReinitDialog=d),"max-width":"500"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,null,{default:n(()=>[...e[26]||(e[26]=[o("确认重新初始化",-1)])]),_:1}),t(S,null,{default:n(()=>[t(L,{class:"mb-3",type:"warning",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[27]||(e[27]=[o("警告",-1)])]),_:1}),e[28]||(e[28]=o(" 此操作将清除当前的云端存储配置(包括 Token),您需要重新进行授权。 ",-1))]),_:1}),e[29]||(e[29]=m("p",null,"您确定要重新初始化云端存储吗?",-1))]),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{variant:"text",onClick:e[1]||(e[1]=d=>i.showReinitDialog=!1)},{default:n(()=>[...e[30]||(e[30]=[o(" 取消 ",-1)])]),_:1}),t(f,{color:"error",onClick:l.confirmReinitialize},{default:n(()=>[...e[31]||(e[31]=[o(" 确认 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["disabled","loading"])}const _t=E(ii,[["render",hi]]),pi={name:"ServerSettingsCard",components:{SettingsCard:F,CloudNamespaceInfoCard:_t},props:{loading:Boolean},data(){return{unwatch:null,serverSettings:{provider:y("server.provider"),domain:y("server.domain"),classNumber:y("server.classNumber"),kvToken:y("server.kvToken")},settingsChangeTimeout:null}},computed:{currentProvider(){return this.serverSettings.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"}},watch:{serverSettings:{handler(){this.settingsChangeTimeout&&clearTimeout(this.settingsChangeTimeout),this.settingsChangeTimeout=setTimeout(()=>{this.saveAllSettings()},100)},deep:!0}},mounted(){this.loadAllSettings(),this.unwatch=Me(()=>{this.loadAllSettings(),this.$forceUpdate&&this.$forceUpdate()})},beforeUnmount(){this.unwatch&&this.unwatch()},methods:{loadAllSettings(){this.serverSettings={provider:y("server.provider"),domain:y("server.domain"),classNumber:y("server.classNumber"),kvToken:y("server.kvToken")}},saveAllSettings(){Object.entries(this.serverSettings).forEach(([s,e])=>{const a=`server.${s}`,r=y(a);e!==r&&(ne(a,e)?console.log(`设置已更新: ${a} = ${e}`):(console.error(`设置失败: ${a}`),this.serverSettings[s]=r))})}}},wi={key:0},gi={key:2},vi={key:3},bi={key:4};function ki(s,e,a,r,i,l){const d=_t,h=F;return c(),p(h,{loading:a.loading,icon:"mdi-database",title:"数据源设置"},{default:n(()=>[t(lt,null,{default:n(()=>[t(Ve,{modelValue:i.serverSettings.provider,"onUpdate:modelValue":e[0]||(e[0]=u=>i.serverSettings.provider=u),items:[{title:"Classworks云端存储",value:"classworkscloud"},{title:"KV本地存储",value:"kv-local"},{title:"KV远程服务器",value:"kv-server"}],class:"mb-3",density:"comfortable","item-title":"title","item-value":"value",label:"数据提供者","prepend-icon":"mdi-database",variant:"outlined"},null,8,["modelValue"]),l.isKvProvider?(c(),p(L,{key:0,class:"my-2",type:"info",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[5]||(e[5]=[o("KV 存储系统",-1)])]),_:1}),e[7]||(e[7]=m("p",null,"KV存储系统使用本机唯一标识符(UUID)来区分不同设备的数据。",-1)),l.currentProvider==="kv-server"?(c(),k("p",wi,[...e[6]||(e[6]=[o(" 服务器端点格式: ",-1),m("code",null,"http(s)://服务器域名/",-1),m("br",null,null,-1),o(" 在服务器域名处仅填写基础URL,不需要任何路径。 ",-1)])])):v("",!0)]),_:1})):v("",!0),l.isClassworksCloud?(c(),p(L,{key:1,class:"my-2",color:"success",type:"info",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[8]||(e[8]=[o("Classworks云端存储",-1)])]),_:1}),e[9]||(e[9]=m("p",null,"Classworks云端存储是官方提供的存储解决方案,自动配置了最优的访问设置。",-1)),e[10]||(e[10]=m("p",null,"使用此选项时,服务器域名和网站令牌将自动配置,无需手动设置。",-1))]),_:1})):v("",!0),t(A,{class:"my-2"}),l.isClassworksCloud?(c(),k("div",gi,[t(N,{modelValue:i.serverSettings.kvToken,"onUpdate:modelValue":e[1]||(e[1]=u=>i.serverSettings.kvToken=u),class:"mb-2",density:"comfortable",hint:"令牌用于云端存储授权",label:"KV 授权令牌","persistent-hint":"","prepend-icon":"mdi-shield-key",variant:"outlined"},null,8,["modelValue"]),t(d,{visible:l.isClassworksCloud,class:"mt-4"},null,8,["visible"])])):l.currentProvider==="kv-server"?(c(),k("div",vi,[t(N,{modelValue:i.serverSettings.domain,"onUpdate:modelValue":e[2]||(e[2]=u=>i.serverSettings.domain=u),class:"mb-2",density:"comfortable",hint:"例如: https://example.com (不需要路径)",label:"服务器域名","persistent-hint":"","prepend-icon":"mdi-web",variant:"outlined"},null,8,["modelValue"]),t(N,{modelValue:i.serverSettings.kvToken,"onUpdate:modelValue":e[3]||(e[3]=u=>i.serverSettings.kvToken=u),class:"mb-2",density:"comfortable",hint:"令牌用于服务器验证",label:"KV 授权令牌","persistent-hint":"","prepend-icon":"mdi-shield-key",variant:"outlined"},null,8,["modelValue"])])):l.currentProvider==="kv-local"?(c(),k("div",bi,[t(N,{modelValue:i.serverSettings.classNumber,"onUpdate:modelValue":e[4]||(e[4]=u=>i.serverSettings.classNumber=u),class:"mb-2",density:"comfortable",hint:"例如: 高三八班",label:"班级编号","persistent-hint":"","prepend-icon":"mdi-account-group",variant:"outlined"},null,8,["modelValue"])])):v("",!0)]),_:1})]),_:1},8,["loading"])}const Vt=E(pi,[["render",ki]]),yi="classworks",xi="module",Si="0.0.0",Ci={dev:"vite --host",build:"vite build",preview:"vite preview",lint:"eslint . --fix",prebuild:"node scripts/generate-sound-list.js"},_i={"@fingerprintjs/fingerprintjs":"^5.0.1","@mdi/font":"7.4.47","@microsoft/clarity":"^1.0.2","@sentry/vue":"^10.36.0","@vueuse/core":"^14.1.0",axios:"^1.13.2",idb:"^8.0.3","js-base64":"^3.7.8","lucide-vue-next":"^0.555.0","pinyin-pro":"^3.27.0","ratelimit-header-parser":"^0.1.0","roboto-fontface":"*","socket.io-client":"^4.8.1","typewriter-effect":"^2.22.0",uuid:"^13.0.0",vue:"^3.5.25","vue-sonner":"^2.0.9",vuetify:"^3.11.0"},Vi={"@eslint/js":"^9.39.1","@vite-pwa/assets-generator":"^1.0.2","@vitejs/plugin-vue":"^6.0.2",eslint:"^9.39.1","eslint-plugin-import":"^2.32.0","eslint-plugin-n":"^17.23.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^7.2.1","eslint-plugin-vue":"^10.6.2",pinia:"^3.0.4",sass:"1.94.2","sass-embedded":"^1.93.3","unplugin-auto-import":"^20.3.0","unplugin-fonts":"^1.4.0","unplugin-vue-components":"^30.0.0","unplugin-vue-router":"^0.18.0",vite:"^5.4.11","vite-plugin-pwa":"^1.2.0","vite-plugin-vue-devtools":"^7.6.8","vite-plugin-vue-layouts":"^0.11.0","vite-plugin-vuetify":"^2.1.2","vue-router":"^4.6.3"},ye={name:yi,private:!0,type:xi,version:Si,scripts:Ci,dependencies:_i,devDependencies:Vi},Di="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAa9SURBVHic7dY9jlxVFIXRY8SsCEDyMCAjgRFBYokARoGQQII5EDIJYhNgyb9td9euqvfu3WuN4CTf1nn2958/vRyg0mdHHwAcxwBAMQMAxQwAFDMAUMwAQDEDAMUMABQzAFDMAEAxAwDFDAAUMwBQzABAMQMAxQwAFDMAUMwAQDEDAMUMABQzAFDMAEAxAwDFDAAUMwBQzABAMQMAxQwAFDMAUMwAQDEDAMUMABQzAFDMAEAxAwDFDAAUMwBQzABAMQMAxQwAFDMAUMwAQDEDAMUMABQzAFDMAEAxAwDFPj/6AI7z2+9/zW9//HX0Gct6/uUX8/yrL44+I+IDKCX+zA7xzxiASuLP7BL/jAGoI/7MTvHPGIAq4s/sFv+MAagh/syO8c8YgAriz+wa/4wB2J74MzvHP2MAtib+zO7xzxiAbYk/0xD/jAHYkvgzLfHPGIDtiD/TFP+MAdiK+DNt8c8YgG2IP9MY/4wB2IL4M63xzxiA5Yk/0xz/jAFYmvgz7fHPGIBliT8j/v8ZgAWJPyP+1wzAYsSfEf/bDMBCxJ8R//sMwCLEnxH/hxmABYg/I/6HGYCTE39G/B9nAE5M/Bnxf5oBOCnxZ8T/OAbghMSfEf/jGYCTEX9G/E9jAE5E/BnxP50BOAnxZ8R/GQNwAuLPiP9yBuBg4s+IP2MADiT+jPhzBuAg4s+I/zoMwAHEnxH/9RiAOxN/RvzXZQDuSPwZ8V+fAbgT8WfEfxsG4A7EnxH/7RiAGxN/Rvy3ZQBuSPwZ8d+eAbgR8WfEfx8G4AbEnxH//RiAKxN/Rvz3ZQCuSPwZ8d+fAbgS8WfEfwwDcAXiz4j/OAYgJP6M+I9lAALiz4j/eAbgQuLPiP8cDMAFxJ8R/3kYgCcSf0b852IAnkD8GfGfjwF4JPFnxH9OBuARxJ8R/3kZgE8Qf0b852YAPkL8GfGfnwF4gPgz4l+DAfgA8WfEvw4D8A7xZ8S/FgPwBvFnxL8eA/CK+DPiX5MBGPGnxL+u+gEQf0b8a6seAPFnxL++2gEQf0b8e6gcAPFnxL+PugEQf0b8e6kaAPFnxL+fmgEQf0b8e6oYAPFnxL+v7QdA/Bnx723rARB/Rvz723YAxJ8Rf4ctB0D8GfH32G4AxJ8Rf5etBkD8GfH32WYAxJ8Rf6ctBkD8GfH3Wn4AxJ8Rf7dn//7z68ujj+AYP774ZX548fPRZyzr+2+/me++/froMyLLfwBcRvyZHeKfMQCVxJ/ZJf4ZA1BH/Jmd4p8xAFXEn9kt/hkDUEP8mR3jnzEAFcSf2TX+GQOwPfFndo5/xgBsTfyZ3eOfMQDbEn+mIf4ZA7Al8Wda4p8xANsRf6Yp/hkDsBXxZ9rinzEA2xB/pjH+GQOwBfFnWuOfMQDLE3+mOf4ZA7A08Wfa458xAMsSf0b8/zMACxJ/RvyvGYDFiD8j/rcZgIWIPyP+9xmARYg/I/4PMwALEH9G/A8zACcn/oz4P84AnJj4M+L/NANwUuLPiP9xDMAJiT8j/sczACcj/oz4n8YAnIj4M+J/OgNwEuLPiP8yBuAExJ8R/+UMwMHEnxF/xgAcSPwZ8ecMwEHEnxH/dRiAA4g/I/7rMQB3Jv6M+K/LANyR+DPivz4DcCfiz4j/NgzAHYg/I/7bMQA3Jv6M+G/LANyQ+DPivz0DcCPiz4j/PgzADYg/I/77MQBXJv6M+O/LAFyR+DPivz8DcCXiz4j/GAbgCsSfEf9xDEBI/BnxH8sABMSfEf/xDMCFxJ8R/zkYgAuIPyP+8zAATyT+jPjPxQA8gfgz4j8fA/BI4s+I/5wMwCOIPyP+8zIAnyD+jPjPzQB8hPgz4j8/A/AA8WfEvwYD8AHiz4h/HQbgHeLPiH8tBuAN4s+Ifz0G4BXxZ8S/JgMw4k+Jf131AyD+jPjXVj0A4s+If321AyD+jPj3UDkA4s+Ifx91AyD+jPj3UjUA4s+Ifz81AyD+jPj3VDEA4s+If1/bD4D4M+Lf29YDIP6M+Pe37QCIPyP+DlsOgPgz4u+x3QCIPyP+LlsNgPgz4u+zzQCIPyP+TlsMgPgz4u+1/ACIPyP+bs/+/efXl0cfARxj+Q8AuJwBgGIGAIoZAChmAKCYAYBiBgCKGQAoZgCgmAGAYgYAihkAKGYAoJgBgGIGAIoZAChmAKCYAYBiBgCKGQAoZgCgmAGAYgYAihkAKGYAoJgBgGIGAIoZAChmAKCYAYBiBgCKGQAoZgCgmAGAYgYAihkAKGYAoJgBgGIGAIoZAChmAKCYAYBiBgCKGQAoZgCgmAGAYgYAiv0Hs2PMhrt8KlMAAAAASUVORK5CYII=",Ai={name:"AboutCard",setup(){const s=Z([]),e=Z(!1),a=Z(!1),r=Z(""),i=Z(!1),l=Z(!1),d="964979747",h="https://qm.qq.com/q/T6qImKJjGi",u=Mt(),b=()=>{try{const V={...ye.dependencies||{},...ye.devDependencies||{}},J=Object.entries(V).map(([ee,R])=>({name:ee,version:R.replace(/[\^~]/g,""),description:T(ee)}));s.value=J}catch(V){console.error("加载依赖信息失败:",V),s.value=[]}},T=V=>({vue:"渐进式 JavaScript 框架",vuetify:"材料设计组件框架",axios:"Promise 基础的 HTTP 客户端",pinia:"Vue 状态管理库","vue-router":"Vue.js 官方路由管理器","@vitejs/plugin-vue":"Vite 的 Vue 插件"})[V]||"",I=()=>{u.push("/debug")},te=async()=>{i.value=!0;try{const V=await Xt();r.value=V||""}catch(V){console.error("获取访客ID失败",V)}finally{i.value=!1}},re=()=>te(),q=async()=>{a.value=!0,r.value||await te()},ve=async()=>{try{await navigator.clipboard.writeText(de.value),l.value=!0,setTimeout(()=>l.value=!1,1800)}catch(V){console.error("复制失败",V)}},ue=ke(()=>{var me,se;const V=navigator||{},J=typeof Intl<"u"&&Intl.DateTimeFormat?Intl.DateTimeFormat().resolvedOptions():{},ee=J&&J.timeZone?J.timeZone:"",R=((se=(me=u.currentRoute)==null?void 0:me.value)==null?void 0:se.fullPath)||location.pathname;return[`App 版本: v${ye==null?void 0:ye.version}`,`URL: ${location.href}`,`路由: ${R}`,`UserAgent: ${V.userAgent||""}`,`语言: ${V.language||""}`,`时区: ${ee}`,`平台: ${V.platform||""}`,`在线: ${String(V.onLine)}`,`屏幕: ${(screen==null?void 0:screen.width)||"-"}x${(screen==null?void 0:screen.height)||"-"}`,`视口: ${window.innerWidth||"-"}x${window.innerHeight||"-"}`].join(` +`)}),de=ke(()=>`调试ID: ${r.value||"获取失败"} + +浏览器/环境信息: +${ue.value}`),oe=ke(()=>["问题描述:","1. 期望行为:","2. 实际行为:","3. 复现步骤:","",de.value].join(` +`)),be=ke(()=>{const V="https://github.com/ZeroCatDev/Classworks/issues/new",J=encodeURIComponent("问题报告"),ee=encodeURIComponent(oe.value);return`${V}?title=${J}&body=${ee}`}),D=ke(()=>{const V=encodeURIComponent("Classworks 问题报告"),J=encodeURIComponent(oe.value);return`mailto:sun@wuyuan.dev?subject=${V}&body=${J}`}),_=()=>{typeof window.openSentryFeedback=="function"?window.openSentryFeedback():console.warn("Sentry Feedback 功能不可用")},U=()=>{window.open("https://afdian.com/a/wydev","_blank")};return Et(()=>{b()}),{Dependencies:s,showDeps:e,showReportDialog:a,debugIdInput:r,visitorLoading:i,copyOk:l,qqGroupNumber:d,qqGroupLink:h,goToDebug:I,reloadVisitorId:re,openReportDialog:q,copyEnvInfo:ve,openFeedback:_,openDonationLink:U,envBoxText:de,envInfo:ue,reportBody:oe,githubIssueUrl:be,mailtoLink:D}}},Ii={class:"mt-4"},Ti={class:"d-flex flex-column align-start"},Ui={class:"d-flex gap-2 flex-wrap mb-6"},ji={class:"text-body-2",style:{"white-space":"pre-wrap",margin:"0"}},Bi={class:"d-flex gap-2 flex-wrap mb-4"},Ni={class:"d-flex gap-2 mb-4"},Pi={class:"text-caption text-medium-emphasis"};function Mi(s,e,a,r,i,l){return c(),p(C,{border:"",hover:"",rounded:"xl"},{default:n(()=>[t(we,null,{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-information",size:"large"})]),default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[...e[6]||(e[6]=[o("关于",-1)])]),_:1})]),_:1}),t(S,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{class:"mx-auto",cols:"12",md:"8"},{default:n(()=>[t(C,{border:"",class:"donation-card gradient-donation clickable mb-6",color:"pink-lighten-4",elevation:"8",hover:"",rounded:"xl",variant:"tonal",onClick:r.openDonationLink},{default:n(()=>[t(we,null,{default:n(()=>[...e[7]||(e[7]=[m("div",{class:"card-content"},[m("div",null,[m("div",{class:"text-h6 font-weight-bold"},"请支持我们 Classworks")])],-1)])]),_:1}),t(S,null,{default:n(()=>[e[9]||(e[9]=m("p",{class:"text-body-2 mb-3"}," 我是Classworks的开发者孙悟元,是一名高二的中国在校学生。Classworks 是一个完全开源免费的项目。如果可以,欢迎打赏。 ",-1)),m("div",Ii,[t(f,{"append-icon":"mdi-heart","aria-label":"Support Classworks on Aifadian",class:"text-none",color:"pink",rounded:"xl",variant:"elevated",onClick:r.openDonationLink},{default:n(()=>[...e[8]||(e[8]=[o(" 爱发电 ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["onClick"]),m("div",Ti,[t(Ie,{class:"mb-4",size:"120"},{default:n(()=>[t(Xe,{alt:"Classworks",src:Di})]),_:1}),e[40]||(e[40]=m("h2",{class:"text-h5 mb-2"},"Classworks",-1)),e[41]||(e[41]=m("p",{class:"text-body-1 mb-4"},"适用于班级大屏的作业板小工具",-1)),m("div",Ui,[t(f,{color:"red","prepend-icon":"mdi-bug",variant:"tonal",onClick:r.openReportDialog},{default:n(()=>[...e[10]||(e[10]=[o(" 报告问题 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"primary",href:"https://qm.qq.com/q/qNBX4ZZVeg","prepend-icon":"mdi-qqchat",target:"_blank",variant:"tonal"},{default:n(()=>[...e[11]||(e[11]=[o(" QQ 群 ",-1)])]),_:1}),t(f,{href:"https://github.com/ClassworksDev/Classworks","prepend-icon":"mdi-github",target:"_blank",variant:"text"},{default:n(()=>[...e[12]||(e[12]=[o(" 前端 ",-1)])]),_:1}),t(f,{href:"https://github.com/ClassworksDev/ClassworksServer","prepend-icon":"mdi-github",target:"_blank",variant:"text"},{default:n(()=>[...e[13]||(e[13]=[o(" 后端 ",-1)])]),_:1})]),t(A,{class:"mb-4 w-100"}),e[42]||(e[42]=m("h3",{class:"text-h6 mb-2"},"备注与致谢",-1)),t(M,{class:"mb-4 bg-transparent"},{default:n(()=>[t(x,{"append-icon":"mdi-link",href:"https://github.com/EnderWolf006/HomeworkBoard",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[14]||(e[14]=[o(" 本项目受到 HomeworkBoard 的启发而开发 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[15]||(e[15]=[o(" 感谢 EnderWolf006 (@EnderWolf) fhzit(@Hellofhz) KeyFac 等人的贡献 ",-1)])]),_:1})]),_:1}),t(x,{"append-icon":"mdi-link",href:"https://hlyun.org",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[16]||(e[16]=[o(" Classworks 由",-1),m("strong",null,"厚浪云",-1),o("提供 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[17]||(e[17]=[o(" 长江后浪推前浪 浮事新人换旧人 ",-1)])]),_:1})]),_:1}),t(x,{"append-icon":"mdi-link",href:"https://zerocat.houlangs.com",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[18]||(e[18]=[o(" 感谢 ZeroCat 社区的开发者们 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[19]||(e[19]=[o(" 新一代,开源,编程社区 ",-1)])]),_:1})]),_:1}),t(A,{class:"ma-1"}),t(x,{"append-icon":"mdi-link",href:"https://github.com/HUSX100/IslandCaller",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[20]||(e[20]=[o(" 本项目与 IslandCaller 没有从属关系 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[21]||(e[21]=[o(" IslandCaller 是由 HUSX100 开发的基于 ClassIsland 提醒服务的轻量级点名器 ",-1)])]),_:1})]),_:1}),t(x,{"append-icon":"mdi-link",href:"https://classisland.tech",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[22]||(e[22]=[o(" 本项目与 ClassIsland 没有从属关系 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[23]||(e[23]=[o(" ClassIsland 是由 HelloWRC 开发的适用于班级大屏的课表信息显示工具 ",-1)])]),_:1})]),_:1})]),_:1}),t(f,{class:"mb-4","prepend-icon":"mdi-package-variant",variant:"text",onClick:e[0]||(e[0]=d=>r.showDeps=!0)},{default:n(()=>[...e[24]||(e[24]=[o(" 查看使用的第三方库 ",-1)])]),_:1}),t($,{modelValue:r.showDeps,"onUpdate:modelValue":e[2]||(e[2]=d=>r.showDeps=d),fullscreen:"",transition:"dialog-bottom-transition"},{default:n(()=>[t(C,null,{default:n(()=>[t(He,null,{default:n(()=>[t(f,{icon:"mdi-close",onClick:e[1]||(e[1]=d=>r.showDeps=!1)}),t(Ge,null,{default:n(()=>[...e[25]||(e[25]=[o("使用的第三方库",-1)])]),_:1}),t(K)]),_:1}),t(S,null,{default:n(()=>[t(M,null,{default:n(()=>[(c(!0),k(O,null,W(r.Dependencies,d=>(c(),p(x,{key:d.name,href:"https://www.npmjs.com/package/"+d.name,"append-icon":"mdi-link",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[o(w(d.name),1)]),_:2},1024),t(Q,null,{default:n(()=>[o(" v"+w(d.version),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:r.showReportDialog,"onUpdate:modelValue":e[5]||(e[5]=d=>r.showReportDialog=d),"max-width":"640"},{default:n(()=>[t(C,null,{default:n(()=>[t(He,{density:"compact"},{default:n(()=>[t(f,{icon:"mdi-close",onClick:e[3]||(e[3]=d=>r.showReportDialog=!1)}),t(Ge,null,{default:n(()=>[...e[26]||(e[26]=[o("报告问题",-1)])]),_:1}),t(K)]),_:1}),t(S,null,{default:n(()=>[e[37]||(e[37]=m("p",{class:"mb-4"}," 调试ID与下方的浏览器环境信息将帮助我们快速定位问题,请在反馈中一并附上。 ",-1)),t(Lt,{class:"mb-3 pa-3 bg-grey-lighten-4 rounded",style:{"max-height":"260px",overflow:"auto"}},{default:n(()=>[m("pre",ji,w(r.envBoxText),1)]),_:1}),m("div",Bi,[t(f,{size:"small",variant:"text","prepend-icon":"mdi-refresh",onClick:r.reloadVisitorId,loading:r.visitorLoading},{default:n(()=>[...e[27]||(e[27]=[o("刷新",-1)])]),_:1},8,["onClick","loading"]),t(f,{size:"small",variant:"text","prepend-icon":"mdi-content-copy",onClick:r.copyEnvInfo},{default:n(()=>[...e[28]||(e[28]=[o("复制信息",-1)])]),_:1},8,["onClick"]),t(f,{size:"small",variant:"text","prepend-icon":"mdi-open-in-new",onClick:r.goToDebug},{default:n(()=>[...e[29]||(e[29]=[o("查看 /debug 页面",-1)])]),_:1},8,["onClick"])]),r.copyOk?(c(),p(L,{key:0,type:"success",density:"compact",class:"mb-4"},{default:n(()=>[...e[30]||(e[30]=[o("已复制到剪贴板",-1)])]),_:1})):v("",!0),m("div",Ni,[t(f,{size:"small",color:"primary",variant:"elevated","prepend-icon":"mdi-message-alert",onClick:r.openFeedback,block:""},{default:n(()=>[...e[31]||(e[31]=[o(" 发送错误反馈到 Sentry ",-1)])]),_:1},8,["onClick"])]),e[38]||(e[38]=m("h4",{class:"text-subtitle-1 mb-2"},"反馈渠道",-1)),t(M,{lines:"one",class:"bg-transparent"},{default:n(()=>[t(x,{href:r.qqGroupLink,target:"_blank","prepend-icon":"mdi-qqchat"},{default:n(()=>[t(j,null,{default:n(()=>[o("QQ群 ("+w(r.qqGroupNumber)+")",1)]),_:1}),t(Q,null,{default:n(()=>[...e[32]||(e[32]=[o("964979747",-1)])]),_:1})]),_:1},8,["href"]),t(x,{href:r.githubIssueUrl,target:"_blank","prepend-icon":"mdi-github"},{default:n(()=>[t(j,null,{default:n(()=>[...e[33]||(e[33]=[o("GitHub Issue",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[34]||(e[34]=[o("ZeroCatDev/Classworks",-1)])]),_:1})]),_:1},8,["href"]),t(x,{href:r.mailtoLink,target:"_blank","prepend-icon":"mdi-email"},{default:n(()=>[t(j,null,{default:n(()=>[...e[35]||(e[35]=[o("邮件",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[36]||(e[36]=[o("sun@wuyuan.dev",-1)])]),_:1})]),_:1},8,["href"])]),_:1})]),_:1}),t(G,null,{default:n(()=>[t(K),t(f,{variant:"text",onClick:e[4]||(e[4]=d=>r.showReportDialog=!1)},{default:n(()=>[...e[39]||(e[39]=[o("关闭",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),m("p",Pi," Copyright © "+w(new Date().getFullYear())+" Sunwuyuan ",1)])]),_:1})]),_:1})]),_:1})]),_:1})}const Dt=E(Ai,[["render",Mi],["__scopeId","data-v-101b91c8"]]),Ei={name:"Settings",components:{ServerSettingsCard:Vt,EditSettingsCard:wt,RefreshSettingsCard:gt,DisplaySettingsCard:pt,MessageLog:qe,SettingsCard:F,StudentListCard:yt,TeacherListCard:kt,AboutCard:Dt,DataProviderSettingsCard:Ct,EchoChamberCard:rt,SettingsExplorer:ut,SettingsLinkGenerator:vt,RandomPickerCard:mt,HomeworkTemplateCard:dt,SubjectManagementCard:ct,KvDatabaseCard:St,HitokotoSettings:ft,NotificationSoundSettings:ht},setup(){const{mobile:s}=Yt();return{isMobile:s}},data(){return y("server.provider"),{settings:{server:{domain:y("server.domain"),classNumber:y("server.classNumber"),provider:y("server.provider")},refresh:{auto:y("refresh.auto"),interval:y("refresh.interval")},font:{size:y("font.size")},edit:{autoSave:y("edit.autoSave"),blockNonTodayAutoSave:y("edit.blockNonTodayAutoSave"),confirmNonTodaySave:y("edit.confirmNonTodaySave"),refreshBeforeEdit:y("edit.refreshBeforeEdit")},display:{emptySubjectDisplay:y("display.emptySubjectDisplay"),dynamicSort:y("display.dynamicSort"),showRandomButton:y("display.showRandomButton"),showFullscreenButton:y("display.showFullscreenButton")},developer:{enabled:y("developer.enabled"),showDebugConfig:y("developer.showDebugConfig")},message:{showSidebar:y("message.showSidebar"),maxActiveMessages:y("message.maxActiveMessages"),timeout:y("message.timeout"),saveHistory:y("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"},{title:"科目",icon:"mdi-book-edit",value:"subject"},{title:"花名册",icon:"mdi-account-group",value:"student"},{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-bell-ring",value:"notification"},{title:"一言",icon:"mdi-comment-quote",value:"hitokoto"},{title:"随机点名",icon:"mdi-dice-multiple",value:"randomPicker"},{title:"开发者",icon:"mdi-developer-board",value:"developer"},{title:"关于",icon:"mdi-information",value:"about"}],drawer:!1}},watch:{settings:{handler(s){this.handleSettingsChange(s)},deep:!0},isMobile:{handler(s){this.drawer=!s},immediate:!0},studentData:{handler(s){this.lastSavedData&&(this.hasUnsavedChanges=JSON.stringify(s.list)!==JSON.stringify(this.lastSavedData)),this.studentData.text=s.list.join(` +`)},deep:!0}},mounted(){this.loadAllSettings(),this.unwatchSettings=Me(()=>{this.loadAllSettings()}),this.drawer=!this.isMobile},beforeUnmount(){this.unwatchSettings&&this.unwatchSettings()},methods:{openClassworksKV(){window.open(y("server.authDomain"),"_blank")},loadAllSettings(){Object.keys(this.settings).forEach(s=>{Object.keys(this.settings[s]).forEach(e=>{this.settings[s][e]=y(`${s}.${e}`)})})},handleSettingsChange(s){this.settingsChangeTimeout&&clearTimeout(this.settingsChangeTimeout),this.settingsChangeTimeout=setTimeout(()=>{Object.entries(s).forEach(([e,a])=>{Object.entries(a).forEach(([r,i])=>{const l=`${e}.${r}`,d=y(l);i!==d&&(ne(l,i)?this.showMessage("设置已更新",`${l} 已保存`):(this.showError("保存失败",`${l} 设置失败`),this.settings[e][r]=d))})})},100)},showMessage(s,e="",a="success"){this.$message[a](s,e)},showError(s,e=""){this.$message.error(s,e)},saveEdit(){if(this.editingIndex!==-1){const s=this.editingName.trim();s&&s!==this.studentData.list[this.editingIndex]&&(this.studentData.list[this.editingIndex]=s),this.editingIndex=-1,this.editingName=""}},startEdit(s,e){this.editingIndex=s,this.editingName=e},confirmDelete(s){this.studentToDelete={index:s,name:this.studentData.list[s]},this.deleteDialog=!0},moveStudent(s,e){const a=e==="up"?s-1:s+1;a>=0&&a=0&&s0){const e=this.studentData.list[s];this.studentData.list.splice(s,1),this.studentData.list.unshift(e)}},addStudent(){const s=this.newStudent.trim();s&&!this.studentData.list.includes(s)&&(this.studentData.list.push(s),this.newStudent="")},removeStudent(s){s!==void 0&&(this.studentData.list.splice(s,1),this.deleteDialog=!1,this.studentToDelete=null)},resetFontSize(){et("font.size"),this.settings.font.size=y("font.size"),this.showMessage("字体已重置","字体大小已恢复默认值")},handleDeveloperChange(s){s||(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(s){const a=this.settings.font.size;s==="up"&&a<100?this.settings.font.size=a+2:s==="down"&&a>16&&(this.settings.font.size=a-2),this.handleSettingsChange(this.settings)},onSettingsSaved(){this.showMessage("设置已更新","您的设置已成功保存")},onSettingUpdate(s,e){this.showMessage("设置已更新",`${s} 已保存为 ${e}`)}}},zi={class:"settings-page"},Li={class:"mt-4"};function Ki(s,e,a,r,i,l){const d=Dt,h=Vt,u=Ct,b=St,T=yt,I=kt,te=vt,re=gt,q=wt,ve=pt,ue=ht,de=ft,oe=mt,be=ct,D=dt,_=F,U=zt("developer-settings-card"),V=ut,J=rt,ee=qe;return c(),k("div",zi,[t(en,{elevation:"1"},{prepend:n(()=>[t(f,{icon:"mdi-arrow-left",variant:"text",onClick:e[0]||(e[0]=R=>s.$router.push("/"))}),t(f,{icon:"mdi-menu",variant:"text",onClick:e[1]||(e[1]=R=>i.drawer=!i.drawer)})]),default:n(()=>[t($t,{class:"text-h6"},{default:n(()=>[...e[5]||(e[5]=[o("设置",-1)])]),_:1})]),_:1}),t(Ee,{fluid:""},{default:n(()=>[t(At,{modelValue:i.drawer,"onUpdate:modelValue":e[2]||(e[2]=R=>i.drawer=R),permanent:!r.isMobile,temporary:r.isMobile},{default:n(()=>[t(M,null,{default:n(()=>[(c(!0),k(O,null,W(i.settingsTabs,R=>(c(),p(x,{key:R.value,active:i.settingsTab===R.value,color:i.settingsTab===R.value?"primary":"default","prepend-icon":R.icon,class:"rounded-e-xl",onClick:ce=>i.settingsTab=R.value},{default:n(()=>[t(j,null,{default:n(()=>[o(w(R.title),1)]),_:2},1024)]),_:2},1032,["active","color","prepend-icon","onClick"]))),128))]),_:1})]),_:1},8,["modelValue","permanent","temporary"]),t(tn,{modelValue:i.settingsTab,"onUpdate:modelValue":e[4]||(e[4]=R=>i.settingsTab=R),direction:"vertical",style:{width:"100%"}},{default:n(()=>[t(X,{value:"index"},{default:n(()=>[t(C,{border:"",class:"service-card gradient-right clickable mb-4",color:"primary",elevation:"8",hover:"",rounded:"xl",variant:"tonal",onClick:l.openClassworksKV},{default:n(()=>[t(we,null,{default:n(()=>[...e[6]||(e[6]=[m("div",{class:"card-title"},[m("div",null,[m("div",{class:"text-h6"},"在寻找 Classworks KV ?"),m("div",{class:"text-caption text-medium-emphasis"}," 文档形键值数据库 ")])],-1)])]),_:1}),t(S,null,{default:n(()=>[m("div",Li,[t(f,{"append-icon":"mdi-arrow-right",class:"text-none",rounded:"xl",variant:"text",onClick:l.openClassworksKV},{default:n(()=>[...e[7]||(e[7]=[o(" 打开 Classworks KV ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["onClick"]),t(C,{border:"",class:"rounded-xl mb-4",subtitle:"设置",title:"Classworks"},{default:n(()=>[t(S,null,{default:n(()=>[t(L,{class:"rounded-xl",color:"error",icon:"mdi-alert-circle",variant:"tonal"},{default:n(()=>[...e[8]||(e[8]=[o("Classworks 是开源免费的软件,官方没有提供任何形式的付费支持服务,源代码仓库地址在 ",-1),m("a",{href:"https://github.com/ZeroCatDev/Classworks",target:"_blank"},"https://github.com/ZeroCatDev/Classworks",-1),o("。如果您通过有偿协助等付费方式取得本应用,在遇到问题时请在与卖家约定的服务框架下,优先向卖家求助。如果卖家没有提供您预期的服务,请退款或通过其它形式积极维护您的合法权益。 ",-1)])]),_:1}),t(L,{class:"mt-4 rounded-xl",color:"info",icon:"mdi-information",variant:"tonal"},{default:n(()=>[...e[9]||(e[9]=[o("请不要使用浏览器清除缓存功能,否则会导致配置丢失。 ",-1),m("del",null,"恶意的操作可能导致您受到贵校教师的处理 ",-1)])]),_:1}),t(L,{class:"mt-4 rounded-xl",color:"warning",icon:"mdi-information",variant:"tonal"},{default:n(()=>[e[11]||(e[11]=m("p",null," 请不要使用包括但不限于360极速浏览器、360安全浏览器、夸克浏览器、QQ浏览器等浏览器使用 Classworks ,这些浏览器过时且存在严重的一致性问题。在Windows上,使用新版 Microsoft Edge 浏览器是最推荐的选择。 ",-1)),e[12]||(e[12]=m("p",{style:{color:"#666"}}," 上述浏览器商标为其所属公司所有,Classworks™ 与上述浏览器所属公司无竞争关系。 ",-1)),e[13]||(e[13]=m("br",null,null,-1)),t(f,{"append-icon":"mdi-open-in-new",class:"text-none rounded-xl",color:"warning",href:"https://www.microsoft.com/zh-cn/windows/microsoft-edge",target:"_blank",variant:"tonal"},{default:n(()=>[...e[10]||(e[10]=[o("下载 Microsoft Edge(微软边缘浏览器) ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),t(d)]),_:1}),t(X,{value:"server"},{default:n(()=>[t(h,{loading:i.loading.server,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"]),t(u,{border:"",class:"mt-4"}),t(b,{border:"",class:"mt-4"})]),_:1}),t(X,{value:"student"},{default:n(()=>[t(T,{"is-mobile":r.isMobile,border:""},null,8,["is-mobile"]),t(I,{"is-mobile":r.isMobile,border:"",class:"mt-4"},null,8,["is-mobile"])]),_:1}),t(X,{value:"share"},{default:n(()=>[t(te,{border:"",class:"mt-4"})]),_:1}),t(X,{value:"refresh"},{default:n(()=>[t(re,{loading:i.loading.refresh,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(X,{value:"edit"},{default:n(()=>[t(q,{loading:i.loading.edit,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(X,{value:"display"},{default:n(()=>[t(ve,{loading:i.loading.display,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(X,{value:"notification"},{default:n(()=>[t(ue,{border:""})]),_:1}),t(X,{value:"hitokoto"},{default:n(()=>[t(de,{border:""})]),_:1}),t(X,{value:"randomPicker"},{default:n(()=>[t(oe,{"is-mobile":r.isMobile,border:""},null,8,["is-mobile"])]),_:1}),t(X,{value:"subject"},{default:n(()=>[t(be,{border:""}),e[14]||(e[14]=m("br",null,null,-1)),t(D,{border:""})]),_:1}),t(X,{value:"developer"},{default:n(()=>[t(_,{border:"",icon:"mdi-developer-board",title:"开发者选项"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-code-tags"})]),append:n(()=>[t(st,{modelValue:i.settings.developer.enabled,"onUpdate:modelValue":e[3]||(e[3]=R=>i.settings.developer.enabled=R),density:"comfortable","hide-details":"",onChange:l.handleDeveloperChange},null,8,["modelValue","onChange"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[15]||(e[15]=[o("启用开发者选项",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[16]||(e[16]=[o("启用后可以查看和修改开发者设置 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),t(U,{loading:i.loading.developer,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"]),i.settings.developer.enabled?(c(),p(C,{key:0,border:"",class:"mt-4 rounded-lg"},{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cog-outline"}),e[17]||(e[17]=o(" 所有设置 ",-1))]),_:1}),t(Se,null,{default:n(()=>[...e[18]||(e[18]=[o(" 浏览和修改所有可用设置",-1)])]),_:1}),t(S,null,{default:n(()=>[t(V,{onUpdate:l.onSettingUpdate},null,8,["onUpdate"])]),_:1})]),_:1})):v("",!0),i.settings.developer.enabled?(c(),p(B,{key:1,cols:"12"})):v("",!0)]),_:1}),t(X,{value:"about"},{default:n(()=>[t(d),t(J,{border:"",class:"mt-4"})]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(ee,{ref:"messageLog"},null,512)])}const wl=E(Ei,[["render",Ki]]);export{wl as default}; diff --git a/assets/settings-Bd7S8les.js b/assets/settings-Bd7S8les.js deleted file mode 100644 index cc564c3..0000000 --- a/assets/settings-Bd7S8les.js +++ /dev/null @@ -1,24 +0,0 @@ -import{_ as qe,V as It}from"./MessageLog-DNZPN4Qf.js";import{_ as E,N as we,c as P,h as g,d as S,B as Ae,q as G,e as C,L as Ie,z as Xe,f as $e,O as et,g as y,v as ne,P as Tt,s as j,t as Q,l as f,j as M,k as x,i as A,r as Pe,Q as xe,w as Me,x as Ne,o as R,J as Se,p as $,V as tt,K as Ut,R as jt,T as Bt,U as nt,W as Nt,n as Re}from"./index-_6IQhlPZ.js";import{X as c,Y as p,Z as n,j as t,a1 as o,S as w,$ as v,ae as Ce,k as m,P as Pt,_ as k,m as ge,F,a2 as W,r as Mt,ac as ae,ad as fe,n as _e,o as Oe,b as q,aa as Et,D as zt,e as ke,a3 as Lt}from"./vendor-vue-H0jQBZ7T.js";import{V as z}from"./VChip-Veb3ShEh.js";import{V as st}from"./VSwitch-CdpUb5tZ.js";import{V as Ve}from"./VSelect-ANRyd3L-.js";import{V as N}from"./VTextField-CuXGbmmC.js";import{V as it,a as Kt}from"./VSheet-U4CNWLuy.js";import{d as H,b as Fe,a as Rt,o as Ot,k as Ft}from"./dataProvider-BwUtbSl1.js";import{V as L,a as he}from"./VAlert-D9G_9owC.js";import{V as Y,a as B}from"./VRow-WkEz3xRr.js";import{V as Ee}from"./VContainer-Bg8RevuO.js";import{a as De}from"./vendor-utils-DDRLRfsI.js";import{V as ie}from"./VCheckbox-DhU7h1Z3.js";import{V as pe}from"./VTextarea-CCCqy4pz.js";import{s as Jt,a as Qt}from"./soundList-BZnE47k0.js";import{t as Ht,f as Gt,n as Wt,p as Yt,a0 as Zt}from"./vendor-vuetify-ChAgIwn2.js";import{V as lt}from"./VForm-Cskwow1F.js";import{V as ze,a as Le,b as ot,c as Ke}from"./VExpansionPanels-rcXmB3Pp.js";import{e as at,b as qt,a as Z}from"./VTabsWindowItem-DL2r3YhT.js";import{V as Je}from"./VCombobox-D6SxB9Ke.js";import{V as Qe}from"./VCheckboxBtn-DCkgbmVP.js";import{i as Xt,t as $t}from"./serverRotation-BGVL0kta.js";import{getVisitorId as en}from"./visitorId-ZHgZAIad.js";import{b as He,c as Ge,V as tn,a as nn}from"./VAppBarTitle-Cvegbk0-.js";import"./autofocus-BrMOVHY_.js";import"./VPagination-BiSMksGW.js";const sn={name:"SettingsCard",props:{title:{type:String,required:!0},icon:{type:String,required:!0},loading:{type:Boolean,default:!1}}};function ln(s,e,a,r,i,l){return c(),p(C,{class:"settings-card rounded-lg",elevation:"2"},{default:n(()=>[t(we,null,{prepend:n(()=>[t(g,{icon:a.icon,class:"mr-2",size:"large"},null,8,["icon"])]),default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[o(w(a.title),1)]),_:1})]),_:1}),t(S,null,{default:n(()=>[a.loading?(c(),p(Ae,{key:0,class:"mb-4",color:"primary",indeterminate:""})):v("",!0),Ce(s.$slots,"default",{},void 0,!0)]),_:3}),s.$slots.actions?(c(),p(G,{key:0,class:"pa-4"},{default:n(()=>[Ce(s.$slots,"actions",{},void 0,!0)]),_:3})):v("",!0)]),_:3})}const K=E(sn,[["render",ln],["__scopeId","data-v-9c035df1"]]),on=[{text:"帝高阳之苗裔兮,朕皇考曰伯庸。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"摄提贞于孟陬兮,惟庚寅吾以降。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇览揆余初度兮,肇锡余以嘉名。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"名余曰正则兮,字余曰灵均。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷吾既有此内美兮,又重之以修能。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扈江离与辟芷兮,纫秋兰以为佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汩余若将不及兮,恐年岁之不吾与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝搴阰之木兰兮,夕揽洲之宿莽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日月忽其不淹兮,春与秋其代序。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟草木之零落兮,恐美人之迟暮。(惟 通:唯)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不抚壮而弃秽兮,何不改此度?(改此度 一作:改乎此度)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乘骐骥以驰骋兮,来吾道夫先路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"昔三后之纯粹兮,固众芳之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"杂申椒与菌桂兮,岂惟纫夫蕙茝!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"彼尧舜之耿介兮,既遵道而得路。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何桀纣之猖披兮,夫唯捷径以窘步。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟夫党人之偷乐兮,路幽昧以险隘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂余身之惮殃兮,恐皇舆之败绩!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽奔走以先后兮,及前王之踵武。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"荃不查余之中情兮,反信谗而齌怒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余固知謇謇之为患兮,忍而不能舍也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"指九天以为正兮,夫唯灵修之故也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰黄昏以为期兮,羌中道而改路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"初既与余成言兮,后悔遁而有他。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既不难夫离别兮,伤灵修之数化。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既滋兰之九畹兮,又树蕙之百亩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"畦留夷与揭车兮,杂杜衡与芳芷。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"冀枝叶之峻茂兮,愿俟时乎吾将刈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽萎绝其亦何伤兮,哀众芳之芜秽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众皆竞进以贪婪兮,凭不厌乎求索。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羌内恕己以量人兮,各兴心而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽驰骛以追逐兮,非余心之所急。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"老冉冉其将至兮,恐修名之不立。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝饮木兰之坠露兮,夕餐秋菊之落英。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟余情其信姱以练要兮,长顑颔亦何伤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"掔木根以结茝兮,贯薜荔之落蕊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"矫菌桂以纫蕙兮,索胡绳之纚纚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"謇吾法夫前修兮,非世俗之所服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽不周于今之人兮,愿依彭咸之遗则。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"长太息以掩涕兮,哀民生之多艰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余虽好修姱以鞿羁兮,謇朝谇而夕替。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既替余以蕙纕兮,又申之以揽茝。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"亦余心之所善兮,虽九死其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怨灵修之浩荡兮,终不察夫民心。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众女嫉余之蛾眉兮,谣诼谓余以善淫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之工巧兮,偭规矩而改错。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"背绳墨以追曲兮,竞周容以为度。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忳郁邑余侘傺兮,吾独穷困乎此时也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁溘死以流亡兮,余不忍为此态也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸷鸟之不群兮,自前世而固然。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何方圜之能周兮,夫孰异道而相安?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屈心而抑志兮,忍尤而攘诟。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"伏清白以死直兮,固前圣之所厚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"悔相道之不察兮,延伫乎吾将反。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"回朕车以复路兮,及行迷之未远。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"步余马于兰皋兮,驰椒丘且焉止息。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"进不入以离尤兮,退将复修吾初服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"制芰荷以为衣兮,集芙蓉以为裳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不吾知其亦已兮,苟余情其信芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"高余冠之岌岌兮,长余佩之陆离。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳与泽其杂糅兮,唯昭质其犹未亏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以游目兮,将往观乎四荒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"佩缤纷其繁饰兮,芳菲菲其弥章。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民生各有所乐兮,余独好修以为常。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽体解吾犹未变兮,岂余心之可惩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"女媭之婵媛兮,申申其詈予,曰:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鲧婞直以亡身兮,终然夭乎羽之野。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汝何博謇而好修兮,纷独有此姱节?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"薋菉葹以盈室兮,判独离而不服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众不可户说兮,孰云察余之中情?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世并举而好朋兮,夫何茕独而不予听?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"依前圣以节中兮,喟凭心而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"济沅湘以南征兮,就重华而陈词:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"启《九辩》与《九歌》兮,夏康娱以自纵。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不顾难以图后兮,五子用失乎家衖。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羿淫游以佚畋兮,又好射夫封狐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固乱流其鲜终兮,浞又贪夫厥家。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"浇身被服强圉兮,纵欲而不忍。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日康娱而自忘兮,厥首用夫颠陨。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夏桀之常违兮,乃遂焉而逢殃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"后辛之菹醢兮,殷宗用而不长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而祗敬兮,周论道而莫差。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"举贤才而授能兮,循绳墨而不颇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇天无私阿兮,览民德焉错辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫维圣哲以茂行兮,苟得用此下土。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"瞻前而顾后兮,相观民之计极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫孰非义而可用兮?孰非善而可服?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"阽余身而危死兮,览余初其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不量凿而正枘兮,固前修以菹醢。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曾歔欷余郁邑兮,哀朕时之不当。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"揽茹蕙以掩涕兮,沾余襟之浪浪。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"跪敷衽以陈辞兮,耿吾既得此中正。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驷玉虬以椉鹥兮,溘埃风余上征。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于苍梧兮,夕余至乎县圃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲少留此灵琐兮,日忽忽其将暮。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令羲和弭节兮,望崦嵫而勿迫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路曼曼其修远兮,吾将上下而求索。(曼曼 一作:漫漫)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"饮余马于咸池兮,总余辔乎扶桑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折若木以拂日兮,聊逍遥以相羊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"前望舒使先驱兮,后飞廉使奔属。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸾皇为余先戒兮,雷师告余以未具。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令凤鸟飞腾兮,继之以日夜。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"飘风屯其相离兮,帅云霓而来御。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,斑陆离其上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令帝阍开关兮,倚阊阖而望予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时暧暧其将罢兮,结幽兰而延伫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而不分兮,好蔽美而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝吾将济于白水兮,登阆风而绁马。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以流涕兮,哀高丘之无女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"溘吾游此春宫兮,折琼枝以继佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及荣华之未落兮,相下女之可诒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令丰隆乘云兮,求宓妃之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"解佩纕以结言兮,吾令謇修以为理。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,忽纬繣其难迁。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夕归次于穷石兮,朝濯发乎洧盘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"保厥美以骄傲兮,日康娱以淫游。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽信美而无礼兮,来违弃而改求。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览相观于四极兮,周流乎天余乃下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"望瑶台之偃蹇兮,见有娀之佚女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令鸩为媒兮,鸩告余以不好。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"雄鸠之鸣逝兮,余犹恶其佻巧。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"心犹豫而狐疑兮,欲自适而不可。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇既受诒兮,恐高辛之先我。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲远集而无所止兮,聊浮游以逍遥。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及少康之未家兮,留有虞之二姚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"理弱而媒拙兮,恐导言之不固。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而嫉贤兮,好蔽美而称恶。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"闺中既以邃远兮,哲王又不寤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怀朕情而不发兮,余焉能忍而与此终古?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"索琼茅以筳篿兮,命灵氛为余占之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:两美其必合兮,孰信修而慕之?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"思九州之博大兮,岂惟是其有女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉远逝而无狐疑兮,孰求美而释女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何所独无芳草兮,尔何怀乎故宇?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世幽昧以昡曜兮,孰云察余之善恶?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民好恶其不同兮,惟此党人其独异!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"户服艾以盈要兮,谓幽兰其不可佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览察草木其犹未得兮,岂珵美之能当?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苏粪壤以充帏兮,谓申椒其不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲从灵氛之吉占兮,心犹豫而狐疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"巫咸将夕降兮,怀椒糈而要之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"百神翳其备降兮,九疑缤其并迎。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇剡剡其扬灵兮,告余以吉故。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉升降以上下兮,求矩矱之所同。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而求合兮,挚咎繇而能调。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟中情其好修兮,又何必用夫行媒?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"说操筑于傅岩兮,武丁用而不疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吕望之鼓刀兮,遭周文而得举。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁戚之讴歌兮,齐桓闻以该辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及年岁之未晏兮,时亦犹其未央。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"恐鹈鴂之先鸣兮,使夫百草为之不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何琼佩之偃蹇兮,众薆然而蔽之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟此党人之不谅兮,恐嫉妒而折之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时缤纷其变易兮,又何可以淹留?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"兰芷变而不芳兮,荃蕙化而为茅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何昔日之芳草兮,今直为此萧艾也?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂其有他故兮,莫好修之害也!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余以兰为可恃兮,羌无实而容长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"委厥美以从俗兮,苟得列乎众芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"椒专佞以慢慆兮,樧又欲充夫佩帏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既干进而务入兮,又何芳之能祗?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之流从兮,又孰能无变化?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览椒兰其若兹兮,又况揭车与江离?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟兹佩之可贵兮,委厥美而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳菲菲而难亏兮,芬至今犹未沬。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"和调度以自娱兮,聊浮游而求女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及余饰之方壮兮,周流观乎上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"灵氛既告余以吉占兮,历吉日乎吾将行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折琼枝以为羞兮,精琼爢以为粻。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"为余驾飞龙兮,杂瑶象以为车。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何离心之可同兮?吾将远逝以自疏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"邅吾道夫昆仑兮,路修远以周流。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扬云霓之晻蔼兮,鸣玉鸾之啾啾。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于天津兮,夕余至乎西极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇翼其承旗兮,高翱翔之翼翼。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽吾行此流沙兮,遵赤水而容与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"麾蛟龙使梁津兮,诏西皇使涉予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路修远以多艰兮,腾众车使径待。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路不周以左转兮,指西海以为期。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屯余车其千乘兮,齐玉轪而并驰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驾八龙之婉婉兮,载云旗之委蛇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"抑志而弭节兮,神高驰之邈邈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"奏《九歌》而舞《韶》兮,聊假日以媮乐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"陟升皇之赫戏兮,忽临睨夫旧乡。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"仆夫悲余马怀兮,蜷局顾而不行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乱曰:已矣哉!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"国无人莫我知兮,又何怀乎故都!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既莫足与为美政兮,吾将从彭咸之所居!",author:"离骚",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"}],We={quotes:on};let je=null;async function an(){return je||(je=(await $e(async()=>{const{default:s}=await import("./core-IlBOtVFl.js").then(e=>e.c);return{default:s}},[],import.meta.url)).default),je}const Ye={text:"点击此处可以查看 Classworks 用户群里沙雕群友们的发言",author:"点击后会复制当前句子到剪贴板中"},Ze={main:{delay:50,deleteSpeed:100},source:{delay:10,deleteSpeed:10,cursor:""}},rn={name:"EchoChamberCard",components:{SettingsCard:K},data:()=>({typewriter:null,sourceWriter:null,currentQuote:Ye,hasClicked:!1}),mounted(){this.initTypewriters()},methods:{async initTypewriters(){const s=await an();this.typewriter=new s(this.$refs.typewriter,Ze.main),this.sourceWriter=new s(this.$refs.sourceWriter,Ze.source),this.typeQuote(Ye)},typeQuote(s){this.typewriter.deleteAll(30).typeString(s.text).start(),s.author&&this.sourceWriter.deleteAll(20).typeString(s.author).start()},async handleClick(){this.hasClicked||(this.hasClicked=!0),await this.copyToClipboard(),this.currentQuote=this.getRandomQuote(),this.typeQuote(this.currentQuote)},getRandomQuote(){return We.quotes[Math.floor(Math.random()*We.quotes.length)]},async copyToClipboard(){if(!this.currentQuote)return;const{text:s,author:e,contributor:a,link:r}=this.currentQuote,i=[s,e&&`作者:${e}`,a&&`贡献者:${a}`,(r||a)&&`来源:${r||`https://github.com/${a}`}`].filter(Boolean);try{await navigator.clipboard.writeText(i.join(` -`))}catch(l){console.error("复制失败:",l)}}},beforeUnmount(){[this.typewriter,this.sourceWriter].forEach(s=>s==null?void 0:s.stop())}},un={ref:"typewriter",class:"typewriter-text"},dn={ref:"sourceWriter",class:"source-text"};function cn(s,e,a,r,i,l){const u=K;return c(),p(u,{border:"",icon:"mdi-thought-bubble",title:"回声洞",onClick:l.handleClick},{default:n(()=>[t(S,null,{default:n(()=>[m("div",un,null,512),m("div",dn,null,512)]),_:1}),t(Pt,{name:"fade"},{default:n(()=>{var h;return[(h=s.currentQuote)!=null&&h.contributor?(c(),p(z,{key:0,class:"contributor"},{default:n(()=>[t(Ie,{start:""},{default:n(()=>[t(Xe,{src:`https://github.com/${s.currentQuote.contributor}.png`},null,8,["src"])]),_:1}),o(" "+w(s.currentQuote.contributor),1)]),_:1})):v("",!0)]}),_:1})]),_:1},8,["onClick"])}const rt=E(rn,[["render",cn],["__scopeId","data-v-2acb3fbb"]]),mn={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 s=this.settingKey.split(".");return s[s.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=Tt(this.settingKey),!this.definition){console.error(`未找到设置项定义: ${this.settingKey}`);return}if(this.type=this.definition.type,this.localValue=y(this.settingKey),this.type==="string"){if(this.isFontFamily)this.selectOptions=this.fontFamilies,this.hasOptions=!0;else if(this.settingKey in this.displayValueMappings){const s=this.displayValueMappings[this.settingKey];this.selectOptions=Object.entries(s).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 r=e[1].split(",").map(i=>{const l=i.trim().replace(/['"]/g,"");return{title:this.getDisplayValue(l)||l,value:l}});r.length>0&&(this.selectOptions=r,this.hasOptions=!0)}}}if(this.type==="number"&&this.definition.validate){const s=this.definition.validate.toString(),e=s.match(/value\s*>=\s*(\d+)/);e&&(this.minValue=Number(e[1]));const a=s.match(/value\s*<=\s*(\d+)/);a&&(this.maxValue=Number(a[1]));const r=this.maxValue-this.minValue;r>100?this.stepValue=10:r>20?this.stepValue=5:r>10?this.stepValue=2:this.stepValue=1}},getDisplayValue(s){return this.settingKey in this.displayValueMappings&&this.displayValueMappings[this.settingKey][s]||s},updateSetting(s){let e=s;this.type==="boolean"?e=!!s:this.type==="number"&&(e=Number(s),ethis.maxValue&&(e=this.maxValue)),ne(this.settingKey,e)?this.$emit("update",this.settingKey,e):(this.localValue=y(this.settingKey),this.$emit("error",this.settingKey))},adjustValue(s){if(this.type!=="number")return;const e=this.localValue+s;e>=this.minValue&&e<=this.maxValue&&(this.localValue=e,this.updateSetting(e))},copySettingId(){navigator.clipboard.writeText(this.settingKey).then(()=>{this.showSnackbarMessage("设置ID已复制到剪贴板")}).catch(s=>{console.error("复制失败:",s)})},copySettingValue(){let s="";typeof this.localValue=="object"&&this.localValue!==null?s=JSON.stringify(this.localValue):s=String(this.localValue),navigator.clipboard.writeText(s).then(()=>{this.showSnackbarMessage("设置值已复制到剪贴板")}).catch(e=>{console.error("复制失败:",e)})},resetToDefault(){this.definition&&(et(this.settingKey),this.localValue=y(this.settingKey),this.showSnackbarMessage("已重置为默认值"),this.$emit("update",this.settingKey,this.localValue))},showSnackbarMessage(s){this.snackbarText=s,this.showSnackbar=!0}}},fn={class:"text-caption text-grey-darken-1"},hn={class:"d-flex flex-column flex-sm-row align-center"},pn={key:0,class:"me-2"},wn={key:2,class:"d-flex align-center"},gn={key:0,class:"px-4 pb-2 pt-0"};function vn(s,e,a,r,i,l){return c(),k(F,null,[t(x,{disabled:a.disabled,class:"setting-item"},{prepend:n(()=>[t(g,{icon:l.settingIcon},null,8,["icon"])]),append:n(()=>[m("div",hn,[i.type!=="string"||i.hasOptions?(c(),k("div",pn,[i.type==="boolean"?(c(),p(st,{key:0,modelValue:i.localValue,"onUpdate:modelValue":[e[0]||(e[0]=u=>i.localValue=u),l.updateSetting],disabled:a.disabled,density:"comfortable","hide-details":""},null,8,["modelValue","disabled","onUpdate:modelValue"])):i.type==="string"&&i.hasOptions?(c(),p(Ve,{key:1,modelValue:i.localValue,"onUpdate:modelValue":[e[1]||(e[1]=u=>i.localValue=u),l.updateSetting],disabled:a.disabled,items:i.selectOptions,"bg-color":"surface",class:"setting-select",density:"compact","hide-details":"","item-title":"title","item-value":"value",variant:"outlined"},null,8,["modelValue","disabled","items","onUpdate:modelValue"])):i.type==="number"?(c(),k("div",wn,[t(f,{disabled:a.disabled||i.localValue<=i.minValue,icon:"mdi-minus",size:"small",variant:"text",onClick:e[2]||(e[2]=u=>l.adjustValue(-i.stepValue))},null,8,["disabled"]),t(N,{modelValue:i.localValue,"onUpdate:modelValue":[e[3]||(e[3]=u=>i.localValue=u),l.updateSetting],modelModifiers:{number:!0},disabled:a.disabled,max:i.maxValue,min:i.minValue,step:i.stepValue,"bg-color":"surface",class:"mx-2 setting-number-field",density:"compact","hide-details":"",style:{width:"80px"},type:"number",variant:"outlined"},null,8,["modelValue","disabled","max","min","step","onUpdate:modelValue"]),t(f,{disabled:a.disabled||i.localValue>=i.maxValue,icon:"mdi-plus",size:"small",variant:"text",onClick:e[4]||(e[4]=u=>l.adjustValue(i.stepValue))},null,8,["disabled"])])):v("",!0)])):v("",!0),t(it,{location:"bottom"},{activator:n(({props:u})=>[t(f,ge({disabled:a.disabled,class:"ml-2",icon:"mdi-dots-vertical",size:"small"},u,{variant:"text"}),null,16,["disabled"])]),default:n(()=>[t(M,{density:"compact"},{default:n(()=>[t(x,{onClick:l.copySettingId},{prepend:n(()=>[t(g,{icon:"mdi-key",size:"small"})]),default:n(()=>[t(j,null,{default:n(()=>[...e[7]||(e[7]=[o("复制设置ID",-1)])]),_:1})]),_:1},8,["onClick"]),t(x,{onClick:l.copySettingValue},{prepend:n(()=>[t(g,{icon:"mdi-content-copy",size:"small"})]),default:n(()=>[t(j,null,{default:n(()=>[...e[8]||(e[8]=[o("复制设置值",-1)])]),_:1})]),_:1},8,["onClick"]),t(A),t(x,{disabled:l.isDefaultValue,onClick:l.resetToDefault},{prepend:n(()=>[t(g,{icon:"mdi-restore",size:"small"})]),default:n(()=>[t(j,null,{default:n(()=>[...e[9]||(e[9]=[o("重置为默认值",-1)])]),_:1})]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})])]),default:n(()=>[t(j,{class:"text-wrap"},{default:n(()=>[o(w(l.displayTitle),1)]),_:1}),t(Q,{class:"d-flex align-center text-wrap"},{default:n(()=>[m("span",fn,w(a.settingKey),1)]),_:1})]),_:1},8,["disabled"]),i.type==="string"&&!i.hasOptions?(c(),k("div",gn,[t(N,{modelValue:i.localValue,"onUpdate:modelValue":[e[5]||(e[5]=u=>i.localValue=u),l.updateSetting],disabled:a.disabled,"bg-color":"surface",class:"setting-text-field mt-1",density:"compact","hide-details":"",variant:"outlined"},null,8,["modelValue","disabled","onUpdate:modelValue"])])):v("",!0),t(Pe,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[6]||(e[6]=u=>i.showSnackbar=u),timeout:2e3,color:"success",location:"top"},{default:n(()=>[o(w(i.snackbarText),1)]),_:1},8,["modelValue"])],64)}const le=E(mn,[["render",vn],["__scopeId","data-v-08b49b47"]]),bn={name:"SettingsExplorer",components:{SettingItem:le},data(){return{searchQuery:"",currentSettings:{},unwatchFunction:null}},computed:{isDeveloperMode(){return y("developer.enabled")},allSettings(){var e;const s=[];for(const[a,r]of Object.entries(Ne))this.searchQuery&&!a.toLowerCase().includes(this.searchQuery.toLowerCase())&&!((e=r.description)!=null&&e.toLowerCase().includes(this.searchQuery.toLowerCase()))||s.push({key:a,...r});return s},formattedSettings(){return JSON.stringify(this.currentSettings,null,2)}},created(){this.updateCurrentSettings(),this.unwatchFunction=Me(()=>{this.updateCurrentSettings()})},beforeUnmount(){this.unwatchFunction&&this.unwatchFunction()},methods:{updateCurrentSettings(){this.currentSettings=xe()},onSettingUpdate(s,e){this.$emit("update",s,e),this.updateCurrentSettings()},onSettingError(s){this.$emit("error",s)},copySettingsToClipboard(){navigator.clipboard.writeText(JSON.stringify(this.currentSettings)).then(()=>{this.$emit("message",{type:"success",text:"设置已复制到剪贴板"})}).catch(s=>{console.error("复制到剪贴板失败:",s),this.$emit("message",{type:"error",text:"复制到剪贴板失败"})})}}},kn={class:"settings-explorer"},yn={class:"settings-json"};function xn(s,e,a,r,i,l){const u=le;return c(),k("div",kn,[m("div",null,[t(N,{modelValue:i.searchQuery,"onUpdate:modelValue":e[0]||(e[0]=h=>i.searchQuery=h),class:"mb-4",clearable:"",density:"comfortable",label:"搜索设置","prepend-inner-icon":"mdi-magnify",variant:"outlined"},null,8,["modelValue"]),t(M,null,{default:n(()=>[(c(!0),k(F,null,W(l.allSettings,h=>(c(),k("div",{key:h.key},[(c(),p(u,{key:h.key,disabled:h.requireDeveloper&&!l.isDeveloperMode,"setting-key":h.key,onError:l.onSettingError,onUpdate:l.onSettingUpdate},null,8,["disabled","setting-key","onError","onUpdate"])),t(A,{class:"my-2"})]))),128))]),_:1}),t(C,{border:""},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[...e[1]||(e[1]=[o("当前配置",-1)])]),_:1}),t(S,null,{default:n(()=>[m("pre",yn,w(l.formattedSettings),1)]),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{onClick:l.copySettingsToClipboard},{default:n(()=>[e[3]||(e[3]=o(" 复制到剪贴板 ",-1)),t(g,{right:""},{default:n(()=>[...e[2]||(e[2]=[o("mdi-content-copy",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1})]),_:1})])])}const ut=E(bn,[["render",xn],["__scopeId","data-v-4d032f99"]]),Sn={name:"SettingGroup",props:{title:{type:String,default:null},description:{type:String,default:null},icon:{type:String,default:null},border:{type:Boolean,default:!1}},methods:{onSettingUpdate(s,e){this.$emit("update",s,e)},onSettingError(s){this.$emit("error",s)}}};function Cn(s,e,a,r,i,l){return c(),p(C,{border:a.border,class:"setting-group"},{default:n(()=>[a.title?(c(),p(P,{key:0,class:"d-flex align-center"},{default:n(()=>[a.icon?(c(),p(g,{key:0,icon:a.icon,class:"mr-2"},null,8,["icon"])):v("",!0),o(" "+w(a.title),1)]),_:1})):v("",!0),a.description?(c(),p(Se,{key:1},{default:n(()=>[o(w(a.description),1)]),_:1})):v("",!0),t(S,null,{default:n(()=>[t(M,null,{default:n(()=>[Ce(s.$slots,"default",{},void 0,!0)]),_:3})]),_:3}),s.$slots.actions?(c(),p(G,{key:2},{default:n(()=>[Ce(s.$slots,"actions",{},void 0,!0)]),_:3})):v("",!0)]),_:3},8,["border"])}const Te=E(Sn,[["render",Cn],["__scopeId","data-v-9af32ae4"]]),_n={subjects:{语文:{books:{课本:["第一单元","第二单元"],练习册:["第一章","第二章"]}},数学:{books:{课本:["第一章","第二章"],习题册:["基础练习","提高练习"]}},英语:{books:{课本:["Unit 1","Unit 2"],练习册:["Chapter 1","Chapter 2"]}}},commonSubject:{books:{试卷:["单元测试","期中测试","期末测试"],假期作业:["必做题","选做题"]}},actions:["写完","下一课","不交","明天交"]},Vn={name:"HomeworkTemplateCard",components:{SettingsCard:K,SettingGroup:Te},data(){return{loading:!1,error:null,config:Mt(JSON.parse(JSON.stringify(_n))),originalConfig:null,newSubject:"",newCommonBook:"",newAction:"",newTask:"",editedSubjects:{},editedBookTypes:{},newBookTypes:{},newBooks:{},showSnackbar:!1,snackbarText:"",snackbarColor:"success",isNewConfig:!0,dialog:{show:!1,title:"",nameLabel:"",editedItem:{name:"",type:"",subject:"",bookType:"",originalName:"",tasks:[]}}}},computed:{subjectList(){return Object.keys(this.config.subjects)},hasChanges(){return this.isNewConfig?!0:this.originalConfig&&JSON.stringify(this.config)!==JSON.stringify(this.originalConfig)}},created(){this.loadConfig()},methods:{async loadConfig(){var s,e;this.loading=!0;try{const a=await H.loadData("classworks-config-homework-template");if(a){const r=a;Object.assign(this.config,r),this.originalConfig=JSON.parse(JSON.stringify(r)),this.isNewConfig=!1,this.showMessage("配置已加载","success")}else if(((s=a.error)==null?void 0:s.code)==="NOT_FOUND")this.showMessage("使用默认配置","info"),this.isNewConfig=!0;else{const r=((e=a.error)==null?void 0:e.message)||"加载失败";this.showMessage(`加载失败: ${r},可继续编辑当前配置`,"warning")}}catch(a){console.error("Failed to load config:",a),this.showMessage("加载失败,可继续编辑当前配置","warning")}this.loading=!1},async saveConfig(){this.loading=!0;try{const s=await H.saveData("classworks-config-homework-template",this.config);if(s)this.originalConfig=JSON.parse(JSON.stringify(this.config)),this.isNewConfig=!1,this.showMessage("配置已保存","success");else throw new Error(s||"保存失败")}catch(s){console.error("Failed to save config:",s),this.showMessage(`保存失败: ${s.message},请稍后重试`,"error")}this.loading=!1},showMessage(s,e="success"){this.snackbarText=s,this.snackbarColor=e,this.showSnackbar=!0},addSubject(){this.newSubject&&(this.config.subjects[this.newSubject]||(this.config.subjects[this.newSubject]={books:{}}),this.newSubject="")},updateSubject(s){const e=this.editedSubjects[s];if(e&&e!==s){const a=this.config.subjects[s];this.config.subjects[e]=a,delete this.config.subjects[s]}delete this.editedSubjects[s]},deleteSubject(s){delete this.config.subjects[s]},addBookType(s){const e=this.newBookTypes[s];e&&(this.config.subjects[s].books[e]||(this.config.subjects[s].books[e]=[]),this.newBookTypes[s]="")},updateBookType(s,e){const a=`${s}-${e}`,r=this.editedBookTypes[a];if(r&&r!==e){const i=this.config.subjects[s].books[e];this.config.subjects[s].books[r]=i,delete this.config.subjects[s].books[e]}delete this.editedBookTypes[a]},deleteBookType(s,e){s==="common"?delete this.config.commonSubject.books[e]:delete this.config.subjects[s].books[e]},addBook(s,e){const a=`${s}-${e}`,r=this.newBooks[a];r&&(this.config.subjects[s].books[e].includes(r)||this.config.subjects[s].books[e].push(r),this.newBooks[a]="")},removeBook(s,e,a){const r=this.config.subjects[s].books[e],i=r.indexOf(a);i>-1&&r.splice(i,1)},addCommonBook(){this.newCommonBook&&(this.config.commonSubject.books[this.newCommonBook]||(this.config.commonSubject.books[this.newCommonBook]=[]),this.newCommonBook="")},removeCommonBook(s){delete this.config.commonSubject.books[s]},addAction(){this.newAction&&(this.config.actions.includes(this.newAction)||this.config.actions.push(this.newAction),this.newAction="")},removeAction(s){const e=this.config.actions.indexOf(s);e>-1&&this.config.actions.splice(e,1)},openBookDialog(s,e,a){this.dialog.show=!0,this.dialog.title="编辑需完成部分",this.dialog.nameLabel="部分名称",this.dialog.editedItem={name:a,type:"book",subject:s,bookType:e,originalName:a,tasks:this.config.subjects[s].books[e]}},openCommonBookDialog(s){this.dialog.show=!0,this.dialog.title="编辑通用作业本",this.dialog.nameLabel="作业本名称",this.dialog.editedItem={name:s,type:"commonBook",originalName:s,tasks:Array.isArray(this.config.commonSubject.books[s])?[...this.config.commonSubject.books[s]]:[]}},openActionDialog(s){this.dialog={show:!0,title:"编辑操作",nameLabel:"操作名称",editedItem:{name:s,type:"action",originalName:s,tasks:[]}}},addTask(){this.newTask&&(this.dialog.editedItem.tasks||(this.dialog.editedItem.tasks=[]),this.dialog.editedItem.tasks.push(this.newTask),this.newTask="")},removeTask(s){this.dialog.editedItem.tasks.splice(s,1)},openSubjectBookDialog(s,e,a){this.dialog.show=!0,this.dialog.title=s==="common"?"编辑通用作业本":"编辑作业本",this.dialog.nameLabel="作业本名称",this.dialog.editedItem={name:e,type:"subjectBook",subject:s,originalName:e,tasks:Array.isArray(a)?[...a]:[]}},saveDialog(){const{type:s,name:e,subject:a,originalName:r,tasks:i}=this.dialog.editedItem;if(!e){this.showMessage("名称不能为空","error");return}let l;const u=a==="common"?this.config.commonSubject.books:a?this.config.subjects[a].books:null;switch(s){case"subjectBook":u&&(r!==e?(u[e]=i||[],delete u[r]):u[e]=i||[]);break;case"action":l=this.config.actions.indexOf(r),l>-1&&(this.config.actions[l]=e);break}this.closeDialog()},closeDialog(){this.dialog={show:!1,title:"",nameLabel:"",editedItem:{name:"",type:"",subject:"",originalName:"",tasks:[]}},this.newTask=""}}},Dn={class:"d-flex justify-space-between align-center mb-6"};function An(s,e,a,r,i,l){const u=Te,h=K;return c(),p(h,{loading:i.loading,border:"",icon:"mdi-book-edit",title:"作业模板配置"},{default:n(()=>[i.error?(c(),p(L,{key:0,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.error),1)]),_:1})):v("",!0),m("div",Dn,[m("div",null,[t(f,{loading:i.loading,class:"mr-2",color:"primary","prepend-icon":"mdi-refresh",size:"large",onClick:l.loadConfig},{default:n(()=>[...e[7]||(e[7]=[o(" 重新加载配置 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{loading:i.loading,color:"success","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveConfig},{default:n(()=>[...e[8]||(e[8]=[o(" 保存所有更改 ",-1)])]),_:1},8,["loading","onClick"])]),l.hasChanges?(c(),p(z,{key:0,color:"warning",variant:"elevated"},{default:n(()=>[...e[9]||(e[9]=[o(" 有未保存的更改 ",-1)])]),_:1})):v("",!0)]),t(Y,null,{default:n(()=>[t(B,{cols:"12",md:"6"},{default:n(()=>[t(u,{border:"",icon:"mdi-book",title:"科目配置"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{default:n(()=>[t(N,{modelValue:i.newSubject,"onUpdate:modelValue":e[0]||(e[0]=d=>i.newSubject=d),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加新科目",variant:"outlined","onClick:appendInner":l.addSubject,onKeyup:ae(l.addSubject,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),(c(!0),k(F,null,W(l.subjectList,d=>(c(),p(x,{key:d},{default:n(()=>[t(C,{border:"",class:"w-100 mb-2"},{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(N,{modelValue:i.editedSubjects[d],"onUpdate:modelValue":b=>i.editedSubjects[d]=b,placeholder:d,density:"comfortable","hide-details":"",variant:"plain",onBlur:b=>l.updateSubject(d)},null,8,["modelValue","onUpdate:modelValue","placeholder","onBlur"]),t(R),t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:b=>l.deleteSubject(d)},null,8,["onClick"])]),_:2},1024),t(S,null,{default:n(()=>[t(N,{modelValue:i.newBookTypes[d],"onUpdate:modelValue":b=>i.newBookTypes[d]=b,"append-inner-icon":"mdi-plus",class:"mb-2",density:"comfortable",label:"添加作业本名称",variant:"outlined","onClick:appendInner":()=>l.addBookType(d),onKeyup:ae(()=>l.addBookType(d),["enter"])},null,8,["modelValue","onUpdate:modelValue","onClick:appendInner","onKeyup"]),t(M,{border:"",density:"compact",rounded:""},{default:n(()=>[(c(!0),k(F,null,W(i.config.subjects[d].books,(b,T)=>(c(),p(x,{key:T,title:T,onClick:I=>l.openSubjectBookDialog(d,T,b)},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-book-open-variant"})]),append:n(()=>[t(z,{class:"mr-2",color:"info",size:"small"},{default:n(()=>[o(w(b.length)+"个部分 ",1)]),_:2},1024),t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:fe(()=>l.deleteBookType(d,T),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),t(B,{cols:"12",md:"6"},{default:n(()=>[t(u,{border:"",icon:"mdi-cog",title:"通用配置"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{default:n(()=>[t(N,{modelValue:i.newCommonBook,"onUpdate:modelValue":e[1]||(e[1]=d=>i.newCommonBook=d),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加作业本名称",variant:"outlined","onClick:appendInner":l.addCommonBook,onKeyup:ae(l.addCommonBook,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),t(x,null,{default:n(()=>[t(M,{border:"",density:"compact",rounded:""},{default:n(()=>[(c(!0),k(F,null,W(i.config.commonSubject.books,(d,b)=>(c(),p(x,{key:b,title:b,onClick:T=>l.openSubjectBookDialog("common",b,d)},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-book-multiple"})]),append:n(()=>[t(z,{class:"mr-2",color:"info",size:"small"},{default:n(()=>[o(w(d.length)+"个部分 ",1)]),_:2},1024),t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:fe(()=>l.deleteBookType("common",b),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1}),t(A,{class:"my-2"}),t(x,null,{default:n(()=>[t(N,{modelValue:i.newAction,"onUpdate:modelValue":e[2]||(e[2]=d=>i.newAction=d),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加操作",variant:"outlined","onClick:appendInner":l.addAction,onKeyup:ae(l.addAction,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),t(x,null,{default:n(()=>[t(M,{border:"",density:"compact",rounded:""},{default:n(()=>[(c(!0),k(F,null,W(i.config.actions,d=>(c(),p(x,{key:d,title:d,onClick:b=>l.openActionDialog(d)},{append:n(()=>[t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:fe(b=>l.removeAction(d),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t($,{modelValue:i.dialog.show,"onUpdate:modelValue":e[5]||(e[5]=d=>i.dialog.show=d),"max-width":"600px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"text-h5 pa-4"},{default:n(()=>[o(w(i.dialog.title),1)]),_:1}),t(S,null,{default:n(()=>[t(Ee,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{cols:"12"},{default:n(()=>[t(N,{modelValue:i.dialog.editedItem.name,"onUpdate:modelValue":e[3]||(e[3]=d=>i.dialog.editedItem.name=d),label:i.dialog.nameLabel,rules:[d=>!!d||"名称不能为空"],density:"comfortable",variant:"outlined"},null,8,["modelValue","label","rules"])]),_:1}),i.dialog.editedItem.type==="subjectBook"?(c(),p(B,{key:0,cols:"12"},{default:n(()=>[e[10]||(e[10]=m("div",{class:"text-subtitle-2 mb-2"},"所属科目",-1)),t(z,{color:"primary"},{default:n(()=>[o(w(i.dialog.editedItem.subject),1)]),_:1})]),_:1})):v("",!0),["subjectBook","commonBook"].includes(i.dialog.editedItem.type)?(c(),p(B,{key:1,cols:"12"},{default:n(()=>[t(C,{variant:"outlined"},{default:n(()=>[t(P,{class:"text-subtitle-1 py-2"},{default:n(()=>[...e[11]||(e[11]=[o("需完成部分",-1)])]),_:1}),t(S,{class:"pt-0"},{default:n(()=>[t(M,{border:"",class:"mb-2",density:"compact",rounded:""},{default:n(()=>[(c(!0),k(F,null,W(i.dialog.editedItem.tasks,(d,b)=>(c(),p(x,{key:b},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-checkbox-blank-circle-outline",size:"small"})]),append:n(()=>[t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:T=>l.removeTask(b)},null,8,["onClick"])]),default:n(()=>[t(N,{modelValue:i.dialog.editedItem.tasks[b],"onUpdate:modelValue":T=>i.dialog.editedItem.tasks[b]=T,density:"compact","hide-details":"",variant:"plain"},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024))),128))]),_:1}),t(N,{modelValue:i.newTask,"onUpdate:modelValue":e[4]||(e[4]=d=>i.newTask=d),"append-inner-icon":"mdi-plus",class:"mt-2",density:"comfortable",label:"添加需完成部分",variant:"outlined","onClick:appendInner":l.addTask,onKeyup:ae(l.addTask,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1})]),_:1})]),_:1})):v("",!0)]),_:1})]),_:1})]),_:1}),t(G,{class:"pa-4"},{default:n(()=>[t(R),t(f,{color:"primary",variant:"elevated",onClick:l.saveDialog},{default:n(()=>[...e[12]||(e[12]=[o(" 关闭 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"error",variant:"text",onClick:l.closeDialog},{default:n(()=>[...e[13]||(e[13]=[o(" 取消 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(Pe,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[6]||(e[6]=d=>i.showSnackbar=d),color:i.snackbarColor,timeout:3e3},{default:n(()=>[o(w(i.snackbarText),1)]),_:1},8,["modelValue","color"])]),_:1},8,["loading"])}const dt=E(Vn,[["render",An],["__scopeId","data-v-67769fa2"]]),In={name:"SubjectManagementCard",components:{SettingsCard:K},data(){return{loading:!1,error:null,subjects:[],originalSubjects:null,newSubjectName:"",showSnackbar:!1,snackbarText:"",snackbarColor:"success",defaultSubjects:[{name:"语文",order:0},{name:"数学",order:1},{name:"英语",order:2},{name:"物理",order:3},{name:"化学",order:4},{name:"生物",order:5},{name:"政治",order:6},{name:"历史",order:7},{name:"地理",order:8},{name:"其他",order:9}]}},computed:{hasChanges(){return this.originalSubjects&&JSON.stringify(this.subjects)!==JSON.stringify(this.originalSubjects)}},created(){this.loadConfig()},methods:{async loadConfig(){this.loading=!0;try{const s=await H.loadData("classworks-config-subject");s?(this.subjects=s.map((e,a)=>({name:e.name,order:e.order??a})).sort((e,a)=>e.order-a.order),this.originalSubjects=JSON.parse(JSON.stringify(this.subjects)),this.showMessage("配置已加载","success")):(this.subjects=[],this.originalSubjects=[],this.showMessage("使用默认配置","info"))}catch(s){console.error("Failed to load config:",s),this.showMessage("加载失败,可继续编辑当前配置","warning")}this.loading=!1},async saveConfig(){this.loading=!0;try{const s=await H.saveData("classworks-config-subject",this.subjects);if(s)this.originalSubjects=JSON.parse(JSON.stringify(this.subjects)),this.showMessage("配置已保存","success");else throw new Error(s||"保存失败")}catch(s){console.error("Failed to save config:",s),this.showMessage(`保存失败: ${s.message},请稍后重试`,"error")}this.loading=!1},showMessage(s,e="success"){this.snackbarText=s,this.snackbarColor=e,this.showSnackbar=!0},addSubject(){if(!this.newSubjectName)return;const s={name:this.newSubjectName,order:this.subjects.length};this.subjects.push(s),this.newSubjectName=""},updateSubject(s){const e=this.subjects.findIndex(a=>a.order===s.order);e>-1&&(this.subjects[e]={...s})},deleteSubject(s){const e=this.subjects.findIndex(a=>a.order===s.order);e>-1&&(this.subjects.splice(e,1),this.subjects.forEach((a,r)=>{a.order=r}))},moveSubject(s,e){const a=s+e;if(a>=0&&a{i.order=l})}},resetToDefault(){this.subjects=JSON.parse(JSON.stringify(this.defaultSubjects)),this.showMessage("已重置为默认科目列表","info")}}},Tn={class:"d-flex justify-space-between align-center mb-6"},Un={class:"d-flex flex-column align-center mr-2"};function jn(s,e,a,r,i,l){const u=K;return c(),p(u,{loading:i.loading,border:"",icon:"mdi-book-multiple",title:"科目管理"},{default:n(()=>[i.error?(c(),p(L,{key:0,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.error),1)]),_:1})):v("",!0),m("div",Tn,[m("div",null,[t(f,{loading:i.loading,class:"mr-2",color:"primary","prepend-icon":"mdi-refresh",size:"large",variant:"text",onClick:l.loadConfig},{default:n(()=>[...e[2]||(e[2]=[o(" 重新加载 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{loading:i.loading,color:"success","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveConfig},{default:n(()=>[...e[3]||(e[3]=[o(" 保存 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{loading:i.loading,class:"mr-2","prepend-icon":"mdi-restore",variant:"text",onClick:l.resetToDefault},{default:n(()=>[...e[4]||(e[4]=[o(" 重置为默认 ",-1)])]),_:1},8,["loading","onClick"])]),l.hasChanges?(c(),p(z,{key:0,color:"warning",variant:"elevated"},{default:n(()=>[...e[5]||(e[5]=[o(" 有未保存的更改 ",-1)])]),_:1})):v("",!0)]),t(C,{class:"mb-4",variant:"outlined"},{default:n(()=>[t(S,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{cols:"12",sm:"6"},{default:n(()=>[t(N,{modelValue:i.newSubjectName,"onUpdate:modelValue":e[0]||(e[0]=h=>i.newSubjectName=h),rules:[h=>!!h||"科目名称不能为空"],"append-inner-icon":"mdi-plus",density:"comfortable",label:"科目名称",variant:"outlined",onKeyup:ae(l.addSubject,["enter"]),"onClick:appendInner":l.addSubject},null,8,["modelValue","rules","onKeyup","onClick:appendInner"])]),_:1})]),_:1})]),_:1})]),_:1}),t(C,{variant:"outlined"},{default:n(()=>[t(S,{class:"pa-0"},{default:n(()=>[t(M,{lines:"one"},{default:n(()=>[(c(!0),k(F,null,W(i.subjects,(h,d)=>(c(),p(x,{key:h.order},{prepend:n(()=>[m("div",Un,[t(f,{disabled:d===0,icon:"mdi-chevron-up",size:"small",variant:"text",onClick:b=>l.moveSubject(d,-1)},null,8,["disabled","onClick"]),t(f,{disabled:d===i.subjects.length-1,icon:"mdi-chevron-down",size:"small",variant:"text",onClick:b=>l.moveSubject(d,1)},null,8,["disabled","onClick"])])]),append:n(()=>[t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:b=>l.deleteSubject(h)},null,8,["onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[t(N,{modelValue:h.name,"onUpdate:modelValue":b=>h.name=b,density:"compact","hide-details":"",variant:"plain",onBlur:b=>l.updateSubject(h)},null,8,["modelValue","onUpdate:modelValue","onBlur"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),t(Pe,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[1]||(e[1]=h=>i.showSnackbar=h),color:i.snackbarColor,timeout:3e3},{default:n(()=>[o(w(i.snackbarText),1)]),_:1},8,["modelValue","color"])]),_:1},8,["loading"])}const ct=E(In,[["render",jn],["__scopeId","data-v-f87674cf"]]),Bn={};function Nn(s,e,a,r,i,l){const u=le,h=K;return c(),p(h,{icon:"mdi-cog",title:"编辑设置"},{default:n(()=>[t(M,null,{default:n(()=>[t(u,{"setting-key":"randomPicker.enabled"}),t(A,{class:"my-2"}),t(u,{"setting-key":"randomPicker.mode"}),t(A,{class:"my-2"}),t(u,{"setting-key":"randomPicker.minNumber"}),t(A,{class:"my-2"}),t(u,{"setting-key":"randomPicker.maxNumber"}),t(A,{class:"my-2"}),t(u,{"setting-key":"randomPicker.defaultCount"}),t(A,{class:"my-2"}),t(u,{"setting-key":"randomPicker.animation"})]),_:1})]),_:1})}const mt=E(Bn,[["render",Nn]]),Pn={name:"HitokotoSettings",components:{SettingGroup:Te,SettingItem:le},data(){return{kvConfig:{sources:["zhaoyu"],sensitiveWords:"",jinrishiciToken:null},loading:!1,testLoading:!1,testMessage:"",testColor:"info",testResultDialog:!1,testResultData:null,enableCloudSensitiveWords:!0}},mounted(){this.loadKvSettings()},methods:{async loadKvSettings(){this.loading=!0;try{const s=await H.loadData("sentence-info");let e=s;s&&s.data&&(e=s.data),e&&(this.kvConfig={sources:Array.isArray(e.sources)?e.sources:["zhaoyu"],sensitiveWords:e.sensitiveWords||"",jinrishiciToken:e.jinrishiciToken})}catch(s){console.error("Failed to load sentence-info",s)}finally{this.loading=!1}},async saveKvSettings(){this.loading=!0;try{if(this.kvConfig.sources.includes("jinrishici")&&!this.kvConfig.jinrishiciToken)try{const s=await De.get("https://v2.jinrishici.com/token");s.data.status==="success"&&(this.kvConfig.jinrishiciToken=s.data.data)}catch(s){console.error("Failed to get jinrishici token",s)}await H.saveData("sentence-info",this.kvConfig)}catch(s){console.error("Failed to save sentence-info",s)}finally{this.loading=!1}},async testJinrishici(){var s,e;this.testLoading=!0,this.testMessage="",this.testColor="info";try{const a={};this.kvConfig.jinrishiciToken&&(a["X-User-Token"]=this.kvConfig.jinrishiciToken);const r=await De.get("https://v2.jinrishici.com/info?X-User-Token="+encodeURIComponent(this.kvConfig.jinrishiciToken));if(r.data&&r.data.status==="success"){this.testResultData=r.data,this.testResultDialog=!0;const i=(s=r.data.data)==null?void 0:s.token,l=(e=r.data.data)==null?void 0:e.region,u=this.kvConfig.jinrishiciToken?i===this.kvConfig.jinrishiciToken:!0;this.testColor=u?"success":"warning",this.testMessage=u?`接口正常,Token 一致:${i}${l?`,地区:${l}`:""}`:`接口返回 Token 与当前设置不一致:${i}${l?`,地区:${l}`:""}`}else this.testColor="error",this.testMessage="接口返回非 success,请检查网络或 Token 配置。"}catch(a){console.error("Failed to test jinrishici info",a),this.testColor="error",this.testMessage="接口测试失败,请检查网络或 Token。"}finally{this.testLoading=!1}}}},Mn={class:"d-flex flex-wrap gap-2"},En={class:"text-caption text-orange mt-2"},zn={class:"d-flex flex-column flex-sm-row align-center w-100"},Ln={key:2,class:"text-center pb-4"},Kn={class:"d-flex align-center mb-2"},Rn={class:"text-body-1 font-weight-medium"},On={class:"d-flex align-center mb-2"},Fn={class:"text-body-1 font-weight-medium"},Jn={class:"d-flex align-center mb-2"},Qn={class:"text-body-1 font-weight-medium"},Hn={class:"d-flex align-center mb-2"},Gn={class:"text-body-2 font-weight-medium"},Wn={class:"d-flex align-center mb-2"},Yn={class:"text-body-1 font-weight-medium"},Zn={class:"d-flex align-center mb-2"},qn={class:"text-body-1 font-weight-medium"},Xn={class:"px-4 py-3"},$n={class:"d-flex flex-wrap gap-2"};function es(s,e,a,r,i,l){const u=le,h=Te;return c(),k("div",null,[t(h,{title:"一言设置",icon:"mdi-comment-quote"},{default:n(()=>[t(u,{"setting-key":"hitokoto.enabled"}),t(u,{"setting-key":"hitokoto.refreshInterval"})]),_:1}),t(h,{title:"数据源配置",icon:"mdi-cloud-sync",class:"mt-4"},{default:n(()=>[e[13]||(e[13]=m("div",{class:"text-caption text-grey px-4 pt-2 pb-2"},"以下配置将同步到云端,对所有连接此班级的设备生效。",-1)),t(x,null,{default:n(()=>[t(j,{class:"mb-2"},{default:n(()=>[...e[7]||(e[7]=[o("启用数据源",-1)])]),_:1}),m("div",Mn,[t(ie,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[0]||(e[0]=d=>i.kvConfig.sources=d),l.saveKvSettings],label:"一言 (Hitokoto)",value:"hitokoto","hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"]),t(ie,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[1]||(e[1]=d=>i.kvConfig.sources=d),l.saveKvSettings],label:"诏预 (Zhaoyu)",value:"zhaoyu","hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"]),t(ie,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[2]||(e[2]=d=>i.kvConfig.sources=d),l.saveKvSettings],label:"今日诗词 (Jinrishici)",value:"jinrishici","hide-details":"",density:"compact",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"])]),m("div",En,[t(g,{size:"x-small",color:"orange",class:"mr-1"},{default:n(()=>[...e[8]||(e[8]=[o("mdi-alert",-1)])]),_:1}),e[9]||(e[9]=o(" 一言(Hitokoto)数据源已收到关于存在负面内容的大量反馈,请用户谨慎启用。 ",-1))])]),_:1}),i.kvConfig.sources.includes("jinrishici")?(c(),p(x,{key:0},{default:n(()=>[t(N,{modelValue:i.kvConfig.jinrishiciToken,"onUpdate:modelValue":e[3]||(e[3]=d=>i.kvConfig.jinrishiciToken=d),label:"今日诗词 Token",variant:"outlined",density:"comfortable",disabled:i.loading,hint:"留空则自动获取,也可以手动输入已有 Token","persistent-hint":"",class:"mt-2",onChange:l.saveKvSettings},null,8,["modelValue","disabled","onChange"])]),_:1})):v("",!0),i.kvConfig.sources.includes("jinrishici")?(c(),p(x,{key:1},{default:n(()=>[m("div",zn,[t(f,{loading:i.testLoading,color:"primary",variant:"outlined",class:"mr-sm-4 mb-2 mb-sm-0",onClick:l.testJinrishici},{default:n(()=>[...e[10]||(e[10]=[o(" 测试今日诗词接口 ",-1)])]),_:1},8,["loading","onClick"]),i.testMessage?(c(),p(L,{key:0,type:i.testColor,density:"comfortable",border:"start",class:"flex-grow-1"},{default:n(()=>[o(w(i.testMessage),1)]),_:1},8,["type"])):v("",!0)])]),_:1})):v("",!0),t(x,null,{default:n(()=>[t(pe,{modelValue:i.kvConfig.sensitiveWords,"onUpdate:modelValue":e[4]||(e[4]=d=>i.kvConfig.sensitiveWords=d),disabled:i.loading,label:"敏感词过滤 (用逗号分隔)",variant:"outlined",rows:"3","auto-grow":"","hide-details":"",class:"mt-2 mb-2",onChange:l.saveKvSettings},null,8,["modelValue","disabled","onChange"])]),_:1}),t(x,null,{default:n(()=>[t(ie,{label:"启用云端敏感词列表","hide-details":"",modelValue:i.enableCloudSensitiveWords,"onUpdate:modelValue":e[5]||(e[5]=d=>i.enableCloudSensitiveWords=d),density:"compact",disabled:"",class:"mb-2"},null,8,["modelValue"]),e[11]||(e[11]=m("div",{class:"text-caption text-grey"},[o(" 已启用的数据源将在获取一言时随机尝试,直到成功获取内容为止。"),m("br"),o(" 敏感词过滤会将包含任意敏感词的句子过滤掉,避免显示不当内容。"),m("br")],-1))]),_:1}),i.loading?(c(),k("div",Ln,[t(tt,{indeterminate:"",size:"24",color:"primary"}),e[12]||(e[12]=m("span",{class:"ml-2 text-caption"},"正在同步配置...",-1))])):v("",!0)]),_:1}),t($,{modelValue:i.testResultDialog,"onUpdate:modelValue":e[6]||(e[6]=d=>i.testResultDialog=d),"max-width":"600"},{default:n(()=>[i.testResultData?(c(),p(C,{key:0,class:"rounded-lg"},{default:n(()=>[t(S,{class:"pa-0"},{default:n(()=>[t(M,{lines:"two",class:"py-0"},{default:n(()=>[t(x,{class:"px-4 py-3"},{prepend:n(()=>[t(Ie,{color:"primary",variant:"tonal",class:"mr-2"},{default:n(()=>[t(g,{icon:"mdi-key-variant"})]),_:1})]),default:n(()=>[t(j,{class:"text-subtitle-2 font-weight-bold mb-1"},{default:n(()=>[...e[14]||(e[14]=[o("Token",-1)])]),_:1}),t(Q,{class:"text-body-2 text-high-emphasis",style:{"word-break":"break-all"}},{default:n(()=>[o(w(i.testResultData.data.token),1)]),_:1})]),_:1}),t(A),t(Y,{"no-gutters":""},{default:n(()=>[t(B,{cols:"6"},{default:n(()=>[t(x,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-ip-network",color:"grey-darken-1",class:"mr-2"})]),default:n(()=>[t(j,{class:"text-caption text-grey-darken-1"},{default:n(()=>[...e[15]||(e[15]=[o("IP 地址",-1)])]),_:1}),t(Q,{class:"text-body-2"},{default:n(()=>[o(w(i.testResultData.data.ip),1)]),_:1})]),_:1})]),_:1}),t(B,{cols:"6"},{default:n(()=>[t(x,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-map-marker-radius",color:"grey-darken-1",class:"mr-2"})]),default:n(()=>[t(j,{class:"text-caption text-grey-darken-1"},{default:n(()=>[...e[16]||(e[16]=[o("地区",-1)])]),_:1}),t(Q,{class:"text-body-2"},{default:n(()=>[o(w(i.testResultData.data.region),1)]),_:1})]),_:1})]),_:1})]),_:1}),t(A),t(Ee,{class:"px-4 py-3"},{default:n(()=>[t(Y,{dense:""},{default:n(()=>[t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Kn,[t(g,{icon:"mdi-thermometer",color:"orange",class:"mr-2"}),m("div",null,[e[17]||(e[17]=m("div",{class:"text-caption text-grey"},"温度",-1)),m("div",Rn,w(i.testResultData.data.weatherData.temperature)+"°C",1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",On,[t(g,{icon:"mdi-weather-cloudy",color:"blue-grey",class:"mr-2"}),m("div",null,[e[18]||(e[18]=m("div",{class:"text-caption text-grey"},"天气",-1)),m("div",Fn,w(i.testResultData.data.weatherData.weather),1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Jn,[t(g,{icon:"mdi-water-percent",color:"blue",class:"mr-2"}),m("div",null,[e[19]||(e[19]=m("div",{class:"text-caption text-grey"},"湿度",-1)),m("div",Qn,w(i.testResultData.data.weatherData.humidity)+"%",1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Hn,[t(g,{icon:"mdi-weather-windy",color:"teal",class:"mr-2"}),m("div",null,[e[20]||(e[20]=m("div",{class:"text-caption text-grey"},"风向/风力",-1)),m("div",Gn,w(i.testResultData.data.weatherData.windDirection)+" "+w(i.testResultData.data.weatherData.windPower)+"级 ",1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Wn,[t(g,{icon:"mdi-blur",color:"grey",class:"mr-2"}),m("div",null,[e[21]||(e[21]=m("div",{class:"text-caption text-grey"},"PM2.5",-1)),m("div",Yn,w(i.testResultData.data.weatherData.pm25),1)])])]),_:1}),t(B,{cols:"6",sm:"4"},{default:n(()=>[m("div",Zn,[t(g,{icon:"mdi-eye",color:"indigo",class:"mr-2"}),m("div",null,[e[22]||(e[22]=m("div",{class:"text-caption text-grey"},"能见度",-1)),m("div",qn,w(i.testResultData.data.weatherData.visibility),1)])])]),_:1})]),_:1})]),_:1}),t(A),m("div",Xn,[e[23]||(e[23]=m("div",{class:"text-caption text-grey mb-2"},"环境标签",-1)),m("div",$n,[(c(!0),k(F,null,W(i.testResultData.data.tags,d=>(c(),p(z,{key:d,size:"small",color:"primary",variant:"tonal",class:"mr-1 mb-1"},{default:n(()=>[o(w(d),1)]),_:2},1024))),128))])]),t(A),t(x,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-clock-outline",size:"small",class:"mr-2"})]),default:n(()=>[t(j,{class:"text-caption text-grey-darken-1"},{default:n(()=>[o(" 北京时间: "+w(new Date(i.testResultData.data.beijingTime).toLocaleString()),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})):v("",!0)]),_:1},8,["modelValue"])])}const ft=E(Pn,[["render",es]]),ts={name:"NotificationSoundSettings",data(){return{singleSound:"",urgentSound:"",currentAudio:null,showAutoplayWarning:!0}},computed:{soundOptions(){return Qt.map(s=>({title:s.replace(".mp3",""),value:s}))}},mounted(){this.loadSettings()},beforeUnmount(){this.stopPreview()},methods:{loadSettings(){this.singleSound=y("notification.singleSound"),this.urgentSound=y("notification.urgentSound")},onSingleSoundChange(s){var e;ne("notification.singleSound",s),(e=this.$message)==null||e.success("设置已保存",`单次通知铃声: ${s}`)},onUrgentSoundChange(s){var e;ne("notification.urgentSound",s),(e=this.$message)==null||e.success("设置已保存",`紧急通知铃声: ${s}`)},async previewSound(s){var e,a;this.showAutoplayWarning=!1,this.stopPreview();try{const r=await this.playSoundWithPromise(s,!1);this.currentAudio=r,this.currentAudio&&this.currentAudio.addEventListener("ended",()=>{this.currentAudio=null},{once:!0})}catch(r){console.error("播放音频失败:",r),r.name==="NotAllowedError"?(e=this.$message)==null||e.warning("无法播放音频","浏览器阻止了自动播放,请再次点击试听按钮"):(a=this.$message)==null||a.error("播放失败","音频文件加载失败,请稍后重试")}},playSoundWithPromise(s,e=!1){return new Promise((a,r)=>{const i=this.getSoundPath(s);if(!i){r(new Error("音频文件不存在"));return}try{const l=new Audio(i);l.loop=e,l.play().then(()=>{a(l)}).catch(u=>{r(u)})}catch(l){r(l)}})},getSoundPath(s){if(!s)return null;try{return`/sounds/${s}`}catch{return null}},stopPreview(){this.currentAudio&&(Jt(this.currentAudio),this.currentAudio=null)},resetSingleSound(){var s;this.singleSound="Teams 默认.mp3",ne("notification.singleSound",this.singleSound),(s=this.$message)==null||s.success("已恢复单次通知铃声默认设置")},resetUrgentSound(){var s;this.urgentSound="Teams 默认通话铃.mp3",ne("notification.urgentSound",this.urgentSound),(s=this.$message)==null||s.success("已恢复紧急通知铃声默认设置")}}},ns={class:"d-flex align-center"},ss={class:"mt-3 d-flex gap-2"},is={class:"mt-3 d-flex gap-2"};function ls(s,e,a,r,i,l){return c(),p(C,{class:"notification-sound-settings"},{default:n(()=>[t(P,null,{default:n(()=>[...e[5]||(e[5]=[o(" 通知铃声设置 ",-1)])]),_:1}),t(S,null,{default:n(()=>[i.showAutoplayWarning?(c(),p(L,{key:0,type:"info",variant:"tonal",closable:"",class:"mb-4","onClick:close":e[0]||(e[0]=u=>i.showAutoplayWarning=!1)},{default:n(()=>[m("div",ns,[t(g,{class:"mr-2"},{default:n(()=>[...e[6]||(e[6]=[o("mdi-information",-1)])]),_:1}),e[7]||(e[7]=m("span",null,"首次使用请点击试听按钮测试音频播放是否正常",-1))])]),_:1})):v("",!0),t(Y,null,{default:n(()=>[t(B,{cols:"12"},{default:n(()=>[t(C,{border:""},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[8]||(e[8]=[o("mdi-bell-ring",-1)])]),_:1}),e[9]||(e[9]=o(" 单次通知铃声 ",-1))]),_:1}),t(S,null,{default:n(()=>[t(Ve,{modelValue:i.singleSound,"onUpdate:modelValue":[e[1]||(e[1]=u=>i.singleSound=u),l.onSingleSoundChange],items:l.soundOptions,label:"选择铃声","prepend-icon":"mdi-music-note",variant:"outlined",density:"comfortable"},{item:n(({props:u,item:h})=>[t(x,ge(u,{onClick:d=>l.previewSound(h.value)}),{prepend:n(()=>[t(g,null,{default:n(()=>[...e[10]||(e[10]=[o("mdi-music-note",-1)])]),_:1})]),append:n(()=>[t(f,{icon:"",size:"small",variant:"text",onClick:fe(d=>l.previewSound(h.value),["stop"])},{default:n(()=>[t(g,null,{default:n(()=>[...e[11]||(e[11]=[o("mdi-play",-1)])]),_:1})]),_:1},8,["onClick"])]),_:2},1040,["onClick"])]),_:1},8,["modelValue","items","onUpdate:modelValue"]),m("div",ss,[t(f,{color:"primary",variant:"tonal",onClick:e[2]||(e[2]=u=>l.previewSound(i.singleSound))},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[12]||(e[12]=[o("mdi-play",-1)])]),_:1}),e[13]||(e[13]=o(" 试听 ",-1))]),_:1}),t(f,{onClick:l.resetSingleSound},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[14]||(e[14]=[o("mdi-restore",-1)])]),_:1}),e[15]||(e[15]=o(" 恢复 ",-1))]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1}),t(B,{cols:"12"},{default:n(()=>[t(C,{border:""},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{left:"",color:"error"},{default:n(()=>[...e[16]||(e[16]=[o("mdi-bell-alert",-1)])]),_:1}),e[17]||(e[17]=o(" 紧急通知铃声 ",-1))]),_:1}),t(S,null,{default:n(()=>[t(Ve,{modelValue:i.urgentSound,"onUpdate:modelValue":[e[3]||(e[3]=u=>i.urgentSound=u),l.onUrgentSoundChange],items:l.soundOptions,label:"选择铃声","prepend-icon":"mdi-music-note",variant:"outlined",density:"comfortable"},{item:n(({props:u,item:h})=>[t(x,ge(u,{onClick:d=>l.previewSound(h.value)}),{prepend:n(()=>[t(g,null,{default:n(()=>[...e[18]||(e[18]=[o("mdi-music-note",-1)])]),_:1})]),append:n(()=>[t(f,{icon:"",size:"small",variant:"text",onClick:fe(d=>l.previewSound(h.value),["stop"])},{default:n(()=>[t(g,null,{default:n(()=>[...e[19]||(e[19]=[o("mdi-play",-1)])]),_:1})]),_:1},8,["onClick"])]),_:2},1040,["onClick"])]),_:1},8,["modelValue","items","onUpdate:modelValue"]),m("div",is,[t(f,{color:"error",variant:"tonal",onClick:e[4]||(e[4]=u=>l.previewSound(i.urgentSound))},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[20]||(e[20]=[o("mdi-play",-1)])]),_:1}),e[21]||(e[21]=o(" 试听 ",-1))]),_:1}),t(f,{onClick:l.resetUrgentSound},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[22]||(e[22]=[o("mdi-restore",-1)])]),_:1}),e[23]||(e[23]=o(" 恢复 ",-1))]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const ht=E(ts,[["render",ls],["__scopeId","data-v-55be56a4"]]),os={name:"ThemeSettingsCard",components:{SettingsCard:K},data(){return{localTheme:y("theme.mode")}},watch:{localTheme(s){ne("theme.mode",s),this.updateTheme(s)}},setup(){return{theme:Ht()}},methods:{updateTheme(s){this.theme.global.name.value=s}}};function as(s,e,a,r,i,l){const u=K;return c(),p(u,{icon:"mdi-palette",title:"主题设置"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-theme-light-dark"})]),append:n(()=>[t(Ut,{modelValue:i.localTheme,"onUpdate:modelValue":e[0]||(e[0]=h=>i.localTheme=h),color:"primary",density:"comfortable"},{default:n(()=>[t(f,{value:"light"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-white-balance-sunny"}),e[3]||(e[3]=o(" 明亮 ",-1))]),_:1}),t(f,{value:"dark"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-moon-waning-crescent"}),e[4]||(e[4]=o(" 暗黑 ",-1))]),_:1})]),_:1},8,["modelValue"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[1]||(e[1]=[o("主题模式",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[2]||(e[2]=[o("选择明亮或暗黑主题",-1)])]),_:1})]),_:1})]),_:1})]),_:1})}const pt=E(os,[["render",as]]),rs={name:"DisplaySettingsCard",components:{SettingsCard:K,SettingItem:le},data(){return{}}};function us(s,e,a,r,i,l){const u=le,h=K;return c(),p(h,{border:"",icon:"mdi-monitor",title:"显示设置"},{default:n(()=>[t(M,null,{default:n(()=>[t(u,{"setting-key":"display.emptySubjectDisplay"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.dynamicSort"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.showRandomButton"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.showFullscreenButton"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.cardHoverEffect"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.enhancedTouchMode"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.showQuickTools"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.showAntiScreenBurnCard"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.showExamScheduleButton"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.forceDesktopMode"}),t(A,{class:"my-2"}),t(u,{"setting-key":"display.lateStudentsArePresent"})]),_:1})]),_:1})}const wt=E(rs,[["render",us]]),ds={};function cs(s,e,a,r,i,l){const u=le,h=K;return c(),p(h,{icon:"mdi-cog",title:"编辑设置"},{default:n(()=>[t(M,null,{default:n(()=>[t(u,{"setting-key":"edit.autoSave"}),t(A,{class:"my-2"}),t(u,{"setting-key":"edit.blockNonTodayAutoSave"}),t(A,{class:"my-2"}),t(u,{"setting-key":"edit.confirmNonTodaySave"}),t(A,{class:"my-2"}),t(u,{"setting-key":"edit.refreshBeforeEdit"}),t(A,{class:"my-2"}),t(u,{"setting-key":"edit.autoSavePromptText"}),t(A,{class:"my-2"}),t(u,{"setting-key":"edit.manualSavePromptText"})]),_:1})]),_:1})}const gt=E(ds,[["render",cs]]),ms={name:"RefreshSettingsCard",components:{SettingsCard:K},data(){return{}}};function fs(s,e,a,r,i,l){const u=le,h=K;return c(),p(h,{icon:"mdi-refresh-circle",title:"刷新设置"},{default:n(()=>[t(lt,null,{default:n(()=>[t(M,null,{default:n(()=>[t(u,{"setting-key":"refresh.auto",title:"自动刷新"}),t(A,{class:"my-2"}),t(u,{"setting-key":"refresh.interval",title:"刷新间隔"})]),_:1})]),_:1})]),_:1})}const vt=E(ms,[["render",fs]]),hs={name:"SettingsLinkGenerator",data(){return{selectedItems:[],generatedLink:"",linkCopied:!1,search:"",preconfigForm:{namespace:"",authCode:"",autoExecute:!1},unifiedLink:"",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 s=xe(),e=[];for(const[a,r]of Object.entries(Ne)){if(r.requireDeveloper&&!s["developer.enabled"])continue;const i=s[a]!==r.default;e.push({key:a,description:r.description||a,value:s[a],icon:r.icon||"mdi-cog",isChanged:i,defaultValue:r.default})}return e.sort((a,r)=>a.key.localeCompare(r.key))},filteredItems(){if(!this.search)return this.settingItems;const s=this.search.toLowerCase();return s==="已修改"?this.settingItems.filter(e=>e.isChanged):s==="是"||s==="否"?this.settingItems.filter(e=>typeof e.value=="boolean"&&(s==="是"?e.value:!e.value)):this.settingItems.filter(e=>{const a=e.description.toLowerCase(),r=e.key.toLowerCase(),i=String(e.value).toLowerCase(),l=e.isChanged?"已修改":"默认";return a.includes(s)||r.includes(s)||i.includes(s)||l.includes(s)})},hasDisplaySettings(){return this.selectedItems.some(s=>s.startsWith("display."))},hasEditSettings(){return this.selectedItems.some(s=>s.startsWith("edit."))},hasServerSettings(){return this.selectedItems.some(s=>s.startsWith("server."))},hasChangedSettings(){const s=xe();return this.selectedItems.some(e=>{const a=Ne[e];return a&&s[e]!==a.default})}},methods:{handleSelectionChange(s){this.selectedItems=s.map(e=>e.key),this.generateLink()},generateLink(){const s=`${window.location.protocol}//${window.location.host}/`,e=xe(),a={};for(const r of this.selectedItems)a[r]=e[r];if(Object.keys(a).length===0){this.generatedLink=s;return}try{const r=JSON.stringify(a),l=new TextEncoder().encode(r),h={config:btoa(Array.from(l).map(I=>String.fromCharCode(I)).join(""))},b=new URLSearchParams(window.location.search).get("date");b&&(h.date=b);const T=new URLSearchParams(h).toString();this.generatedLink=`${s}?${T}`}catch(r){console.error("生成链接失败:",r),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(s){console.error("复制链接失败:",s)}},resetSelection(){this.selectedItems=[],this.generatedLink="",this.linkCopied=!1},selectAll(){this.selectedItems=this.settingItems.map(s=>s.key),this.generateLink()},selectDataSourceSettings(){const s=this.settingItems.filter(e=>e.key.startsWith("server.")&&e.key!=="server.kvToken").map(e=>e.key);this.selectedItems=s,this.generateLink()},selectChangedSettings(){const s=this.settingItems.filter(e=>e.isChanged&&e.key!=="server.kvToken").map(e=>e.key);this.selectedItems=s,this.generateLink()},selectByPrefix(s){const e=this.settingItems.filter(a=>a.key.startsWith(`${s}.`)).map(a=>a.key);this.selectedItems=e},autoGenerateLink(){this.selectedItems.length>0?this.generateLink():this.generatedLink=""},getSettingDescription(s){const e=this.settingItems.find(a=>a.key===s);return e?e.description:s},generateUnifiedLink(){if(this.preconfigForm.namespace.trim())try{const s=`${window.location.protocol}//${window.location.host}/`,e=new URLSearchParams;if(e.append("namespace",this.preconfigForm.namespace.trim()),this.preconfigForm.authCode.trim()&&e.append("authCode",this.preconfigForm.authCode.trim()),this.preconfigForm.autoExecute&&e.append("autoExecute","true"),this.selectedItems.length>0){const a=xe(),r={};for(const d of this.selectedItems)r[d]=a[d];const i=JSON.stringify(r),u=new TextEncoder().encode(i),h=btoa(Array.from(u).map(d=>String.fromCharCode(d)).join(""));e.append("config",h)}this.unifiedLink=`${s}?${e.toString()}`,this.linkCopied=!1,console.log("生成统一链接:",this.unifiedLink),console.log("包含预配置:",!!this.preconfigForm.namespace),console.log("包含设置数量:",this.selectedItems.length)}catch(s){console.error("生成统一链接失败:",s),this.unifiedLink="链接生成失败,请重试"}},async copyUnifiedLink(){if(this.unifiedLink||this.generateUnifiedLink(),!(!this.unifiedLink||this.unifiedLink.includes("失败")))try{await navigator.clipboard.writeText(this.unifiedLink),this.linkCopied=!0,setTimeout(()=>{this.linkCopied=!1},3e3)}catch(s){console.error("复制统一链接失败:",s)}},openTestLink(){this.unifiedLink&&!this.unifiedLink.includes("失败")&&window.open(this.unifiedLink,"_blank")},clearAll(){this.preconfigForm={namespace:"",authCode:"",autoExecute:!1},this.selectedItems=[],this.unifiedLink="",this.generatedLink="",this.linkCopied=!1}},watch:{selectedItems:{handler(){this.preconfigForm.namespace.trim()&&this.generateUnifiedLink()},deep:!0},"preconfigForm.namespace":{handler(){this.preconfigForm.namespace.trim()?this.generateUnifiedLink():this.unifiedLink=""}},"preconfigForm.authCode":{handler(){this.preconfigForm.namespace.trim()&&this.generateUnifiedLink()}},"preconfigForm.autoExecute":{handler(){this.preconfigForm.namespace.trim()&&this.generateUnifiedLink()}}}},ps={class:"d-flex mb-3 gap-2 flex-wrap"},ws={class:"d-flex align-center mb-3 flex-wrap gap-2"},gs={class:"d-flex align-center"},vs={class:"d-flex align-center"},bs={key:0},ks={key:1},ys={key:2},xs={class:"text-caption text-grey"},Ss={class:"d-flex mb-3 gap-2 flex-wrap"},Cs={class:"d-flex flex-wrap gap-1"};function _s(s,e,a,r,i,l){return c(),k("div",null,[t(C,{border:"",class:"unified-link-generator"},{default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-link-variant",start:""}),e[6]||(e[6]=o(" 统一链接生成器 ",-1))]),_:1}),t(S,null,{default:n(()=>[e[35]||(e[35]=m("div",{class:"text-body-2 text-medium-emphasis mb-4"}," 生成包含预配置认证信息和设置的统一链接。可以同时预配置设备认证和应用设置。 ",-1)),t(C,{class:"mb-4",variant:"tonal"},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[7]||(e[7]=[o("mdi-account-key",-1)])]),_:1}),e[8]||(e[8]=o(" 预配置认证信息 ",-1))]),_:1}),t(S,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{cols:"12",md:"6"},{default:n(()=>[t(N,{modelValue:i.preconfigForm.namespace,"onUpdate:modelValue":e[0]||(e[0]=u=>i.preconfigForm.namespace=u),hint:"设备的命名空间标识符",label:"命名空间","persistent-hint":"",placeholder:"例如: classroom-001","prepend-inner-icon":"mdi-identifier",variant:"outlined"},null,8,["modelValue"])]),_:1}),t(B,{cols:"12",md:"6"},{default:n(()=>[t(N,{modelValue:i.preconfigForm.authCode,"onUpdate:modelValue":e[1]||(e[1]=u=>i.preconfigForm.authCode=u),hint:"留空则需要用户手动输入",label:"认证码","persistent-hint":"",placeholder:"设备认证码(可选)","prepend-inner-icon":"mdi-lock-outline",variant:"outlined"},null,8,["modelValue"])]),_:1})]),_:1}),t(Y,{class:"mt-2"},{default:n(()=>[t(B,{cols:"12"},{default:n(()=>[t(ie,{modelValue:i.preconfigForm.autoExecute,"onUpdate:modelValue":e[2]||(e[2]=u=>i.preconfigForm.autoExecute=u),density:"compact",hint:"启用后会自动尝试认证,即使没有认证码也会尝试",label:"自动执行认证","persistent-hint":""},null,8,["modelValue"])]),_:1})]),_:1}),i.preconfigForm.namespace?(c(),p(L,{key:0,class:"mt-3",type:"info",variant:"tonal"},{default:n(()=>[e[13]||(e[13]=m("div",{class:"text-subtitle-2 mb-2"},"预配置信息:",-1)),t(z,{class:"mr-2 mb-1",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[9]||(e[9]=[o("mdi-identifier",-1)])]),_:1}),o(" 命名空间: "+w(i.preconfigForm.namespace),1)]),_:1}),i.preconfigForm.authCode?(c(),p(z,{key:0,class:"mr-2 mb-1",color:"warning",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[10]||(e[10]=[o("mdi-lock",-1)])]),_:1}),o(" 认证码: "+w(i.preconfigForm.authCode.length>8?i.preconfigForm.authCode.substring(0,8)+"...":i.preconfigForm.authCode),1)]),_:1})):(c(),p(z,{key:1,class:"mr-2 mb-1",color:"grey",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[11]||(e[11]=[o("mdi-lock-open",-1)])]),_:1}),e[12]||(e[12]=o(" 无认证码 ",-1))]),_:1})),t(z,{color:i.preconfigForm.autoExecute?"success":"orange",class:"mr-2 mb-1",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[o(w(i.preconfigForm.autoExecute?"mdi-play-circle":"mdi-hand-back-left"),1)]),_:1}),o(" "+w(i.preconfigForm.autoExecute?"自动认证":"手动认证"),1)]),_:1},8,["color"])]),_:1})):v("",!0)]),_:1})]),_:1}),t(C,{class:"mb-4",variant:"tonal"},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[14]||(e[14]=[o("mdi-cog-transfer",-1)])]),_:1}),e[15]||(e[15]=o(" 设置分享(可选) ",-1))]),_:1}),t(S,null,{default:n(()=>[e[22]||(e[22]=m("div",{class:"text-body-2 text-medium-emphasis mb-3"}," 选择需要包含在链接中的设置项。如果不选择任何设置,将只生成预配置认证链接。 ",-1)),m("div",ps,[t(f,{color:"primary","prepend-icon":"mdi-server-network",size:"small",variant:"tonal",onClick:l.selectDataSourceSettings},{default:n(()=>[...e[16]||(e[16]=[o(" 数据源设置 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"primary","prepend-icon":"mdi-compare",size:"small",variant:"tonal",onClick:l.selectChangedSettings},{default:n(()=>[...e[17]||(e[17]=[o(" 已变更设置 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"success","prepend-icon":"mdi-select-all",size:"small",variant:"tonal",onClick:l.selectAll},{default:n(()=>[...e[18]||(e[18]=[o(" 全选 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"error","prepend-icon":"mdi-select-remove",size:"small",variant:"tonal",onClick:l.resetSelection},{default:n(()=>[...e[19]||(e[19]=[o(" 清除选择 ",-1)])]),_:1},8,["onClick"])]),m("div",ws,[t(z,{class:"mr-2",color:"primary"},{default:n(()=>[o(" 已选 "+w(i.selectedItems.length)+" 项设置 ",1)]),_:1}),i.selectedItems.length>0?(c(),k(F,{key:0},[(c(!0),k(F,null,W(i.selectedItems.slice(0,3),u=>(c(),p(z,{key:u,class:"mr-1",size:"small",variant:"text"},{default:n(()=>[o(w(l.getSettingDescription(u)),1)]),_:2},1024))),128)),i.selectedItems.length>3?(c(),p(z,{key:0,color:"grey",size:"small",variant:"text"},{default:n(()=>[o(" +"+w(i.selectedItems.length-3)+" 更多 ",1)]),_:1})):v("",!0)],64)):v("",!0)]),t(ze,{variant:"accordion"},{default:n(()=>[t(Le,null,{default:n(()=>[t(ot,null,{default:n(({expanded:u})=>[m("div",gs,[t(g,{class:"mr-2"},{default:n(()=>[o(w(u?"mdi-chevron-up":"mdi-chevron-down"),1)]),_:2},1024),e[20]||(e[20]=o(" 显示设置列表详情 ",-1))])]),_:1}),t(Ke,null,{default:n(()=>[t(N,{modelValue:i.search,"onUpdate:modelValue":e[3]||(e[3]=u=>i.search=u),class:"mb-4",clearable:"","hide-details":"",label:"搜索设置","prepend-inner-icon":"mdi-magnify","single-line":""},null,8,["modelValue"]),t(at,{modelValue:i.selectedItems,"onUpdate:modelValue":e[4]||(e[4]=u=>i.selectedItems=u),headers:i.headers,items:l.filteredItems,"items-per-page":l.settingItems.length,"sort-by":[{key:"isChanged",order:"desc"}],class:"rounded setting-table",density:"compact","item-value":"key","show-select":"","onUpdate:selected":l.handleSelectionChange},{"item.description":n(({item:u})=>[m("div",vs,[t(g,{icon:u.icon,class:"mr-2",size:"small"},null,8,["icon"]),o(" "+w(u.description)+" ",1),u.key==="server.kvToken"?(c(),p(z,{key:0,class:"ml-2",color:"error",size:"x-small"},{default:n(()=>[...e[21]||(e[21]=[o(" 敏感 ",-1)])]),_:1})):v("",!0)])]),"item.value":n(({item:u})=>[typeof u.value=="boolean"?(c(),k("span",bs,w(u.value?"是":"否"),1)):u.key==="server.kvToken"&&u.value?(c(),k("span",ks,w(u.value.substring(0,8))+"... ",1)):(c(),k("span",ys,w(u.value),1))]),"item.key":n(({item:u})=>[m("span",xs,w(u.key),1)]),"item.isChanged":n(({item:u})=>[t(z,{color:u.isChanged?"warning":"success",text:u.isChanged?"已修改":"默认",density:"compact",size:"x-small"},null,8,["color","text"])]),_:2},1032,["modelValue","headers","items","items-per-page","onUpdate:selected"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(C,{class:"mb-4",variant:"outlined"},{default:n(()=>[t(P,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[23]||(e[23]=[o("mdi-link",-1)])]),_:1}),e[24]||(e[24]=o(" 生成的统一链接 ",-1))]),_:1}),t(S,null,{default:n(()=>[m("div",Ss,[t(f,{disabled:!i.preconfigForm.namespace.trim(),color:"primary","prepend-icon":"mdi-auto-fix",variant:"flat",onClick:l.generateUnifiedLink},{default:n(()=>[...e[25]||(e[25]=[o(" 生成统一链接 ",-1)])]),_:1},8,["disabled","onClick"]),t(f,{disabled:!i.unifiedLink,color:"success","prepend-icon":"mdi-test-tube",variant:"tonal",onClick:l.openTestLink},{default:n(()=>[...e[26]||(e[26]=[o(" 测试链接 ",-1)])]),_:1},8,["disabled","onClick"]),t(f,{color:"error","prepend-icon":"mdi-delete",variant:"tonal",onClick:l.clearAll},{default:n(()=>[...e[27]||(e[27]=[o(" 清空所有 ",-1)])]),_:1},8,["onClick"])]),t(N,{modelValue:i.unifiedLink,"onUpdate:modelValue":e[5]||(e[5]=u=>i.unifiedLink=u),"append-inner-icon":i.linkCopied?"mdi-check":"mdi-content-copy",placeholder:i.preconfigForm.namespace?"点击「生成统一链接」按钮":"请先输入命名空间",class:"mb-3",label:"统一链接",readonly:"",variant:"outlined","onClick:appendInner":l.copyUnifiedLink},null,8,["modelValue","append-inner-icon","placeholder","onClick:appendInner"]),i.unifiedLink?(c(),p(L,{key:0,class:"mb-3",type:"success",variant:"tonal"},{default:n(()=>[e[33]||(e[33]=m("div",{class:"text-subtitle-2 mb-2"},"链接包含内容:",-1)),m("div",Cs,[t(z,{color:"primary",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[28]||(e[28]=[o("mdi-account-key",-1)])]),_:1}),e[29]||(e[29]=o(" 预配置认证 ",-1))]),_:1}),i.selectedItems.length>0?(c(),p(z,{key:0,color:"secondary",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[30]||(e[30]=[o("mdi-cog",-1)])]),_:1}),o(" "+w(i.selectedItems.length)+" 项设置 ",1)]),_:1})):(c(),p(z,{key:1,color:"grey",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[31]||(e[31]=[o("mdi-cog-off",-1)])]),_:1}),e[32]||(e[32]=o(" 无额外设置 ",-1))]),_:1}))])]),_:1})):v("",!0)]),_:1})]),_:1}),t(L,{type:"warning",variant:"tonal"},{default:n(()=>[...e[34]||(e[34]=[m("div",{class:"text-subtitle-2 mb-2"},"⚠️ 安全提醒",-1),m("ul",{class:"text-body-2 pl-4"},[m("li",null,"认证码和设置信息会在URL中传输,请谨慎分发"),m("li",null,"建议仅在受信任的网络环境中使用"),m("li",null,"生产环境建议使用HTTPS协议"),m("li",null,"数据源设置和已变更设置默认不包含敏感Token信息")],-1)])]),_:1})]),_:1})]),_:1})])}const bt=E(hs,[["render",_s]]),Vs={name:"UnsavedWarning",props:{show:Boolean,message:{type:String,default:"未保存"}}},Ds={class:"warning-container"};function As(s,e,a,r,i,l){return c(),k("div",Ds,[a.show?(c(),p(z,{key:0,class:"warning-chip",color:"warning",size:"small"},{default:n(()=>[o(w(a.message),1)]),_:1})):v("",!0)])}const Ue=E(Vs,[["render",As],["__scopeId","data-v-0f36b655"]]),Is=Yt({disabled:Boolean,modelValue:{type:Boolean,default:null},...Bt()},"VHover"),kt=Gt()({name:"VHover",props:Is(),emits:{"update:modelValue":s=>!0},setup(s,e){let{slots:a}=e;const r=Wt(s,"modelValue"),{runOpenDelay:i,runCloseDelay:l}=jt(s,u=>!s.disabled&&(r.value=u));return()=>{var u;return(u=a.default)==null?void 0:u.call(a,{isHovering:r.value,props:{onMouseenter:i,onMouseleave:l}})}}}),Ts={name:"TeacherListCard",components:{UnsavedWarning:Ue},props:{isMobile:Boolean},data(){return{newTeacher:{name:"",subjects:[],isHeadTeacher:!1},editState:{index:-1,teacher:null},modelValue:{list:[],text:"",advanced:!1},loading:!1,error:null,lastSavedData:null,unsavedChanges:!1,commonSubjects:["语文","数学","英语","物理","化学","生物","政治","历史","地理","信息技术","音乐","美术","体育"]}},watch:{modelValue:{handler(s){this.lastSavedData&&(this.unsavedChanges=JSON.stringify(s.list)!==JSON.stringify(this.lastSavedData)),this.modelValue.advanced||(this.modelValue.text=JSON.stringify(s.list,null,2))},deep:!0}},mounted(){this.loadTeachers()},methods:{async loadTeachers(){var s;this.error=null;try{if(this.loading=!0,!y("server.classNumber"))throw new Error("请先设置班号");try{const a=await H.loadData("classworks-list-teacher");a.success!==!1&&Array.isArray(a)&&(this.modelValue.list=a.map(r=>({name:r.name||"",subjects:Array.isArray(r.subjects)?r.subjects:[],isHeadTeacher:!!r.isHeadTeacher})),this.modelValue.text=JSON.stringify(this.modelValue.list,null,2),this.lastSavedData=JSON.parse(JSON.stringify(this.modelValue.list)),this.unsavedChanges=!1)}catch(a){console.warn("Failed to load teacher list, initializing empty list",a),this.modelValue.list=[],this.modelValue.text="[]",this.lastSavedData=[]}}catch(e){console.error("加载教师列表失败:",e),this.error=e.message||"加载失败,请检查设置",(s=this.$message)==null||s.error("加载失败",this.error)}finally{this.loading=!1}},async saveTeachers(){var s,e,a;try{if(!y("server.classNumber"))throw new Error("请先设置班号");const i=this.modelValue.list.map(u=>({name:u.name,subjects:Array.isArray(u.subjects)?u.subjects:[],isHeadTeacher:!!u.isHeadTeacher})),l=await H.saveData("classworks-list-teacher",i);if(l.success===!1)throw new Error(((s=l.error)==null?void 0:s.message)||"保存失败");this.modelValue.list=i,this.lastSavedData=JSON.parse(JSON.stringify(i)),this.unsavedChanges=!1,(e=this.$message)==null||e.success("保存成功","教师列表已更新")}catch(r){console.error("保存教师列表失败:",r),(a=this.$message)==null||a.error("保存失败",r.message||"请重试")}},toggleAdvanced(){this.modelValue.advanced=!this.modelValue.advanced,this.modelValue.advanced&&(this.modelValue.text=JSON.stringify(this.modelValue.list,null,2))},handleTextInput(s){if(this.modelValue.advanced)try{const e=JSON.parse(s);Array.isArray(e)?(this.modelValue.list=e.map(a=>({name:a.name||"",subjects:Array.isArray(a.subjects)?a.subjects:[],isHeadTeacher:!!a.isHeadTeacher})),this.error=null):this.error="JSON 必须是一个数组"}catch(e){this.error="JSON 格式错误: "+e.message}},addTeacher(){var e,a;const s=this.newTeacher.name.trim();if(!s){(e=this.$message)==null||e.warning("提示","请输入教师姓名");return}if(this.newTeacher.subjects.length===0){(a=this.$message)==null||a.warning("提示","请选择至少一个任教科目");return}this.modelValue.list.push({name:s,subjects:[...this.newTeacher.subjects],isHeadTeacher:this.newTeacher.isHeadTeacher}),this.newTeacher={name:"",subjects:[],isHeadTeacher:!1}},startEdit(s,e){this.editState.index=s,this.editState.teacher={name:e.name,subjects:[...e.subjects],isHeadTeacher:e.isHeadTeacher}},saveEdit(){var s,e;if(this.editState.index!==-1){const a=this.editState.teacher.name.trim();if(!a){(s=this.$message)==null||s.warning("提示","教师姓名不能为空");return}if(this.editState.teacher.subjects.length===0){(e=this.$message)==null||e.warning("提示","请选择至少一个任教科目");return}this.modelValue.list[this.editState.index]={name:a,subjects:[...this.editState.teacher.subjects],isHeadTeacher:this.editState.teacher.isHeadTeacher},this.editState.index=-1,this.editState.teacher=null}},cancelEdit(){this.editState.index=-1,this.editState.teacher=null},removeTeacher(s){s!==void 0&&this.modelValue.list.splice(s,1)},handleClick(s,e){this.isMobile&&this.startEdit(s,e)}}},Us={key:0},js={class:"d-flex align-start mb-3"},Bs={class:"flex-grow-1"},Ns={class:"d-flex align-center mb-1"},Ps=["onClick"],Ms={key:0,class:"mt-2"},Es={key:1,class:"mt-1"},zs={key:1,class:"pt-2"};function Ls(s,e,a,r,i,l){const u=Ue;return c(),p(C,{class:_e({"unsaved-changes":i.unsavedChanges}),color:i.unsavedChanges?"warning-subtle":void 0,border:""},{default:n(()=>[t(we,null,{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-account-tie",size:"large"})]),append:n(()=>[t(u,{show:i.unsavedChanges,message:"有未保存的更改"},null,8,["show"]),t(f,{color:i.modelValue.advanced?"primary":void 0,"prepend-icon":"mdi-code-braces",variant:"text",onClick:l.toggleAdvanced},{default:n(()=>[o(w(i.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[...e[4]||(e[4]=[o("教师列表",-1)])]),_:1})]),_:1}),t(S,null,{default:n(()=>[i.loading?(c(),p(Ae,{key:0,class:"mb-4",color:"primary",indeterminate:""})):v("",!0),i.error?(c(),p(L,{key:1,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.error),1)]),_:1})):v("",!0),t(nt,null,{default:n(()=>[i.modelValue.advanced?(c(),k("div",zs,[t(pe,{modelValue:i.modelValue.text,"onUpdate:modelValue":[e[3]||(e[3]=h=>i.modelValue.text=h),l.handleTextInput],hint:"JSON 格式编辑教师列表。每个教师需包含 name、subjects(数组)、isHeadTeacher(布尔值)",label:"批量编辑教师列表 (JSON)","persistent-hint":"",placeholder:'[{"name":"教师姓名","subjects":["语文","数学"],"isHeadTeacher":true}]',rows:"15",variant:"outlined"},null,8,["modelValue","onUpdate:modelValue"])])):(c(),k("div",Us,[t(C,{class:"mb-6",variant:"outlined"},{default:n(()=>[t(S,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{cols:"12",md:"4"},{default:n(()=>[t(N,{modelValue:i.newTeacher.name,"onUpdate:modelValue":e[0]||(e[0]=h=>i.newTeacher.name=h),density:"comfortable","hide-details":"",label:"教师姓名",placeholder:"输入教师姓名","prepend-inner-icon":"mdi-account",variant:"outlined"},null,8,["modelValue"])]),_:1}),t(B,{cols:"12",md:"5"},{default:n(()=>[t(Je,{modelValue:i.newTeacher.subjects,"onUpdate:modelValue":e[1]||(e[1]=h=>i.newTeacher.subjects=h),items:i.commonSubjects,chips:"",clearable:"","closable-chips":"",density:"comfortable","hide-details":"",label:"任教科目",multiple:"",placeholder:"选择或输入科目","prepend-inner-icon":"mdi-book-open-variant",variant:"outlined"},null,8,["modelValue","items"])]),_:1}),t(B,{cols:"12",md:"3",class:"d-flex align-center gap-2"},{default:n(()=>[t(ie,{modelValue:i.newTeacher.isHeadTeacher,"onUpdate:modelValue":e[2]||(e[2]=h=>i.newTeacher.isHeadTeacher=h),density:"comfortable","hide-details":"",label:"班主任"},null,8,["modelValue"]),t(f,{disabled:!i.newTeacher.name.trim()||i.newTeacher.subjects.length===0,color:"primary","prepend-icon":"mdi-plus",onClick:l.addTeacher},{default:n(()=>[...e[5]||(e[5]=[o(" 添加教师 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1}),i.modelValue.list.length===0?(c(),p(Y,{key:0},{default:n(()=>[t(B,{cols:"12"},{default:n(()=>[t(L,{type:"info",variant:"tonal"},{default:n(()=>[...e[6]||(e[6]=[o(" 暂无教师信息,请添加教师 ",-1)])]),_:1})]),_:1})]),_:1})):(c(),p(Y,{key:1},{default:n(()=>[(c(!0),k(F,null,W(i.modelValue.list,(h,d)=>(c(),p(B,{key:d,cols:"12",lg:"6",xl:"4"},{default:n(()=>[t(kt,null,{default:n(({isHovering:b,props:T})=>[t(C,ge({elevation:a.isMobile?1:b?4:1,border:"",class:"teacher-card"},{ref_for:!0},T),{default:n(()=>[t(S,{class:"pa-4"},{default:n(()=>[m("div",js,[t(Ie,{color:h.isHeadTeacher?"primary":"grey-lighten-1",class:"mr-3",size:"48"},{default:n(()=>[t(g,{icon:h.isHeadTeacher?"mdi-star":"mdi-account",size:"28"},null,8,["icon"])]),_:2},1032,["color"]),m("div",Bs,[m("div",Ns,[i.editState.index===d?(c(),p(N,{key:0,modelValue:i.editState.teacher.name,"onUpdate:modelValue":I=>i.editState.teacher.name=I,autofocus:"",class:"flex-grow-1",density:"compact","hide-details":"",variant:"underlined"},null,8,["modelValue","onUpdate:modelValue"])):(c(),k("span",{key:1,class:"text-h6 font-weight-medium",onClick:I=>l.handleClick(d,h)},w(h.name),9,Ps)),h.isHeadTeacher?(c(),p(z,{key:2,class:"ml-2",color:"primary",density:"comfortable",size:"small",variant:"flat"},{default:n(()=>[...e[7]||(e[7]=[o(" 班主任 ",-1)])]),_:1})):v("",!0)]),i.editState.index===d?(c(),k("div",Ms,[t(Je,{modelValue:i.editState.teacher.subjects,"onUpdate:modelValue":I=>i.editState.teacher.subjects=I,items:i.commonSubjects,chips:"","closable-chips":"",density:"compact","hide-details":"",label:"任教科目",multiple:"",variant:"outlined"},null,8,["modelValue","onUpdate:modelValue","items"]),t(ie,{modelValue:i.editState.teacher.isHeadTeacher,"onUpdate:modelValue":I=>i.editState.teacher.isHeadTeacher=I,class:"mt-2",density:"compact","hide-details":"",label:"班主任"},null,8,["modelValue","onUpdate:modelValue"])])):(c(),k("div",Es,[(c(!0),k(F,null,W(h.subjects,(I,te)=>(c(),p(z,{key:te,class:"mr-1 mb-1",density:"comfortable",size:"small",variant:"tonal"},{default:n(()=>[o(w(I),1)]),_:2},1024))),128))]))]),m("div",{class:_e([{"opacity-100":b||a.isMobile||i.editState.index===d},"d-flex gap-1 action-buttons ml-2"])},[i.editState.index===d?(c(),p(f,{key:0,color:"success",icon:"mdi-check",size:"small",variant:"text",onClick:l.saveEdit},null,8,["onClick"])):v("",!0),i.editState.index===d?(c(),p(f,{key:1,color:"grey",icon:"mdi-close",size:"small",variant:"text",onClick:l.cancelEdit},null,8,["onClick"])):(c(),p(f,{key:2,color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:I=>l.startEdit(d,h)},null,8,["onClick"])),i.editState.index!==d?(c(),p(f,{key:3,color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:I=>l.removeTeacher(d)},null,8,["onClick"])):v("",!0)],2)])]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1}))]))]),_:1}),t(Y,{class:"mt-6"},{default:n(()=>[t(B,{class:"d-flex gap-2",cols:"12"},{default:n(()=>[t(f,{disabled:i.loading,loading:i.loading,color:"primary","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveTeachers},{default:n(()=>[...e[8]||(e[8]=[o(" 保存教师列表 ",-1)])]),_:1},8,["disabled","loading","onClick"]),t(f,{disabled:i.loading,loading:i.loading,color:"error","prepend-icon":"mdi-refresh",size:"large",variant:"outlined",onClick:l.loadTeachers},{default:n(()=>[...e[9]||(e[9]=[o(" 重载教师列表 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["class","color"])}const yt=E(Ts,[["render",Ls],["__scopeId","data-v-16455a49"]]);let Be=null;async function Ks(){return Be||(Be=(await $e(async()=>{const{pinyin:s}=await import("./index-fer6T-lk.js");return{pinyin:s}},[],import.meta.url)).pinyin),Be}const Rs={name:"StudentListCard",components:{UnsavedWarning:Ue},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(s){this.lastSavedData&&(this.unsavedChanges=JSON.stringify(s.list)!==JSON.stringify(this.lastSavedData)),this.modelValue.advanced||(this.modelValue.text=s.list.slice().sort((e,a)=>e.id-a.id).map(e=>e.name).join(` -`))},deep:!0}},mounted(){this.loadStudents()},methods:{async loadStudents(){var s;this.error=null;try{if(this.loading=!0,!y("server.classNumber"))throw new Error("请先设置班号");try{const a=await H.loadData("classworks-list-main");a.success!=!1&&Array.isArray(a)&&(this.modelValue.list=a.map((r,i)=>typeof r=="string"?{id:i+1,name:r}:{id:r.id||i+1,name:r.name||r.toString()}),this.modelValue.list.sort((r,i)=>r.id-i.id),this.modelValue.text=this.modelValue.list.map(r=>r.name).join(` -`),this.lastSavedData=JSON.parse(JSON.stringify(this.modelValue.list)),this.unsavedChanges=!1)}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||"加载失败,请检查设置",(s=this.$message)==null||s.error("加载失败",this.error)}finally{this.loading=!1}},async saveStudents(){var s,e,a;try{if(!y("server.classNumber"))throw new Error("请先设置班号");const i=this.modelValue.list.slice().sort((u,h)=>u.id-h.id).map((u,h)=>({id:h+1,name:u.name})),l=await H.saveData("classworks-list-main",i);if(l.success===!1)throw new Error(((s=l.error)==null?void 0:s.message)||"保存失败");this.modelValue.list=i,this.lastSavedData=JSON.parse(JSON.stringify(i)),this.unsavedChanges=!1,(e=this.$message)==null||e.success("保存成功","学生列表已更新")}catch(r){console.error("保存学生列表失败:",r),(a=this.$message)==null||a.error("保存失败",r.message||"请重试")}},toggleAdvanced(){this.modelValue.advanced=!this.modelValue.advanced},handleTextInput(s){if(!this.modelValue.advanced)return;const e=s.split(` -`).filter(l=>l.trim()),a=new Map(this.modelValue.list.map(l=>[l.name,l.id]));let r=Math.max(0,...this.modelValue.list.map(l=>l.id));const i=e.map(l=>(l=l.trim(),a.has(l)?{id:a.get(l),name:l}:{id:++r,name:l}));this.modelValue.list=i},addStudent(){const s=this.newStudentName.trim();if(s&&!this.modelValue.list.some(e=>e.name===s)){const e=Math.max(0,...this.modelValue.list.map(a=>a.id));this.modelValue.list.push({id:e+1,name:s}),this.newStudentName=""}},startEdit(s,e){this.editState.index=s,this.editState.name=e.name},saveEdit(){if(this.editState.index!==-1){const s=this.editState.name.trim();s&&s!==this.modelValue.list[this.editState.index].name&&(this.modelValue.list[this.editState.index].name=s),this.editState.index=-1,this.editState.name=""}},removeStudent(s){s!==void 0&&this.modelValue.list.splice(s,1)},moveStudent(s,e){if(e==="top"){if(s>0){const a=this.modelValue.list[s];this.modelValue.list.splice(s,1),this.modelValue.list.unshift(a),this.modelValue.list.forEach((r,i)=>r.id=i+1)}}else{const a=e==="up"?s-1:s+1;a>=0&&a{const i=s(a.name,{toneType:"none"}),l=s(r.name,{toneType:"none"});return i.localeCompare(l)});e.forEach((a,r)=>a.id=r+1),this.modelValue.list=e}}},Os={key:0},Fs=["onClick"],Js={key:1,class:"pt-2"};function Qs(s,e,a,r,i,l){const u=Ue;return c(),p(C,{class:_e({"unsaved-changes":i.unsavedChanges}),color:i.unsavedChanges?"warning-subtle":void 0,border:""},{default:n(()=>[t(we,null,{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-account-group",size:"large"})]),append:n(()=>[t(u,{show:i.unsavedChanges,message:"有未保存的更改"},null,8,["show"]),t(f,{disabled:i.modelValue.list.length===0,class:"mr-2","prepend-icon":"mdi-sort-alphabetical-variant",variant:"text",onClick:l.sortStudentsByPinyin},{default:n(()=>[...e[4]||(e[4]=[o(" 按姓名首字母排序 ",-1)])]),_:1},8,["disabled","onClick"]),t(f,{color:i.modelValue.advanced?"primary":void 0,"prepend-icon":"mdi-code-braces",variant:"text",onClick:l.toggleAdvanced},{default:n(()=>[o(w(i.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[...e[3]||(e[3]=[o("学生列表",-1)])]),_:1})]),_:1}),t(S,null,{default:n(()=>[i.loading?(c(),p(Ae,{key:0,class:"mb-4",color:"primary",indeterminate:""})):v("",!0),i.error?(c(),p(L,{key:1,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.error),1)]),_:1})):v("",!0),t(nt,null,{default:n(()=>[i.modelValue.advanced?(c(),k("div",Js,[t(pe,{modelValue:i.modelValue.text,"onUpdate:modelValue":[e[2]||(e[2]=h=>i.modelValue.text=h),l.handleTextInput],hint:"使用文本编辑模式批量编辑学生名单,保存时会自动去除空行",label:"批量编辑学生列表","persistent-hint":"",placeholder:"每行输入一个学生姓名",rows:"10",variant:"outlined"},null,8,["modelValue","onUpdate:modelValue"])])):(c(),k("div",Os,[t(Y,{class:"mb-6"},{default:n(()=>[t(B,{cols:"12",md:"4",sm:"6"},{default:n(()=>[t(N,{modelValue:i.newStudentName,"onUpdate:modelValue":e[0]||(e[0]=h=>i.newStudentName=h),class:"mb-4","hide-details":"",label:"添加学生",placeholder:"输入学生姓名后回车添加","prepend-inner-icon":"mdi-account-plus",variant:"outlined",onKeyup:ae(l.addStudent,["enter"])},{append:n(()=>[t(f,{disabled:!i.newStudentName.trim(),color:"primary",icon:"mdi-plus",variant:"text",onClick:l.addStudent},null,8,["disabled","onClick"])]),_:1},8,["modelValue","onKeyup"])]),_:1})]),_:1}),t(Y,null,{default:n(()=>[(c(!0),k(F,null,W(i.modelValue.list,(h,d)=>(c(),p(B,{key:d,cols:"12",lg:"3",md:"4",sm:"6"},{default:n(()=>[t(kt,null,{default:n(({isHovering:b,props:T})=>[t(C,ge({elevation:a.isMobile?1:b?4:1,border:"",class:"student-card"},{ref_for:!0},T),{default:n(()=>[t(S,{class:"d-flex align-center pa-3"},{default:n(()=>[t(it,{"open-on-hover":!a.isMobile,location:"bottom"},{activator:n(({props:I})=>[t(f,ge({class:"mr-3 font-weight-medium",size:"small"},{ref_for:!0},I,{variant:"tonal"}),{default:n(()=>[o(w(d+1),1)]),_:2},1040)]),default:n(()=>[t(M,{density:"compact",nav:""},{default:n(()=>[t(x,{disabled:d===0,"prepend-icon":"mdi-arrow-up-bold",onClick:I=>l.moveStudent(d,"top")},{default:n(()=>[...e[5]||(e[5]=[o(" 置顶 ",-1)])]),_:1},8,["disabled","onClick"]),t(A),t(x,{disabled:d===0,"prepend-icon":"mdi-arrow-up",onClick:I=>l.moveStudent(d,"up")},{default:n(()=>[...e[6]||(e[6]=[o(" 上移 ",-1)])]),_:1},8,["disabled","onClick"]),t(x,{disabled:d===i.modelValue.list.length-1,"prepend-icon":"mdi-arrow-down",onClick:I=>l.moveStudent(d,"down")},{default:n(()=>[...e[7]||(e[7]=[o(" 下移 ",-1)])]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:2},1032,["open-on-hover"]),i.editState.index===d?(c(),p(N,{key:0,modelValue:i.editState.name,"onUpdate:modelValue":e[1]||(e[1]=I=>i.editState.name=I),autofocus:"",class:"flex-grow-1",density:"compact","hide-details":"",variant:"underlined",onBlur:l.saveEdit,onKeyup:ae(l.saveEdit,["enter"])},null,8,["modelValue","onBlur","onKeyup"])):(c(),k("span",{key:1,class:"text-body-1 flex-grow-1",onClick:I=>l.handleClick(d,h)},w(h.name),9,Fs)),m("div",{class:_e([{"opacity-100":b||a.isMobile},"d-flex gap-1 action-buttons"])},[t(f,{color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:I=>l.startEdit(d,h)},null,8,["onClick"]),t(f,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:I=>l.removeStudent(d)},null,8,["onClick"])],2)]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]))]),_:1}),t(Y,{class:"mt-6"},{default:n(()=>[t(B,{class:"d-flex gap-2",cols:"12"},{default:n(()=>[t(f,{disabled:i.loading,loading:i.loading,color:"primary","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveStudents},{default:n(()=>[...e[8]||(e[8]=[o(" 保存名单 ",-1)])]),_:1},8,["disabled","loading","onClick"]),t(f,{disabled:i.loading,loading:i.loading,color:"error","prepend-icon":"mdi-refresh",size:"large",variant:"outlined",onClick:l.loadStudents},{default:n(()=>[...e[9]||(e[9]=[o(" 重载名单 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["class","color"])}const xt=E(Rs,[["render",Qs],["__scopeId","data-v-4feed29c"]]),Hs={key:0,class:"d-flex justify-center align-center fill-height"},Gs={key:1,class:"d-flex justify-center align-center fill-height"},Ws={key:2},Ys={class:"text-caption ml-4 text-medium-emphasis"},Zs={key:0},qs={key:1},Xs={class:"text-error"},St={__name:"CloudMigrationDialog",props:{modelValue:Boolean},emits:["update:modelValue"],setup(s,{emit:e}){const a=s,r=e,i=q(!1),l=q(!1),u=q(!1),h=q([]),d=q([]),b=q(!1),T=q(null),I=q(null),te=[{id:"student-list",label:"学生列表",description:"classworks-list-main",matcher:D=>D==="classworks-list-main"||D.startsWith("classworks-list-main")},{id:"homework-data",label:"作业数据",description:"classworks-data-*",matcher:D=>D.startsWith("classworks-data-")},{id:"lists",label:"列表",description:"classworks-list-*",matcher:D=>D.startsWith("classworks-list-")},{id:"other",label:"其他",description:"所有其他键",matcher:D=>!D.startsWith("classworks-data-")&&!D.startsWith("classworks-list-")}];Oe(()=>a.modelValue,D=>{i.value=D,D&&re()}),Oe(i,D=>{r("update:modelValue",D)});const re=async()=>{l.value=!0;try{const D=await Fe.loadKeys({limit:1e3});h.value=D.keys||[],d.value=[]}catch(D){console.error(D)}finally{l.value=!1}},X=D=>h.value.filter(D.matcher),ve=D=>X(D).length,ue=D=>{const _=X(D);return _.length===0?!1:_.filter(V=>d.value.includes(V)).length===_.length},de=D=>{const _=X(D);if(_.length===0)return!1;const U=_.filter(V=>d.value.includes(V)).length;return U>0&&U<_.length},oe=D=>{const _=X(D);if(_.length===0)return;const U=ue(D),V=new Set(d.value);U?_.forEach(J=>V.delete(J)):_.forEach(J=>V.add(J)),d.value=Array.from(V)},be=async()=>{var D,_,U;u.value=!0,I.value=null,T.value=null;try{const V={};for(const me of d.value){const se=await Fe.loadData(me);if(se){if(se&&se.success===!1&&se.error){console.warn(`Skipping key ${me} due to load error`,se.error);continue}V[me]=se}}const J=y("server.domain"),ee=y("server.kvToken");if(!J||!ee)throw new Error("请先配置服务器地址和 Token");const ce=J.replace(/\/$/,""),O=await Rt.post(`${ce}/kv/_batchimport`,V,{headers:{Authorization:`Bearer ${ee}`,"Content-Type":"application/json"}});if(O.data&&O.data.code===200)T.value=O.data.data,b.value=!0,i.value=!1;else throw new Error(((D=O.data)==null?void 0:D.message)||"迁移失败")}catch(V){console.error(V),I.value=((U=(_=V.response)==null?void 0:_.data)==null?void 0:U.message)||V.message||"发生未知错误",b.value=!0}finally{u.value=!1}};return(D,_)=>(c(),k(F,null,[t($,{modelValue:i.value,"onUpdate:modelValue":_[2]||(_[2]=U=>i.value=U),"max-width":"600",scrollable:""},{default:n(()=>[t(C,null,{default:n(()=>[t(P,null,{default:n(()=>[..._[5]||(_[5]=[o("迁移到云端",-1)])]),_:1}),t(S,{style:{height:"400px"}},{default:n(()=>[l.value?(c(),k("div",Hs,[t(tt,{indeterminate:"",color:"primary"})])):h.value.length===0?(c(),k("div",Gs," 没有找到本地数据 ")):(c(),k("div",Ws,[t(M,{"select-strategy":"classic",class:"mb-4"},{default:n(()=>[t(Nt,null,{default:n(()=>[..._[6]||(_[6]=[o("选择数据类型",-1)])]),_:1}),(c(),k(F,null,W(te,U=>t(x,{key:U.id,onClick:V=>oe(U)},{prepend:n(()=>[t(Qe,{"model-value":ue(U),indeterminate:de(U),onClick:fe(V=>oe(U),["stop"])},null,8,["model-value","indeterminate","onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[o(w(U.label),1)]),_:2},1024),t(Q,null,{default:n(()=>[o(w(U.description)+" ("+w(ve(U))+" 项)",1)]),_:2},1024)]),_:2},1032,["onClick"])),64))]),_:1}),t(A,{class:"mb-4"}),t(ze,null,{default:n(()=>[t(Le,{title:"详细数据列表"},{default:n(()=>[t(Ke,null,{default:n(()=>[t(M,{"select-strategy":"classic",density:"compact"},{default:n(()=>[(c(!0),k(F,null,W(h.value,U=>(c(),p(x,{key:U,value:U},{prepend:n(()=>[t(Qe,{modelValue:d.value,"onUpdate:modelValue":_[0]||(_[0]=V=>d.value=V),value:U},null,8,["modelValue","value"])]),default:n(()=>[t(j,null,{default:n(()=>[o(w(U),1)]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]))]),_:1}),t(A),t(G,null,{default:n(()=>[m("div",Ys," 已选择 "+w(d.value.length)+" 项 ",1),t(R),t(f,{variant:"text",onClick:_[1]||(_[1]=U=>i.value=!1)},{default:n(()=>[..._[7]||(_[7]=[o("取消",-1)])]),_:1}),t(f,{color:"primary",onClick:be,loading:u.value,disabled:d.value.length===0},{default:n(()=>[..._[8]||(_[8]=[o(" 开始迁移 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:b.value,"onUpdate:modelValue":_[4]||(_[4]=U=>b.value=U),"max-width":"500"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,null,{default:n(()=>[..._[9]||(_[9]=[o("迁移结果",-1)])]),_:1}),t(S,null,{default:n(()=>[T.value?(c(),k("div",Zs,[m("p",null,"总计: "+w(T.value.summary.total),1),m("p",null,"成功: "+w(T.value.summary.successful),1),m("p",null,"失败: "+w(T.value.summary.failed),1)])):I.value?(c(),k("div",qs,[m("p",Xs,w(I.value),1)])):v("",!0)]),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{color:"primary",onClick:_[3]||(_[3]=U=>b.value=!1)},{default:n(()=>[..._[10]||(_[10]=[o("关闭",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])],64))}},$s={name:"KvDatabaseCard",components:{SettingsCard:K,CloudMigrationDialog:St},data(){return{loading:!1,loadingData:!1,savingData:!1,deletingData:!1,kvData:[],searchQuery:"",viewDialog:!1,editDialog:!1,deleteDialog:!1,createDialog:!1,cloudUrlDialog:!1,showMigrationDialog:!1,selectedItem:null,editingItem:null,itemToDelete:null,selectedCloudItem:null,gettingCloudUrl:!1,cloudUrlResult:null,cloudUrlError:null,cloudUrlOptions:{migrateFromLocal:!0,autoConfigureCloud:!0},editingData:"",newKey:"",newData:"",tableHeaders:[{title:"键名",key:"key",sortable:!0},{title:"操作",key:"actions",sortable:!1,width:"120px"}]}},computed:{currentProvider(){return y("server.provider")},isKvProvider(){return this.currentProvider==="kv-local"||this.currentProvider==="kv-server"||this.currentProvider==="classworkscloud"},connectionStatus(){return this.isKvProvider?this.currentProvider==="kv-local"?"本地数据库":"服务器数据库":"当前数据提供者不支持KV数据库管理"},connectionIcon(){return this.isKvProvider?this.currentProvider==="kv-local"?"mdi-database":"mdi-database-sync":"mdi-database-off"},connectionColor(){return this.isKvProvider?"success":"error"},filteredKvData(){return this.searchQuery?this.kvData.filter(s=>s.key.toLowerCase().includes(this.searchQuery.toLowerCase())):this.kvData},isValidJson(){if(!this.editingData)return!0;try{return JSON.parse(this.editingData),!0}catch{return!1}},isValidNewJson(){if(!this.newData)return!0;try{return JSON.parse(this.newData),!0}catch{return!1}},isValidKey(){return!this.newKey||this.newKey.trim()===""?!1:!this.kvData.some(s=>s.key===this.newKey.trim())}},async mounted(){this.isKvProvider&&await this.loadKvData()},methods:{async refreshConnection(){this.loading=!0;try{await new Promise(s=>setTimeout(s,500)),this.$message.success("连接状态已刷新")}catch(s){this.$message.error("刷新失败",s.message)}finally{this.loading=!1}},async loadKvData(){var s;if(!this.isKvProvider){this.$message.warning("当前数据提供者不支持KV数据库管理");return}this.loadingData=!0;try{this.kvData=[];const e=await H.loadKeys({sortBy:"key",sortDir:"asc",limit:1e3});if(e.success===!1)throw new Error(((s=e.error)==null?void 0:s.message)||"获取键名列表失败");this.kvData=e.keys.map(a=>({key:a,value:null,loaded:!1})),this.$message.success("键名加载完成",`共找到 ${this.kvData.length} 个键,总计 ${e.total_rows} 个键`)}catch(e){this.$message.error("加载数据失败",e.message)}finally{this.loadingData=!1}},async viewItem(s){this.selectedItem=s,this.viewDialog=!0,(!s.loaded||s.value===null)&&await this.loadItemData(s)},async editItem(s){this.editingItem=s,(!s.loaded||s.value===null)&&await this.loadItemData(s),this.editingData=this.formatJsonData(s.value),this.editDialog=!0},async loadItemData(s){try{const e=await H.loadData(s.key);if(e&&e.success!==!1)s.value=e,s.loaded=!0;else throw new Error("数据加载失败")}catch(e){this.$message.error("加载数据失败",e.message),s.value=null,s.loaded=!1}},closeEditDialog(){this.editDialog=!1,this.editingItem=null,this.editingData=""},createNewItem(){this.newKey="",this.newData=`{ - "example": "value" -}`,this.createDialog=!0},closeCreateDialog(){this.createDialog=!1,this.newKey="",this.newData=""},async saveNewData(){var s;if(!(!this.isValidKey||!this.isValidNewJson)){this.savingData=!0;try{const e=JSON.parse(this.newData),a=this.newKey.trim(),r=await H.saveData(a,e);if(r&&!r.error)this.kvData.push({key:a,value:e,loaded:!0}),this.$message.success("数据创建成功"),this.closeCreateDialog();else throw new Error(((s=r.error)==null?void 0:s.message)||"创建失败")}catch(e){this.$message.error("创建失败",e.message)}finally{this.savingData=!1}}},async saveEditedData(){var s;if(!(!this.isValidJson||!this.editingItem)){this.savingData=!0;try{const e=JSON.parse(this.editingData),a=await H.saveData(this.editingItem.key,e);if(a&&!a.error){const r=this.kvData.findIndex(i=>i.key===this.editingItem.key);r!==-1&&(this.kvData[r].value=e,this.kvData[r].loaded=!0),this.$message.success("数据保存成功"),this.closeEditDialog()}else throw new Error(((s=a.error)==null?void 0:s.message)||"保存失败")}catch(e){this.$message.error("保存失败",e.message)}finally{this.savingData=!1}}},confirmDelete(s){this.itemToDelete=s,this.deleteDialog=!0},async deleteItem(){if(this.itemToDelete){this.deletingData=!0;try{this.currentProvider==="kv-local"?await(await Ot("ClassworksDB",2)).transaction("kv","readwrite").objectStore("kv").delete(this.itemToDelete.key):await H.saveData(this.itemToDelete.key,null);const s=this.kvData.findIndex(e=>e.key===this.itemToDelete.key);s!==-1&&this.kvData.splice(s,1),this.$message.success("数据删除成功"),this.deleteDialog=!1,this.itemToDelete=null}catch(s){this.$message.error("删除失败",s.message)}finally{this.deletingData=!1}}},formatJsonData(s){try{return JSON.stringify(s,null,2)}catch{return String(s)}},async copyToClipboard(s){try{const e=this.formatJsonData(s);await navigator.clipboard.writeText(e),this.$message.success("数据已复制到剪贴板")}catch(e){this.$message.error("复制失败",e.message)}},async getCloudUrl(s){this.selectedCloudItem=s,this.cloudUrlResult=null,this.cloudUrlError=null,this.cloudUrlDialog=!0,await this.fetchCloudUrl()},async fetchCloudUrl(){var s;if(this.selectedCloudItem){this.gettingCloudUrl=!0,this.cloudUrlError=null;try{const e=await H.getKeyCloudUrl(this.selectedCloudItem.key,this.cloudUrlOptions);e.success?(this.cloudUrlResult=e,this.$message.success("云端地址获取成功")):(this.cloudUrlError=((s=e.error)==null?void 0:s.message)||"获取云端地址失败",this.$message.error("获取失败",this.cloudUrlError))}catch(e){this.cloudUrlError=e.message||"获取云端地址时发生错误",this.$message.error("获取失败",this.cloudUrlError)}finally{this.gettingCloudUrl=!1}}},async refreshCloudUrl(){await this.fetchCloudUrl()},async copyCloudUrl(){var s;if((s=this.cloudUrlResult)!=null&&s.url)try{await navigator.clipboard.writeText(this.cloudUrlResult.url),this.$message.success("云端地址已复制到剪贴板")}catch(e){this.$message.error("复制失败",e.message)}},openCloudUrl(){var s;if((s=this.cloudUrlResult)!=null&&s.url)try{window.open(this.cloudUrlResult.url,"_blank")}catch(e){this.$message.error("打开链接失败",e.message)}}}},ei={class:"text-primary"},ti={class:"mt-2"},ni={key:0,class:"mb-2"},si={key:1,class:"mb-2"};function ii(s,e,a,r,i,l){const u=St,h=K;return c(),p(h,{loading:i.loading,icon:"mdi-database-edit",title:"KV数据库管理"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{prepend:n(()=>[t(g,{color:l.connectionColor,icon:l.connectionIcon,class:"mr-3"},null,8,["color","icon"])]),append:n(()=>[t(f,{loading:i.loading,variant:"tonal",onClick:l.refreshConnection},{default:n(()=>[...e[20]||(e[20]=[o(" 刷新 ",-1)])]),_:1},8,["loading","onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[19]||(e[19]=[o("数据库状态",-1)])]),_:1}),t(Q,null,{default:n(()=>[o(w(l.connectionStatus),1)]),_:1})]),_:1}),t(A,{class:"my-2"}),t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-format-list-bulleted"})]),append:n(()=>[t(Re,{variant:"tonal"},{default:n(()=>[t(f,{loading:i.loadingData,onClick:l.loadKvData},{default:n(()=>[...e[22]||(e[22]=[o(" 加载数据 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{disabled:!l.isKvProvider,onClick:l.createNewItem},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-plus"}),e[23]||(e[23]=o(" 新建 ",-1))]),_:1},8,["disabled","onClick"]),t(f,{onClick:e[0]||(e[0]=d=>i.showMigrationDialog=!0)},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-cloud-upload"}),e[24]||(e[24]=o(" 从本地迁移 ",-1))]),_:1})]),_:1})]),default:n(()=>[t(j,null,{default:n(()=>[...e[21]||(e[21]=[o("数据条目",-1)])]),_:1}),t(Q,null,{default:n(()=>[o("共 "+w(i.kvData.length)+" 条记录",1)]),_:1})]),_:1})]),_:1}),i.kvData.length>0?(c(),p(C,{key:0,class:"mt-4",variant:"outlined"},{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-table"}),e[25]||(e[25]=o(" KV数据列表 ",-1)),t(R),t(N,{modelValue:i.searchQuery,"onUpdate:modelValue":e[1]||(e[1]=d=>i.searchQuery=d),clearable:"",density:"compact","hide-details":"",label:"搜索键名","prepend-inner-icon":"mdi-magnify",style:{"max-width":"300px"},variant:"outlined"},null,8,["modelValue"])]),_:1}),t(at,{headers:i.tableHeaders,items:l.filteredKvData,"items-per-page":10,loading:i.loadingData,class:"elevation-0","item-value":"key"},{"item.key":n(({item:d})=>[m("code",ei,w(d.key),1)]),"item.actions":n(({item:d})=>[t(Re,{density:"compact",variant:"text"},{default:n(()=>[t(f,{icon:"mdi-eye",size:"small",title:"查看",onClick:b=>l.viewItem(d)},null,8,["onClick"]),t(f,{icon:"mdi-pencil",size:"small",title:"编辑",onClick:b=>l.editItem(d)},null,8,["onClick"]),t(f,{color:"primary",icon:"mdi-cloud-download",size:"small",title:"获取云端地址",onClick:b=>l.getCloudUrl(d)},null,8,["onClick"]),t(f,{color:"error",icon:"mdi-delete",size:"small",title:"删除",onClick:b=>l.confirmDelete(d)},null,8,["onClick"])]),_:2},1024)]),_:2},1032,["headers","items","loading"])]),_:1})):v("",!0),t($,{modelValue:i.viewDialog,"onUpdate:modelValue":e[5]||(e[5]=d=>i.viewDialog=d),"max-width":"800px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-eye"}),e[26]||(e[26]=o(" 查看数据 ",-1)),t(R),t(f,{icon:"mdi-close",variant:"text",onClick:e[2]||(e[2]=d=>i.viewDialog=!1)})]),_:1}),i.selectedItem?(c(),p(Se,{key:0},{default:n(()=>[e[27]||(e[27]=o(" 键名: ",-1)),m("code",null,w(i.selectedItem.key),1)]),_:1})):v("",!0),t(S,null,{default:n(()=>[i.selectedItem?(c(),p(pe,{key:0,"model-value":l.formatJsonData(i.selectedItem.value),class:"font-monospace",label:"数据内容",readonly:"",rows:"15",variant:"outlined"},null,8,["model-value"])):v("",!0)]),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{variant:"tonal",onClick:e[3]||(e[3]=d=>{var b;return l.copyToClipboard((b=i.selectedItem)==null?void 0:b.value)})},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-content-copy"}),e[28]||(e[28]=o(" 复制数据 ",-1))]),_:1}),t(f,{variant:"text",onClick:e[4]||(e[4]=d=>i.viewDialog=!1)},{default:n(()=>[...e[29]||(e[29]=[o(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:i.editDialog,"onUpdate:modelValue":e[7]||(e[7]=d=>i.editDialog=d),"max-width":"800px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-pencil"}),e[30]||(e[30]=o(" 编辑数据 ",-1)),t(R),t(f,{icon:"mdi-close",variant:"text",onClick:l.closeEditDialog},null,8,["onClick"])]),_:1}),i.editingItem?(c(),p(Se,{key:0},{default:n(()=>[e[31]||(e[31]=o(" 键名: ",-1)),m("code",null,w(i.editingItem.key),1)]),_:1})):v("",!0),t(S,null,{default:n(()=>[t(pe,{modelValue:i.editingData,"onUpdate:modelValue":e[6]||(e[6]=d=>i.editingData=d),error:!l.isValidJson,"error-messages":l.isValidJson?[]:["请输入有效的JSON格式"],class:"font-monospace",label:"数据内容 (JSON格式)",rows:"15",variant:"outlined"},null,8,["modelValue","error","error-messages"])]),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{variant:"text",onClick:l.closeEditDialog},{default:n(()=>[...e[32]||(e[32]=[o(" 取消 ",-1)])]),_:1},8,["onClick"]),t(f,{disabled:!l.isValidJson,loading:i.savingData,color:"primary",variant:"tonal",onClick:l.saveEditedData},{default:n(()=>[...e[33]||(e[33]=[o(" 保存 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:i.createDialog,"onUpdate:modelValue":e[10]||(e[10]=d=>i.createDialog=d),"max-width":"800px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-plus"}),e[34]||(e[34]=o(" 新建数据 ",-1)),t(R),t(f,{icon:"mdi-close",variant:"text",onClick:l.closeCreateDialog},null,8,["onClick"])]),_:1}),t(S,null,{default:n(()=>[t(N,{modelValue:i.newKey,"onUpdate:modelValue":e[8]||(e[8]=d=>i.newKey=d),error:!l.isValidKey,"error-messages":l.isValidKey?[]:["键名不能为空且不能与现有键重复"],class:"mb-4",label:"键名",placeholder:"请输入键名,如:my-config",variant:"outlined"},null,8,["modelValue","error","error-messages"]),t(pe,{modelValue:i.newData,"onUpdate:modelValue":e[9]||(e[9]=d=>i.newData=d),error:!l.isValidNewJson,"error-messages":l.isValidNewJson?[]:["请输入有效的JSON格式"],class:"font-monospace",label:"数据内容 (JSON格式)",placeholder:'请输入JSON数据,如:{"name": "value"}',rows:"15",variant:"outlined"},null,8,["modelValue","error","error-messages"])]),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{variant:"text",onClick:l.closeCreateDialog},{default:n(()=>[...e[35]||(e[35]=[o(" 取消 ",-1)])]),_:1},8,["onClick"]),t(f,{disabled:!l.isValidKey||!l.isValidNewJson,loading:i.savingData,color:"primary",variant:"tonal",onClick:l.saveNewData},{default:n(()=>[...e[36]||(e[36]=[o(" 创建 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:i.cloudUrlDialog,"onUpdate:modelValue":e[15]||(e[15]=d=>i.cloudUrlDialog=d),"max-width":"800px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cloud-download"}),e[37]||(e[37]=o(" 获取云端访问地址 ",-1)),t(R),t(f,{icon:"mdi-close",variant:"text",onClick:e[11]||(e[11]=d=>i.cloudUrlDialog=!1)})]),_:1}),i.selectedCloudItem?(c(),p(Se,{key:0},{default:n(()=>[e[38]||(e[38]=o(" 键名: ",-1)),m("code",null,w(i.selectedCloudItem.key),1)]),_:1})):v("",!0),t(S,null,{default:n(()=>[i.cloudUrlError?(c(),p(L,{key:0,class:"mb-4",type:"error",variant:"tonal"},{default:n(()=>[o(w(i.cloudUrlError),1)]),_:1})):v("",!0),i.cloudUrlResult&&i.cloudUrlResult.success?(c(),p(L,{key:1,class:"mb-4",type:"success",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[39]||(e[39]=[o("云端地址获取成功",-1)])]),_:1}),m("div",ti,[i.cloudUrlResult.migrated?(c(),k("div",ni,[t(g,{class:"mr-1",color:"success",icon:"mdi-database-arrow-up"}),e[40]||(e[40]=o(" 数据已从本地迁移到云端 ",-1))])):v("",!0),i.cloudUrlResult.configured?(c(),k("div",si,[t(g,{class:"mr-1",color:"info",icon:"mdi-cog"}),e[41]||(e[41]=o(" 云端配置已自动设置 ",-1))])):v("",!0)])]),_:1})):v("",!0),i.cloudUrlResult&&i.cloudUrlResult.url?(c(),p(N,{key:2,"model-value":i.cloudUrlResult.url,"append-inner-icon":"mdi-content-copy",class:"font-monospace",label:"云端访问地址",readonly:"",variant:"outlined","onClick:appendInner":l.copyCloudUrl},null,8,["model-value","onClick:appendInner"])):v("",!0),i.cloudUrlResult&&i.cloudUrlResult.url?(c(),p(ze,{key:3,class:"mt-4"},{default:n(()=>[t(Le,null,{default:n(()=>[t(ot,null,{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cog"}),e[42]||(e[42]=o(" 高级选项 ",-1))]),_:1}),t(Ke,null,{default:n(()=>[t(ie,{modelValue:i.cloudUrlOptions.migrateFromLocal,"onUpdate:modelValue":e[12]||(e[12]=d=>i.cloudUrlOptions.migrateFromLocal=d),density:"compact",label:"从本地迁移数据到云端"},null,8,["modelValue"]),t(ie,{modelValue:i.cloudUrlOptions.autoConfigureCloud,"onUpdate:modelValue":e[13]||(e[13]=d=>i.cloudUrlOptions.autoConfigureCloud=d),density:"compact",label:"自动配置云端默认设置"},null,8,["modelValue"]),t(f,{loading:i.gettingCloudUrl,class:"mt-2",color:"primary",variant:"tonal",onClick:l.refreshCloudUrl},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-refresh"}),e[43]||(e[43]=o(" 重新获取 ",-1))]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1})):v("",!0)]),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{variant:"text",onClick:e[14]||(e[14]=d=>i.cloudUrlDialog=!1)},{default:n(()=>[...e[44]||(e[44]=[o(" 关闭 ",-1)])]),_:1}),i.cloudUrlResult&&i.cloudUrlResult.url?(c(),p(f,{key:0,color:"primary",variant:"tonal",onClick:l.openCloudUrl},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-open-in-new"}),e[45]||(e[45]=o(" 在新窗口打开 ",-1))]),_:1},8,["onClick"])):v("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:i.deleteDialog,"onUpdate:modelValue":e[17]||(e[17]=d=>i.deleteDialog=d),"max-width":"400px"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,{class:"d-flex align-center text-error"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-alert"}),e[46]||(e[46]=o(" 确认删除 ",-1))]),_:1}),t(S,null,{default:n(()=>{var d;return[e[48]||(e[48]=o(" 确定要删除键名为 ",-1)),m("code",null,w((d=i.itemToDelete)==null?void 0:d.key),1),e[49]||(e[49]=o(" 的数据吗? ",-1)),e[50]||(e[50]=m("br",null,null,-1)),e[51]||(e[51]=m("br",null,null,-1)),t(L,{class:"mt-2",type:"warning",variant:"tonal"},{default:n(()=>[...e[47]||(e[47]=[o(" 此操作不可撤销,请谨慎操作! ",-1)])]),_:1})]}),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{variant:"text",onClick:e[16]||(e[16]=d=>i.deleteDialog=!1)},{default:n(()=>[...e[52]||(e[52]=[o(" 取消 ",-1)])]),_:1}),t(f,{loading:i.deletingData,color:"error",variant:"tonal",onClick:l.deleteItem},{default:n(()=>[...e[53]||(e[53]=[o(" 删除 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(u,{modelValue:i.showMigrationDialog,"onUpdate:modelValue":e[18]||(e[18]=d=>i.showMigrationDialog=d)},null,8,["modelValue"])]),_:1},8,["loading"])}const Ct=E($s,[["render",ii],["__scopeId","data-v-67879974"]]),li={name:"DataProviderSettingsCard",components:{SettingsCard:K},data(){return{loading:!1,serverchecktime:{},confirmDialog:!1,confirmTitle:"",confirmMessage:"",confirmAction:null,machineId:null,migrateLoading:!1}},computed:{currentProvider(){return y("server.provider")},isKvProvider(){return this.currentProvider==="kv-local"||this.currentProvider==="kv-server"||this.currentProvider==="classworkscloud"}},async created(){this.machineId=y("device.uuid")},methods:{async checkServerConnection(){this.loading=!0,this.serverchecktime=new Date;const s=[];try{const e=y("server.siteKey"),a={Accept:"application/json"};if(e&&(a["x-site-key"]=e),Xt()){const r=await $t(async h=>{const d=await De.get(`${h}/check`,{method:"GET",headers:a});if(d.data.status!=="success")throw new Error("服务器响应异常");return d},{onServerTried:({url:h,status:d,tried:b})=>{s.length=0,s.push(...b)}}),i=new Date-this.serverchecktime,l=s.find(h=>h.status==="success");let u=`服务器连接正常 延迟${i}ms`;if(s.length>1){const h=s.map((d,b)=>`${b+1}. ${d.url} (${d.status==="success"?"成功":"失败"})`).join(` -`);u+=` - -依次尝试的服务器: -${h}`}else l&&(u+=` -服务器: ${l.url}`);this.$message.success("连接成功",u)}else{const r=y("server.domain");if((await De.get(`${r}/check`,{method:"GET",headers:a})).data.status==="success")this.$message.success("连接成功","服务器连接正常 延迟"+(new Date-this.serverchecktime)+"ms");else throw new Error("服务器响应异常")}}catch(e){let a=e.message||"无法连接到服务器";if(s.length>0){const r=s.map((i,l)=>`${l+1}. ${i.url} (失败${i.error?`: ${i.error}`:""})`).join(` -`);a+=` - -依次尝试的服务器: -${r} - -所有服务器均连接失败`}this.$message.error("连接失败",a)}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(s){this.$message.error("清除失败",s.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(s){this.$message.error("清除失败",s.message)}},async exportData(){try{const s="ClassworksDB",e={indexedDB:{}},a=await new Promise((d,b)=>{const T=window.indexedDB.open(s);T.onerror=()=>b(T.error),T.onsuccess=()=>d(T.result)}),r=Array.from(a.objectStoreNames);for(const d of r){const T=a.transaction(d,"readonly").objectStore(d),I=await new Promise((te,re)=>{const X=T.getAll();X.onerror=()=>re(X.error),X.onsuccess=()=>te(X.result)});e.indexedDB[d]=I}const i=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),l=URL.createObjectURL(i),u=document.createElement("a"),h=new Date().toISOString().split("T")[0];u.href=l,u.download=`homework-indexeddb-${h}.json`,u.click(),URL.revokeObjectURL(l),this.$message.success("导出成功","IndexedDB数据已导出")}catch(s){console.error("导出失败:",s),this.$message.error("导出失败",s.message||"无法导出数据库数据")}},async migrateData(){this.migrateLoading=!0,this.$router.push("/datamigration"),this.migrateLoading=!1},handleConfirm(){this.confirmAction&&this.confirmAction()}}};function oi(s,e,a,r,i,l){const u=K;return c(),p(u,{icon:"mdi-database-cog",title:"数据源设置"},{default:n(()=>[t(M,null,{default:n(()=>[l.currentProvider==="kv-server"||l.currentProvider==="classworkscloud"?(c(),p(x,{key:0},{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-lan-connect"})]),append:n(()=>[t(f,{loading:i.loading,variant:"tonal",onClick:l.checkServerConnection},{default:n(()=>[...e[3]||(e[3]=[o(" 测试连接 ",-1)])]),_:1},8,["loading","onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[2]||(e[2]=[o("检查服务器连接",-1)])]),_:1})]),_:1})):v("",!0),l.currentProvider==="kv-local"?(c(),k(F,{key:1},[t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-database"})]),append:n(()=>[t(f,{color:"error",variant:"tonal",onClick:l.confirmClearIndexedDB},{default:n(()=>[...e[6]||(e[6]=[o(" 清除 ",-1)])]),_:1},8,["onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[4]||(e[4]=[o("清除数据库缓存",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[5]||(e[5]=[o("这将清除所有本地数据库中的数据 ",-1)])]),_:1})]),_:1}),t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-database-export"})]),append:n(()=>[t(f,{variant:"tonal",onClick:l.exportData},{default:n(()=>[...e[8]||(e[8]=[o(" 导出",-1)])]),_:1},8,["onClick"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[7]||(e[7]=[o("导出数据库",-1)])]),_:1})]),_:1})],64)):v("",!0),t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-lan-connect"})]),append:n(()=>[t(f,{to:"/cachemanagement",variant:"tonal"},{default:n(()=>[...e[10]||(e[10]=[o(" 查看",-1)])]),_:1})]),default:n(()=>[t(j,null,{default:n(()=>[...e[9]||(e[9]=[o("查看本地缓存",-1)])]),_:1})]),_:1})]),_:1}),t($,{modelValue:i.confirmDialog,"onUpdate:modelValue":e[1]||(e[1]=h=>i.confirmDialog=h),"max-width":"400"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,null,{default:n(()=>[o(w(i.confirmTitle),1)]),_:1}),t(S,null,{default:n(()=>[o(w(i.confirmMessage),1)]),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{color:"grey",variant:"text",onClick:e[0]||(e[0]=h=>i.confirmDialog=!1)},{default:n(()=>[...e[11]||(e[11]=[o("取消 ",-1)])]),_:1}),t(f,{color:"error",variant:"tonal",onClick:l.handleConfirm},{default:n(()=>[...e[12]||(e[12]=[o("确认 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const _t=E(li,[["render",oi]]),ai={name:"CloudNamespaceInfoCard",props:{visible:{type:Boolean,default:!0}},data(){return{namespaceInfo:{},loading:!1,hasNamespaceInfo:!1,showReinitDialog:!1,defaultAuthServer:y("server.authDomain")}},watch:{visible(s){s===!0&&this.fetchNamespaceInfo()}},mounted(){this.visible&&this.fetchNamespaceInfo()},methods:{formatDate(s){if(!s)return"未知";try{return new Date(s).toLocaleString("zh-CN")}catch{return s}},async fetchNamespaceInfo(){this.loading=!0;try{const s=await Ft.loadNamespaceInfo();this.namespaceInfo=s,this.hasNamespaceInfo=!0,this.loading=!1}catch(s){console.error("获取命名空间信息失败:",s),this.hasNamespaceInfo=!1,this.namespaceInfo={}}finally{this.loading=!1}},async reloadInfo(){await this.fetchNamespaceInfo()},getBindAccountUrl(){var e,a;const s=(a=(e=this.namespaceInfo)==null?void 0:e.device)==null?void 0:a.uuid;return s?`${this.defaultAuthServer}?uuid=${encodeURIComponent(s)}&tolinktoaccount=true`:this.defaultAuthServer},confirmReinitialize(){ne("server.kvToken",""),ne("device.uuid",""),this.showReinitDialog=!1,this.$router.push("/")}}},ri={key:0,class:"mb-4"},ui={key:1,class:"d-flex align-center mb-4"},di={class:"d-flex flex-column gap-1"},ci={class:"d-flex align-center"},mi={class:"d-flex align-center"},fi={key:0,class:"d-flex align-center"},hi={class:"text-truncate"},pi={class:"d-flex align-center"},wi={key:1,class:"d-flex align-center"};function gi(s,e,a,r,i,l){return c(),p(C,{disabled:!i.hasNamespaceInfo,loading:i.loading,class:"my-4"},{loader:n(()=>[i.loading?(c(),p(Ae,{key:0,color:"primary",indeterminate:""})):v("",!0)]),default:n(()=>[t(P,null,{default:n(()=>[t(g,{class:"me-2"},{default:n(()=>[...e[3]||(e[3]=[o(" mdi-cloud-check ",-1)])]),_:1}),e[4]||(e[4]=o(" 设备信息 ",-1))]),_:1}),i.hasNamespaceInfo?(c(),p(S,{key:0},{default:n(()=>[i.namespaceInfo.hasAccount===!1?(c(),k("div",ri,[t(L,{border:"",type:"warning",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[5]||(e[5]=[o("设备未绑定账号",-1)])]),_:1}),e[7]||(e[7]=m("div",null,"当前设备尚未绑定账号,部分功能可能受限。请前往绑定账号以获得完整体验。",-1)),t(f,{href:l.getBindAccountUrl(),"append-icon":"mdi-open-in-new",class:"mt-3",target:"_blank",variant:"outlined"},{default:n(()=>[...e[6]||(e[6]=[o(" 前往绑定账号 ",-1)])]),_:1},8,["href"])]),_:1})])):v("",!0),i.namespaceInfo.hasAccount&&i.namespaceInfo.account?(c(),k("div",ui,[t(C,{"prepend-avatar":i.namespaceInfo.account.avatarUrl,subtitle:"此设备由贵校管理 管理员账号 ID: "+i.namespaceInfo.account.id,title:i.namespaceInfo.account.name||"未命名用户",border:"",class:"w-100",hover:"",variant:"tonal"},{default:n(()=>[t(S,null,{default:n(()=>[...e[8]||(e[8]=[o(" 此设备由贵校或贵单位管理,该管理员系此空间所有者,如有疑问请咨询他,对于恶意绑定、滥用行为请反馈。 ",-1)])]),_:1})]),_:1},8,["prepend-avatar","subtitle","title"])])):v("",!0),i.namespaceInfo.device?(c(),p(C,{key:2,border:"",class:"mb-4",hover:"",variant:"tonal"},{default:n(()=>[t(P,{class:"pb-1"},{default:n(()=>[...e[9]||(e[9]=[o(" 设备信息 ",-1)])]),_:1}),t(S,null,{default:n(()=>[m("div",di,[m("div",ci,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[10]||(e[10]=[o(" mdi-tag ",-1)])]),_:1}),e[11]||(e[11]=m("span",{class:"font-weight-medium me-2"},"设备名称:",-1)),m("span",null,w(i.namespaceInfo.device.name||"未命名设备"),1)]),m("div",mi,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[12]||(e[12]=[o(" mdi-identifier ",-1)])]),_:1}),e[13]||(e[13]=m("span",{class:"font-weight-medium me-2"},"设备 ID:",-1)),m("span",null,w(i.namespaceInfo.device.id),1)]),i.namespaceInfo.hasAccount===!1&&i.namespaceInfo.device.uuid?(c(),k("div",fi,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[14]||(e[14]=[o(" mdi-uuid ",-1)])]),_:1}),e[15]||(e[15]=m("span",{class:"font-weight-medium me-2"},"UUID:",-1)),m("span",hi,w(i.namespaceInfo.device.uuid),1)])):v("",!0),m("div",pi,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[16]||(e[16]=[o(" mdi-calendar ",-1)])]),_:1}),e[17]||(e[17]=m("span",{class:"font-weight-medium me-2"},"创建时间:",-1)),m("span",null,w(l.formatDate(i.namespaceInfo.device.createdAt)),1)]),i.namespaceInfo.device.updatedAt?(c(),k("div",wi,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[18]||(e[18]=[o(" mdi-calendar-clock ",-1)])]),_:1}),e[19]||(e[19]=m("span",{class:"font-weight-medium me-2"},"更新时间:",-1)),m("span",null,w(l.formatDate(i.namespaceInfo.device.updatedAt)),1)])):v("",!0)])]),_:1})]),_:1})):v("",!0),t(C,{border:"",hover:"",subtitle:"文档形键值数据库",title:"Classworks KV"},{default:n(()=>[t(S,null,{default:n(()=>[...e[20]||(e[20]=[o(" Classworks KV 是厚浪云推出的文档形键值数据库,其是一个开放的云应用平台,为各种应用提供存储服务。此设备正在使用其服务,如果您希望管理设备信息,请前往 Classworks KV 的网站,如果您在服务推出前就在使用 Classworks,您的数据已被自动迁移。 ",-1),m("br",null,null,-1),m("br",null,null,-1),o(" Classworks KV 的全域管理员是 ",-1),m("a",{href:"https://wuyuan.dev",target:"_blank"}," 孙悟元 ",-1)])]),_:1}),t(G,null,{default:n(()=>[t(f,{href:i.defaultAuthServer,"append-icon":"mdi-open-in-new",class:"text-none",target:"_blank"},{default:n(()=>[...e[21]||(e[21]=[o(" 前往 Classworks KV ",-1)])]),_:1},8,["href"])]),_:1})]),_:1})]),_:1})):(c(),p(S,{key:1},{default:n(()=>[t(L,{type:"info",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[22]||(e[22]=[o("未获取到设备信息",-1)])]),_:1}),e[23]||(e[23]=m("p",null,"您尚未完成云端存储授权或连接失败,请点击下方按钮进行初始化。",-1))]),_:1})]),_:1})),t(G,null,{default:n(()=>[t(R),t(f,{loading:i.loading,color:"primary",variant:"outlined",onClick:l.reloadInfo},{default:n(()=>[...e[24]||(e[24]=[o(" 刷新设备信息 ",-1)])]),_:1},8,["loading","onClick"]),t(f,{color:"error",variant:"outlined",onClick:e[0]||(e[0]=u=>i.showReinitDialog=!0)},{default:n(()=>[...e[25]||(e[25]=[o(" 重新初始化云端存储 ",-1)])]),_:1})]),_:1}),t($,{modelValue:i.showReinitDialog,"onUpdate:modelValue":e[2]||(e[2]=u=>i.showReinitDialog=u),"max-width":"500"},{default:n(()=>[t(C,null,{default:n(()=>[t(P,null,{default:n(()=>[...e[26]||(e[26]=[o("确认重新初始化",-1)])]),_:1}),t(S,null,{default:n(()=>[t(L,{class:"mb-3",type:"warning",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[27]||(e[27]=[o("警告",-1)])]),_:1}),e[28]||(e[28]=o(" 此操作将清除当前的云端存储配置(包括 Token),您需要重新进行授权。 ",-1))]),_:1}),e[29]||(e[29]=m("p",null,"您确定要重新初始化云端存储吗?",-1))]),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{variant:"text",onClick:e[1]||(e[1]=u=>i.showReinitDialog=!1)},{default:n(()=>[...e[30]||(e[30]=[o(" 取消 ",-1)])]),_:1}),t(f,{color:"error",onClick:l.confirmReinitialize},{default:n(()=>[...e[31]||(e[31]=[o(" 确认 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["disabled","loading"])}const Vt=E(ai,[["render",gi]]),vi={name:"ServerSettingsCard",components:{SettingsCard:K,CloudNamespaceInfoCard:Vt},props:{loading:Boolean},data(){return{unwatch:null,serverSettings:{provider:y("server.provider"),domain:y("server.domain"),classNumber:y("server.classNumber"),kvToken:y("server.kvToken")},settingsChangeTimeout:null}},computed:{currentProvider(){return this.serverSettings.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"}},watch:{serverSettings:{handler(){this.settingsChangeTimeout&&clearTimeout(this.settingsChangeTimeout),this.settingsChangeTimeout=setTimeout(()=>{this.saveAllSettings()},100)},deep:!0}},mounted(){this.loadAllSettings(),this.unwatch=Me(()=>{this.loadAllSettings(),this.$forceUpdate&&this.$forceUpdate()})},beforeUnmount(){this.unwatch&&this.unwatch()},methods:{loadAllSettings(){this.serverSettings={provider:y("server.provider"),domain:y("server.domain"),classNumber:y("server.classNumber"),kvToken:y("server.kvToken")}},saveAllSettings(){Object.entries(this.serverSettings).forEach(([s,e])=>{const a=`server.${s}`,r=y(a);e!==r&&(ne(a,e)?console.log(`设置已更新: ${a} = ${e}`):(console.error(`设置失败: ${a}`),this.serverSettings[s]=r))})}}},bi={key:0},ki={key:2},yi={key:3},xi={key:4};function Si(s,e,a,r,i,l){const u=Vt,h=K;return c(),p(h,{loading:a.loading,icon:"mdi-database",title:"数据源设置"},{default:n(()=>[t(lt,null,{default:n(()=>[t(Ve,{modelValue:i.serverSettings.provider,"onUpdate:modelValue":e[0]||(e[0]=d=>i.serverSettings.provider=d),items:[{title:"Classworks云端存储",value:"classworkscloud"},{title:"KV本地存储",value:"kv-local"},{title:"KV远程服务器",value:"kv-server"}],class:"mb-3",density:"comfortable","item-title":"title","item-value":"value",label:"数据提供者","prepend-icon":"mdi-database",variant:"outlined"},null,8,["modelValue"]),l.isKvProvider?(c(),p(L,{key:0,class:"my-2",type:"info",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[5]||(e[5]=[o("KV 存储系统",-1)])]),_:1}),e[7]||(e[7]=m("p",null,"KV存储系统使用本机唯一标识符(UUID)来区分不同设备的数据。",-1)),l.currentProvider==="kv-server"?(c(),k("p",bi,[...e[6]||(e[6]=[o(" 服务器端点格式: ",-1),m("code",null,"http(s)://服务器域名/",-1),m("br",null,null,-1),o(" 在服务器域名处仅填写基础URL,不需要任何路径。 ",-1)])])):v("",!0)]),_:1})):v("",!0),l.isClassworksCloud?(c(),p(L,{key:1,class:"my-2",color:"success",type:"info",variant:"tonal"},{default:n(()=>[t(he,null,{default:n(()=>[...e[8]||(e[8]=[o("Classworks云端存储",-1)])]),_:1}),e[9]||(e[9]=m("p",null,"Classworks云端存储是官方提供的存储解决方案,自动配置了最优的访问设置。",-1)),e[10]||(e[10]=m("p",null,"使用此选项时,服务器域名和网站令牌将自动配置,无需手动设置。",-1))]),_:1})):v("",!0),t(A,{class:"my-2"}),l.isClassworksCloud?(c(),k("div",ki,[t(N,{modelValue:i.serverSettings.kvToken,"onUpdate:modelValue":e[1]||(e[1]=d=>i.serverSettings.kvToken=d),class:"mb-2",density:"comfortable",hint:"令牌用于云端存储授权",label:"KV 授权令牌","persistent-hint":"","prepend-icon":"mdi-shield-key",variant:"outlined"},null,8,["modelValue"]),t(u,{visible:l.isClassworksCloud,class:"mt-4"},null,8,["visible"])])):l.currentProvider==="kv-server"?(c(),k("div",yi,[t(N,{modelValue:i.serverSettings.domain,"onUpdate:modelValue":e[2]||(e[2]=d=>i.serverSettings.domain=d),class:"mb-2",density:"comfortable",hint:"例如: https://example.com (不需要路径)",label:"服务器域名","persistent-hint":"","prepend-icon":"mdi-web",variant:"outlined"},null,8,["modelValue"]),t(N,{modelValue:i.serverSettings.kvToken,"onUpdate:modelValue":e[3]||(e[3]=d=>i.serverSettings.kvToken=d),class:"mb-2",density:"comfortable",hint:"令牌用于服务器验证",label:"KV 授权令牌","persistent-hint":"","prepend-icon":"mdi-shield-key",variant:"outlined"},null,8,["modelValue"])])):l.currentProvider==="kv-local"?(c(),k("div",xi,[t(N,{modelValue:i.serverSettings.classNumber,"onUpdate:modelValue":e[4]||(e[4]=d=>i.serverSettings.classNumber=d),class:"mb-2",density:"comfortable",hint:"例如: 高三八班",label:"班级编号","persistent-hint":"","prepend-icon":"mdi-account-group",variant:"outlined"},null,8,["modelValue"])])):v("",!0)]),_:1})]),_:1},8,["loading"])}const Dt=E(vi,[["render",Si]]),Ci="classworks",_i="module",Vi="0.0.0",Di={dev:"vite --host",build:"vite build",preview:"vite preview",lint:"eslint . --fix",prebuild:"node scripts/generate-sound-list.js"},Ai={"@fingerprintjs/fingerprintjs":"^5.0.1","@mdi/font":"7.4.47","@microsoft/clarity":"^1.0.2","@sentry/vue":"^10.36.0","@vueuse/core":"^14.1.0",axios:"^1.13.2",idb:"^8.0.3","js-base64":"^3.7.8","lucide-vue-next":"^0.555.0","pinyin-pro":"^3.27.0","ratelimit-header-parser":"^0.1.0","roboto-fontface":"*","socket.io-client":"^4.8.1","typewriter-effect":"^2.22.0",uuid:"^13.0.0",vue:"^3.5.25","vue-sonner":"^2.0.9",vuetify:"^3.11.0"},Ii={"@eslint/js":"^9.39.1","@vite-pwa/assets-generator":"^1.0.2","@vitejs/plugin-vue":"^6.0.2",eslint:"^9.39.1","eslint-plugin-import":"^2.32.0","eslint-plugin-n":"^17.23.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^7.2.1","eslint-plugin-vue":"^10.6.2",pinia:"^3.0.4",sass:"1.94.2","sass-embedded":"^1.93.3","unplugin-auto-import":"^20.3.0","unplugin-fonts":"^1.4.0","unplugin-vue-components":"^30.0.0","unplugin-vue-router":"^0.18.0",vite:"^5.4.11","vite-plugin-pwa":"^1.2.0","vite-plugin-vue-devtools":"^7.6.8","vite-plugin-vue-layouts":"^0.11.0","vite-plugin-vuetify":"^2.1.2","vue-router":"^4.6.3"},ye={name:Ci,private:!0,type:_i,version:Vi,scripts:Di,dependencies:Ai,devDependencies:Ii},Ti="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAAAXNSR0IArs4c6QAAAARzQklUCAgICHwIZIgAAAa9SURBVHic7dY9jlxVFIXRY8SsCEDyMCAjgRFBYokARoGQQII5EDIJYhNgyb9td9euqvfu3WuN4CTf1nn2958/vRyg0mdHHwAcxwBAMQMAxQwAFDMAUMwAQDEDAMUMABQzAFDMAEAxAwDFDAAUMwBQzABAMQMAxQwAFDMAUMwAQDEDAMUMABQzAFDMAEAxAwDFDAAUMwBQzABAMQMAxQwAFDMAUMwAQDEDAMUMABQzAFDMAEAxAwDFDAAUMwBQzABAMQMAxQwAFDMAUMwAQDEDAMUMABQzAFDMAEAxAwDFPj/6AI7z2+9/zW9//HX0Gct6/uUX8/yrL44+I+IDKCX+zA7xzxiASuLP7BL/jAGoI/7MTvHPGIAq4s/sFv+MAagh/syO8c8YgAriz+wa/4wB2J74MzvHP2MAtib+zO7xzxiAbYk/0xD/jAHYkvgzLfHPGIDtiD/TFP+MAdiK+DNt8c8YgG2IP9MY/4wB2IL4M63xzxiA5Yk/0xz/jAFYmvgz7fHPGIBliT8j/v8ZgAWJPyP+1wzAYsSfEf/bDMBCxJ8R//sMwCLEnxH/hxmABYg/I/6HGYCTE39G/B9nAE5M/Bnxf5oBOCnxZ8T/OAbghMSfEf/jGYCTEX9G/E9jAE5E/BnxP50BOAnxZ8R/GQNwAuLPiP9yBuBg4s+IP2MADiT+jPhzBuAg4s+I/zoMwAHEnxH/9RiAOxN/RvzXZQDuSPwZ8V+fAbgT8WfEfxsG4A7EnxH/7RiAGxN/Rvy3ZQBuSPwZ8d+eAbgR8WfEfx8G4AbEnxH//RiAKxN/Rvz3ZQCuSPwZ8d+fAbgS8WfEfwwDcAXiz4j/OAYgJP6M+I9lAALiz4j/eAbgQuLPiP8cDMAFxJ8R/3kYgCcSf0b852IAnkD8GfGfjwF4JPFnxH9OBuARxJ8R/3kZgE8Qf0b852YAPkL8GfGfnwF4gPgz4l+DAfgA8WfEvw4D8A7xZ8S/FgPwBvFnxL8eA/CK+DPiX5MBGPGnxL+u+gEQf0b8a6seAPFnxL++2gEQf0b8e6gcAPFnxL+PugEQf0b8e6kaAPFnxL+fmgEQf0b8e6oYAPFnxL+v7QdA/Bnx723rARB/Rvz723YAxJ8Rf4ctB0D8GfH32G4AxJ8Rf5etBkD8GfH32WYAxJ8Rf6ctBkD8GfH3Wn4AxJ8Rf7dn//7z68ujj+AYP774ZX548fPRZyzr+2+/me++/froMyLLfwBcRvyZHeKfMQCVxJ/ZJf4ZA1BH/Jmd4p8xAFXEn9kt/hkDUEP8mR3jnzEAFcSf2TX+GQOwPfFndo5/xgBsTfyZ3eOfMQDbEn+mIf4ZA7Al8Wda4p8xANsRf6Yp/hkDsBXxZ9rinzEA2xB/pjH+GQOwBfFnWuOfMQDLE3+mOf4ZA7A08Wfa458xAMsSf0b8/zMACxJ/RvyvGYDFiD8j/rcZgIWIPyP+9xmARYg/I/4PMwALEH9G/A8zACcn/oz4P84AnJj4M+L/NANwUuLPiP9xDMAJiT8j/sczACcj/oz4n8YAnIj4M+J/OgNwEuLPiP8yBuAExJ8R/+UMwMHEnxF/xgAcSPwZ8ecMwEHEnxH/dRiAA4g/I/7rMQB3Jv6M+K/LANyR+DPivz4DcCfiz4j/NgzAHYg/I/7bMQA3Jv6M+G/LANyQ+DPivz0DcCPiz4j/PgzADYg/I/77MQBXJv6M+O/LAFyR+DPivz8DcCXiz4j/GAbgCsSfEf9xDEBI/BnxH8sABMSfEf/xDMCFxJ8R/zkYgAuIPyP+8zAATyT+jPjPxQA8gfgz4j8fA/BI4s+I/5wMwCOIPyP+8zIAnyD+jPjPzQB8hPgz4j8/A/AA8WfEvwYD8AHiz4h/HQbgHeLPiH8tBuAN4s+Ifz0G4BXxZ8S/JgMw4k+Jf131AyD+jPjXVj0A4s+If321AyD+jPj3UDkA4s+Ifx91AyD+jPj3UjUA4s+Ifz81AyD+jPj3VDEA4s+If1/bD4D4M+Lf29YDIP6M+Pe37QCIPyP+DlsOgPgz4u+x3QCIPyP+LlsNgPgz4u+zzQCIPyP+TlsMgPgz4u+1/ACIPyP+bs/+/efXl0cfARxj+Q8AuJwBgGIGAIoZAChmAKCYAYBiBgCKGQAoZgCgmAGAYgYAihkAKGYAoJgBgGIGAIoZAChmAKCYAYBiBgCKGQAoZgCgmAGAYgYAihkAKGYAoJgBgGIGAIoZAChmAKCYAYBiBgCKGQAoZgCgmAGAYgYAihkAKGYAoJgBgGIGAIoZAChmAKCYAYBiBgCKGQAoZgCgmAGAYgYAiv0Hs2PMhrt8KlMAAAAASUVORK5CYII=",Ui={name:"AboutCard",setup(){const s=q([]),e=q(!1),a=q(!1),r=q(""),i=q(!1),l=q(!1),u="964979747",h="https://qm.qq.com/q/T6qImKJjGi",d=Et(),b=()=>{try{const V={...ye.dependencies||{},...ye.devDependencies||{}},J=Object.entries(V).map(([ee,ce])=>({name:ee,version:ce.replace(/[\^~]/g,""),description:T(ee)}));s.value=J}catch(V){console.error("加载依赖信息失败:",V),s.value=[]}},T=V=>({vue:"渐进式 JavaScript 框架",vuetify:"材料设计组件框架",axios:"Promise 基础的 HTTP 客户端",pinia:"Vue 状态管理库","vue-router":"Vue.js 官方路由管理器","@vitejs/plugin-vue":"Vite 的 Vue 插件"})[V]||"",I=()=>{d.push("/debug")},te=async()=>{i.value=!0;try{const V=await en();r.value=V||""}catch(V){console.error("获取访客ID失败",V)}finally{i.value=!1}},re=()=>te(),X=async()=>{a.value=!0,r.value||await te()},ve=async()=>{try{await navigator.clipboard.writeText(de.value),l.value=!0,setTimeout(()=>l.value=!1,1800)}catch(V){console.error("复制失败",V)}},ue=ke(()=>{var me,se;const V=navigator||{},J=typeof Intl<"u"&&Intl.DateTimeFormat?Intl.DateTimeFormat().resolvedOptions():{},ee=J&&J.timeZone?J.timeZone:"",ce=((se=(me=d.currentRoute)==null?void 0:me.value)==null?void 0:se.fullPath)||location.pathname;return[`App 版本: v${ye==null?void 0:ye.version}`,`URL: ${location.href}`,`路由: ${ce}`,`UserAgent: ${V.userAgent||""}`,`语言: ${V.language||""}`,`时区: ${ee}`,`平台: ${V.platform||""}`,`在线: ${String(V.onLine)}`,`屏幕: ${(screen==null?void 0:screen.width)||"-"}x${(screen==null?void 0:screen.height)||"-"}`,`视口: ${window.innerWidth||"-"}x${window.innerHeight||"-"}`].join(` -`)}),de=ke(()=>`调试ID: ${r.value||"获取失败"} - -浏览器/环境信息: -${ue.value}`),oe=ke(()=>["问题描述:","1. 期望行为:","2. 实际行为:","3. 复现步骤:","",de.value].join(` -`)),be=ke(()=>{const V="https://github.com/ZeroCatDev/Classworks/issues/new",J=encodeURIComponent("问题报告"),ee=encodeURIComponent(oe.value);return`${V}?title=${J}&body=${ee}`}),D=ke(()=>{const V=encodeURIComponent("Classworks 问题报告"),J=encodeURIComponent(oe.value);return`mailto:sun@wuyuan.dev?subject=${V}&body=${J}`}),_=()=>{typeof window.openSentryFeedback=="function"?window.openSentryFeedback():console.warn("Sentry Feedback 功能不可用")},U=()=>{window.open("https://afdian.com/a/wydev","_blank")};return zt(()=>{b()}),{Dependencies:s,showDeps:e,showReportDialog:a,debugIdInput:r,visitorLoading:i,copyOk:l,qqGroupNumber:u,qqGroupLink:h,goToDebug:I,reloadVisitorId:re,openReportDialog:X,copyEnvInfo:ve,openFeedback:_,openDonationLink:U,envBoxText:de,envInfo:ue,reportBody:oe,githubIssueUrl:be,mailtoLink:D}}},ji={class:"mt-4"},Bi={class:"d-flex flex-column align-start"},Ni={class:"d-flex gap-2 flex-wrap mb-6"},Pi={class:"text-body-2",style:{"white-space":"pre-wrap",margin:"0"}},Mi={class:"d-flex gap-2 flex-wrap mb-4"},Ei={class:"d-flex gap-2 mb-4"},zi={class:"text-caption text-medium-emphasis"};function Li(s,e,a,r,i,l){return c(),p(C,{border:"",hover:"",rounded:"xl"},{default:n(()=>[t(we,null,{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-information",size:"large"})]),default:n(()=>[t(P,{class:"text-h6"},{default:n(()=>[...e[6]||(e[6]=[o("关于",-1)])]),_:1})]),_:1}),t(S,null,{default:n(()=>[t(Y,null,{default:n(()=>[t(B,{class:"mx-auto",cols:"12",md:"8"},{default:n(()=>[t(C,{border:"",class:"donation-card gradient-donation clickable mb-6",color:"pink-lighten-4",elevation:"8",hover:"",rounded:"xl",variant:"tonal",onClick:r.openDonationLink},{default:n(()=>[t(we,null,{default:n(()=>[...e[7]||(e[7]=[m("div",{class:"card-content"},[m("div",null,[m("div",{class:"text-h6 font-weight-bold"},"请支持我们 Classworks")])],-1)])]),_:1}),t(S,null,{default:n(()=>[e[9]||(e[9]=m("p",{class:"text-body-2 mb-3"}," 我是Classworks的开发者孙悟元,是一名高二的中国在校学生。Classworks 是一个完全开源免费的项目。如果可以,欢迎打赏。 ",-1)),m("div",ji,[t(f,{"append-icon":"mdi-heart","aria-label":"Support Classworks on Aifadian",class:"text-none",color:"pink",rounded:"xl",variant:"elevated",onClick:r.openDonationLink},{default:n(()=>[...e[8]||(e[8]=[o(" 爱发电 ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["onClick"]),m("div",Bi,[t(Ie,{class:"mb-4",size:"120"},{default:n(()=>[t(Xe,{alt:"Classworks",src:Ti})]),_:1}),e[40]||(e[40]=m("h2",{class:"text-h5 mb-2"},"Classworks",-1)),e[41]||(e[41]=m("p",{class:"text-body-1 mb-4"},"适用于班级大屏的作业板小工具",-1)),m("div",Ni,[t(f,{color:"red","prepend-icon":"mdi-bug",variant:"tonal",onClick:r.openReportDialog},{default:n(()=>[...e[10]||(e[10]=[o(" 报告问题 ",-1)])]),_:1},8,["onClick"]),t(f,{color:"primary",href:"https://qm.qq.com/q/qNBX4ZZVeg","prepend-icon":"mdi-qqchat",target:"_blank",variant:"tonal"},{default:n(()=>[...e[11]||(e[11]=[o(" QQ 群 ",-1)])]),_:1}),t(f,{href:"https://github.com/ClassworksDev/Classworks","prepend-icon":"mdi-github",target:"_blank",variant:"text"},{default:n(()=>[...e[12]||(e[12]=[o(" 前端 ",-1)])]),_:1}),t(f,{href:"https://github.com/ClassworksDev/ClassworksServer","prepend-icon":"mdi-github",target:"_blank",variant:"text"},{default:n(()=>[...e[13]||(e[13]=[o(" 后端 ",-1)])]),_:1})]),t(A,{class:"mb-4 w-100"}),e[42]||(e[42]=m("h3",{class:"text-h6 mb-2"},"备注与致谢",-1)),t(M,{class:"mb-4 bg-transparent"},{default:n(()=>[t(x,{"append-icon":"mdi-link",href:"https://github.com/EnderWolf006/HomeworkBoard",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[14]||(e[14]=[o(" 本项目受到 HomeworkBoard 的启发而开发 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[15]||(e[15]=[o(" 感谢 EnderWolf006 (@EnderWolf) fhzit(@Hellofhz) KeyFac 等人的贡献 ",-1)])]),_:1})]),_:1}),t(x,{"append-icon":"mdi-link",href:"https://hlyun.org",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[16]||(e[16]=[o(" Classworks 由",-1),m("strong",null,"厚浪云",-1),o("提供 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[17]||(e[17]=[o(" 长江后浪推前浪 浮事新人换旧人 ",-1)])]),_:1})]),_:1}),t(x,{"append-icon":"mdi-link",href:"https://zerocat.houlangs.com",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[18]||(e[18]=[o(" 感谢 ZeroCat 社区的开发者们 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[19]||(e[19]=[o(" 新一代,开源,编程社区 ",-1)])]),_:1})]),_:1}),t(A,{class:"ma-1"}),t(x,{"append-icon":"mdi-link",href:"https://github.com/HUSX100/IslandCaller",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[20]||(e[20]=[o(" 本项目与 IslandCaller 没有从属关系 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[21]||(e[21]=[o(" IslandCaller 是由 HUSX100 开发的基于 ClassIsland 提醒服务的轻量级点名器 ",-1)])]),_:1})]),_:1}),t(x,{"append-icon":"mdi-link",href:"https://classisland.tech",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[...e[22]||(e[22]=[o(" 本项目与 ClassIsland 没有从属关系 ",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[23]||(e[23]=[o(" ClassIsland 是由 HelloWRC 开发的适用于班级大屏的课表信息显示工具 ",-1)])]),_:1})]),_:1})]),_:1}),t(f,{class:"mb-4","prepend-icon":"mdi-package-variant",variant:"text",onClick:e[0]||(e[0]=u=>r.showDeps=!0)},{default:n(()=>[...e[24]||(e[24]=[o(" 查看使用的第三方库 ",-1)])]),_:1}),t($,{modelValue:r.showDeps,"onUpdate:modelValue":e[2]||(e[2]=u=>r.showDeps=u),fullscreen:"",transition:"dialog-bottom-transition"},{default:n(()=>[t(C,null,{default:n(()=>[t(He,null,{default:n(()=>[t(f,{icon:"mdi-close",onClick:e[1]||(e[1]=u=>r.showDeps=!1)}),t(Ge,null,{default:n(()=>[...e[25]||(e[25]=[o("使用的第三方库",-1)])]),_:1}),t(R)]),_:1}),t(S,null,{default:n(()=>[t(M,null,{default:n(()=>[(c(!0),k(F,null,W(r.Dependencies,u=>(c(),p(x,{key:u.name,href:"https://www.npmjs.com/package/"+u.name,"append-icon":"mdi-link",target:"_blank"},{default:n(()=>[t(j,null,{default:n(()=>[o(w(u.name),1)]),_:2},1024),t(Q,null,{default:n(()=>[o(" v"+w(u.version),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),t($,{modelValue:r.showReportDialog,"onUpdate:modelValue":e[5]||(e[5]=u=>r.showReportDialog=u),"max-width":"640"},{default:n(()=>[t(C,null,{default:n(()=>[t(He,{density:"compact"},{default:n(()=>[t(f,{icon:"mdi-close",onClick:e[3]||(e[3]=u=>r.showReportDialog=!1)}),t(Ge,null,{default:n(()=>[...e[26]||(e[26]=[o("报告问题",-1)])]),_:1}),t(R)]),_:1}),t(S,null,{default:n(()=>[e[37]||(e[37]=m("p",{class:"mb-4"}," 调试ID与下方的浏览器环境信息将帮助我们快速定位问题,请在反馈中一并附上。 ",-1)),t(Kt,{class:"mb-3 pa-3 bg-grey-lighten-4 rounded",style:{"max-height":"260px",overflow:"auto"}},{default:n(()=>[m("pre",Pi,w(r.envBoxText),1)]),_:1}),m("div",Mi,[t(f,{size:"small",variant:"text","prepend-icon":"mdi-refresh",onClick:r.reloadVisitorId,loading:r.visitorLoading},{default:n(()=>[...e[27]||(e[27]=[o("刷新",-1)])]),_:1},8,["onClick","loading"]),t(f,{size:"small",variant:"text","prepend-icon":"mdi-content-copy",onClick:r.copyEnvInfo},{default:n(()=>[...e[28]||(e[28]=[o("复制信息",-1)])]),_:1},8,["onClick"]),t(f,{size:"small",variant:"text","prepend-icon":"mdi-open-in-new",onClick:r.goToDebug},{default:n(()=>[...e[29]||(e[29]=[o("查看 /debug 页面",-1)])]),_:1},8,["onClick"])]),r.copyOk?(c(),p(L,{key:0,type:"success",density:"compact",class:"mb-4"},{default:n(()=>[...e[30]||(e[30]=[o("已复制到剪贴板",-1)])]),_:1})):v("",!0),m("div",Ei,[t(f,{size:"small",color:"primary",variant:"elevated","prepend-icon":"mdi-message-alert",onClick:r.openFeedback,block:""},{default:n(()=>[...e[31]||(e[31]=[o(" 发送错误反馈到 Sentry ",-1)])]),_:1},8,["onClick"])]),e[38]||(e[38]=m("h4",{class:"text-subtitle-1 mb-2"},"反馈渠道",-1)),t(M,{lines:"one",class:"bg-transparent"},{default:n(()=>[t(x,{href:r.qqGroupLink,target:"_blank","prepend-icon":"mdi-qqchat"},{default:n(()=>[t(j,null,{default:n(()=>[o("QQ群 ("+w(r.qqGroupNumber)+")",1)]),_:1}),t(Q,null,{default:n(()=>[...e[32]||(e[32]=[o("964979747",-1)])]),_:1})]),_:1},8,["href"]),t(x,{href:r.githubIssueUrl,target:"_blank","prepend-icon":"mdi-github"},{default:n(()=>[t(j,null,{default:n(()=>[...e[33]||(e[33]=[o("GitHub Issue",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[34]||(e[34]=[o("ZeroCatDev/Classworks",-1)])]),_:1})]),_:1},8,["href"]),t(x,{href:r.mailtoLink,target:"_blank","prepend-icon":"mdi-email"},{default:n(()=>[t(j,null,{default:n(()=>[...e[35]||(e[35]=[o("邮件",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[36]||(e[36]=[o("sun@wuyuan.dev",-1)])]),_:1})]),_:1},8,["href"])]),_:1})]),_:1}),t(G,null,{default:n(()=>[t(R),t(f,{variant:"text",onClick:e[4]||(e[4]=u=>r.showReportDialog=!1)},{default:n(()=>[...e[39]||(e[39]=[o("关闭",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),m("p",zi," Copyright © "+w(new Date().getFullYear())+" Sunwuyuan ",1)])]),_:1})]),_:1})]),_:1})]),_:1})}const At=E(Ui,[["render",Li],["__scopeId","data-v-101b91c8"]]),Ki={name:"Settings",components:{ServerSettingsCard:Dt,EditSettingsCard:gt,RefreshSettingsCard:vt,DisplaySettingsCard:wt,MessageLog:qe,SettingsCard:K,StudentListCard:xt,TeacherListCard:yt,AboutCard:At,DataProviderSettingsCard:_t,ThemeSettingsCard:pt,EchoChamberCard:rt,SettingsExplorer:ut,SettingsLinkGenerator:bt,RandomPickerCard:mt,HomeworkTemplateCard:dt,SubjectManagementCard:ct,KvDatabaseCard:Ct,HitokotoSettings:ft,NotificationSoundSettings:ht},setup(){const{mobile:s}=Zt();return{isMobile:s}},data(){return y("server.provider"),{settings:{server:{domain:y("server.domain"),classNumber:y("server.classNumber"),provider:y("server.provider")},refresh:{auto:y("refresh.auto"),interval:y("refresh.interval")},font:{size:y("font.size")},edit:{autoSave:y("edit.autoSave"),blockNonTodayAutoSave:y("edit.blockNonTodayAutoSave"),confirmNonTodaySave:y("edit.confirmNonTodaySave"),refreshBeforeEdit:y("edit.refreshBeforeEdit")},display:{emptySubjectDisplay:y("display.emptySubjectDisplay"),dynamicSort:y("display.dynamicSort"),showRandomButton:y("display.showRandomButton"),showFullscreenButton:y("display.showFullscreenButton")},developer:{enabled:y("developer.enabled"),showDebugConfig:y("developer.showDebugConfig")},message:{showSidebar:y("message.showSidebar"),maxActiveMessages:y("message.maxActiveMessages"),timeout:y("message.timeout"),saveHistory:y("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"},{title:"科目",icon:"mdi-book-edit",value:"subject"},{title:"花名册",icon:"mdi-account-group",value:"student"},{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-bell-ring",value:"notification"},{title:"一言",icon:"mdi-comment-quote",value:"hitokoto"},{title:"随机点名",icon:"mdi-dice-multiple",value:"randomPicker"},{title:"开发者",icon:"mdi-developer-board",value:"developer"},{title:"关于",icon:"mdi-information",value:"about"}],drawer:!1}},watch:{settings:{handler(s){this.handleSettingsChange(s)},deep:!0},isMobile:{handler(s){this.drawer=!s},immediate:!0},studentData:{handler(s){this.lastSavedData&&(this.hasUnsavedChanges=JSON.stringify(s.list)!==JSON.stringify(this.lastSavedData)),this.studentData.text=s.list.join(` -`)},deep:!0}},mounted(){this.loadAllSettings(),this.unwatchSettings=Me(()=>{this.loadAllSettings()}),this.drawer=!this.isMobile},beforeUnmount(){this.unwatchSettings&&this.unwatchSettings()},methods:{openClassworksKV(){window.open(y("server.authDomain"),"_blank")},loadAllSettings(){Object.keys(this.settings).forEach(s=>{Object.keys(this.settings[s]).forEach(e=>{this.settings[s][e]=y(`${s}.${e}`)})})},handleSettingsChange(s){this.settingsChangeTimeout&&clearTimeout(this.settingsChangeTimeout),this.settingsChangeTimeout=setTimeout(()=>{Object.entries(s).forEach(([e,a])=>{Object.entries(a).forEach(([r,i])=>{const l=`${e}.${r}`,u=y(l);i!==u&&(ne(l,i)?this.showMessage("设置已更新",`${l} 已保存`):(this.showError("保存失败",`${l} 设置失败`),this.settings[e][r]=u))})})},100)},showMessage(s,e="",a="success"){this.$message[a](s,e)},showError(s,e=""){this.$message.error(s,e)},saveEdit(){if(this.editingIndex!==-1){const s=this.editingName.trim();s&&s!==this.studentData.list[this.editingIndex]&&(this.studentData.list[this.editingIndex]=s),this.editingIndex=-1,this.editingName=""}},startEdit(s,e){this.editingIndex=s,this.editingName=e},confirmDelete(s){this.studentToDelete={index:s,name:this.studentData.list[s]},this.deleteDialog=!0},moveStudent(s,e){const a=e==="up"?s-1:s+1;a>=0&&a=0&&s0){const e=this.studentData.list[s];this.studentData.list.splice(s,1),this.studentData.list.unshift(e)}},addStudent(){const s=this.newStudent.trim();s&&!this.studentData.list.includes(s)&&(this.studentData.list.push(s),this.newStudent="")},removeStudent(s){s!==void 0&&(this.studentData.list.splice(s,1),this.deleteDialog=!1,this.studentToDelete=null)},resetFontSize(){et("font.size"),this.settings.font.size=y("font.size"),this.showMessage("字体已重置","字体大小已恢复默认值")},handleDeveloperChange(s){s||(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(s){const a=this.settings.font.size;s==="up"&&a<100?this.settings.font.size=a+2:s==="down"&&a>16&&(this.settings.font.size=a-2),this.handleSettingsChange(this.settings)},onSettingsSaved(){this.showMessage("设置已更新","您的设置已成功保存")},onSettingUpdate(s,e){this.showMessage("设置已更新",`${s} 已保存为 ${e}`)}}},Ri={class:"settings-page"},Oi={class:"mt-4"};function Fi(s,e,a,r,i,l){const u=At,h=Dt,d=_t,b=Ct,T=xt,I=yt,te=bt,re=vt,X=gt,ve=wt,ue=pt,de=ht,oe=ft,be=mt,D=ct,_=dt,U=K,V=Lt("developer-settings-card"),J=ut,ee=rt,ce=qe;return c(),k("div",Ri,[t(nn,{elevation:"1"},{prepend:n(()=>[t(f,{icon:"mdi-arrow-left",variant:"text",onClick:e[0]||(e[0]=O=>s.$router.push("/"))}),t(f,{icon:"mdi-menu",variant:"text",onClick:e[1]||(e[1]=O=>i.drawer=!i.drawer)})]),default:n(()=>[t(tn,{class:"text-h6"},{default:n(()=>[...e[5]||(e[5]=[o("设置",-1)])]),_:1})]),_:1}),t(Ee,{fluid:""},{default:n(()=>[t(It,{modelValue:i.drawer,"onUpdate:modelValue":e[2]||(e[2]=O=>i.drawer=O),permanent:!r.isMobile,temporary:r.isMobile},{default:n(()=>[t(M,null,{default:n(()=>[(c(!0),k(F,null,W(i.settingsTabs,O=>(c(),p(x,{key:O.value,active:i.settingsTab===O.value,color:i.settingsTab===O.value?"primary":"default","prepend-icon":O.icon,class:"rounded-e-xl",onClick:me=>i.settingsTab=O.value},{default:n(()=>[t(j,null,{default:n(()=>[o(w(O.title),1)]),_:2},1024)]),_:2},1032,["active","color","prepend-icon","onClick"]))),128))]),_:1})]),_:1},8,["modelValue","permanent","temporary"]),t(qt,{modelValue:i.settingsTab,"onUpdate:modelValue":e[4]||(e[4]=O=>i.settingsTab=O),direction:"vertical",style:{width:"100%"}},{default:n(()=>[t(Z,{value:"index"},{default:n(()=>[t(C,{border:"",class:"service-card gradient-right clickable mb-4",color:"primary",elevation:"8",hover:"",rounded:"xl",variant:"tonal",onClick:l.openClassworksKV},{default:n(()=>[t(we,null,{default:n(()=>[...e[6]||(e[6]=[m("div",{class:"card-title"},[m("div",null,[m("div",{class:"text-h6"},"在寻找 Classworks KV ?"),m("div",{class:"text-caption text-medium-emphasis"}," 文档形键值数据库 ")])],-1)])]),_:1}),t(S,null,{default:n(()=>[m("div",Oi,[t(f,{"append-icon":"mdi-arrow-right",class:"text-none",rounded:"xl",variant:"text",onClick:l.openClassworksKV},{default:n(()=>[...e[7]||(e[7]=[o(" 打开 Classworks KV ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["onClick"]),t(C,{border:"",class:"rounded-xl mb-4",subtitle:"设置",title:"Classworks"},{default:n(()=>[t(S,null,{default:n(()=>[t(L,{class:"rounded-xl",color:"error",icon:"mdi-alert-circle",variant:"tonal"},{default:n(()=>[...e[8]||(e[8]=[o("Classworks 是开源免费的软件,官方没有提供任何形式的付费支持服务,源代码仓库地址在 ",-1),m("a",{href:"https://github.com/ZeroCatDev/Classworks",target:"_blank"},"https://github.com/ZeroCatDev/Classworks",-1),o("。如果您通过有偿协助等付费方式取得本应用,在遇到问题时请在与卖家约定的服务框架下,优先向卖家求助。如果卖家没有提供您预期的服务,请退款或通过其它形式积极维护您的合法权益。 ",-1)])]),_:1}),t(L,{class:"mt-4 rounded-xl",color:"info",icon:"mdi-information",variant:"tonal"},{default:n(()=>[...e[9]||(e[9]=[o("请不要使用浏览器清除缓存功能,否则会导致配置丢失。 ",-1),m("del",null,"恶意的操作可能导致您受到贵校教师的处理 ",-1)])]),_:1}),t(L,{class:"mt-4 rounded-xl",color:"warning",icon:"mdi-information",variant:"tonal"},{default:n(()=>[e[11]||(e[11]=m("p",null," 请不要使用包括但不限于360极速浏览器、360安全浏览器、夸克浏览器、QQ浏览器等浏览器使用 Classworks ,这些浏览器过时且存在严重的一致性问题。在Windows上,使用新版 Microsoft Edge 浏览器是最推荐的选择。 ",-1)),e[12]||(e[12]=m("p",{style:{color:"#666"}}," 上述浏览器商标为其所属公司所有,Classworks™ 与上述浏览器所属公司无竞争关系。 ",-1)),e[13]||(e[13]=m("br",null,null,-1)),t(f,{"append-icon":"mdi-open-in-new",class:"text-none rounded-xl",color:"warning",href:"https://www.microsoft.com/zh-cn/windows/microsoft-edge",target:"_blank",variant:"tonal"},{default:n(()=>[...e[10]||(e[10]=[o("下载 Microsoft Edge(微软边缘浏览器) ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),t(u)]),_:1}),t(Z,{value:"server"},{default:n(()=>[t(h,{loading:i.loading.server,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"]),t(d,{border:"",class:"mt-4"}),t(b,{border:"",class:"mt-4"})]),_:1}),t(Z,{value:"student"},{default:n(()=>[t(T,{"is-mobile":r.isMobile,border:""},null,8,["is-mobile"]),t(I,{"is-mobile":r.isMobile,border:"",class:"mt-4"},null,8,["is-mobile"])]),_:1}),t(Z,{value:"share"},{default:n(()=>[t(te,{border:"",class:"mt-4"})]),_:1}),t(Z,{value:"refresh"},{default:n(()=>[t(re,{loading:i.loading.refresh,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(Z,{value:"edit"},{default:n(()=>[t(X,{loading:i.loading.edit,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(Z,{value:"display"},{default:n(()=>[t(ve,{loading:i.loading.display,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(Z,{value:"theme"},{default:n(()=>[t(ue,{loading:i.loading.theme,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(Z,{value:"notification"},{default:n(()=>[t(de,{border:""})]),_:1}),t(Z,{value:"hitokoto"},{default:n(()=>[t(oe,{border:""})]),_:1}),t(Z,{value:"randomPicker"},{default:n(()=>[t(be,{"is-mobile":r.isMobile,border:""},null,8,["is-mobile"])]),_:1}),t(Z,{value:"subject"},{default:n(()=>[t(D,{border:""}),e[14]||(e[14]=m("br",null,null,-1)),t(_,{border:""})]),_:1}),t(Z,{value:"developer"},{default:n(()=>[t(U,{border:"",icon:"mdi-developer-board",title:"开发者选项"},{default:n(()=>[t(M,null,{default:n(()=>[t(x,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-code-tags"})]),append:n(()=>[t(st,{modelValue:i.settings.developer.enabled,"onUpdate:modelValue":e[3]||(e[3]=O=>i.settings.developer.enabled=O),density:"comfortable","hide-details":"",onChange:l.handleDeveloperChange},null,8,["modelValue","onChange"])]),default:n(()=>[t(j,null,{default:n(()=>[...e[15]||(e[15]=[o("启用开发者选项",-1)])]),_:1}),t(Q,null,{default:n(()=>[...e[16]||(e[16]=[o("启用后可以查看和修改开发者设置 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),t(V,{loading:i.loading.developer,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"]),i.settings.developer.enabled?(c(),p(C,{key:0,border:"",class:"mt-4 rounded-lg"},{default:n(()=>[t(P,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cog-outline"}),e[17]||(e[17]=o(" 所有设置 ",-1))]),_:1}),t(Se,null,{default:n(()=>[...e[18]||(e[18]=[o(" 浏览和修改所有可用设置",-1)])]),_:1}),t(S,null,{default:n(()=>[t(J,{onUpdate:l.onSettingUpdate},null,8,["onUpdate"])]),_:1})]),_:1})):v("",!0),i.settings.developer.enabled?(c(),p(B,{key:1,cols:"12"})):v("",!0)]),_:1}),t(Z,{value:"about"},{default:n(()=>[t(u),t(ee,{border:"",class:"mt-4"})]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(ce,{ref:"messageLog"},null,512)])}const gl=E(Ki,[["render",Fi]]);export{gl as default}; diff --git a/assets/socket-debugger-BnRHovO7.js b/assets/socket-debugger-BuQPFPjR.js similarity index 53% rename from assets/socket-debugger-BnRHovO7.js rename to assets/socket-debugger-BuQPFPjR.js index a13ad40..fb937cd 100644 --- a/assets/socket-debugger-BnRHovO7.js +++ b/assets/socket-debugger-BuQPFPjR.js @@ -1,4 +1,4 @@ -import{c as Ce,g as I,d as se}from"./socketClient-Cb2FghxN.js";import{_ as Se,e as g,c as D,h as L,o as re,d as k,j as Z,k as _,s as y,t as x,i as ue,l as V}from"./index-_6IQhlPZ.js";import{V as q,a as m}from"./VRow-WkEz3xRr.js";import{V as Q}from"./VChip-Veb3ShEh.js";import{V as we}from"./VTextField-CuXGbmmC.js";import{V as Le}from"./VTextarea-CCCqy4pz.js";import{V as $e}from"./VSwitch-CdpUb5tZ.js";import{V as Re}from"./VAlert-D9G_9owC.js";import{V as De}from"./VContainer-Bg8RevuO.js";import{b as c,D as Ie,af as Te,X as C,Y as H,Z as t,j as n,a1 as o,S as u,k as p,$ as G,_ as z,F as de,a2 as ie,n as Ue,I as Be,e as ce}from"./vendor-vue-H0jQBZ7T.js";import"./vendor-socket-CyTcV1HU.js";import"./serverRotation-BGVL0kta.js";import"./vendor-vuetify-ChAgIwn2.js";import"./autofocus-BrMOVHY_.js";const ze={class:"d-flex flex-wrap gap-2"},Me={class:"text-h4"},Ne={class:"text-h4"},Pe={class:"text-h4"},Ee={class:"text-h4"},Oe={class:"log-time"},je={class:"log-type"},Ae={class:"log-message"},Fe={key:0,class:"log-data"},Je={key:0,class:"text-center text-disabled pa-8"},He={__name:"socket-debugger",setup(Ge){const fe=c(Ce()),$=c(!1),K=c(""),S=c(""),W=c(0),h=c(""),M=c(null),X=c("00:00:00"),Y=c(!0),d=c({eventsReceived:0,eventsSent:0,errors:0,reconnects:0,avgLatency:0,lastPing:0,bytesSent:0,bytesReceived:0}),R=c([]),N=c(new Set),P=c(null),b=c({name:"",data:"{}"}),v=c(null),ee=ce(()=>$.value?{text:"已连接",color:"success"}:{text:"未连接",color:"error"}),me=ce(()=>S.value==="websocket"?"success":S.value==="polling"?"warning":"grey");function s(l,e,a=null){const f=new Date().toLocaleTimeString("zh-CN",{hour12:!1});R.value.push({type:l,message:e,data:a,time:f}),R.value.length>500&&R.value.shift(),Y.value&&Be(()=>{P.value&&(P.value.scrollTop=P.value.scrollHeight)})}function pe(){R.value=[],s("info","日志已清空")}function te(l){if(l===0)return"0 B";const e=1024,a=["B","KB","MB","GB"],i=Math.floor(Math.log(l)/Math.log(e));return Math.round(l/Math.pow(e,i)*100)/100+" "+a[i]}let w=null;function ve(){if(M.value){const e=Date.now()-M.value,a=Math.floor(e/36e5),i=Math.floor(e%36e5/6e4),f=Math.floor(e%6e4/1e3);X.value=`${String(a).padStart(2,"0")}:${String(i).padStart(2,"0")}:${String(f).padStart(2,"0")}`}else X.value="00:00:00"}let T=null;function ne(){var U;const l=I();T&&le();const e=()=>{var r,B,ae;$.value=!0,K.value=l.id,S.value=((ae=(B=(r=l.io)==null?void 0:r.engine)==null?void 0:B.transport)==null?void 0:ae.name)||"unknown",M.value=Date.now(),h.value=new Date().toLocaleString("zh-CN"),s("success","已连接到服务器",{socketId:l.id,transport:S.value}),w||(w=setInterval(ve,1e3))},a=r=>{$.value=!1,K.value="",S.value="",M.value=null,s("warning","连接已断开",{reason:r}),w&&(clearInterval(w),w=null)},i=r=>{d.value.errors++,s("error","连接错误",{message:r.message,type:r.type})},f=r=>{d.value.reconnects++,W.value++,s("info",`重连成功 (尝试 #${r})`)},E=r=>{s("info",`正在尝试重连 #${r}...`)},O=r=>{d.value.errors++,s("error","重连失败",{message:r.message})},j=()=>{d.value.errors++,s("error","重连彻底失败")},A=()=>{s("debug","Ping 发送")},F=r=>{d.value.lastPing=r;const B=d.value.avgLatency;d.value.avgLatency=B===0?r:Math.round(B*.8+r*.2),s("debug",`Pong 接收 (${r}ms)`)},J=r=>{S.value=r.name,s("success",`传输已升级到 ${r.name}`)};T={socket:l,onConnect:e,onDisconnect:a,onConnectError:i,onReconnect:f,onReconnectAttempt:E,onReconnectError:O,onReconnectFailed:j,onPing:A,onPong:F,onUpgrade:J},l.on("connect",e),l.on("disconnect",a),l.on("connect_error",i),l.io.on("reconnect",f),l.io.on("reconnect_attempt",E),l.io.on("reconnect_error",O),l.io.on("reconnect_failed",j),l.io.on("ping",A),l.io.on("pong",F),(U=l.io)!=null&&U.engine&&l.io.engine.on("upgrade",J),N.value=new Set(Object.keys(l._callbacks||{}).map(r=>r.replace("$",""))),l.connected&&e()}function le(){var U;if(!T)return;const{socket:l,onConnect:e,onDisconnect:a,onConnectError:i,onReconnect:f,onReconnectAttempt:E,onReconnectError:O,onReconnectFailed:j,onPing:A,onPong:F,onUpgrade:J}=T;try{l.off("connect",e),l.off("disconnect",a),l.off("connect_error",i),l.io.off("reconnect",f),l.io.off("reconnect_attempt",E),l.io.off("reconnect_error",O),l.io.off("reconnect_failed",j),l.io.off("ping",A),l.io.off("pong",F),(U=l.io)!=null&&U.engine&&l.io.engine.off("upgrade",J)}catch{}T=null}function oe(){try{I().connect(),s("info","正在连接...")}catch(l){s("error","连接失败",{message:l.message})}}function ge(){try{se(),s("info","已手动断开连接")}catch(l){s("error","断开连接失败",{message:l.message})}}function _e(){try{se(),setTimeout(()=>{ne(),oe()},100)}catch(l){s("error","重连失败",{message:l.message})}}function ye(){try{const l=I();let e;try{e=JSON.parse(b.value.data)}catch{e=b.value.data}l.emit(b.value.name,e),d.value.eventsSent++,d.value.bytesSent+=JSON.stringify(e).length,s("info",`已发送事件: ${b.value.name}`,e)}catch(l){s("error","发送事件失败",{message:l.message})}}function ke(){v.value=null,s("info","开始连接测试...");const l=I(),e=setTimeout(()=>{v.value={type:"error",message:"连接测试超时 (20秒)"},s("error","连接测试超时")},2e4);l.connected?(clearTimeout(e),v.value={type:"success",message:`连接正常! Socket ID: ${l.id}, 传输: ${S.value}`},s("success","连接测试通过")):(l.once("connect",()=>{clearTimeout(e),v.value={type:"success",message:"连接测试成功!"},s("success","连接测试通过")}),l.once("connect_error",a=>{clearTimeout(e),v.value={type:"error",message:`连接失败: ${a.message}`},s("error","连接测试失败",{message:a.message})}))}function be(){const l=I(),e=Date.now();l.emit("ping",()=>{const a=Date.now()-e;v.value={type:"info",message:`测量延迟: ${a}ms`},s("info",`延迟测量结果: ${a}ms`)})}function xe(){s("warning","模拟错误场景..."),I().emit("nonexistent-event-test",{test:!0}),v.value={type:"info",message:"已发送测试事件到服务器,请检查服务器响应"}}function Ve(){const l=R.value.map(f=>`[${f.time}] [${f.type.toUpperCase()}] ${f.message}${f.data?` +import{c as Ce,g as I,d as se}from"./socketClient-CkosNYrb.js";import{_ as Se,e as g,c as D,f as L,r as re,d as k,l as Z,n as _,o as y,p as x,v as ue,i as V}from"./index-CFUCTEXJ.js";import{V as q,a as m}from"./VRow-Dw4j2TKL.js";import{V as Q}from"./VChip-DR8Ljy6R.js";import{V as we}from"./VTextField-ByBRYn99.js";import{V as Le}from"./VTextarea-BxmmuONa.js";import{V as $e}from"./VSwitch-DKh_Uq_M.js";import{V as Re}from"./VAlert-DO0N7oM6.js";import{V as De}from"./VContainer-RtoBp6rB.js";import{b as c,D as Ie,af as Te,X as C,Y as H,Z as t,j as n,a1 as o,S as u,k as p,$ as G,_ as z,F as ie,a2 as de,n as Ue,I as Be,e as ce}from"./vendor-vue-B2vxubPy.js";import"./vendor-socket-CyTcV1HU.js";import"./serverRotation-CdH9Xda8.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./autofocus-BAgnxQiD.js";import"./VLabel-CU-8PdVS.js";const ze={class:"d-flex flex-wrap gap-2"},Me={class:"text-h4"},Ne={class:"text-h4"},Pe={class:"text-h4"},Ee={class:"text-h4"},Oe={class:"log-time"},je={class:"log-type"},Ae={class:"log-message"},Fe={key:0,class:"log-data"},Je={key:0,class:"text-center text-disabled pa-8"},He={__name:"socket-debugger",setup(Ge){const fe=c(Ce()),$=c(!1),K=c(""),S=c(""),W=c(0),h=c(""),M=c(null),X=c("00:00:00"),Y=c(!0),i=c({eventsReceived:0,eventsSent:0,errors:0,reconnects:0,avgLatency:0,lastPing:0,bytesSent:0,bytesReceived:0}),R=c([]),N=c(new Set),P=c(null),b=c({name:"",data:"{}"}),v=c(null),ee=ce(()=>$.value?{text:"已连接",color:"success"}:{text:"未连接",color:"error"}),me=ce(()=>S.value==="websocket"?"success":S.value==="polling"?"warning":"grey");function s(l,e,a=null){const f=new Date().toLocaleTimeString("zh-CN",{hour12:!1});R.value.push({type:l,message:e,data:a,time:f}),R.value.length>500&&R.value.shift(),Y.value&&Be(()=>{P.value&&(P.value.scrollTop=P.value.scrollHeight)})}function pe(){R.value=[],s("info","日志已清空")}function te(l){if(l===0)return"0 B";const e=1024,a=["B","KB","MB","GB"],d=Math.floor(Math.log(l)/Math.log(e));return Math.round(l/Math.pow(e,d)*100)/100+" "+a[d]}let w=null;function ve(){if(M.value){const e=Date.now()-M.value,a=Math.floor(e/36e5),d=Math.floor(e%36e5/6e4),f=Math.floor(e%6e4/1e3);X.value=`${String(a).padStart(2,"0")}:${String(d).padStart(2,"0")}:${String(f).padStart(2,"0")}`}else X.value="00:00:00"}let T=null;function ne(){var U;const l=I();T&&le();const e=()=>{var r,B,ae;$.value=!0,K.value=l.id,S.value=((ae=(B=(r=l.io)==null?void 0:r.engine)==null?void 0:B.transport)==null?void 0:ae.name)||"unknown",M.value=Date.now(),h.value=new Date().toLocaleString("zh-CN"),s("success","已连接到服务器",{socketId:l.id,transport:S.value}),w||(w=setInterval(ve,1e3))},a=r=>{$.value=!1,K.value="",S.value="",M.value=null,s("warning","连接已断开",{reason:r}),w&&(clearInterval(w),w=null)},d=r=>{i.value.errors++,s("error","连接错误",{message:r.message,type:r.type})},f=r=>{i.value.reconnects++,W.value++,s("info",`重连成功 (尝试 #${r})`)},E=r=>{s("info",`正在尝试重连 #${r}...`)},O=r=>{i.value.errors++,s("error","重连失败",{message:r.message})},j=()=>{i.value.errors++,s("error","重连彻底失败")},A=()=>{s("debug","Ping 发送")},F=r=>{i.value.lastPing=r;const B=i.value.avgLatency;i.value.avgLatency=B===0?r:Math.round(B*.8+r*.2),s("debug",`Pong 接收 (${r}ms)`)},J=r=>{S.value=r.name,s("success",`传输已升级到 ${r.name}`)};T={socket:l,onConnect:e,onDisconnect:a,onConnectError:d,onReconnect:f,onReconnectAttempt:E,onReconnectError:O,onReconnectFailed:j,onPing:A,onPong:F,onUpgrade:J},l.on("connect",e),l.on("disconnect",a),l.on("connect_error",d),l.io.on("reconnect",f),l.io.on("reconnect_attempt",E),l.io.on("reconnect_error",O),l.io.on("reconnect_failed",j),l.io.on("ping",A),l.io.on("pong",F),(U=l.io)!=null&&U.engine&&l.io.engine.on("upgrade",J),N.value=new Set(Object.keys(l._callbacks||{}).map(r=>r.replace("$",""))),l.connected&&e()}function le(){var U;if(!T)return;const{socket:l,onConnect:e,onDisconnect:a,onConnectError:d,onReconnect:f,onReconnectAttempt:E,onReconnectError:O,onReconnectFailed:j,onPing:A,onPong:F,onUpgrade:J}=T;try{l.off("connect",e),l.off("disconnect",a),l.off("connect_error",d),l.io.off("reconnect",f),l.io.off("reconnect_attempt",E),l.io.off("reconnect_error",O),l.io.off("reconnect_failed",j),l.io.off("ping",A),l.io.off("pong",F),(U=l.io)!=null&&U.engine&&l.io.engine.off("upgrade",J)}catch{}T=null}function oe(){try{I().connect(),s("info","正在连接...")}catch(l){s("error","连接失败",{message:l.message})}}function ge(){try{se(),s("info","已手动断开连接")}catch(l){s("error","断开连接失败",{message:l.message})}}function _e(){try{se(),setTimeout(()=>{ne(),oe()},100)}catch(l){s("error","重连失败",{message:l.message})}}function ye(){try{const l=I();let e;try{e=JSON.parse(b.value.data)}catch{e=b.value.data}l.emit(b.value.name,e),i.value.eventsSent++,i.value.bytesSent+=JSON.stringify(e).length,s("info",`已发送事件: ${b.value.name}`,e)}catch(l){s("error","发送事件失败",{message:l.message})}}function ke(){v.value=null,s("info","开始连接测试...");const l=I(),e=setTimeout(()=>{v.value={type:"error",message:"连接测试超时 (20秒)"},s("error","连接测试超时")},2e4);l.connected?(clearTimeout(e),v.value={type:"success",message:`连接正常! Socket ID: ${l.id}, 传输: ${S.value}`},s("success","连接测试通过")):(l.once("connect",()=>{clearTimeout(e),v.value={type:"success",message:"连接测试成功!"},s("success","连接测试通过")}),l.once("connect_error",a=>{clearTimeout(e),v.value={type:"error",message:`连接失败: ${a.message}`},s("error","连接测试失败",{message:a.message})}))}function be(){const l=I(),e=Date.now();l.emit("ping",()=>{const a=Date.now()-e;v.value={type:"info",message:`测量延迟: ${a}ms`},s("info",`延迟测量结果: ${a}ms`)})}function xe(){s("warning","模拟错误场景..."),I().emit("nonexistent-event-test",{test:!0}),v.value={type:"info",message:"已发送测试事件到服务器,请检查服务器响应"}}function Ve(){const l=R.value.map(f=>`[${f.time}] [${f.type.toUpperCase()}] ${f.message}${f.data?` `+JSON.stringify(f.data,null,2):""}`).join(` -`),e=new Blob([l],{type:"text/plain"}),a=URL.createObjectURL(e),i=document.createElement("a");i.href=a,i.download=`socket-logs-${Date.now()}.txt`,i.click(),URL.revokeObjectURL(a),s("success","日志已导出")}return Ie(()=>{ne(),s("info","Socket 调试器已初始化")}),Te(()=>{le(),w&&(clearInterval(w),w=null)}),(l,e)=>(C(),H(De,{fluid:""},{default:t(()=>[n(q,null,{default:t(()=>[n(m,{cols:"12"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,{class:"d-flex align-center"},{default:t(()=>[n(L,{class:"mr-2",color:"primary"},{default:t(()=>[...e[4]||(e[4]=[o("mdi-network",-1)])]),_:1}),e[5]||(e[5]=o(" Socket.IO 连接调试器 ",-1)),n(re),n(Q,{color:ee.value.color,size:"small"},{default:t(()=>[o(u(ee.value.text),1)]),_:1},8,["color"])]),_:1})]),_:1})]),_:1}),n(m,{cols:"12",md:"6"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[...e[6]||(e[6]=[o("连接信息",-1)])]),_:1}),n(k,null,{default:t(()=>[n(Z,{density:"compact"},{default:t(()=>[n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[7]||(e[7]=[o("mdi-server",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[8]||(e[8]=[o("服务器地址",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(fe.value),1)]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[9]||(e[9]=[o("mdi-identifier",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[10]||(e[10]=[o("Socket ID",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(K.value||"未连接"),1)]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[11]||(e[11]=[o("mdi-transit-connection-variant",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[12]||(e[12]=[o("传输方式",-1)])]),_:1}),n(x,null,{default:t(()=>[n(Q,{size:"x-small",color:me.value},{default:t(()=>[o(u(S.value||"未知"),1)]),_:1},8,["color"])]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[13]||(e[13]=[o("mdi-clock-outline",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[14]||(e[14]=[o("连接时长",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(X.value),1)]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[15]||(e[15]=[o("mdi-refresh",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[16]||(e[16]=[o("重连次数",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(W.value),1)]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[17]||(e[17]=[o("mdi-calendar-clock",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[18]||(e[18]=[o("上次连接",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(h.value||"从未连接"),1)]),_:1})]),_:1})]),_:1}),n(ue,{class:"my-4"}),p("div",ze,[n(V,{color:"primary","prepend-icon":"mdi-connection",disabled:$.value,onClick:oe},{default:t(()=>[...e[19]||(e[19]=[o(" 连接 ",-1)])]),_:1},8,["disabled"]),n(V,{color:"error","prepend-icon":"mdi-connection",disabled:!$.value,onClick:ge},{default:t(()=>[...e[20]||(e[20]=[o(" 断开 ",-1)])]),_:1},8,["disabled"]),n(V,{color:"warning","prepend-icon":"mdi-refresh",onClick:_e},{default:t(()=>[...e[21]||(e[21]=[o(" 重连 ",-1)])]),_:1}),n(V,{color:"info","prepend-icon":"mdi-delete-sweep",onClick:pe},{default:t(()=>[...e[22]||(e[22]=[o(" 清空日志 ",-1)])]),_:1})])]),_:1})]),_:1})]),_:1}),n(m,{cols:"12",md:"6"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[...e[23]||(e[23]=[o("统计信息",-1)])]),_:1}),n(k,null,{default:t(()=>[n(q,null,{default:t(()=>[n(m,{cols:"6"},{default:t(()=>[n(g,{variant:"tonal",color:"success"},{default:t(()=>[n(k,{class:"text-center"},{default:t(()=>[p("div",Me,u(d.value.eventsReceived),1),e[24]||(e[24]=p("div",{class:"text-caption"},"接收事件",-1))]),_:1})]),_:1})]),_:1}),n(m,{cols:"6"},{default:t(()=>[n(g,{variant:"tonal",color:"primary"},{default:t(()=>[n(k,{class:"text-center"},{default:t(()=>[p("div",Ne,u(d.value.eventsSent),1),e[25]||(e[25]=p("div",{class:"text-caption"},"发送事件",-1))]),_:1})]),_:1})]),_:1}),n(m,{cols:"6"},{default:t(()=>[n(g,{variant:"tonal",color:"warning"},{default:t(()=>[n(k,{class:"text-center"},{default:t(()=>[p("div",Pe,u(d.value.errors),1),e[26]||(e[26]=p("div",{class:"text-caption"},"错误次数",-1))]),_:1})]),_:1})]),_:1}),n(m,{cols:"6"},{default:t(()=>[n(g,{variant:"tonal",color:"info"},{default:t(()=>[n(k,{class:"text-center"},{default:t(()=>[p("div",Ee,u(d.value.reconnects),1),e[27]||(e[27]=p("div",{class:"text-caption"},"重连次数",-1))]),_:1})]),_:1})]),_:1})]),_:1}),n(ue,{class:"my-4"}),n(Z,{density:"compact"},{default:t(()=>[n(_,null,{default:t(()=>[n(y,null,{default:t(()=>[...e[28]||(e[28]=[o("平均延迟",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(d.value.avgLatency)+" ms",1)]),_:1})]),_:1}),n(_,null,{default:t(()=>[n(y,null,{default:t(()=>[...e[29]||(e[29]=[o("上次 Ping",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(d.value.lastPing)+" ms",1)]),_:1})]),_:1}),n(_,null,{default:t(()=>[n(y,null,{default:t(()=>[...e[30]||(e[30]=[o("数据传输",-1)])]),_:1}),n(x,null,{default:t(()=>[o(" ↑ "+u(te(d.value.bytesSent))+" / ↓ "+u(te(d.value.bytesReceived)),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),n(m,{cols:"12",md:"6"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[e[31]||(e[31]=o(" 事件监控 ",-1)),n(Q,{class:"ml-2",size:"small"},{default:t(()=>[o(u(N.value.size)+" 个监听器",1)]),_:1})]),_:1}),n(k,null,{default:t(()=>[n(Z,{density:"compact","max-height":"300",style:{"overflow-y":"auto"}},{default:t(()=>[N.value.size===0?(C(),H(_,{key:0},{default:t(()=>[n(y,{class:"text-center text-disabled"},{default:t(()=>[...e[32]||(e[32]=[o(" 暂无活动监听器 ",-1)])]),_:1})]),_:1})):G("",!0),(C(!0),z(de,null,ie(Array.from(N.value),a=>(C(),H(_,{key:a},{prepend:t(()=>[n(L,{size:"small"},{default:t(()=>[...e[33]||(e[33]=[o("mdi-eye",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[o(u(a),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1}),n(m,{cols:"12",md:"6"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[...e[34]||(e[34]=[o("发送自定义事件",-1)])]),_:1}),n(k,null,{default:t(()=>[n(we,{modelValue:b.value.name,"onUpdate:modelValue":e[0]||(e[0]=a=>b.value.name=a),label:"事件名称","prepend-icon":"mdi-tag",density:"compact",class:"mb-2"},null,8,["modelValue"]),n(Le,{modelValue:b.value.data,"onUpdate:modelValue":e[1]||(e[1]=a=>b.value.data=a),label:"数据 (JSON)","prepend-icon":"mdi-code-json",rows:"4",density:"compact",class:"mb-2"},null,8,["modelValue"]),n(V,{block:"",color:"primary","prepend-icon":"mdi-send",disabled:!$.value||!b.value.name,onClick:ye},{default:t(()=>[...e[35]||(e[35]=[o(" 发送事件 ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1}),n(m,{cols:"12"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,{class:"d-flex align-center"},{default:t(()=>[e[37]||(e[37]=o(" 连接日志 ",-1)),n(re),n($e,{modelValue:Y.value,"onUpdate:modelValue":e[2]||(e[2]=a=>Y.value=a),label:"自动滚动",density:"compact","hide-details":"",class:"mr-4"},null,8,["modelValue"]),n(V,{size:"small",variant:"text","prepend-icon":"mdi-download",onClick:Ve},{default:t(()=>[...e[36]||(e[36]=[o(" 导出 ",-1)])]),_:1})]),_:1}),n(k,null,{default:t(()=>[p("div",{ref_key:"logContainer",ref:P,class:"log-container",style:{height:"400px","overflow-y":"auto",background:"#1e1e1e","border-radius":"4px",padding:"12px"}},[(C(!0),z(de,null,ie(R.value,(a,i)=>(C(),z("div",{key:i,class:Ue(["log-entry",`log-${a.type}`])},[p("span",Oe,"["+u(a.time)+"]",1),p("span",je,"["+u(a.type.toUpperCase())+"]",1),p("span",Ae,u(a.message),1),a.data?(C(),z("pre",Fe,u(a.data),1)):G("",!0)],2))),128)),R.value.length===0?(C(),z("div",Je," 暂无日志 ")):G("",!0)],512)]),_:1})]),_:1})]),_:1}),n(m,{cols:"12"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[...e[38]||(e[38]=[o("连接诊断",-1)])]),_:1}),n(k,null,{default:t(()=>[n(q,null,{default:t(()=>[n(m,{cols:"12",md:"4"},{default:t(()=>[n(V,{block:"",color:"info","prepend-icon":"mdi-test-tube",onClick:ke},{default:t(()=>[...e[39]||(e[39]=[o(" 测试连接 ",-1)])]),_:1})]),_:1}),n(m,{cols:"12",md:"4"},{default:t(()=>[n(V,{block:"",color:"success","prepend-icon":"mdi-timer",disabled:!$.value,onClick:be},{default:t(()=>[...e[40]||(e[40]=[o(" 测量延迟 ",-1)])]),_:1},8,["disabled"])]),_:1}),n(m,{cols:"12",md:"4"},{default:t(()=>[n(V,{block:"",color:"warning","prepend-icon":"mdi-alert",onClick:xe},{default:t(()=>[...e[41]||(e[41]=[o(" 模拟错误 ",-1)])]),_:1})]),_:1})]),_:1}),v.value?(C(),H(Re,{key:0,type:v.value.type,class:"mt-4",closable:"","onClick:close":e[3]||(e[3]=a=>v.value=null)},{default:t(()=>[o(u(v.value.message),1)]),_:1},8,["type"])):G("",!0)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}))}},st=Se(He,[["__scopeId","data-v-59f4b407"]]);export{st as default}; +`),e=new Blob([l],{type:"text/plain"}),a=URL.createObjectURL(e),d=document.createElement("a");d.href=a,d.download=`socket-logs-${Date.now()}.txt`,d.click(),URL.revokeObjectURL(a),s("success","日志已导出")}return Ie(()=>{ne(),s("info","Socket 调试器已初始化")}),Te(()=>{le(),w&&(clearInterval(w),w=null)}),(l,e)=>(C(),H(De,{fluid:""},{default:t(()=>[n(q,null,{default:t(()=>[n(m,{cols:"12"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,{class:"d-flex align-center"},{default:t(()=>[n(L,{class:"mr-2",color:"primary"},{default:t(()=>[...e[4]||(e[4]=[o("mdi-network",-1)])]),_:1}),e[5]||(e[5]=o(" Socket.IO 连接调试器 ",-1)),n(re),n(Q,{color:ee.value.color,size:"small"},{default:t(()=>[o(u(ee.value.text),1)]),_:1},8,["color"])]),_:1})]),_:1})]),_:1}),n(m,{cols:"12",md:"6"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[...e[6]||(e[6]=[o("连接信息",-1)])]),_:1}),n(k,null,{default:t(()=>[n(Z,{density:"compact"},{default:t(()=>[n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[7]||(e[7]=[o("mdi-server",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[8]||(e[8]=[o("服务器地址",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(fe.value),1)]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[9]||(e[9]=[o("mdi-identifier",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[10]||(e[10]=[o("Socket ID",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(K.value||"未连接"),1)]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[11]||(e[11]=[o("mdi-transit-connection-variant",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[12]||(e[12]=[o("传输方式",-1)])]),_:1}),n(x,null,{default:t(()=>[n(Q,{size:"x-small",color:me.value},{default:t(()=>[o(u(S.value||"未知"),1)]),_:1},8,["color"])]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[13]||(e[13]=[o("mdi-clock-outline",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[14]||(e[14]=[o("连接时长",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(X.value),1)]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[15]||(e[15]=[o("mdi-refresh",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[16]||(e[16]=[o("重连次数",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(W.value),1)]),_:1})]),_:1}),n(_,null,{prepend:t(()=>[n(L,null,{default:t(()=>[...e[17]||(e[17]=[o("mdi-calendar-clock",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[...e[18]||(e[18]=[o("上次连接",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(h.value||"从未连接"),1)]),_:1})]),_:1})]),_:1}),n(ue,{class:"my-4"}),p("div",ze,[n(V,{color:"primary","prepend-icon":"mdi-connection",disabled:$.value,onClick:oe},{default:t(()=>[...e[19]||(e[19]=[o(" 连接 ",-1)])]),_:1},8,["disabled"]),n(V,{color:"error","prepend-icon":"mdi-connection",disabled:!$.value,onClick:ge},{default:t(()=>[...e[20]||(e[20]=[o(" 断开 ",-1)])]),_:1},8,["disabled"]),n(V,{color:"warning","prepend-icon":"mdi-refresh",onClick:_e},{default:t(()=>[...e[21]||(e[21]=[o(" 重连 ",-1)])]),_:1}),n(V,{color:"info","prepend-icon":"mdi-delete-sweep",onClick:pe},{default:t(()=>[...e[22]||(e[22]=[o(" 清空日志 ",-1)])]),_:1})])]),_:1})]),_:1})]),_:1}),n(m,{cols:"12",md:"6"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[...e[23]||(e[23]=[o("统计信息",-1)])]),_:1}),n(k,null,{default:t(()=>[n(q,null,{default:t(()=>[n(m,{cols:"6"},{default:t(()=>[n(g,{variant:"tonal",color:"success"},{default:t(()=>[n(k,{class:"text-center"},{default:t(()=>[p("div",Me,u(i.value.eventsReceived),1),e[24]||(e[24]=p("div",{class:"text-caption"},"接收事件",-1))]),_:1})]),_:1})]),_:1}),n(m,{cols:"6"},{default:t(()=>[n(g,{variant:"tonal",color:"primary"},{default:t(()=>[n(k,{class:"text-center"},{default:t(()=>[p("div",Ne,u(i.value.eventsSent),1),e[25]||(e[25]=p("div",{class:"text-caption"},"发送事件",-1))]),_:1})]),_:1})]),_:1}),n(m,{cols:"6"},{default:t(()=>[n(g,{variant:"tonal",color:"warning"},{default:t(()=>[n(k,{class:"text-center"},{default:t(()=>[p("div",Pe,u(i.value.errors),1),e[26]||(e[26]=p("div",{class:"text-caption"},"错误次数",-1))]),_:1})]),_:1})]),_:1}),n(m,{cols:"6"},{default:t(()=>[n(g,{variant:"tonal",color:"info"},{default:t(()=>[n(k,{class:"text-center"},{default:t(()=>[p("div",Ee,u(i.value.reconnects),1),e[27]||(e[27]=p("div",{class:"text-caption"},"重连次数",-1))]),_:1})]),_:1})]),_:1})]),_:1}),n(ue,{class:"my-4"}),n(Z,{density:"compact"},{default:t(()=>[n(_,null,{default:t(()=>[n(y,null,{default:t(()=>[...e[28]||(e[28]=[o("平均延迟",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(i.value.avgLatency)+" ms",1)]),_:1})]),_:1}),n(_,null,{default:t(()=>[n(y,null,{default:t(()=>[...e[29]||(e[29]=[o("上次 Ping",-1)])]),_:1}),n(x,null,{default:t(()=>[o(u(i.value.lastPing)+" ms",1)]),_:1})]),_:1}),n(_,null,{default:t(()=>[n(y,null,{default:t(()=>[...e[30]||(e[30]=[o("数据传输",-1)])]),_:1}),n(x,null,{default:t(()=>[o(" ↑ "+u(te(i.value.bytesSent))+" / ↓ "+u(te(i.value.bytesReceived)),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),n(m,{cols:"12",md:"6"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[e[31]||(e[31]=o(" 事件监控 ",-1)),n(Q,{class:"ml-2",size:"small"},{default:t(()=>[o(u(N.value.size)+" 个监听器",1)]),_:1})]),_:1}),n(k,null,{default:t(()=>[n(Z,{density:"compact","max-height":"300",style:{"overflow-y":"auto"}},{default:t(()=>[N.value.size===0?(C(),H(_,{key:0},{default:t(()=>[n(y,{class:"text-center text-disabled"},{default:t(()=>[...e[32]||(e[32]=[o(" 暂无活动监听器 ",-1)])]),_:1})]),_:1})):G("",!0),(C(!0),z(ie,null,de(Array.from(N.value),a=>(C(),H(_,{key:a},{prepend:t(()=>[n(L,{size:"small"},{default:t(()=>[...e[33]||(e[33]=[o("mdi-eye",-1)])]),_:1})]),default:t(()=>[n(y,null,{default:t(()=>[o(u(a),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1})]),_:1}),n(m,{cols:"12",md:"6"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[...e[34]||(e[34]=[o("发送自定义事件",-1)])]),_:1}),n(k,null,{default:t(()=>[n(we,{modelValue:b.value.name,"onUpdate:modelValue":e[0]||(e[0]=a=>b.value.name=a),label:"事件名称","prepend-icon":"mdi-tag",density:"compact",class:"mb-2"},null,8,["modelValue"]),n(Le,{modelValue:b.value.data,"onUpdate:modelValue":e[1]||(e[1]=a=>b.value.data=a),label:"数据 (JSON)","prepend-icon":"mdi-code-json",rows:"4",density:"compact",class:"mb-2"},null,8,["modelValue"]),n(V,{block:"",color:"primary","prepend-icon":"mdi-send",disabled:!$.value||!b.value.name,onClick:ye},{default:t(()=>[...e[35]||(e[35]=[o(" 发送事件 ",-1)])]),_:1},8,["disabled"])]),_:1})]),_:1})]),_:1}),n(m,{cols:"12"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,{class:"d-flex align-center"},{default:t(()=>[e[37]||(e[37]=o(" 连接日志 ",-1)),n(re),n($e,{modelValue:Y.value,"onUpdate:modelValue":e[2]||(e[2]=a=>Y.value=a),label:"自动滚动",density:"compact","hide-details":"",class:"mr-4"},null,8,["modelValue"]),n(V,{size:"small",variant:"text","prepend-icon":"mdi-download",onClick:Ve},{default:t(()=>[...e[36]||(e[36]=[o(" 导出 ",-1)])]),_:1})]),_:1}),n(k,null,{default:t(()=>[p("div",{ref_key:"logContainer",ref:P,class:"log-container",style:{height:"400px","overflow-y":"auto",background:"#1e1e1e","border-radius":"4px",padding:"12px"}},[(C(!0),z(ie,null,de(R.value,(a,d)=>(C(),z("div",{key:d,class:Ue(["log-entry",`log-${a.type}`])},[p("span",Oe,"["+u(a.time)+"]",1),p("span",je,"["+u(a.type.toUpperCase())+"]",1),p("span",Ae,u(a.message),1),a.data?(C(),z("pre",Fe,u(a.data),1)):G("",!0)],2))),128)),R.value.length===0?(C(),z("div",Je," 暂无日志 ")):G("",!0)],512)]),_:1})]),_:1})]),_:1}),n(m,{cols:"12"},{default:t(()=>[n(g,{border:""},{default:t(()=>[n(D,null,{default:t(()=>[...e[38]||(e[38]=[o("连接诊断",-1)])]),_:1}),n(k,null,{default:t(()=>[n(q,null,{default:t(()=>[n(m,{cols:"12",md:"4"},{default:t(()=>[n(V,{block:"",color:"info","prepend-icon":"mdi-test-tube",onClick:ke},{default:t(()=>[...e[39]||(e[39]=[o(" 测试连接 ",-1)])]),_:1})]),_:1}),n(m,{cols:"12",md:"4"},{default:t(()=>[n(V,{block:"",color:"success","prepend-icon":"mdi-timer",disabled:!$.value,onClick:be},{default:t(()=>[...e[40]||(e[40]=[o(" 测量延迟 ",-1)])]),_:1},8,["disabled"])]),_:1}),n(m,{cols:"12",md:"4"},{default:t(()=>[n(V,{block:"",color:"warning","prepend-icon":"mdi-alert",onClick:xe},{default:t(()=>[...e[41]||(e[41]=[o(" 模拟错误 ",-1)])]),_:1})]),_:1})]),_:1}),v.value?(C(),H(Re,{key:0,type:v.value.type,class:"mt-4",closable:"","onClick:close":e[3]||(e[3]=a=>v.value=null)},{default:t(()=>[o(u(v.value.message),1)]),_:1},8,["type"])):G("",!0)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}))}},rt=Se(He,[["__scopeId","data-v-59f4b407"]]);export{rt as default}; diff --git a/assets/socketClient-Cb2FghxN.js b/assets/socketClient-CkosNYrb.js similarity index 88% rename from assets/socketClient-Cb2FghxN.js rename to assets/socketClient-CkosNYrb.js index 9a1bffb..4026dc2 100644 --- a/assets/socketClient-Cb2FghxN.js +++ b/assets/socketClient-CkosNYrb.js @@ -1 +1 @@ -import{l as f}from"./vendor-socket-CyTcV1HU.js";import{g as l}from"./index-_6IQhlPZ.js";import{i as a,g as u}from"./serverRotation-BGVL0kta.js";let e=null,c=null;const r=new Set;function m(){var o,s;if(a())return u();const n=l("server.domain"),t=(s=(o=import.meta)==null?void 0:o.env)==null?void 0:s.VITE_SERVER_URL;return n||t||window.location.origin}function i(){const n=m();if(!e||c!==n){if(e){try{e.disconnect()}catch{}e=null}c=n,e=f(n,{transports:["polling","websocket"]}),r.forEach(({event:t,handler:o})=>{e.on(t,o)})}return e}function k(n,t){return i().on(n,t),r.add({event:n,handler:t}),()=>g(n,t)}function g(n,t){if(e){e.off(n,t);for(const o of Array.from(r))o.event===n&&o.handler===t&&r.delete(o)}}function E(n){const t=i();n&&t.emit("join-token",{token:n})}function S(n){e&&e.emit("leave-token",{token:n})}function U(){e&&e.emit("leave-all")}function w(n){const t=i();return t.on("connect",n),()=>t.off("connect",n)}function R(n,t=null){i().emit("send-event",{type:n,content:t})}function b(){if(e){try{e.disconnect()}catch{}e=null,c=null,r.clear()}}export{k as a,S as b,m as c,b as d,i as g,E as j,U as l,w as o,R as s}; +import{l as f}from"./vendor-socket-CyTcV1HU.js";import{g as l}from"./index-CFUCTEXJ.js";import{i as a,g as u}from"./serverRotation-CdH9Xda8.js";let e=null,c=null;const r=new Set;function m(){var o,s;if(a())return u();const n=l("server.domain"),t=(s=(o=import.meta)==null?void 0:o.env)==null?void 0:s.VITE_SERVER_URL;return n||t||window.location.origin}function i(){const n=m();if(!e||c!==n){if(e){try{e.disconnect()}catch{}e=null}c=n,e=f(n,{transports:["polling","websocket"]}),r.forEach(({event:t,handler:o})=>{e.on(t,o)})}return e}function k(n,t){return i().on(n,t),r.add({event:n,handler:t}),()=>g(n,t)}function g(n,t){if(e){e.off(n,t);for(const o of Array.from(r))o.event===n&&o.handler===t&&r.delete(o)}}function E(n){const t=i();n&&t.emit("join-token",{token:n})}function S(n){e&&e.emit("leave-token",{token:n})}function U(){e&&e.emit("leave-all")}function w(n){const t=i();return t.on("connect",n),()=>t.off("connect",n)}function R(n,t=null){i().emit("send-event",{type:n,content:t})}function b(){if(e){try{e.disconnect()}catch{}e=null,c=null,r.clear()}}export{k as a,S as b,m as c,b as d,i as g,E as j,U as l,w as o,R as s}; diff --git a/assets/soundList-BZnE47k0.js b/assets/soundList-D9U-Grcp.js similarity index 62% rename from assets/soundList-BZnE47k0.js rename to assets/soundList-D9U-Grcp.js index 18f8f8a..32b1728 100644 --- a/assets/soundList-BZnE47k0.js +++ b/assets/soundList-D9U-Grcp.js @@ -1 +1 @@ -const o=["Teams Ping.mp3","Teams Remix.mp3","Teams bounce.mp3","Teams incoming-ringtone-level30.mp3","Teams incoming-ringtone-level40.mp3","Teams meetup_ring.mp3","Teams screenshare_ring.mp3","Teams teams_meet_up_reminder.mp3","Teams teams_notification.mp3","Teams 优先处理.mp3","Teams 共鸣.mp3","Teams 召唤.mp3","Teams 叮铃.mp3","Teams 增强.mp3","Teams 尤里卡.mp3","Teams 弹拨.mp3","Teams 提醒.mp3","Teams 摇摆.mp3","Teams 时空.mp3","Teams 气泡(大声).mp3","Teams 气泡.mp3","Teams 波普.mp3","Teams 波纹.mp3","Teams 滴水.mp3","Teams 点击.mp3","Teams 蜂鸣声.mp3","Teams 警报.mp3","Teams 赋予希望.mp3","Teams 轻弹.mp3","Teams 进阶.mp3","Teams 重复振铃.mp3","Teams 颤振.mp3","Teams 高分.mp3","Teams 默认.mp3","Teams 默认通话铃.mp3"];function T(m){return m?`/sounds/${m}`:null}function r(m,p=!1){const s=T(m);if(!s)return console.warn("音频文件不存在:",m),null;try{const e=new Audio(s);e.loop=p;const a=e.play();return a!==void 0&&a.catch(n=>{console.warn("播放音频失败:",n.name,n.message)}),e}catch(e){return console.error("创建音频对象失败:",e),null}}function t(m){m&&(m.pause(),m.currentTime=0)}export{o as a,r as p,t as s}; +const o=["Teams Ping.mp3","Teams Remix.mp3","Teams bounce.mp3","Teams incoming-ringtone-level30.mp3","Teams incoming-ringtone-level40.mp3","Teams meetup_ring.mp3","Teams screenshare_ring.mp3","Teams teams_meet_up_reminder.mp3","Teams teams_notification.mp3","Teams 优先处理.mp3","Teams 共鸣.mp3","Teams 召唤.mp3","Teams 叮铃.mp3","Teams 增强.mp3","Teams 尤里卡.mp3","Teams 弹拨.mp3","Teams 提醒.mp3","Teams 摇摆.mp3","Teams 时空.mp3","Teams 气泡(大声).mp3","Teams 气泡.mp3","Teams 波普.mp3","Teams 波纹.mp3","Teams 滴水.mp3","Teams 点击.mp3","Teams 蜂鸣声.mp3","Teams 警报.mp3","Teams 赋予希望.mp3","Teams 轻弹.mp3","Teams 进阶.mp3","Teams 重复振铃.mp3","Teams 颤振.mp3","Teams 高分.mp3","Teams 默认.mp3","Teams 默认通话铃.mp3"],t="Teams 默认.mp3";function T(m){return m?`/sounds/${m}`:null}function r(m,p=!1){const s=T(m);if(!s)return console.warn("音频文件不存在:",m),null;try{const e=new Audio(s);e.loop=p;const a=e.play();return a!==void 0&&a.catch(n=>{console.warn("播放音频失败:",n.name,n.message)}),e}catch(e){return console.error("创建音频对象失败:",e),null}}function i(m){m&&(m.pause(),m.currentTime=0)}export{o as a,t as d,r as p,i as s}; diff --git a/assets/vendor-vue-H0jQBZ7T.js b/assets/vendor-vue-B2vxubPy.js similarity index 99% rename from assets/vendor-vue-H0jQBZ7T.js rename to assets/vendor-vue-B2vxubPy.js index 6aaf152..e174e9d 100644 --- a/assets/vendor-vue-H0jQBZ7T.js +++ b/assets/vendor-vue-B2vxubPy.js @@ -26,4 +26,4 @@ * vue-router v4.6.4 * (c) 2025 Eduardo San Martin Morote * @license MIT - */let Vu=()=>location.protocol+"//"+location.host;function vl(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let o=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(o);return l[0]!=="/"&&(l="/"+l),gi(l,"")}return gi(n,e)+s+r}function Bu(e,t,n,s){let r=[],i=[],o=null;const l=({state:p})=>{const g=vl(e,location),E=n.value,_=t.value;let M=0;if(p){if(n.value=g,t.value=p,o&&o===E){o=null;return}M=_?p.position-_.position:0}else s(g);r.forEach(O=>{O(n.value,E,{delta:M,type:Gs.pop,direction:M?M>0?As.forward:As.back:As.unknown})})};function c(){o=n.value}function u(p){r.push(p);const g=()=>{const E=r.indexOf(p);E>-1&&r.splice(E,1)};return i.push(g),g}function f(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(ne({},p.state,{scroll:os()}),"")}}function h(){for(const p of i)p();i=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:c,listen:u,destroy:h}}function bi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?os():null}}function Uu(e){const{history:t,location:n}=window,s={value:vl(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(c,u,f){const h=e.indexOf("#"),p=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+c:Vu()+e+c;try{t[f?"replaceState":"pushState"](u,"",p),r.value=u}catch(g){console.error(g),n[f?"replace":"assign"](p)}}function o(c,u){i(c,ne({},t.state,bi(r.value.back,c,r.value.forward,!0),u,{position:r.value.position}),!0),s.value=c}function l(c,u){const f=ne({},r.value,t.state,{forward:c,scroll:os()});i(f.current,f,!0),i(c,ne({},bi(s.value,c,null),{position:f.position+1},u),!1),s.value=c}return{location:s,state:r,push:l,replace:o}}function Da(e){e=xu(e);const t=Uu(e),n=Bu(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=ne({location:"",base:e,go:s,createHref:wu.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Ot=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var pe=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(pe||{});const ku={type:Ot.Static,value:""},Ku=/[a-zA-Z0-9_]/;function Gu(e){if(!e)return[[]];if(e==="/")return[[ku]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=pe.Static,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let l=0,c,u="",f="";function h(){u&&(n===pe.Static?i.push({type:Ot.Static,value:u}):n===pe.Param||n===pe.ParamRegExp||n===pe.ParamRegExpEnd?(i.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Ot.Param,value:u,regexp:f,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=c}for(;lt.length?t.length===1&&t[0]===Ae.Static+Ae.Segment?1:-1:0}function bl(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Yu={strict:!1,end:!0,sensitive:!1};function zu(e,t,n){const s=qu(Gu(e.path),n),r=ne(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Qu(e,t){const n=[],s=new Map;t=pi(Yu,t);function r(h){return s.get(h)}function i(h,p,g){const E=!g,_=Ai(h);_.aliasOf=g&&g.record;const M=pi(t,h),O=[_];if("alias"in h){const I=typeof h.alias=="string"?[h.alias]:h.alias;for(const H of I)O.push(Ai(ne({},_,{components:g?g.record.components:_.components,path:H,aliasOf:g?g.record:_})))}let A,w;for(const I of O){const{path:H}=I;if(p&&H[0]!=="/"){const J=p.record.path,q=J[J.length-1]==="/"?"":"/";I.path=p.record.path+(H&&q+H)}if(A=zu(I,p,M),g?g.alias.push(A):(w=w||A,w!==A&&w.alias.push(A),E&&h.name&&!xi(A)&&o(h.name)),El(A)&&c(A),_.children){const J=_.children;for(let q=0;q{o(w)}:dn}function o(h){if(_l(h)){const p=s.get(h);p&&(s.delete(h),n.splice(n.indexOf(p),1),p.children.forEach(o),p.alias.forEach(o))}else{const p=n.indexOf(h);p>-1&&(n.splice(p,1),h.record.name&&s.delete(h.record.name),h.children.forEach(o),h.alias.forEach(o))}}function l(){return n}function c(h){const p=ea(h,n);n.splice(p,0,h),h.record.name&&!xi(h)&&s.set(h.record.name,h)}function u(h,p){let g,E={},_,M;if("name"in h&&h.name){if(g=s.get(h.name),!g)throw Yt(ae.MATCHER_NOT_FOUND,{location:h});M=g.record.name,E=ne(Ci(p.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),h.params&&Ci(h.params,g.keys.map(w=>w.name))),_=g.stringify(E)}else if(h.path!=null)_=h.path,g=n.find(w=>w.re.test(_)),g&&(E=g.parse(_),M=g.record.name);else{if(g=p.name?s.get(p.name):n.find(w=>w.re.test(p.path)),!g)throw Yt(ae.MATCHER_NOT_FOUND,{location:h,currentLocation:p});M=g.record.name,E=ne({},p.params,h.params),_=g.stringify(E)}const O=[];let A=g;for(;A;)O.unshift(A.record),A=A.parent;return{name:M,path:_,params:E,matched:O,meta:Zu(O)}}e.forEach(h=>i(h));function f(){n.length=0,s.clear()}return{addRoute:i,resolve:u,removeRoute:o,clearRoutes:f,getRoutes:l,getRecordMatcher:r}}function Ci(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Ai(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Xu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Xu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function xi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Zu(e){return e.reduce((t,n)=>ne(t,n.meta),{})}function ea(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;bl(e,t[i])<0?s=i:n=i+1}const r=ta(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function ta(e){let t=e;for(;t=t.parent;)if(El(t)&&bl(e,t)===0)return t}function El({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ri(e){const t=Fe(ls),n=Fe(vr),s=Le(()=>{const c=bt(e.to);return t.resolve(c)}),r=Le(()=>{const{matched:c}=s.value,{length:u}=c,f=c[u-1],h=n.matched;if(!f||!h.length)return-1;const p=h.findIndex(Jt.bind(null,f));if(p>-1)return p;const g=wi(c[u-2]);return u>1&&wi(f)===g&&h[h.length-1].path!==g?h.findIndex(Jt.bind(null,c[u-2])):p}),i=Le(()=>r.value>-1&&oa(n.params,s.value.params)),o=Le(()=>r.value>-1&&r.value===n.matched.length-1&&ml(n.params,s.value.params));function l(c={}){if(ia(c)){const u=t[bt(e.replace)?"replace":"push"](bt(e.to)).catch(dn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:Le(()=>s.value.href),isActive:i,isExactActive:o,navigate:l}}function na(e){return e.length===1?e[0]:e}const sa=ar({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Ri,setup(e,{slots:t}){const n=Sn(Ri(e)),{options:s}=Fe(ls),r=Le(()=>({[Ti(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Ti(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&na(t.default(n));return e.custom?i:_r("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),ra=sa;function ia(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function oa(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!ke(r)||r.length!==s.length||s.some((i,o)=>i.valueOf()!==r[o].valueOf()))return!1}return!0}function wi(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ti=(e,t,n)=>e??t??n,la=ar({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Fe($s),r=Le(()=>e.route||s.value),i=Fe(vi,0),o=Le(()=>{let u=bt(i);const{matched:f}=r.value;let h;for(;(h=f[u])&&!h.components;)u++;return u}),l=Le(()=>r.value.matched[o.value]);Dn(vi,Le(()=>o.value+1)),Dn(Hu,l),Dn($s,r);const c=kt();return ln(()=>[c.value,l.value,e.name],([u,f,h],[p,g,E])=>{f&&(f.instances[h]=u,g&&g!==f&&u&&u===p&&(f.leaveGuards.size||(f.leaveGuards=g.leaveGuards),f.updateGuards.size||(f.updateGuards=g.updateGuards))),u&&f&&(!g||!Jt(f,g)||!p)&&(f.enterCallbacks[h]||[]).forEach(_=>_(u))},{flush:"post"}),()=>{const u=r.value,f=e.name,h=l.value,p=h&&h.components[f];if(!p)return Oi(n.default,{Component:p,route:u});const g=h.props[f],E=g?g===!0?u.params:typeof g=="function"?g(u):g:null,M=_r(p,ne({},E,t,{onVnodeUnmounted:O=>{O.component.isUnmounted&&(h.instances[f]=null)},ref:c}));return Oi(n.default,{Component:M,route:u})||M}}});function Oi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const ca=la;function La(e){const t=Qu(e.routes,e),n=e.parseQuery||Lu,s=e.stringifyQuery||yi,r=e.history,i=tn(),o=tn(),l=tn(),c=tc(dt);let u=dt;Vt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=Ss.bind(null,b=>""+b),h=Ss.bind(null,yu),p=Ss.bind(null,bn);function g(b,F){let N,j;return _l(b)?(N=t.getRecordMatcher(b),j=F):j=b,t.addRoute(j,N)}function E(b){const F=t.getRecordMatcher(b);F&&t.removeRoute(F)}function _(){return t.getRoutes().map(b=>b.record)}function M(b){return!!t.getRecordMatcher(b)}function O(b,F){if(F=ne({},F||c.value),typeof b=="string"){const m=Cs(n,b,F.path),y=t.resolve({path:m.path},F),S=r.createHref(m.fullPath);return ne(m,y,{params:p(y.params),hash:bn(m.hash),redirectedFrom:void 0,href:S})}let N;if(b.path!=null)N=ne({},b,{path:Cs(n,b.path,F.path).path});else{const m=ne({},b.params);for(const y in m)m[y]==null&&delete m[y];N=ne({},b,{params:h(m)}),F.params=h(F.params)}const j=t.resolve(N,F),Q=b.hash||"";j.params=f(p(j.params));const a=Eu(s,ne({},b,{hash:gu(Q),path:j.path})),d=r.createHref(a);return ne({fullPath:a,hash:Q,query:s===yi?Fu(b.query):b.query||{}},j,{redirectedFrom:void 0,href:d})}function A(b){return typeof b=="string"?Cs(n,b,c.value.path):ne({},b)}function w(b,F){if(u!==b)return Yt(ae.NAVIGATION_CANCELLED,{from:F,to:b})}function I(b){return q(b)}function H(b){return I(ne(A(b),{replace:!0}))}function J(b,F){const N=b.matched[b.matched.length-1];if(N&&N.redirect){const{redirect:j}=N;let Q=typeof j=="function"?j(b,F):j;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=A(Q):{path:Q},Q.params={}),ne({query:b.query,hash:b.hash,params:Q.path!=null?{}:b.params},Q)}}function q(b,F){const N=u=O(b),j=c.value,Q=b.state,a=b.force,d=b.replace===!0,m=J(N,j);if(m)return q(ne(A(m),{state:typeof m=="object"?ne({},Q,m.state):Q,force:a,replace:d}),F||N);const y=N;y.redirectedFrom=F;let S;return!a&&Su(s,j,N)&&(S=Yt(ae.NAVIGATION_DUPLICATED,{to:y,from:j}),Ke(j,j,!0,!1)),(S?Promise.resolve(S):k(y,j)).catch(v=>tt(v)?tt(v,ae.NAVIGATION_GUARD_REDIRECT)?v:at(v):te(v,y,j)).then(v=>{if(v){if(tt(v,ae.NAVIGATION_GUARD_REDIRECT))return q(ne({replace:d},A(v.to),{state:typeof v.to=="object"?ne({},Q,v.to.state):Q,force:a}),F||y)}else v=D(y,j,!0,d,Q);return Y(y,j,v),v})}function U(b,F){const N=w(b,F);return N?Promise.reject(N):Promise.resolve()}function x(b){const F=Dt.values().next().value;return F&&typeof F.runWithContext=="function"?F.runWithContext(b):b()}function k(b,F){let N;const[j,Q,a]=ju(b,F);N=xs(j.reverse(),"beforeRouteLeave",b,F);for(const m of j)m.leaveGuards.forEach(y=>{N.push(yt(y,b,F))});const d=U.bind(null,b,F);return N.push(d),Me(N).then(()=>{N=[];for(const m of i.list())N.push(yt(m,b,F));return N.push(d),Me(N)}).then(()=>{N=xs(Q,"beforeRouteUpdate",b,F);for(const m of Q)m.updateGuards.forEach(y=>{N.push(yt(y,b,F))});return N.push(d),Me(N)}).then(()=>{N=[];for(const m of a)if(m.beforeEnter)if(ke(m.beforeEnter))for(const y of m.beforeEnter)N.push(yt(y,b,F));else N.push(yt(m.beforeEnter,b,F));return N.push(d),Me(N)}).then(()=>(b.matched.forEach(m=>m.enterCallbacks={}),N=xs(a,"beforeRouteEnter",b,F,x),N.push(d),Me(N))).then(()=>{N=[];for(const m of o.list())N.push(yt(m,b,F));return N.push(d),Me(N)}).catch(m=>tt(m,ae.NAVIGATION_CANCELLED)?m:Promise.reject(m))}function Y(b,F,N){l.list().forEach(j=>x(()=>j(b,F,N)))}function D(b,F,N,j,Q){const a=w(b,F);if(a)return a;const d=F===dt,m=Vt?history.state:{};N&&(j||d?r.replace(b.fullPath,ne({scroll:d&&m&&m.scroll},Q)):r.push(b.fullPath,Q)),c.value=b,Ke(b,F,N,d),at()}let z;function he(){z||(z=r.listen((b,F,N)=>{if(!Ct.listening)return;const j=O(b),Q=J(j,Ct.currentRoute.value);if(Q){q(ne(Q,{replace:!0,force:!0}),j).catch(dn);return}u=j;const a=c.value;Vt&&Pu(_i(a.fullPath,N.delta),os()),k(j,a).catch(d=>tt(d,ae.NAVIGATION_ABORTED|ae.NAVIGATION_CANCELLED)?d:tt(d,ae.NAVIGATION_GUARD_REDIRECT)?(q(ne(A(d.to),{force:!0}),j).then(m=>{tt(m,ae.NAVIGATION_ABORTED|ae.NAVIGATION_DUPLICATED)&&!N.delta&&N.type===Gs.pop&&r.go(-1,!1)}).catch(dn),Promise.reject()):(N.delta&&r.go(-N.delta,!1),te(d,j,a))).then(d=>{d=d||D(j,a,!1),d&&(N.delta&&!tt(d,ae.NAVIGATION_CANCELLED)?r.go(-N.delta,!1):N.type===Gs.pop&&tt(d,ae.NAVIGATION_ABORTED|ae.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),Y(j,a,d)}).catch(dn)}))}let Se=tn(),ie=tn(),$;function te(b,F,N){at(b);const j=ie.list();return j.length?j.forEach(Q=>Q(b,F,N)):console.error(b),Promise.reject(b)}function Ze(){return $&&c.value!==dt?Promise.resolve():new Promise((b,F)=>{Se.add([b,F])})}function at(b){return $||($=!b,he(),Se.list().forEach(([F,N])=>b?N(b):F()),Se.reset()),b}function Ke(b,F,N,j){const{scrollBehavior:Q}=e;if(!Vt||!Q)return Promise.resolve();const a=!N&&Iu(_i(b.fullPath,0))||(j||!N)&&history.state&&history.state.scroll||null;return lr().then(()=>Q(b,F,a)).then(d=>d&&Ou(d)).catch(d=>te(d,b,F))}const Re=b=>r.go(b);let Mt;const Dt=new Set,Ct={currentRoute:c,listening:!0,addRoute:g,removeRoute:E,clearRoutes:t.clearRoutes,hasRoute:M,getRoutes:_,resolve:O,options:e,push:I,replace:H,go:Re,back:()=>Re(-1),forward:()=>Re(1),beforeEach:i.add,beforeResolve:o.add,afterEach:l.add,onError:ie.add,isReady:Ze,install(b){b.component("RouterLink",ra),b.component("RouterView",ca),b.config.globalProperties.$router=Ct,Object.defineProperty(b.config.globalProperties,"$route",{enumerable:!0,get:()=>bt(c)}),Vt&&!Mt&&c.value===dt&&(Mt=!0,I(r.location).catch(j=>{}));const F={};for(const j in dt)Object.defineProperty(F,j,{get:()=>c.value[j],enumerable:!0});b.provide(ls,Ct),b.provide(vr,no(F)),b.provide($s,c);const N=b.unmount;Dt.add(b),b.unmount=function(){Dt.delete(b),Dt.size<1&&(u=dt,z&&z(),z=null,c.value=dt,Mt=!1,$=!1),N()}}};function Me(b){return b.reduce((F,N)=>F.then(()=>x(N)),Promise.resolve())}return Ct}function Fa(){return Fe(ls)}function Ha(e){return Fe(vr)}export{Sa as $,Ao as A,Os as B,Ee as C,So as D,pa as E,Oe as F,Ac as G,Cc as H,lr as I,Pa as J,La as K,Da as L,fe as M,Qs as N,Co as O,Ca as P,_a as Q,aa as R,Dl as S,ss as T,xa as U,Aa as V,da as W,Fs as X,Hs as Y,pc as Z,Ea as _,Qn as a,Rc as a0,cf as a1,ya as a2,ma as a3,Oa as a4,Ia as a5,Ma as a6,Na as a7,ga as a8,Ha as a9,Fa as aa,va as ab,Ta as ac,wa as ad,ba as ae,xo as af,wc as ag,Ra as ah,Et as ai,or as aj,kt as b,He as c,Fe as d,Le as e,ar as f,Rn as g,_r as h,vn as i,ge as j,Jo as k,fa as l,ff as m,Xs as n,ln as o,Dn as p,Ll as q,Sn as r,tc as s,ua as t,bt as u,Bi as v,ha as w,Z as x,rc as y,Ui as z}; + */let Vu=()=>location.protocol+"//"+location.host;function vl(e,t){const{pathname:n,search:s,hash:r}=t,i=e.indexOf("#");if(i>-1){let o=r.includes(e.slice(i))?e.slice(i).length:1,l=r.slice(o);return l[0]!=="/"&&(l="/"+l),gi(l,"")}return gi(n,e)+s+r}function Bu(e,t,n,s){let r=[],i=[],o=null;const l=({state:p})=>{const g=vl(e,location),E=n.value,_=t.value;let M=0;if(p){if(n.value=g,t.value=p,o&&o===E){o=null;return}M=_?p.position-_.position:0}else s(g);r.forEach(O=>{O(n.value,E,{delta:M,type:Gs.pop,direction:M?M>0?As.forward:As.back:As.unknown})})};function c(){o=n.value}function u(p){r.push(p);const g=()=>{const E=r.indexOf(p);E>-1&&r.splice(E,1)};return i.push(g),g}function f(){if(document.visibilityState==="hidden"){const{history:p}=window;if(!p.state)return;p.replaceState(ne({},p.state,{scroll:os()}),"")}}function h(){for(const p of i)p();i=[],window.removeEventListener("popstate",l),window.removeEventListener("pagehide",f),document.removeEventListener("visibilitychange",f)}return window.addEventListener("popstate",l),window.addEventListener("pagehide",f),document.addEventListener("visibilitychange",f),{pauseListeners:c,listen:u,destroy:h}}function bi(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?os():null}}function Uu(e){const{history:t,location:n}=window,s={value:vl(e,n)},r={value:t.state};r.value||i(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function i(c,u,f){const h=e.indexOf("#"),p=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+c:Vu()+e+c;try{t[f?"replaceState":"pushState"](u,"",p),r.value=u}catch(g){console.error(g),n[f?"replace":"assign"](p)}}function o(c,u){i(c,ne({},t.state,bi(r.value.back,c,r.value.forward,!0),u,{position:r.value.position}),!0),s.value=c}function l(c,u){const f=ne({},r.value,t.state,{forward:c,scroll:os()});i(f.current,f,!0),i(c,ne({},bi(s.value,c,null),{position:f.position+1},u),!1),s.value=c}return{location:s,state:r,push:l,replace:o}}function Da(e){e=xu(e);const t=Uu(e),n=Bu(e,t.state,t.location,t.replace);function s(i,o=!0){o||n.pauseListeners(),history.go(i)}const r=ne({location:"",base:e,go:s,createHref:wu.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}let Ot=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.Group=2]="Group",e}({});var pe=function(e){return e[e.Static=0]="Static",e[e.Param=1]="Param",e[e.ParamRegExp=2]="ParamRegExp",e[e.ParamRegExpEnd=3]="ParamRegExpEnd",e[e.EscapeNext=4]="EscapeNext",e}(pe||{});const ku={type:Ot.Static,value:""},Ku=/[a-zA-Z0-9_]/;function Gu(e){if(!e)return[[]];if(e==="/")return[[ku]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(g){throw new Error(`ERR (${n})/"${u}": ${g}`)}let n=pe.Static,s=n;const r=[];let i;function o(){i&&r.push(i),i=[]}let l=0,c,u="",f="";function h(){u&&(n===pe.Static?i.push({type:Ot.Static,value:u}):n===pe.Param||n===pe.ParamRegExp||n===pe.ParamRegExpEnd?(i.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),i.push({type:Ot.Param,value:u,regexp:f,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),u="")}function p(){u+=c}for(;lt.length?t.length===1&&t[0]===Ae.Static+Ae.Segment?1:-1:0}function bl(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Yu={strict:!1,end:!0,sensitive:!1};function zu(e,t,n){const s=qu(Gu(e.path),n),r=ne(s,{record:e,parent:t,children:[],alias:[]});return t&&!r.record.aliasOf==!t.record.aliasOf&&t.children.push(r),r}function Qu(e,t){const n=[],s=new Map;t=pi(Yu,t);function r(h){return s.get(h)}function i(h,p,g){const E=!g,_=Ai(h);_.aliasOf=g&&g.record;const M=pi(t,h),O=[_];if("alias"in h){const I=typeof h.alias=="string"?[h.alias]:h.alias;for(const H of I)O.push(Ai(ne({},_,{components:g?g.record.components:_.components,path:H,aliasOf:g?g.record:_})))}let A,w;for(const I of O){const{path:H}=I;if(p&&H[0]!=="/"){const J=p.record.path,q=J[J.length-1]==="/"?"":"/";I.path=p.record.path+(H&&q+H)}if(A=zu(I,p,M),g?g.alias.push(A):(w=w||A,w!==A&&w.alias.push(A),E&&h.name&&!xi(A)&&o(h.name)),El(A)&&c(A),_.children){const J=_.children;for(let q=0;q{o(w)}:dn}function o(h){if(_l(h)){const p=s.get(h);p&&(s.delete(h),n.splice(n.indexOf(p),1),p.children.forEach(o),p.alias.forEach(o))}else{const p=n.indexOf(h);p>-1&&(n.splice(p,1),h.record.name&&s.delete(h.record.name),h.children.forEach(o),h.alias.forEach(o))}}function l(){return n}function c(h){const p=ea(h,n);n.splice(p,0,h),h.record.name&&!xi(h)&&s.set(h.record.name,h)}function u(h,p){let g,E={},_,M;if("name"in h&&h.name){if(g=s.get(h.name),!g)throw Yt(ae.MATCHER_NOT_FOUND,{location:h});M=g.record.name,E=ne(Ci(p.params,g.keys.filter(w=>!w.optional).concat(g.parent?g.parent.keys.filter(w=>w.optional):[]).map(w=>w.name)),h.params&&Ci(h.params,g.keys.map(w=>w.name))),_=g.stringify(E)}else if(h.path!=null)_=h.path,g=n.find(w=>w.re.test(_)),g&&(E=g.parse(_),M=g.record.name);else{if(g=p.name?s.get(p.name):n.find(w=>w.re.test(p.path)),!g)throw Yt(ae.MATCHER_NOT_FOUND,{location:h,currentLocation:p});M=g.record.name,E=ne({},p.params,h.params),_=g.stringify(E)}const O=[];let A=g;for(;A;)O.unshift(A.record),A=A.parent;return{name:M,path:_,params:E,matched:O,meta:Zu(O)}}e.forEach(h=>i(h));function f(){n.length=0,s.clear()}return{addRoute:i,resolve:u,removeRoute:o,clearRoutes:f,getRoutes:l,getRecordMatcher:r}}function Ci(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Ai(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Xu(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Xu(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function xi(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Zu(e){return e.reduce((t,n)=>ne(t,n.meta),{})}function ea(e,t){let n=0,s=t.length;for(;n!==s;){const i=n+s>>1;bl(e,t[i])<0?s=i:n=i+1}const r=ta(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function ta(e){let t=e;for(;t=t.parent;)if(El(t)&&bl(e,t)===0)return t}function El({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Ri(e){const t=Fe(ls),n=Fe(vr),s=Le(()=>{const c=bt(e.to);return t.resolve(c)}),r=Le(()=>{const{matched:c}=s.value,{length:u}=c,f=c[u-1],h=n.matched;if(!f||!h.length)return-1;const p=h.findIndex(Jt.bind(null,f));if(p>-1)return p;const g=wi(c[u-2]);return u>1&&wi(f)===g&&h[h.length-1].path!==g?h.findIndex(Jt.bind(null,c[u-2])):p}),i=Le(()=>r.value>-1&&oa(n.params,s.value.params)),o=Le(()=>r.value>-1&&r.value===n.matched.length-1&&ml(n.params,s.value.params));function l(c={}){if(ia(c)){const u=t[bt(e.replace)?"replace":"push"](bt(e.to)).catch(dn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:s,href:Le(()=>s.value.href),isActive:i,isExactActive:o,navigate:l}}function na(e){return e.length===1?e[0]:e}const sa=ar({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Ri,setup(e,{slots:t}){const n=Sn(Ri(e)),{options:s}=Fe(ls),r=Le(()=>({[Ti(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Ti(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const i=t.default&&na(t.default(n));return e.custom?i:_r("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},i)}}}),ra=sa;function ia(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function oa(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!ke(r)||r.length!==s.length||s.some((i,o)=>i.valueOf()!==r[o].valueOf()))return!1}return!0}function wi(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ti=(e,t,n)=>e??t??n,la=ar({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=Fe($s),r=Le(()=>e.route||s.value),i=Fe(vi,0),o=Le(()=>{let u=bt(i);const{matched:f}=r.value;let h;for(;(h=f[u])&&!h.components;)u++;return u}),l=Le(()=>r.value.matched[o.value]);Dn(vi,Le(()=>o.value+1)),Dn(Hu,l),Dn($s,r);const c=kt();return ln(()=>[c.value,l.value,e.name],([u,f,h],[p,g,E])=>{f&&(f.instances[h]=u,g&&g!==f&&u&&u===p&&(f.leaveGuards.size||(f.leaveGuards=g.leaveGuards),f.updateGuards.size||(f.updateGuards=g.updateGuards))),u&&f&&(!g||!Jt(f,g)||!p)&&(f.enterCallbacks[h]||[]).forEach(_=>_(u))},{flush:"post"}),()=>{const u=r.value,f=e.name,h=l.value,p=h&&h.components[f];if(!p)return Oi(n.default,{Component:p,route:u});const g=h.props[f],E=g?g===!0?u.params:typeof g=="function"?g(u):g:null,M=_r(p,ne({},E,t,{onVnodeUnmounted:O=>{O.component.isUnmounted&&(h.instances[f]=null)},ref:c}));return Oi(n.default,{Component:M,route:u})||M}}});function Oi(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const ca=la;function La(e){const t=Qu(e.routes,e),n=e.parseQuery||Lu,s=e.stringifyQuery||yi,r=e.history,i=tn(),o=tn(),l=tn(),c=tc(dt);let u=dt;Vt&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=Ss.bind(null,b=>""+b),h=Ss.bind(null,yu),p=Ss.bind(null,bn);function g(b,F){let N,j;return _l(b)?(N=t.getRecordMatcher(b),j=F):j=b,t.addRoute(j,N)}function E(b){const F=t.getRecordMatcher(b);F&&t.removeRoute(F)}function _(){return t.getRoutes().map(b=>b.record)}function M(b){return!!t.getRecordMatcher(b)}function O(b,F){if(F=ne({},F||c.value),typeof b=="string"){const m=Cs(n,b,F.path),y=t.resolve({path:m.path},F),S=r.createHref(m.fullPath);return ne(m,y,{params:p(y.params),hash:bn(m.hash),redirectedFrom:void 0,href:S})}let N;if(b.path!=null)N=ne({},b,{path:Cs(n,b.path,F.path).path});else{const m=ne({},b.params);for(const y in m)m[y]==null&&delete m[y];N=ne({},b,{params:h(m)}),F.params=h(F.params)}const j=t.resolve(N,F),Q=b.hash||"";j.params=f(p(j.params));const a=Eu(s,ne({},b,{hash:gu(Q),path:j.path})),d=r.createHref(a);return ne({fullPath:a,hash:Q,query:s===yi?Fu(b.query):b.query||{}},j,{redirectedFrom:void 0,href:d})}function A(b){return typeof b=="string"?Cs(n,b,c.value.path):ne({},b)}function w(b,F){if(u!==b)return Yt(ae.NAVIGATION_CANCELLED,{from:F,to:b})}function I(b){return q(b)}function H(b){return I(ne(A(b),{replace:!0}))}function J(b,F){const N=b.matched[b.matched.length-1];if(N&&N.redirect){const{redirect:j}=N;let Q=typeof j=="function"?j(b,F):j;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=A(Q):{path:Q},Q.params={}),ne({query:b.query,hash:b.hash,params:Q.path!=null?{}:b.params},Q)}}function q(b,F){const N=u=O(b),j=c.value,Q=b.state,a=b.force,d=b.replace===!0,m=J(N,j);if(m)return q(ne(A(m),{state:typeof m=="object"?ne({},Q,m.state):Q,force:a,replace:d}),F||N);const y=N;y.redirectedFrom=F;let S;return!a&&Su(s,j,N)&&(S=Yt(ae.NAVIGATION_DUPLICATED,{to:y,from:j}),Ke(j,j,!0,!1)),(S?Promise.resolve(S):k(y,j)).catch(v=>tt(v)?tt(v,ae.NAVIGATION_GUARD_REDIRECT)?v:at(v):te(v,y,j)).then(v=>{if(v){if(tt(v,ae.NAVIGATION_GUARD_REDIRECT))return q(ne({replace:d},A(v.to),{state:typeof v.to=="object"?ne({},Q,v.to.state):Q,force:a}),F||y)}else v=D(y,j,!0,d,Q);return Y(y,j,v),v})}function U(b,F){const N=w(b,F);return N?Promise.reject(N):Promise.resolve()}function x(b){const F=Dt.values().next().value;return F&&typeof F.runWithContext=="function"?F.runWithContext(b):b()}function k(b,F){let N;const[j,Q,a]=ju(b,F);N=xs(j.reverse(),"beforeRouteLeave",b,F);for(const m of j)m.leaveGuards.forEach(y=>{N.push(yt(y,b,F))});const d=U.bind(null,b,F);return N.push(d),Me(N).then(()=>{N=[];for(const m of i.list())N.push(yt(m,b,F));return N.push(d),Me(N)}).then(()=>{N=xs(Q,"beforeRouteUpdate",b,F);for(const m of Q)m.updateGuards.forEach(y=>{N.push(yt(y,b,F))});return N.push(d),Me(N)}).then(()=>{N=[];for(const m of a)if(m.beforeEnter)if(ke(m.beforeEnter))for(const y of m.beforeEnter)N.push(yt(y,b,F));else N.push(yt(m.beforeEnter,b,F));return N.push(d),Me(N)}).then(()=>(b.matched.forEach(m=>m.enterCallbacks={}),N=xs(a,"beforeRouteEnter",b,F,x),N.push(d),Me(N))).then(()=>{N=[];for(const m of o.list())N.push(yt(m,b,F));return N.push(d),Me(N)}).catch(m=>tt(m,ae.NAVIGATION_CANCELLED)?m:Promise.reject(m))}function Y(b,F,N){l.list().forEach(j=>x(()=>j(b,F,N)))}function D(b,F,N,j,Q){const a=w(b,F);if(a)return a;const d=F===dt,m=Vt?history.state:{};N&&(j||d?r.replace(b.fullPath,ne({scroll:d&&m&&m.scroll},Q)):r.push(b.fullPath,Q)),c.value=b,Ke(b,F,N,d),at()}let z;function he(){z||(z=r.listen((b,F,N)=>{if(!Ct.listening)return;const j=O(b),Q=J(j,Ct.currentRoute.value);if(Q){q(ne(Q,{replace:!0,force:!0}),j).catch(dn);return}u=j;const a=c.value;Vt&&Pu(_i(a.fullPath,N.delta),os()),k(j,a).catch(d=>tt(d,ae.NAVIGATION_ABORTED|ae.NAVIGATION_CANCELLED)?d:tt(d,ae.NAVIGATION_GUARD_REDIRECT)?(q(ne(A(d.to),{force:!0}),j).then(m=>{tt(m,ae.NAVIGATION_ABORTED|ae.NAVIGATION_DUPLICATED)&&!N.delta&&N.type===Gs.pop&&r.go(-1,!1)}).catch(dn),Promise.reject()):(N.delta&&r.go(-N.delta,!1),te(d,j,a))).then(d=>{d=d||D(j,a,!1),d&&(N.delta&&!tt(d,ae.NAVIGATION_CANCELLED)?r.go(-N.delta,!1):N.type===Gs.pop&&tt(d,ae.NAVIGATION_ABORTED|ae.NAVIGATION_DUPLICATED)&&r.go(-1,!1)),Y(j,a,d)}).catch(dn)}))}let Se=tn(),ie=tn(),$;function te(b,F,N){at(b);const j=ie.list();return j.length?j.forEach(Q=>Q(b,F,N)):console.error(b),Promise.reject(b)}function Ze(){return $&&c.value!==dt?Promise.resolve():new Promise((b,F)=>{Se.add([b,F])})}function at(b){return $||($=!b,he(),Se.list().forEach(([F,N])=>b?N(b):F()),Se.reset()),b}function Ke(b,F,N,j){const{scrollBehavior:Q}=e;if(!Vt||!Q)return Promise.resolve();const a=!N&&Iu(_i(b.fullPath,0))||(j||!N)&&history.state&&history.state.scroll||null;return lr().then(()=>Q(b,F,a)).then(d=>d&&Ou(d)).catch(d=>te(d,b,F))}const Re=b=>r.go(b);let Mt;const Dt=new Set,Ct={currentRoute:c,listening:!0,addRoute:g,removeRoute:E,clearRoutes:t.clearRoutes,hasRoute:M,getRoutes:_,resolve:O,options:e,push:I,replace:H,go:Re,back:()=>Re(-1),forward:()=>Re(1),beforeEach:i.add,beforeResolve:o.add,afterEach:l.add,onError:ie.add,isReady:Ze,install(b){b.component("RouterLink",ra),b.component("RouterView",ca),b.config.globalProperties.$router=Ct,Object.defineProperty(b.config.globalProperties,"$route",{enumerable:!0,get:()=>bt(c)}),Vt&&!Mt&&c.value===dt&&(Mt=!0,I(r.location).catch(j=>{}));const F={};for(const j in dt)Object.defineProperty(F,j,{get:()=>c.value[j],enumerable:!0});b.provide(ls,Ct),b.provide(vr,no(F)),b.provide($s,c);const N=b.unmount;Dt.add(b),b.unmount=function(){Dt.delete(b),Dt.size<1&&(u=dt,z&&z(),z=null,c.value=dt,Mt=!1,$=!1),N()}}};function Me(b){return b.reduce((F,N)=>F.then(()=>x(N)),Promise.resolve())}return Ct}function Fa(){return Fe(ls)}function Ha(e){return Fe(vr)}export{Sa as $,Ao as A,Os as B,Ee as C,So as D,pa as E,Oe as F,Ac as G,Cc as H,lr as I,Pa as J,La as K,Da as L,fe as M,Qs as N,Co as O,Ca as P,_a as Q,aa as R,Dl as S,ss as T,xa as U,Aa as V,da as W,Fs as X,Hs as Y,pc as Z,Ea as _,Qn as a,Rc as a0,cf as a1,ya as a2,ma as a3,Oa as a4,Ia as a5,Ma as a6,Na as a7,wa as a8,ga as a9,Ha as aa,Fa as ab,va as ac,Ta as ad,ba as ae,xo as af,or as ag,wc as ah,Ra as ai,Et as aj,kt as b,He as c,Fe as d,Le as e,ar as f,Rn as g,_r as h,vn as i,ge as j,Jo as k,fa as l,ff as m,Xs as n,ln as o,Dn as p,Ll as q,Sn as r,tc as s,ua as t,bt as u,Bi as v,ha as w,Z as x,rc as y,Ui as z}; diff --git a/assets/vendor-vuetify-ChAgIwn2.js b/assets/vendor-vuetify-s-yw_Hr8.js similarity index 99% rename from assets/vendor-vuetify-ChAgIwn2.js rename to assets/vendor-vuetify-s-yw_Hr8.js index 270811a..a49b643 100644 --- a/assets/vendor-vuetify-ChAgIwn2.js +++ b/assets/vendor-vuetify-s-yw_Hr8.js @@ -1,4 +1,4 @@ -import{w as ke,t as k,r as R,s as F,F as Ct,i as ln,C as fn,c as Mt,a as Tt,u as ee,g as dn,b as H,d as A,e as S,p as ue,f as mn,h as At,j as re,n as gn,m as hn,k as de,l as pn,o as G,q as We,v as Pe,x as yn,y as vn,z as bn,A as Ot,B as wn,D as Dn,E as Sn,G as xn,H as kn,I as En}from"./vendor-vue-H0jQBZ7T.js";function Ha(e){}function Cn(e,t){t=Array.isArray(t)?t.slice(0,-1).map(n=>`'${n}'`).join(", ")+` or '${t.at(-1)}'`:`'${t}'`}const T=typeof window<"u",Va=T&&"IntersectionObserver"in window,Mn=T&&("ontouchstart"in window||window.navigator.maxTouchPoints>0),Ft=T&&"matchMedia"in window&&typeof window.matchMedia=="function",Tn=()=>Ft&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;function _e(e,t,n){An(e,t),t.set(e,n)}function An(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Xe(e,t,n){return e.set(It(e,t),n),n}function $(e,t){return e.get(It(e,t))}function It(e,t,n){if(typeof e=="function"?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function Pt(e,t,n){const r=t.length-1;if(r<0)return e===void 0?n:e;for(let a=0;a"u"?n:a}if(typeof t=="string")return $e(e,t,n);if(Array.isArray(t))return Pt(e,t,n);if(typeof t!="function")return n;const r=t(e,n);return typeof r>"u"?n:r}function $t(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Array.from({length:e},(n,r)=>t+r)}function me(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"px";if(e==null||e==="")return;const n=Number(e);return isNaN(n)?String(e):isFinite(n)?`${n}${t}`:void 0}function ja(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function qe(e){let t;return e!==null&&typeof e=="object"&&((t=Object.getPrototypeOf(e))===Object.prototype||t===null)}function Rt(e){if(e&&"$el"in e){const t=e.$el;return(t==null?void 0:t.nodeType)===Node.TEXT_NODE?t.nextElementSibling:t}return e}const za=Object.freeze({enter:"Enter",tab:"Tab",delete:"Delete",esc:"Escape",space:"Space",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",end:"End",home:"Home",del:"Delete",backspace:"Backspace",insert:"Insert",pageup:"PageUp",pagedown:"PageDown",shift:"Shift"});function Ga(e){return Object.keys(e)}function Oe(e,t){return t.every(n=>e.hasOwnProperty(n))}function On(e,t){const n={};for(const r of t)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function Qe(e,t,n){const r=Object.create(null),a=Object.create(null);for(const s in e)t.some(o=>o instanceof RegExp?o.test(s):o===s)?r[s]=e[s]:a[s]=e[s];return[r,a]}function Fn(e,t){const n={...e};return t.forEach(r=>delete n[r]),n}const Nt=/^on[^a-z]/,Be=e=>Nt.test(e),In=["onAfterscriptexecute","onAnimationcancel","onAnimationend","onAnimationiteration","onAnimationstart","onAuxclick","onBeforeinput","onBeforescriptexecute","onChange","onClick","onCompositionend","onCompositionstart","onCompositionupdate","onContextmenu","onCopy","onCut","onDblclick","onFocusin","onFocusout","onFullscreenchange","onFullscreenerror","onGesturechange","onGestureend","onGesturestart","onGotpointercapture","onInput","onKeydown","onKeypress","onKeyup","onLostpointercapture","onMousedown","onMousemove","onMouseout","onMouseover","onMouseup","onMousewheel","onPaste","onPointercancel","onPointerdown","onPointerenter","onPointerleave","onPointermove","onPointerout","onPointerover","onPointerup","onReset","onSelect","onSubmit","onTouchcancel","onTouchend","onTouchmove","onTouchstart","onTransitioncancel","onTransitionend","onTransitionrun","onTransitionstart","onWheel"],Pn=["ArrowUp","ArrowDown","ArrowRight","ArrowLeft","Enter","Escape","Tab"," "];function Ua(e){return e.isComposing&&Pn.includes(e.key)}function Za(e){const[t,n]=Qe(e,[Nt]),r=Fn(t,In),[a,s]=Qe(n,["class","style","id","inert",/^data-/]);return Object.assign(a,t),Object.assign(s,r),[a,s]}function Ka(e){return e==null?[]:Array.isArray(e)?e:[e]}function _a(e,t){let n=0;const r=function(){for(var a=arguments.length,s=new Array(a),o=0;oe(...s),ee(t))};return r.clear=()=>{clearTimeout(n)},r.immediate=e,r}function He(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.max(t,Math.min(n,e))}function Je(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0";return e+n.repeat(Math.max(0,t-e.length))}function et(e,t){return(arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0").repeat(Math.max(0,t-e.length))+e}function $n(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const n=[];let r=0;for(;r1&&arguments[1]!==void 0?arguments[1]:1e3;if(e=t&&r0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const r={};for(const a in e)r[a]=e[a];for(const a in t){const s=e[a],o=t[a];if(qe(s)&&qe(o)){r[a]=C(s,o,n);continue}if(n&&Array.isArray(s)&&Array.isArray(o)){r[a]=n(s,o);continue}r[a]=o}return r}function Rn(e){return e.map(t=>t.type===Ct?Rn(t.children):t).flat()}function j(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(j.cache.has(e))return j.cache.get(e);const t=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return j.cache.set(e,t),t}j.cache=new Map;function te(e,t){if(!t||typeof t!="object")return[];if(Array.isArray(t))return t.map(n=>te(e,n)).flat(1);if(t.suspense)return te(e,t.ssContent);if(Array.isArray(t.children))return t.children.map(n=>te(e,n)).flat(1);if(t.component){if(Object.getOwnPropertyDescriptor(t.component.provides,e))return[t.component];if(t.component.subTree)return te(e,t.component.subTree).flat(1)}return[]}var Z=new WeakMap,V=new WeakMap;class qa{constructor(t){_e(this,Z,[]),_e(this,V,0),this.size=t}get isFull(){return $(Z,this).length===this.size}push(t){$(Z,this)[$(V,this)]=t,Xe(V,this,($(V,this)+1)%this.size)}values(){return $(Z,this).slice($(V,this)).concat($(Z,this).slice(0,$(V,this)))}clear(){$(Z,this).length=0,Xe(V,this,0)}}function Qa(e){const t=R({});ke(()=>{const r=e();for(const a in r)t[a]=r[a]},{flush:"sync"});const n={};for(const r in t)n[r]=k(()=>t[r]);return n}function Re(e,t){return e.includes(t)}function Lt(e){return e[2].toLowerCase()+e.slice(3)}const Ja=()=>[Function,Array];function es(e,t){return t="on"+Tt(t),!!(e[t]||e[`${t}Once`]||e[`${t}Capture`]||e[`${t}OnceCapture`]||e[`${t}CaptureOnce`])}function Nn(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1&&arguments[1]!==void 0?arguments[1]:!0;const n=["button","[href]",'input:not([type="hidden"])',"select","textarea","details:not(:has(> summary))","details > summary","[tabindex]",'[contenteditable]:not([contenteditable="false"])',"audio[controls]","video[controls]"].map(a=>`${a}${t?':not([tabindex="-1"])':""}:not([disabled], [inert])`).join(", ");let r;try{r=[...e.querySelectorAll(n)]}catch{return[]}return r.filter(a=>!a.closest("[inert]")).filter(a=>!!a.offsetParent||a.getClientRects().length>0).filter(a=>{var s,o;return!((s=a.parentElement)!=null&&s.closest("details:not([open])"))||a.tagName==="SUMMARY"&&((o=a.parentElement)==null?void 0:o.tagName)==="DETAILS"})}function Wn(e,t,n){let r,a=e.indexOf(document.activeElement);const s=t==="next"?1:-1;do a+=s,r=e[a];while((!r||r.offsetParent==null||!((n==null?void 0:n(r))??!0))&&a=0);return r}function Bn(e,t){var r,a,s,o;const n=Ln(e);if(t==null)(e===document.activeElement||!e.contains(document.activeElement))&&((r=n[0])==null||r.focus());else if(t==="first")(a=n[0])==null||a.focus();else if(t==="last")(s=n.at(-1))==null||s.focus();else if(typeof t=="number")(o=n[t])==null||o.focus();else{const i=Wn(n,t);i?i.focus():Bn(e,t==="next"?"first":"last")}}function ts(e){return e==null||typeof e=="string"&&e.trim()===""}function ns(){}function rs(e,t){if(!(T&&typeof CSS<"u"&&typeof CSS.supports<"u"&&CSS.supports(`selector(${t})`)))return null;try{return!!e&&e.matches(t)}catch{return null}}function Hn(e){return e.some(t=>ln(t)?t.type===fn?!1:t.type!==Ct||Hn(t.children):!0)?e:null}function as(e,t){if(!T||e===0)return t(),()=>{};const n=window.setTimeout(t,e);return()=>window.clearTimeout(n)}function ss(e,t){const n=e.clientX,r=e.clientY,a=t.getBoundingClientRect(),s=a.left,o=a.top,i=a.right,u=a.bottom;return n>=s&&n<=i&&r>=o&&r<=u}function Vn(){const e=F(),t=n=>{e.value=n};return Object.defineProperty(t,"value",{enumerable:!0,get:()=>e.value,set:n=>e.value=n}),Object.defineProperty(t,"el",{enumerable:!0,get:()=>Rt(e.value)}),t}function os(e){const t=e.key.length===1,n=!e.ctrlKey&&!e.metaKey&&!e.altKey;return t&&n}function ve(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"}function is(e){return"\\^$*+?.()|{}[]".includes(e)?`\\${e}`:e}function us(e){const t={};for(const n in e)t[Mt(n)]=e[n];return t}function cs(e){const t=["checked","disabled"];return Object.fromEntries(Object.entries(e).filter(n=>{let[r,a]=n;return t.includes(r)?!!a:a!==void 0}))}const Wt=["top","bottom"],Yn=["start","end","left","right"];function ls(e,t){let[n,r]=e.split(" ");return r||(r=Re(Wt,n)?"start":Re(Yn,n)?"top":"center"),{side:tt(n,t),align:tt(r,t)}}function tt(e,t){return e==="start"?t?"right":"left":e==="end"?t?"left":"right":e}function fs(e){return{side:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.side],align:e.align}}function ds(e){return{side:e.side,align:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.align]}}function ms(e){return{side:e.align,align:e.side}}function gs(e){return Re(Wt,e.side)?"y":"x"}class N{constructor(t){const n=document.body.currentCSSZoom??1,r=t instanceof Element,a=r?1+(1-n)/n:1,{x:s,y:o,width:i,height:u}=r?t.getBoundingClientRect():t;this.x=s*a,this.y=o*a,this.width=i*a,this.height=u*a}get top(){return this.y}get bottom(){return this.y+this.height}get left(){return this.x}get right(){return this.x+this.width}}function hs(e,t){return{x:{before:Math.max(0,t.left-e.left),after:Math.max(0,e.right-t.right)},y:{before:Math.max(0,t.top-e.top),after:Math.max(0,e.bottom-t.bottom)}}}function ps(e){if(Array.isArray(e)){const t=document.body.currentCSSZoom??1,n=1+(1-t)/t;return new N({x:e[0]*n,y:e[1]*n,width:0*n,height:0*n})}else return new N(e)}function ys(e){if(e===document.documentElement)if(visualViewport){const t=document.body.currentCSSZoom??1;return new N({x:visualViewport.scale>1?0:visualViewport.offsetLeft,y:visualViewport.scale>1?0:visualViewport.offsetTop,width:visualViewport.width*visualViewport.scale/t,height:visualViewport.height*visualViewport.scale/t})}else return new N({x:0,y:0,width:document.documentElement.clientWidth,height:document.documentElement.clientHeight});else return new N(e)}function vs(e){const t=new N(e),n=getComputedStyle(e),r=n.transform;if(r){let a,s,o,i,u;if(r.startsWith("matrix3d("))a=r.slice(9,-1).split(/, /),s=Number(a[0]),o=Number(a[5]),i=Number(a[12]),u=Number(a[13]);else if(r.startsWith("matrix("))a=r.slice(7,-1).split(/, /),s=Number(a[0]),o=Number(a[3]),i=Number(a[4]),u=Number(a[5]);else return new N(t);const c=n.transformOrigin,f=t.x-i-(1-s)*parseFloat(c),l=t.y-u-(1-o)*parseFloat(c.slice(c.indexOf(" ")+1)),m=s?t.width/s:e.offsetWidth+1,p=o?t.height/o:e.offsetHeight+1;return new N({x:f,y:l,width:m,height:p})}else return new N(t)}function bs(e,t,n){if(typeof e.animate>"u")return{finished:Promise.resolve()};let r;try{r=e.animate(t,n)}catch{return{finished:Promise.resolve()}}return typeof r.finished>"u"&&(r.finished=new Promise(a=>{r.onfinish=()=>{a(r)}})),r}const ye=new WeakMap;function ws(e,t){Object.keys(t).forEach(n=>{if(Be(n)){const r=Lt(n),a=ye.get(e);if(t[n]==null)a==null||a.forEach(s=>{const[o,i]=s;o===r&&(e.removeEventListener(r,i),a.delete(s))});else if(!a||![...a].some(s=>s[0]===r&&s[1]===t[n])){e.addEventListener(r,t[n]);const s=a||new Set;s.add([r,t[n]]),ye.has(e)||ye.set(e,s)}}else t[n]==null?e.removeAttribute(n):e.setAttribute(n,t[n])})}function Ds(e,t){Object.keys(t).forEach(n=>{if(Be(n)){const r=Lt(n),a=ye.get(e);a==null||a.forEach(s=>{const[o,i]=s;o===r&&(e.removeEventListener(r,i),a.delete(s))})}else e.removeAttribute(n)})}const K=2.4,nt=.2126729,rt=.7151522,at=.072175,jn=.55,zn=.58,Gn=.57,Un=.62,ge=.03,st=1.45,Zn=5e-4,Kn=1.25,_n=1.25,ot=.078,it=12.82051282051282,he=.06,ut=.001;function ct(e,t){const n=(e.r/255)**K,r=(e.g/255)**K,a=(e.b/255)**K,s=(t.r/255)**K,o=(t.g/255)**K,i=(t.b/255)**K;let u=n*nt+r*rt+a*at,c=s*nt+o*rt+i*at;if(u<=ge&&(u+=(ge-u)**st),c<=ge&&(c+=(ge-c)**st),Math.abs(c-u)u){const l=(c**jn-u**zn)*Kn;f=l-ut?0:l>-ot?l-l*it*he:l+he}return f*100}const be=.20689655172413793,Xn=e=>e>be**3?Math.cbrt(e):e/(3*be**2)+4/29,qn=e=>e>be?e**3:3*be**2*(e-4/29);function Bt(e){const t=Xn,n=t(e[1]);return[116*n-16,500*(t(e[0]/.95047)-n),200*(n-t(e[2]/1.08883))]}function Ht(e){const t=qn,n=(e[0]+16)/116;return[t(n+e[1]/500)*.95047,t(n),t(n-e[2]/200)*1.08883]}const Qn=[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]],Jn=e=>e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055,er=[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],tr=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Vt(e){const t=Array(3),n=Jn,r=Qn;for(let a=0;a<3;++a)t[a]=Math.round(He(n(r[a][0]*e[0]+r[a][1]*e[1]+r[a][2]*e[2]))*255);return{r:t[0],g:t[1],b:t[2]}}function Ve(e){let{r:t,g:n,b:r}=e;const a=[0,0,0],s=tr,o=er;t=s(t/255),n=s(n/255),r=s(r/255);for(let i=0;i<3;++i)a[i]=o[i][0]*t+o[i][1]*n+o[i][2]*r;return a}function nr(e){return!!e&&/^(#|var\(--|(rgb|hsl)a?\()/.test(e)}function Ss(e){return nr(e)&&!/^((rgb|hsl)a?\()?var\(--/.test(e)}const lt=/^(?(?:rgb|hsl)a?)\((?.+)\)/,rr={rgb:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),rgba:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),hsl:(e,t,n,r)=>ft({h:e,s:t,l:n,a:r}),hsla:(e,t,n,r)=>ft({h:e,s:t,l:n,a:r}),hsv:(e,t,n,r)=>ae({h:e,s:t,v:n,a:r}),hsva:(e,t,n,r)=>ae({h:e,s:t,v:n,a:r})};function L(e){if(typeof e=="number")return{r:(e&16711680)>>16,g:(e&65280)>>8,b:e&255};if(typeof e=="string"&<.test(e)){const{groups:t}=e.match(lt),{fn:n,values:r}=t,a=r.split(/,\s*|\s*\/\s*|\s+/).map((s,o)=>s.endsWith("%")||o>0&&o<3&&["hsl","hsla","hsv","hsva"].includes(n)?parseFloat(s)/100:parseFloat(s));return rr[n](...a)}else if(typeof e=="string"){let t=e.startsWith("#")?e.slice(1):e;return[3,4].includes(t.length)?t=t.split("").map(n=>n+n).join(""):[6,8].includes(t.length),sr(t)}else if(typeof e=="object"){if(Oe(e,["r","g","b"]))return e;if(Oe(e,["h","s","l"]))return ae(Yt(e));if(Oe(e,["h","s","v"]))return ae(e)}throw new TypeError(`Invalid color: ${e==null?e:String(e)||e.constructor.name} +import{w as ke,t as k,r as R,s as F,F as Ct,i as ln,C as fn,c as Mt,a as Tt,u as ee,g as dn,b as H,d as A,e as S,p as ue,f as mn,h as At,j as re,n as gn,m as hn,k as de,l as pn,o as G,q as We,v as Pe,x as yn,y as vn,z as bn,A as Ot,B as wn,D as Dn,E as Sn,G as xn,H as kn,I as En}from"./vendor-vue-B2vxubPy.js";function Ha(e){}function Cn(e,t){t=Array.isArray(t)?t.slice(0,-1).map(n=>`'${n}'`).join(", ")+` or '${t.at(-1)}'`:`'${t}'`}const T=typeof window<"u",Va=T&&"IntersectionObserver"in window,Mn=T&&("ontouchstart"in window||window.navigator.maxTouchPoints>0),Ft=T&&"matchMedia"in window&&typeof window.matchMedia=="function",Tn=()=>Ft&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;function _e(e,t,n){An(e,t),t.set(e,n)}function An(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Xe(e,t,n){return e.set(It(e,t),n),n}function $(e,t){return e.get(It(e,t))}function It(e,t,n){if(typeof e=="function"?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function Pt(e,t,n){const r=t.length-1;if(r<0)return e===void 0?n:e;for(let a=0;a"u"?n:a}if(typeof t=="string")return $e(e,t,n);if(Array.isArray(t))return Pt(e,t,n);if(typeof t!="function")return n;const r=t(e,n);return typeof r>"u"?n:r}function $t(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return Array.from({length:e},(n,r)=>t+r)}function me(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"px";if(e==null||e==="")return;const n=Number(e);return isNaN(n)?String(e):isFinite(n)?`${n}${t}`:void 0}function ja(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function qe(e){let t;return e!==null&&typeof e=="object"&&((t=Object.getPrototypeOf(e))===Object.prototype||t===null)}function Rt(e){if(e&&"$el"in e){const t=e.$el;return(t==null?void 0:t.nodeType)===Node.TEXT_NODE?t.nextElementSibling:t}return e}const za=Object.freeze({enter:"Enter",tab:"Tab",delete:"Delete",esc:"Escape",space:"Space",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",end:"End",home:"Home",del:"Delete",backspace:"Backspace",insert:"Insert",pageup:"PageUp",pagedown:"PageDown",shift:"Shift"});function Ga(e){return Object.keys(e)}function Oe(e,t){return t.every(n=>e.hasOwnProperty(n))}function On(e,t){const n={};for(const r of t)Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function Qe(e,t,n){const r=Object.create(null),a=Object.create(null);for(const s in e)t.some(o=>o instanceof RegExp?o.test(s):o===s)?r[s]=e[s]:a[s]=e[s];return[r,a]}function Fn(e,t){const n={...e};return t.forEach(r=>delete n[r]),n}const Nt=/^on[^a-z]/,Be=e=>Nt.test(e),In=["onAfterscriptexecute","onAnimationcancel","onAnimationend","onAnimationiteration","onAnimationstart","onAuxclick","onBeforeinput","onBeforescriptexecute","onChange","onClick","onCompositionend","onCompositionstart","onCompositionupdate","onContextmenu","onCopy","onCut","onDblclick","onFocusin","onFocusout","onFullscreenchange","onFullscreenerror","onGesturechange","onGestureend","onGesturestart","onGotpointercapture","onInput","onKeydown","onKeypress","onKeyup","onLostpointercapture","onMousedown","onMousemove","onMouseout","onMouseover","onMouseup","onMousewheel","onPaste","onPointercancel","onPointerdown","onPointerenter","onPointerleave","onPointermove","onPointerout","onPointerover","onPointerup","onReset","onSelect","onSubmit","onTouchcancel","onTouchend","onTouchmove","onTouchstart","onTransitioncancel","onTransitionend","onTransitionrun","onTransitionstart","onWheel"],Pn=["ArrowUp","ArrowDown","ArrowRight","ArrowLeft","Enter","Escape","Tab"," "];function Ua(e){return e.isComposing&&Pn.includes(e.key)}function Za(e){const[t,n]=Qe(e,[Nt]),r=Fn(t,In),[a,s]=Qe(n,["class","style","id","inert",/^data-/]);return Object.assign(a,t),Object.assign(s,r),[a,s]}function Ka(e){return e==null?[]:Array.isArray(e)?e:[e]}function _a(e,t){let n=0;const r=function(){for(var a=arguments.length,s=new Array(a),o=0;oe(...s),ee(t))};return r.clear=()=>{clearTimeout(n)},r.immediate=e,r}function He(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;return Math.max(t,Math.min(n,e))}function Je(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0";return e+n.repeat(Math.max(0,t-e.length))}function et(e,t){return(arguments.length>2&&arguments[2]!==void 0?arguments[2]:"0").repeat(Math.max(0,t-e.length))+e}function $n(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const n=[];let r=0;for(;r1&&arguments[1]!==void 0?arguments[1]:1e3;if(e=t&&r0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const r={};for(const a in e)r[a]=e[a];for(const a in t){const s=e[a],o=t[a];if(qe(s)&&qe(o)){r[a]=C(s,o,n);continue}if(n&&Array.isArray(s)&&Array.isArray(o)){r[a]=n(s,o);continue}r[a]=o}return r}function Rn(e){return e.map(t=>t.type===Ct?Rn(t.children):t).flat()}function j(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"";if(j.cache.has(e))return j.cache.get(e);const t=e.replace(/[^a-z]/gi,"-").replace(/\B([A-Z])/g,"-$1").toLowerCase();return j.cache.set(e,t),t}j.cache=new Map;function te(e,t){if(!t||typeof t!="object")return[];if(Array.isArray(t))return t.map(n=>te(e,n)).flat(1);if(t.suspense)return te(e,t.ssContent);if(Array.isArray(t.children))return t.children.map(n=>te(e,n)).flat(1);if(t.component){if(Object.getOwnPropertyDescriptor(t.component.provides,e))return[t.component];if(t.component.subTree)return te(e,t.component.subTree).flat(1)}return[]}var Z=new WeakMap,V=new WeakMap;class qa{constructor(t){_e(this,Z,[]),_e(this,V,0),this.size=t}get isFull(){return $(Z,this).length===this.size}push(t){$(Z,this)[$(V,this)]=t,Xe(V,this,($(V,this)+1)%this.size)}values(){return $(Z,this).slice($(V,this)).concat($(Z,this).slice(0,$(V,this)))}clear(){$(Z,this).length=0,Xe(V,this,0)}}function Qa(e){const t=R({});ke(()=>{const r=e();for(const a in r)t[a]=r[a]},{flush:"sync"});const n={};for(const r in t)n[r]=k(()=>t[r]);return n}function Re(e,t){return e.includes(t)}function Lt(e){return e[2].toLowerCase()+e.slice(3)}const Ja=()=>[Function,Array];function es(e,t){return t="on"+Tt(t),!!(e[t]||e[`${t}Once`]||e[`${t}Capture`]||e[`${t}OnceCapture`]||e[`${t}CaptureOnce`])}function Nn(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1&&arguments[1]!==void 0?arguments[1]:!0;const n=["button","[href]",'input:not([type="hidden"])',"select","textarea","details:not(:has(> summary))","details > summary","[tabindex]",'[contenteditable]:not([contenteditable="false"])',"audio[controls]","video[controls]"].map(a=>`${a}${t?':not([tabindex="-1"])':""}:not([disabled], [inert])`).join(", ");let r;try{r=[...e.querySelectorAll(n)]}catch{return[]}return r.filter(a=>!a.closest("[inert]")).filter(a=>!!a.offsetParent||a.getClientRects().length>0).filter(a=>{var s,o;return!((s=a.parentElement)!=null&&s.closest("details:not([open])"))||a.tagName==="SUMMARY"&&((o=a.parentElement)==null?void 0:o.tagName)==="DETAILS"})}function Wn(e,t,n){let r,a=e.indexOf(document.activeElement);const s=t==="next"?1:-1;do a+=s,r=e[a];while((!r||r.offsetParent==null||!((n==null?void 0:n(r))??!0))&&a=0);return r}function Bn(e,t){var r,a,s,o;const n=Ln(e);if(t==null)(e===document.activeElement||!e.contains(document.activeElement))&&((r=n[0])==null||r.focus());else if(t==="first")(a=n[0])==null||a.focus();else if(t==="last")(s=n.at(-1))==null||s.focus();else if(typeof t=="number")(o=n[t])==null||o.focus();else{const i=Wn(n,t);i?i.focus():Bn(e,t==="next"?"first":"last")}}function ts(e){return e==null||typeof e=="string"&&e.trim()===""}function ns(){}function rs(e,t){if(!(T&&typeof CSS<"u"&&typeof CSS.supports<"u"&&CSS.supports(`selector(${t})`)))return null;try{return!!e&&e.matches(t)}catch{return null}}function Hn(e){return e.some(t=>ln(t)?t.type===fn?!1:t.type!==Ct||Hn(t.children):!0)?e:null}function as(e,t){if(!T||e===0)return t(),()=>{};const n=window.setTimeout(t,e);return()=>window.clearTimeout(n)}function ss(e,t){const n=e.clientX,r=e.clientY,a=t.getBoundingClientRect(),s=a.left,o=a.top,i=a.right,u=a.bottom;return n>=s&&n<=i&&r>=o&&r<=u}function Vn(){const e=F(),t=n=>{e.value=n};return Object.defineProperty(t,"value",{enumerable:!0,get:()=>e.value,set:n=>e.value=n}),Object.defineProperty(t,"el",{enumerable:!0,get:()=>Rt(e.value)}),t}function os(e){const t=e.key.length===1,n=!e.ctrlKey&&!e.metaKey&&!e.altKey;return t&&n}function ve(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="bigint"}function is(e){return"\\^$*+?.()|{}[]".includes(e)?`\\${e}`:e}function us(e){const t={};for(const n in e)t[Mt(n)]=e[n];return t}function cs(e){const t=["checked","disabled"];return Object.fromEntries(Object.entries(e).filter(n=>{let[r,a]=n;return t.includes(r)?!!a:a!==void 0}))}const Wt=["top","bottom"],Yn=["start","end","left","right"];function ls(e,t){let[n,r]=e.split(" ");return r||(r=Re(Wt,n)?"start":Re(Yn,n)?"top":"center"),{side:tt(n,t),align:tt(r,t)}}function tt(e,t){return e==="start"?t?"right":"left":e==="end"?t?"left":"right":e}function fs(e){return{side:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.side],align:e.align}}function ds(e){return{side:e.side,align:{center:"center",top:"bottom",bottom:"top",left:"right",right:"left"}[e.align]}}function ms(e){return{side:e.align,align:e.side}}function gs(e){return Re(Wt,e.side)?"y":"x"}class N{constructor(t){const n=document.body.currentCSSZoom??1,r=t instanceof Element,a=r?1+(1-n)/n:1,{x:s,y:o,width:i,height:u}=r?t.getBoundingClientRect():t;this.x=s*a,this.y=o*a,this.width=i*a,this.height=u*a}get top(){return this.y}get bottom(){return this.y+this.height}get left(){return this.x}get right(){return this.x+this.width}}function hs(e,t){return{x:{before:Math.max(0,t.left-e.left),after:Math.max(0,e.right-t.right)},y:{before:Math.max(0,t.top-e.top),after:Math.max(0,e.bottom-t.bottom)}}}function ps(e){if(Array.isArray(e)){const t=document.body.currentCSSZoom??1,n=1+(1-t)/t;return new N({x:e[0]*n,y:e[1]*n,width:0*n,height:0*n})}else return new N(e)}function ys(e){if(e===document.documentElement)if(visualViewport){const t=document.body.currentCSSZoom??1;return new N({x:visualViewport.scale>1?0:visualViewport.offsetLeft,y:visualViewport.scale>1?0:visualViewport.offsetTop,width:visualViewport.width*visualViewport.scale/t,height:visualViewport.height*visualViewport.scale/t})}else return new N({x:0,y:0,width:document.documentElement.clientWidth,height:document.documentElement.clientHeight});else return new N(e)}function vs(e){const t=new N(e),n=getComputedStyle(e),r=n.transform;if(r){let a,s,o,i,u;if(r.startsWith("matrix3d("))a=r.slice(9,-1).split(/, /),s=Number(a[0]),o=Number(a[5]),i=Number(a[12]),u=Number(a[13]);else if(r.startsWith("matrix("))a=r.slice(7,-1).split(/, /),s=Number(a[0]),o=Number(a[3]),i=Number(a[4]),u=Number(a[5]);else return new N(t);const c=n.transformOrigin,f=t.x-i-(1-s)*parseFloat(c),l=t.y-u-(1-o)*parseFloat(c.slice(c.indexOf(" ")+1)),m=s?t.width/s:e.offsetWidth+1,p=o?t.height/o:e.offsetHeight+1;return new N({x:f,y:l,width:m,height:p})}else return new N(t)}function bs(e,t,n){if(typeof e.animate>"u")return{finished:Promise.resolve()};let r;try{r=e.animate(t,n)}catch{return{finished:Promise.resolve()}}return typeof r.finished>"u"&&(r.finished=new Promise(a=>{r.onfinish=()=>{a(r)}})),r}const ye=new WeakMap;function ws(e,t){Object.keys(t).forEach(n=>{if(Be(n)){const r=Lt(n),a=ye.get(e);if(t[n]==null)a==null||a.forEach(s=>{const[o,i]=s;o===r&&(e.removeEventListener(r,i),a.delete(s))});else if(!a||![...a].some(s=>s[0]===r&&s[1]===t[n])){e.addEventListener(r,t[n]);const s=a||new Set;s.add([r,t[n]]),ye.has(e)||ye.set(e,s)}}else t[n]==null?e.removeAttribute(n):e.setAttribute(n,t[n])})}function Ds(e,t){Object.keys(t).forEach(n=>{if(Be(n)){const r=Lt(n),a=ye.get(e);a==null||a.forEach(s=>{const[o,i]=s;o===r&&(e.removeEventListener(r,i),a.delete(s))})}else e.removeAttribute(n)})}const K=2.4,nt=.2126729,rt=.7151522,at=.072175,jn=.55,zn=.58,Gn=.57,Un=.62,ge=.03,st=1.45,Zn=5e-4,Kn=1.25,_n=1.25,ot=.078,it=12.82051282051282,he=.06,ut=.001;function ct(e,t){const n=(e.r/255)**K,r=(e.g/255)**K,a=(e.b/255)**K,s=(t.r/255)**K,o=(t.g/255)**K,i=(t.b/255)**K;let u=n*nt+r*rt+a*at,c=s*nt+o*rt+i*at;if(u<=ge&&(u+=(ge-u)**st),c<=ge&&(c+=(ge-c)**st),Math.abs(c-u)u){const l=(c**jn-u**zn)*Kn;f=l-ut?0:l>-ot?l-l*it*he:l+he}return f*100}const be=.20689655172413793,Xn=e=>e>be**3?Math.cbrt(e):e/(3*be**2)+4/29,qn=e=>e>be?e**3:3*be**2*(e-4/29);function Bt(e){const t=Xn,n=t(e[1]);return[116*n-16,500*(t(e[0]/.95047)-n),200*(n-t(e[2]/1.08883))]}function Ht(e){const t=qn,n=(e[0]+16)/116;return[t(n+e[1]/500)*.95047,t(n),t(n-e[2]/200)*1.08883]}const Qn=[[3.2406,-1.5372,-.4986],[-.9689,1.8758,.0415],[.0557,-.204,1.057]],Jn=e=>e<=.0031308?e*12.92:1.055*e**(1/2.4)-.055,er=[[.4124,.3576,.1805],[.2126,.7152,.0722],[.0193,.1192,.9505]],tr=e=>e<=.04045?e/12.92:((e+.055)/1.055)**2.4;function Vt(e){const t=Array(3),n=Jn,r=Qn;for(let a=0;a<3;++a)t[a]=Math.round(He(n(r[a][0]*e[0]+r[a][1]*e[1]+r[a][2]*e[2]))*255);return{r:t[0],g:t[1],b:t[2]}}function Ve(e){let{r:t,g:n,b:r}=e;const a=[0,0,0],s=tr,o=er;t=s(t/255),n=s(n/255),r=s(r/255);for(let i=0;i<3;++i)a[i]=o[i][0]*t+o[i][1]*n+o[i][2]*r;return a}function nr(e){return!!e&&/^(#|var\(--|(rgb|hsl)a?\()/.test(e)}function Ss(e){return nr(e)&&!/^((rgb|hsl)a?\()?var\(--/.test(e)}const lt=/^(?(?:rgb|hsl)a?)\((?.+)\)/,rr={rgb:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),rgba:(e,t,n,r)=>({r:e,g:t,b:n,a:r}),hsl:(e,t,n,r)=>ft({h:e,s:t,l:n,a:r}),hsla:(e,t,n,r)=>ft({h:e,s:t,l:n,a:r}),hsv:(e,t,n,r)=>ae({h:e,s:t,v:n,a:r}),hsva:(e,t,n,r)=>ae({h:e,s:t,v:n,a:r})};function L(e){if(typeof e=="number")return{r:(e&16711680)>>16,g:(e&65280)>>8,b:e&255};if(typeof e=="string"&<.test(e)){const{groups:t}=e.match(lt),{fn:n,values:r}=t,a=r.split(/,\s*|\s*\/\s*|\s+/).map((s,o)=>s.endsWith("%")||o>0&&o<3&&["hsl","hsla","hsv","hsva"].includes(n)?parseFloat(s)/100:parseFloat(s));return rr[n](...a)}else if(typeof e=="string"){let t=e.startsWith("#")?e.slice(1):e;return[3,4].includes(t.length)?t=t.split("").map(n=>n+n).join(""):[6,8].includes(t.length),sr(t)}else if(typeof e=="object"){if(Oe(e,["r","g","b"]))return e;if(Oe(e,["h","s","l"]))return ae(Yt(e));if(Oe(e,["h","s","v"]))return ae(e)}throw new TypeError(`Invalid color: ${e==null?e:String(e)||e.constructor.name} Expected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`)}function ae(e){const{h:t,s:n,v:r,a}=e,s=i=>{const u=(i+t/60)%6;return r-r*n*Math.max(Math.min(u,4-u,1),0)},o=[s(5),s(3),s(1)].map(i=>Math.round(i*255));return{r:o[0],g:o[1],b:o[2],a}}function ft(e){return ae(Yt(e))}function Yt(e){const{h:t,s:n,l:r,a}=e,s=r+n*Math.min(r,1-r),o=s===0?0:2-2*r/s;return{h:t,s:o,v:s,a}}function pe(e){const t=Math.round(e).toString(16);return("00".substr(0,2-t.length)+t).toUpperCase()}function ar(e){let{r:t,g:n,b:r,a}=e;return`#${[pe(t),pe(n),pe(r),a!==void 0?pe(Math.round(a*255)):""].join("")}`}function sr(e){e=or(e);let[t,n,r,a]=$n(e,2).map(s=>parseInt(s,16));return a=a===void 0?a:a/255,{r:t,g:n,b:r,a}}function or(e){return e.startsWith("#")&&(e=e.slice(1)),e=e.replace(/([^0-9a-f])/gi,"F"),(e.length===3||e.length===4)&&(e=e.split("").map(t=>t+t).join("")),e.length!==6&&(e=Je(Je(e,6),8,"F")),e}function ir(e,t){const n=Bt(Ve(e));return n[0]=n[0]+t*10,Vt(Ht(n))}function ur(e,t){const n=Bt(Ve(e));return n[0]=n[0]-t*10,Vt(Ht(n))}function cr(e){const t=L(e);return Ve(t)[1]}function lr(e){const t=Math.abs(ct(L(0),L(e)));return Math.abs(ct(L(16777215),L(e)))>Math.min(t,50)?"#fff":"#000"}function U(e,t){return n=>Object.keys(e).reduce((r,a)=>{const o=typeof e[a]=="object"&&e[a]!=null&&!Array.isArray(e[a])?e[a]:{type:e[a]};return n&&a in n?r[a]={...o,default:n[a]}:r[a]=o,t&&!r[a].source&&(r[a].source=t),r},{})}const fr=U({class:[String,Array,Object],style:{type:[String,Array,Object],default:null}},"component");function W(e,t){const n=dn();if(!n)throw new Error(`[Vuetify] ${e} must be called from inside a setup function`);return n}function dr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"composables";const t=W(e).type;return j((t==null?void 0:t.aliasName)||(t==null?void 0:t.name))}function mr(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:W("injectSelf");const{provides:n}=t;if(n&&e in n)return n[e]}const X=Symbol.for("vuetify:defaults");function gr(e){return H(e)}function Ye(){const e=A(X);if(!e)throw new Error("[Vuetify] Could not find defaults instance");return e}function xs(e,t){const n=Ye(),r=H(e),a=S(()=>{if(ee(t==null?void 0:t.disabled))return n.value;const o=ee(t==null?void 0:t.scoped),i=ee(t==null?void 0:t.reset),u=ee(t==null?void 0:t.root);if(r.value==null&&!(o||i||u))return n.value;let c=C(r.value,{prev:n.value});if(o)return c;if(i||u){const f=Number(i||1/0);for(let l=0;l<=f&&!(!c||!("prev"in c));l++)c=c.prev;return c&&typeof u=="string"&&u in c&&(c=C(C(c,{prev:c}),c[u])),c}return c.prev?C(c.prev,c):c});return ue(X,a),a}function hr(e,t){return e.props&&(typeof e.props[t]<"u"||typeof e.props[j(t)]<"u")}function pr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ye();const r=W("useDefaults");if(t=t??r.type.name??r.type.__name,!t)throw new Error("[Vuetify] Could not determine component name");const a=S(()=>{var u;return(u=n.value)==null?void 0:u[e._as??t]}),s=new Proxy(e,{get(u,c){var p,y,E,M;const f=Reflect.get(u,c);if(c==="class"||c==="style")return[(p=a.value)==null?void 0:p[c],f].filter(d=>d!=null);if(hr(r.vnode,c))return f;const l=(y=a.value)==null?void 0:y[c];if(l!==void 0)return l;const m=(M=(E=n.value)==null?void 0:E.global)==null?void 0:M[c];return m!==void 0?m:f}}),o=F();ke(()=>{if(a.value){const u=Object.entries(a.value).filter(c=>{let[f]=c;return f.startsWith(f[0].toUpperCase())});o.value=u.length?Object.fromEntries(u):void 0}else o.value=void 0});function i(){const u=mr(X,r);ue(X,S(()=>o.value?C((u==null?void 0:u.value)??{},o.value):u==null?void 0:u.value))}return{props:s,provideSubDefaults:i}}function ce(e){if(e._setup=e._setup??e.setup,!e.name)return e;if(e._setup){e.props=U(e.props??{},e.name)();const t=Object.keys(e.props).filter(n=>n!=="class"&&n!=="style");e.filterProps=function(r){return On(r,t)},e.props._as=String,e.setup=function(r,a){const s=Ye();if(!s.value)return e._setup(r,a);const{props:o,provideSubDefaults:i}=pr(r,r._as??e.name,s),u=e._setup(o,a);return i(),u}}return e}function jt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;return t=>(e?ce:mn)(t)}function ks(e,t){return t.props=e,t}function Es(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"div",n=arguments.length>2?arguments[2]:void 0;return jt()({name:n??Tt(Mt(e.replace(/__/g,"-"))),props:{tag:{type:String,default:t},...fr()},setup(r,a){let{slots:s}=a;return()=>{var o;return At(r.tag,{class:[e,r.class],style:r.style},(o=s.default)==null?void 0:o.call(s))}}})}function yr(e,t,n,r){if(!n||ve(e)||ve(t))return;const a=n.get(e);if(a)a.set(t,r);else{const s=new WeakMap;s.set(t,r),n.set(e,s)}}function vr(e,t,n){var s,o;if(!n||ve(e)||ve(t))return null;const r=(s=n.get(e))==null?void 0:s.get(t);if(typeof r=="boolean")return r;const a=(o=n.get(t))==null?void 0:o.get(e);return typeof a=="boolean"?a:null}function br(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:new WeakMap;if(e===t)return!0;if(e instanceof Date&&t instanceof Date&&e.getTime()!==t.getTime()||e!==Object(e)||t!==Object(t))return!1;const r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;const a=vr(e,t,n);return a||(yr(e,t,n,!0),r.every(s=>br(e[s],t[s],n)))}function Cs(e){if(typeof e.getRootNode!="function"){for(;e.parentNode;)e=e.parentNode;return e!==document?null:document}const t=e.getRootNode();return t!==document&&t.getRootNode({composed:!0})!==document?null:t}const Ms="cubic-bezier(0.4, 0, 0.2, 1)",Ts="cubic-bezier(0.0, 0, 0.2, 1)",As="cubic-bezier(0.4, 0, 1, 1)",wr={linear:e=>e,easeInQuad:e=>e**2,easeOutQuad:e=>e*(2-e),easeInOutQuad:e=>e<.5?2*e**2:-1+(4-2*e)*e,easeInCubic:e=>e**3,easeOutCubic:e=>--e**3+1,easeInOutCubic:e=>e<.5?4*e**3:(e-1)*(2*e-2)*(2*e-2)+1,easeInQuart:e=>e**4,easeOutQuart:e=>1- --e**4,easeInOutQuart:e=>e<.5?8*e**4:1-8*--e**4,easeInQuint:e=>e**5,easeOutQuint:e=>1+--e**5,easeInOutQuint:e=>e<.5?16*e**5:1+16*--e**5,instant:e=>1};function Os(e,t,n){return Object.keys(e).filter(r=>Be(r)&&r.endsWith(t)).reduce((r,a)=>(r[a.slice(0,-t.length)]=s=>Nn(e[a],s,n(s)),r),{})}function Fs(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;for(;e;){if(t?Dr(e):zt(e))return e;e=e.parentElement}return document.scrollingElement}function Is(e,t){const n=[];if(t&&e&&!t.contains(e))return n;for(;e&&(zt(e)&&n.push(e),e!==t);)e=e.parentElement;return n}function zt(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e),n=t.overflowY==="scroll"||t.overflowY==="auto"&&e.scrollHeight>e.clientHeight,r=t.overflowX==="scroll"||t.overflowX==="auto"&&e.scrollWidth>e.clientWidth;return n||r}function Dr(e){if(!e||e.nodeType!==Node.ELEMENT_NODE)return!1;const t=window.getComputedStyle(e);return["scroll","auto"].includes(t.overflowY)}function Ps(e){for(;e;){if(window.getComputedStyle(e).position==="fixed")return!0;e=e.offsetParent}return!1}function $s(e){const t=W("useRender");t.render=e}function Rs(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{leading:!0,trailing:!0},r=0,a=0,s=!1,o=0;function i(){clearTimeout(r),s=!1,o=0}const u=function(){for(var c=arguments.length,f=new Array(c),l=0;l=t?y():n.trailing&&(r=setTimeout(y,t-p)):(s=!0,n.leading&&y())};return u.clear=i,u.immediate=e,u}const Sr=[String,Function,Object,Array],Ne=Symbol.for("vuetify:icons"),Ee=U({icon:{type:Sr},tag:{type:[String,Object,Function],required:!0}},"icon"),dt=jt()({name:"VComponentIcon",props:Ee(),setup(e,t){let{slots:n}=t;return()=>{const r=e.icon;return re(e.tag,null,{default:()=>{var a;return[e.icon?re(r,null,null):(a=n.default)==null?void 0:a.call(n)]}})}}}),Gt=ce({name:"VSvgIcon",inheritAttrs:!1,props:Ee(),setup(e,t){let{attrs:n}=t;return()=>re(e.tag,hn(n,{style:null}),{default:()=>[de("svg",{class:"v-icon__svg",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",role:"img","aria-hidden":"true"},[Array.isArray(e.icon)?e.icon.map(r=>Array.isArray(r)?de("path",{d:r[0],"fill-opacity":r[1]},null):de("path",{d:r},null)):de("path",{d:e.icon},null)])]})}});ce({name:"VLigatureIcon",props:Ee(),setup(e){return()=>re(e.tag,null,{default:()=>[e.icon]})}});const Ut=ce({name:"VClassIcon",props:Ee(),setup(e){return()=>re(e.tag,{class:gn(e.icon)},null)}}),Ns=e=>{const t=A(Ne);if(!t)throw new Error("Missing Vuetify Icons provide!");return{iconData:S(()=>{var u;const r=pn(e);if(!r)return{component:dt};let a=r;if(typeof a=="string"&&(a=a.trim(),a.startsWith("$")&&(a=(u=t.aliases)==null?void 0:u[a.slice(1)])),Array.isArray(a))return{component:Gt,icon:a};if(typeof a!="string")return{component:dt,icon:a};const s=Object.keys(t.sets).find(c=>typeof a=="string"&&a.startsWith(`${c}:`)),o=s?a.slice(s.length+1):a;return{component:t.sets[s??t.defaultSet].component,icon:o}})}},xr={collapse:"mdi-chevron-up",complete:"mdi-check",cancel:"mdi-close-circle",close:"mdi-close",delete:"mdi-close-circle",clear:"mdi-close-circle",success:"mdi-check-circle",info:"mdi-information",warning:"mdi-alert-circle",error:"mdi-close-circle",prev:"mdi-chevron-left",next:"mdi-chevron-right",checkboxOn:"mdi-checkbox-marked",checkboxOff:"mdi-checkbox-blank-outline",checkboxIndeterminate:"mdi-minus-box",delimiter:"mdi-circle",sortAsc:"mdi-arrow-up",sortDesc:"mdi-arrow-down",expand:"mdi-chevron-down",menu:"mdi-menu",subgroup:"mdi-menu-down",dropdown:"mdi-menu-down",radioOn:"mdi-radiobox-marked",radioOff:"mdi-radiobox-blank",edit:"mdi-pencil",ratingEmpty:"mdi-star-outline",ratingFull:"mdi-star",ratingHalf:"mdi-star-half-full",loading:"mdi-cached",first:"mdi-page-first",last:"mdi-page-last",unfold:"mdi-unfold-more-horizontal",file:"mdi-paperclip",plus:"mdi-plus",minus:"mdi-minus",calendar:"mdi-calendar",treeviewCollapse:"mdi-menu-down",treeviewExpand:"mdi-menu-right",tableGroupCollapse:"mdi-chevron-down",tableGroupExpand:"mdi-chevron-right",eyeDropper:"mdi-eyedropper",upload:"mdi-cloud-upload",color:"mdi-palette",command:"mdi-apple-keyboard-command",ctrl:"mdi-apple-keyboard-control",space:"mdi-keyboard-space",shift:"mdi-apple-keyboard-shift",alt:"mdi-apple-keyboard-option",enter:"mdi-keyboard-return",arrowup:"mdi-arrow-up",arrowdown:"mdi-arrow-down",arrowleft:"mdi-arrow-left",arrowright:"mdi-arrow-right",backspace:"mdi-backspace",play:"mdi-play",pause:"mdi-pause",fullscreen:"mdi-fullscreen",fullscreenExit:"mdi-fullscreen-exit",volumeHigh:"mdi-volume-high",volumeMedium:"mdi-volume-medium",volumeLow:"mdi-volume-low",volumeOff:"mdi-volume-variant-off",search:"mdi-magnify"},kr={component:e=>At(Ut,{...e,class:"mdi"})};function Er(){return{svg:{component:Gt},class:{component:Ut}}}function Cr(e){const t=Er(),n=(e==null?void 0:e.defaultSet)??"mdi";return n==="mdi"&&!t.mdi&&(t.mdi=kr),C({defaultSet:n,sets:t,aliases:{...xr,vuetify:["M8.2241 14.2009L12 21L22 3H14.4459L8.2241 14.2009Z",["M7.26303 12.4733L7.00113 12L2 3H12.5261C12.5261 3 12.5261 3 12.5261 3L7.26303 12.4733Z",.6]],"vuetify-outline":"svg:M7.26 12.47 12.53 3H2L7.26 12.47ZM14.45 3 8.22 14.2 12 21 22 3H14.45ZM18.6 5 12 16.88 10.51 14.2 15.62 5ZM7.26 8.35 5.4 5H9.13L7.26 8.35Z","vuetify-play":["m6.376 13.184-4.11-7.192C1.505 4.66 2.467 3 4.003 3h8.532l-.953 1.576-.006.01-.396.677c-.429.732-.214 1.507.194 2.015.404.503 1.092.878 1.869.806a3.72 3.72 0 0 1 1.005.022c.276.053.434.143.523.237.138.146.38.635-.25 2.09-.893 1.63-1.553 1.722-1.847 1.677-.213-.033-.468-.158-.756-.406a4.95 4.95 0 0 1-.8-.927c-.39-.564-1.04-.84-1.66-.846-.625-.006-1.316.27-1.693.921l-.478.826-.911 1.506Z",["M9.093 11.552c.046-.079.144-.15.32-.148a.53.53 0 0 1 .43.207c.285.414.636.847 1.046 1.2.405.35.914.662 1.516.754 1.334.205 2.502-.698 3.48-2.495l.014-.028.013-.03c.687-1.574.774-2.852-.005-3.675-.37-.391-.861-.586-1.333-.676a5.243 5.243 0 0 0-1.447-.044c-.173.016-.393-.073-.54-.257-.145-.18-.127-.316-.082-.392l.393-.672L14.287 3h5.71c1.536 0 2.499 1.659 1.737 2.992l-7.997 13.996c-.768 1.344-2.706 1.344-3.473 0l-3.037-5.314 1.377-2.278.004-.006.004-.007.481-.831Z",.6]]}},e)}function Mr(e,t){let n;function r(){n=Pe(),n.run(()=>t.length?t(()=>{n==null||n.stop(),r()}):t())}G(e,a=>{a&&!n?r():a||(n==null||n.stop(),n=void 0)},{immediate:!0}),We(()=>{n==null||n.stop()})}function Tr(e,t,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:l=>l,a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:l=>l;const s=W("useProxiedModel"),o=H(e[t]!==void 0?e[t]:n),i=j(t),c=i!==t?S(()=>{var l,m,p,y;return e[t],!!(((l=s.vnode.props)!=null&&l.hasOwnProperty(t)||(m=s.vnode.props)!=null&&m.hasOwnProperty(i))&&((p=s.vnode.props)!=null&&p.hasOwnProperty(`onUpdate:${t}`)||(y=s.vnode.props)!=null&&y.hasOwnProperty(`onUpdate:${i}`)))}):S(()=>{var l,m;return e[t],!!((l=s.vnode.props)!=null&&l.hasOwnProperty(t)&&((m=s.vnode.props)!=null&&m.hasOwnProperty(`onUpdate:${t}`)))});Mr(()=>!c.value,()=>{G(()=>e[t],l=>{o.value=l})});const f=S({get(){const l=e[t];return r(c.value?l:o.value)},set(l){const m=a(l),p=yn(c.value?e[t]:o.value);p===m||r(p)===l||(o.value=m,s==null||s.emit(`update:${t}`,m))}});return Object.defineProperty(f,"externalValue",{get:()=>c.value?e[t]:o.value}),f}const Ar={badge:"Badge",open:"Open",close:"Close",dismiss:"Dismiss",confirmEdit:{ok:"OK",cancel:"Cancel"},dataIterator:{noResultsText:"No matching records found",loadingText:"Loading items..."},dataTable:{itemsPerPageText:"Rows per page:",ariaLabel:{sortDescending:"Sorted descending.",sortAscending:"Sorted ascending.",sortNone:"Not sorted.",activateNone:"Activate to remove sorting.",activateDescending:"Activate to sort descending.",activateAscending:"Activate to sort ascending."},sortBy:"Sort by"},dataFooter:{itemsPerPageText:"Items per page:",itemsPerPageAll:"All",nextPage:"Next page",prevPage:"Previous page",firstPage:"First page",lastPage:"Last page",pageText:"{0}-{1} of {2}"},dateRangeInput:{divider:"to"},datePicker:{itemsSelected:"{0} selected",range:{title:"Select dates",header:"Enter dates"},title:"Select date",header:"Enter date",input:{placeholder:"Enter date"},ariaLabel:{previousMonth:"Previous month",nextMonth:"Next month",selectYear:"Select year",previousYear:"Previous year",nextYear:"Next year",selectMonth:"Select month",selectDate:"{0}",currentDate:"Today, {0}"}},noDataText:"No data available",carousel:{prev:"Previous visual",next:"Next visual",ariaLabel:{delimiter:"Carousel slide {0} of {1}"}},calendar:{moreEvents:"{0} more",today:"Today"},input:{clear:"Clear {0}",prependAction:"{0} prepended action",appendAction:"{0} appended action",otp:"Please enter OTP character {0}"},fileInput:{counter:"{0} files",counterSize:"{0} files ({1} in total)"},fileUpload:{title:"Drag and drop files here",divider:"or",browse:"Browse Files"},timePicker:{am:"AM",pm:"PM",title:"Select Time",hour:"Hour",minute:"Minute",second:"Second",notAllowed:"Value is not allowed"},pagination:{ariaLabel:{root:"Pagination Navigation",next:"Next page",previous:"Previous page",page:"Go to page {0}",currentPage:"Page {0}, Current page",first:"First page",last:"Last page"}},stepper:{next:"Next",prev:"Previous"},rating:{ariaLabel:{item:"Rating {0} of {1}"}},loading:"Loading...",infiniteScroll:{loadMore:"Load more",empty:"No more"},rules:{required:"This field is required",email:"Please enter a valid email",number:"This field can only contain numbers",integer:"This field can only contain integer values",capital:"This field can only contain uppercase letters",maxLength:"You must enter a maximum of {0} characters",minLength:"You must enter a minimum of {0} characters",strictLength:"The length of the entered field is invalid",exclude:"The {0} character is not allowed",notEmpty:"Please choose at least one value",pattern:"Invalid format"},command:{search:"Type a command or search..."},hotkey:{then:"then",ctrl:"Ctrl",command:"Command",space:"Space",shift:"Shift",alt:"Alt",enter:"Enter",escape:"Escape",upArrow:"Up Arrow",downArrow:"Down Arrow",leftArrow:"Left Arrow",rightArrow:"Right Arrow",backspace:"Backspace",option:"Option",plus:"plus",shortcut:"Keyboard shortcut: {0}",or:"or"},video:{play:"Play",pause:"Pause",seek:"Seek",volume:"Volume",showVolume:"Show volume control",mute:"Mute",unmute:"Unmute",enterFullscreen:"Full screen",exitFullscreen:"Exit full screen"},colorPicker:{ariaLabel:{eyedropper:"Select color with eyedropper",hueSlider:"Hue",alphaSlider:"Alpha",redInput:"Red value",greenInput:"Green value",blueInput:"Blue value",alphaInput:"Alpha value",hueInput:"Hue value",saturationInput:"Saturation value",lightnessInput:"Lightness value",hexInput:"HEX value",hexaInput:"HEX with alpha value",changeFormat:"Change color format"}}},mt="$vuetify.",gt=(e,t)=>e.replace(/\{(\d+)\}/g,(n,r)=>String(t[Number(r)])),Zt=(e,t,n)=>function(r){for(var a=arguments.length,s=new Array(a>1?a-1:0),o=1;onew Intl.NumberFormat([e.value,t.value],r).format(n)}function Kt(e,t){return je(e,t)(.1).includes(",")?",":"."}function Fe(e,t,n){const r=Tr(e,t,e[t]??n.value);return r.value=e[t]??n.value,G(n,a=>{e[t]==null&&(r.value=n.value)}),r}function _t(e){return t=>{const n=Fe(t,"locale",e.current),r=Fe(t,"fallback",e.fallback),a=Fe(t,"messages",e.messages);return{name:"vuetify",current:n,fallback:r,messages:a,decimalSeparator:k(()=>Kt(n,r)),t:Zt(n,r,a),n:je(n,r),provide:_t({current:n,fallback:r,messages:a})}}}function Or(e){const t=F((e==null?void 0:e.locale)??"en"),n=F((e==null?void 0:e.fallback)??"en"),r=H({en:Ar,...e==null?void 0:e.messages});return{name:"vuetify",current:t,fallback:n,messages:r,decimalSeparator:k(()=>(e==null?void 0:e.decimalSeparator)??Kt(t,n)),t:Zt(t,n,r),n:je(t,n),provide:_t({current:t,fallback:n,messages:r})}}const we=Symbol.for("vuetify:locale");function Fr(e){return e.name!=null}function Ir(e){const t=e!=null&&e.adapter&&Fr(e==null?void 0:e.adapter)?e==null?void 0:e.adapter:Or(e),n=Rr(t,e);return{...t,...n}}function Pr(){const e=A(we);if(!e)throw new Error("[Vuetify] Could not find injected locale instance");return e}function $r(){return{af:!1,ar:!0,bg:!1,ca:!1,ckb:!1,cs:!1,de:!1,el:!1,en:!1,es:!1,et:!1,fa:!0,fi:!1,fr:!1,hr:!1,hu:!1,he:!0,id:!1,it:!1,ja:!1,km:!1,ko:!1,lv:!1,lt:!1,nl:!1,no:!1,pl:!1,pt:!1,ro:!1,ru:!1,sk:!1,sl:!1,srCyrl:!1,srLatn:!1,sv:!1,th:!1,tr:!1,az:!1,uk:!1,vi:!1,zhHans:!1,zhHant:!1}}function Rr(e,t){const n=H((t==null?void 0:t.rtl)??$r()),r=S(()=>n.value[e.current.value]??!1);return{isRtl:r,rtl:n,rtlClasses:k(()=>`v-locale--is-${r.value?"rtl":"ltr"}`)}}function Nr(){const e=A(we);if(!e)throw new Error("[Vuetify] Could not find injected rtl instance");return{isRtl:e.isRtl,rtlClasses:e.rtlClasses}}function le(e){const t=e.slice(-2).toUpperCase();switch(!0){case e==="GB-alt-variant":return{firstDay:0,firstWeekSize:4};case e==="001":return{firstDay:1,firstWeekSize:1};case`AG AS BD BR BS BT BW BZ CA CO DM DO ET GT GU HK HN ID IL IN JM JP KE KH KR LA MH MM MO MT MX MZ NI NP PA PE PH PK PR PY SA SG SV TH TT TW UM US VE VI WS YE ZA ZW`.includes(t):return{firstDay:0,firstWeekSize:1};case`AI AL AM AR AU AZ BA BM BN BY CL CM CN CR CY EC GE HR KG KZ LB LK LV @@ -12,4 +12,4 @@ Expected #hex, #hexa, rgb(), rgba(), hsl(), hsla(), object or number`)}function `,...w.map(v=>` ${v}`),`} `):d.push(...b,...w)}let O=d.map((b,w)=>w===0?b:` ${b}`).join("");return t.layers&&(O=`@layer vuetify.theme { `+d.map(b=>` ${b}`).join("")+` -}`),O}),f=k(()=>t.isDisabled?void 0:`${t.prefix}theme--${s.value}`),l=k(()=>Object.keys(o.value));if(Ft){let h=function(){a.value=d.matches?"dark":"light"};const d=window.matchMedia("(prefers-color-scheme: dark)");h(),d.addEventListener("change",h,{passive:!0}),bn()&&We(()=>{d.removeEventListener("change",h)})}function m(d){if(t.isDisabled)return;const h=d._context.provides.usehead;if(h){let g=function(){return{style:[{textContent:c.value,id:t.stylesheetId,nonce:t.cspNonce||!1}]}};if(h.push){const O=h.push(g);T&&G(c,()=>{O.patch(g)})}else T?(h.addHeadObjs(k(g)),ke(()=>h.updateDOM())):h.addHeadObjs(g())}else{let g=function(){Fa(t.stylesheetId,t.cspNonce,c.value)};T?G(c,g,{immediate:!0}):g()}}function p(d){d!=="system"&&!l.value.includes(d)||(s.value=d)}function y(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:l.value;const h=d.indexOf(s.value),g=h===-1?0:(h+1)%d.length;p(d[g])}function E(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["light","dark"];y(d)}const M=new Proxy(s,{get(d,h){return Reflect.get(d,h)},set(d,h,g){return h==="value"&&Cn(`theme.global.name.value = ${g}`,`theme.change('${g}')`),Reflect.set(d,h,g)}});return{install:m,change:p,cycle:y,toggle:E,isDisabled:t.isDisabled,isSystem:u,name:s,themes:r,current:i,computedThemes:o,prefix:t.prefix,themeClasses:f,styles:c,global:{name:M,current:i}}}function zs(e){W("provideTheme");const t=A(ie,null);if(!t)throw new Error("Could not find Vuetify theme injection");const n=k(()=>e.theme??t.name.value),r=k(()=>t.themes.value[n.value]),a=k(()=>t.isDisabled?void 0:`${t.prefix}theme--${n.value}`),s={...t,name:n,current:r,themeClasses:a};return ue(ie,s),s}function Gs(){W("useTheme");const e=A(ie,null);if(!e)throw new Error("Could not find Vuetify theme injection");return e}function $a(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const n=Vn(),r=H();if(T){const a=new ResizeObserver(s=>{e==null||e(s,a),s.length&&(t==="content"?r.value=s[0].contentRect:r.value=s[0].target.getBoundingClientRect())});Ot(()=>{a.disconnect()}),G(()=>n.el,(s,o)=>{o&&(a.unobserve(o),r.value=void 0),s&&a.observe(s)},{flush:"post"})}return{resizeRef:n,contentRect:wn(r)}}const xe=Symbol.for("vuetify:layout"),rn=Symbol.for("vuetify:layout-item"),Et=1e3,Us=U({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),Zs=U({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function Ks(){const e=A(xe);if(!e)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:e.getLayoutItem,mainRect:e.mainRect,mainStyles:e.mainStyles}}function _s(e){const t=A(xe);if(!t)throw new Error("[Vuetify] Could not find injected layout");const n=e.id??`layout-item-${Sn()}`,r=W("useLayoutItem");ue(rn,{id:n});const a=F(!1);xn(()=>a.value=!0),kn(()=>a.value=!1);const{layoutItemStyles:s,layoutItemScrimStyles:o}=t.register(r,{...e,active:S(()=>a.value?!1:e.active.value),id:n});return Ot(()=>t.unregister(n)),{layoutItemStyles:s,layoutRect:t.layoutRect,layoutItemScrimStyles:o}}const Ra=(e,t,n,r)=>{let a={top:0,left:0,right:0,bottom:0};const s=[{id:"",layer:{...a}}];for(const o of e){const i=t.get(o),u=n.get(o),c=r.get(o);if(!i||!u||!c)continue;const f={...a,[i.value]:parseInt(a[i.value],10)+(c.value?parseInt(u.value,10):0)};s.push({id:o,layer:f}),a=f}return s};function Xs(e){const t=A(xe,null),n=S(()=>t?t.rootZIndex.value-100:Et),r=H([]),a=R(new Map),s=R(new Map),o=R(new Map),i=R(new Map),u=R(new Map),{resizeRef:c,contentRect:f}=$a(),l=S(()=>{const b=new Map,w=e.overlaps??[];for(const D of w.filter(v=>v.includes(":"))){const[v,x]=D.split(":");if(!r.value.includes(v)||!r.value.includes(x))continue;const I=a.get(v),B=a.get(x),q=s.get(v),Q=s.get(x);!I||!B||!q||!Q||(b.set(x,{position:I.value,amount:parseInt(q.value,10)}),b.set(v,{position:B.value,amount:-parseInt(Q.value,10)}))}return b}),m=S(()=>{const b=[...new Set([...o.values()].map(D=>D.value))].sort((D,v)=>D-v),w=[];for(const D of b){const v=r.value.filter(x=>{var I;return((I=o.get(x))==null?void 0:I.value)===D});w.push(...v)}return Ra(w,a,s,i)}),p=S(()=>!Array.from(u.values()).some(b=>b.value)),y=S(()=>m.value[m.value.length-1].layer),E=k(()=>({"--v-layout-left":me(y.value.left),"--v-layout-right":me(y.value.right),"--v-layout-top":me(y.value.top),"--v-layout-bottom":me(y.value.bottom),...p.value?void 0:{transition:"none"}})),M=S(()=>m.value.slice(1).map((b,w)=>{let{id:D}=b;const{layer:v}=m.value[w],x=s.get(D),I=a.get(D);return{id:D,...v,size:Number(x.value),position:I.value}})),d=b=>M.value.find(w=>w.id===b),h=W("createLayout"),g=F(!1);Dn(()=>{g.value=!0}),ue(xe,{register:(b,w)=>{let{id:D,order:v,position:x,layoutSize:I,elementSize:B,active:q,disableTransitions:Q,absolute:an}=w;o.set(D,v),a.set(D,x),s.set(D,I),i.set(D,q),Q&&u.set(D,Q);const Ue=te(rn,h==null?void 0:h.vnode).indexOf(b);Ue>-1?r.value.splice(Ue,0,D):r.value.push(D);const Ze=S(()=>M.value.findIndex(J=>J.id===D)),Ce=S(()=>n.value+m.value.length*2-Ze.value*2),sn=S(()=>{const J=x.value==="left"||x.value==="right",Me=x.value==="right",un=x.value==="bottom",Te=B.value??I.value,cn=Te===0?"%":"px",Ke={[x.value]:0,zIndex:Ce.value,transform:`translate${J?"X":"Y"}(${(q.value?0:-(Te===0?100:Te))*(Me||un?-1:1)}${cn})`,position:an.value||n.value!==Et?"absolute":"fixed",...p.value?void 0:{transition:"none"}};if(!g.value)return Ke;const P=M.value[Ze.value],Ae=l.value.get(D);return Ae&&(P[Ae.position]+=Ae.amount),{...Ke,height:J?`calc(100% - ${P.top}px - ${P.bottom}px)`:B.value?`${B.value}px`:void 0,left:Me?void 0:`${P.left}px`,right:Me?`${P.right}px`:void 0,top:x.value!=="bottom"?`${P.top}px`:void 0,bottom:x.value!=="top"?`${P.bottom}px`:void 0,width:J?B.value?`${B.value}px`:void 0:`calc(100% - ${P.left}px - ${P.right}px)`}}),on=S(()=>({zIndex:Ce.value-1}));return{layoutItemStyles:sn,layoutItemScrimStyles:on,zIndex:Ce}},unregister:b=>{o.delete(b),a.delete(b),s.delete(b),i.delete(b),u.delete(b),r.value=r.value.filter(w=>w!==b)},mainRect:y,mainStyles:E,getLayoutItem:d,items:M,layoutRect:f,rootZIndex:n});const O=k(()=>["v-layout",{"v-layout--full-height":e.fullHeight}]),fe=k(()=>({zIndex:t?n.value:void 0,position:t?"relative":void 0,overflow:t?"hidden":void 0}));return{layoutClasses:O,layoutStyles:fe,getLayoutItem:d,items:M,layoutRect:f,layoutRef:c}}function Na(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:t,...n}=e,r=C(t,n),{aliases:a={},components:s={},directives:o={}}=r,i=Pe();return i.run(()=>{const u=gr(r.defaults),c=Sa(r.display,r.ssr),f=Pa(r.theme),l=Cr(r.icons),m=Ir(r.locale),p=ba(r.date,m),y=ka(r.goTo,m);function E(d){for(const g in o)d.directive(g,o[g]);for(const g in s)d.component(g,s[g]);for(const g in a)d.component(g,ce({...a[g],name:g,aliasName:a[g].name}));const h=Pe();if(h.run(()=>{f.install(d)}),d.onUnmount(()=>h.stop()),d.provide(X,u),d.provide(Le,c),d.provide(ie,f),d.provide(Ne,l),d.provide(we,m),d.provide(Jt,p.options),d.provide(yt,p.instance),d.provide(tn,y),T&&r.ssr)if(d.$nuxt)d.$nuxt.hook("app:suspense:resolve",()=>{c.update()});else{const{mount:g}=d;d.mount=function(){const O=g(...arguments);return En(()=>c.update()),d.mount=g,O}}d.mixin({computed:{$vuetify(){return R({defaults:_.call(this,X),display:_.call(this,Le),theme:_.call(this,ie),icons:_.call(this,Ne),locale:_.call(this,we),date:_.call(this,yt)})}}})}function M(){i.stop()}return{install:E,unmount:M,defaults:u,display:c,theme:f,icons:l,locale:m,date:p,goTo:y}})}const La="3.12.1";Na.version=La;function _(e){var r,a;const t=this.$,n=((r=t.parent)==null?void 0:r.provides)??((a=t.vnode.appContext)==null?void 0:a.provides);if(n&&e in n)return n[e]}export{Ln as $,Nr as A,ls as B,Mr as C,es as D,T as E,ja as F,Ps as G,qa as H,Sr as I,N as J,ps as K,Is as L,ys as M,gs as N,hs as O,Tn as P,ds as Q,fs as R,Va as S,vs as T,ms as U,zt as V,as as W,Vn as X,ws as Y,Ds as Z,rs as _,Ss as a,Vs as a0,cs as a1,Cs as a2,Fs as a3,bs as a4,Fn as a5,Ms as a6,Ks as a7,Rt as a8,xe as a9,Bs as aA,Ys as aB,tt as aC,ns as aD,Hn as aE,os as aF,Ua as aG,is as aH,za as aI,$t as aJ,Qe as aK,Ft as aL,_a as aM,us as aN,Wn as aO,ss as aP,Ws as aQ,Ls as aR,wa as aS,Es as aa,As as ab,Ts as ac,Rs as ad,ce as ae,Cn as af,Ja as ag,ve as ah,Ya as ai,On as aj,Bn as ak,Xs as al,Us as am,Pr as an,Za as ao,Nn as ap,Xa as aq,ks as ar,Ha as as,$e as at,ts as au,Hs as av,Os as aw,Ga as ax,_s as ay,Zs as az,L as b,Na as c,Qa as d,lr as e,jt as f,dr as g,zs as h,nr as i,xs as j,fr as k,W as l,js as m,Tr as n,br as o,U as p,te as q,Re as r,me as s,Gs as t,$s as u,Ns as v,Ka as w,Rn as x,$a as y,He as z}; +}`),O}),f=k(()=>t.isDisabled?void 0:`${t.prefix}theme--${s.value}`),l=k(()=>Object.keys(o.value));if(Ft){let h=function(){a.value=d.matches?"dark":"light"};const d=window.matchMedia("(prefers-color-scheme: dark)");h(),d.addEventListener("change",h,{passive:!0}),bn()&&We(()=>{d.removeEventListener("change",h)})}function m(d){if(t.isDisabled)return;const h=d._context.provides.usehead;if(h){let g=function(){return{style:[{textContent:c.value,id:t.stylesheetId,nonce:t.cspNonce||!1}]}};if(h.push){const O=h.push(g);T&&G(c,()=>{O.patch(g)})}else T?(h.addHeadObjs(k(g)),ke(()=>h.updateDOM())):h.addHeadObjs(g())}else{let g=function(){Fa(t.stylesheetId,t.cspNonce,c.value)};T?G(c,g,{immediate:!0}):g()}}function p(d){d!=="system"&&!l.value.includes(d)||(s.value=d)}function y(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:l.value;const h=d.indexOf(s.value),g=h===-1?0:(h+1)%d.length;p(d[g])}function E(){let d=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["light","dark"];y(d)}const M=new Proxy(s,{get(d,h){return Reflect.get(d,h)},set(d,h,g){return h==="value"&&Cn(`theme.global.name.value = ${g}`,`theme.change('${g}')`),Reflect.set(d,h,g)}});return{install:m,change:p,cycle:y,toggle:E,isDisabled:t.isDisabled,isSystem:u,name:s,themes:r,current:i,computedThemes:o,prefix:t.prefix,themeClasses:f,styles:c,global:{name:M,current:i}}}function zs(e){W("provideTheme");const t=A(ie,null);if(!t)throw new Error("Could not find Vuetify theme injection");const n=k(()=>e.theme??t.name.value),r=k(()=>t.themes.value[n.value]),a=k(()=>t.isDisabled?void 0:`${t.prefix}theme--${n.value}`),s={...t,name:n,current:r,themeClasses:a};return ue(ie,s),s}function Gs(){W("useTheme");const e=A(ie,null);if(!e)throw new Error("Could not find Vuetify theme injection");return e}function $a(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"content";const n=Vn(),r=H();if(T){const a=new ResizeObserver(s=>{e==null||e(s,a),s.length&&(t==="content"?r.value=s[0].contentRect:r.value=s[0].target.getBoundingClientRect())});Ot(()=>{a.disconnect()}),G(()=>n.el,(s,o)=>{o&&(a.unobserve(o),r.value=void 0),s&&a.observe(s)},{flush:"post"})}return{resizeRef:n,contentRect:wn(r)}}const xe=Symbol.for("vuetify:layout"),rn=Symbol.for("vuetify:layout-item"),Et=1e3,Us=U({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),Zs=U({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function Ks(){const e=A(xe);if(!e)throw new Error("[Vuetify] Could not find injected layout");return{getLayoutItem:e.getLayoutItem,mainRect:e.mainRect,mainStyles:e.mainStyles}}function _s(e){const t=A(xe);if(!t)throw new Error("[Vuetify] Could not find injected layout");const n=e.id??`layout-item-${Sn()}`,r=W("useLayoutItem");ue(rn,{id:n});const a=F(!1);xn(()=>a.value=!0),kn(()=>a.value=!1);const{layoutItemStyles:s,layoutItemScrimStyles:o}=t.register(r,{...e,active:S(()=>a.value?!1:e.active.value),id:n});return Ot(()=>t.unregister(n)),{layoutItemStyles:s,layoutRect:t.layoutRect,layoutItemScrimStyles:o}}const Ra=(e,t,n,r)=>{let a={top:0,left:0,right:0,bottom:0};const s=[{id:"",layer:{...a}}];for(const o of e){const i=t.get(o),u=n.get(o),c=r.get(o);if(!i||!u||!c)continue;const f={...a,[i.value]:parseInt(a[i.value],10)+(c.value?parseInt(u.value,10):0)};s.push({id:o,layer:f}),a=f}return s};function Xs(e){const t=A(xe,null),n=S(()=>t?t.rootZIndex.value-100:Et),r=H([]),a=R(new Map),s=R(new Map),o=R(new Map),i=R(new Map),u=R(new Map),{resizeRef:c,contentRect:f}=$a(),l=S(()=>{const b=new Map,w=e.overlaps??[];for(const D of w.filter(v=>v.includes(":"))){const[v,x]=D.split(":");if(!r.value.includes(v)||!r.value.includes(x))continue;const I=a.get(v),B=a.get(x),q=s.get(v),Q=s.get(x);!I||!B||!q||!Q||(b.set(x,{position:I.value,amount:parseInt(q.value,10)}),b.set(v,{position:B.value,amount:-parseInt(Q.value,10)}))}return b}),m=S(()=>{const b=[...new Set([...o.values()].map(D=>D.value))].sort((D,v)=>D-v),w=[];for(const D of b){const v=r.value.filter(x=>{var I;return((I=o.get(x))==null?void 0:I.value)===D});w.push(...v)}return Ra(w,a,s,i)}),p=S(()=>!Array.from(u.values()).some(b=>b.value)),y=S(()=>m.value[m.value.length-1].layer),E=k(()=>({"--v-layout-left":me(y.value.left),"--v-layout-right":me(y.value.right),"--v-layout-top":me(y.value.top),"--v-layout-bottom":me(y.value.bottom),...p.value?void 0:{transition:"none"}})),M=S(()=>m.value.slice(1).map((b,w)=>{let{id:D}=b;const{layer:v}=m.value[w],x=s.get(D),I=a.get(D);return{id:D,...v,size:Number(x.value),position:I.value}})),d=b=>M.value.find(w=>w.id===b),h=W("createLayout"),g=F(!1);Dn(()=>{g.value=!0}),ue(xe,{register:(b,w)=>{let{id:D,order:v,position:x,layoutSize:I,elementSize:B,active:q,disableTransitions:Q,absolute:an}=w;o.set(D,v),a.set(D,x),s.set(D,I),i.set(D,q),Q&&u.set(D,Q);const Ue=te(rn,h==null?void 0:h.vnode).indexOf(b);Ue>-1?r.value.splice(Ue,0,D):r.value.push(D);const Ze=S(()=>M.value.findIndex(J=>J.id===D)),Ce=S(()=>n.value+m.value.length*2-Ze.value*2),sn=S(()=>{const J=x.value==="left"||x.value==="right",Me=x.value==="right",un=x.value==="bottom",Te=B.value??I.value,cn=Te===0?"%":"px",Ke={[x.value]:0,zIndex:Ce.value,transform:`translate${J?"X":"Y"}(${(q.value?0:-(Te===0?100:Te))*(Me||un?-1:1)}${cn})`,position:an.value||n.value!==Et?"absolute":"fixed",...p.value?void 0:{transition:"none"}};if(!g.value)return Ke;const P=M.value[Ze.value],Ae=l.value.get(D);return Ae&&(P[Ae.position]+=Ae.amount),{...Ke,height:J?`calc(100% - ${P.top}px - ${P.bottom}px)`:B.value?`${B.value}px`:void 0,left:Me?void 0:`${P.left}px`,right:Me?`${P.right}px`:void 0,top:x.value!=="bottom"?`${P.top}px`:void 0,bottom:x.value!=="top"?`${P.bottom}px`:void 0,width:J?B.value?`${B.value}px`:void 0:`calc(100% - ${P.left}px - ${P.right}px)`}}),on=S(()=>({zIndex:Ce.value-1}));return{layoutItemStyles:sn,layoutItemScrimStyles:on,zIndex:Ce}},unregister:b=>{o.delete(b),a.delete(b),s.delete(b),i.delete(b),u.delete(b),r.value=r.value.filter(w=>w!==b)},mainRect:y,mainStyles:E,getLayoutItem:d,items:M,layoutRect:f,rootZIndex:n});const O=k(()=>["v-layout",{"v-layout--full-height":e.fullHeight}]),fe=k(()=>({zIndex:t?n.value:void 0,position:t?"relative":void 0,overflow:t?"hidden":void 0}));return{layoutClasses:O,layoutStyles:fe,getLayoutItem:d,items:M,layoutRect:f,layoutRef:c}}function Na(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:t,...n}=e,r=C(t,n),{aliases:a={},components:s={},directives:o={}}=r,i=Pe();return i.run(()=>{const u=gr(r.defaults),c=Sa(r.display,r.ssr),f=Pa(r.theme),l=Cr(r.icons),m=Ir(r.locale),p=ba(r.date,m),y=ka(r.goTo,m);function E(d){for(const g in o)d.directive(g,o[g]);for(const g in s)d.component(g,s[g]);for(const g in a)d.component(g,ce({...a[g],name:g,aliasName:a[g].name}));const h=Pe();if(h.run(()=>{f.install(d)}),d.onUnmount(()=>h.stop()),d.provide(X,u),d.provide(Le,c),d.provide(ie,f),d.provide(Ne,l),d.provide(we,m),d.provide(Jt,p.options),d.provide(yt,p.instance),d.provide(tn,y),T&&r.ssr)if(d.$nuxt)d.$nuxt.hook("app:suspense:resolve",()=>{c.update()});else{const{mount:g}=d;d.mount=function(){const O=g(...arguments);return En(()=>c.update()),d.mount=g,O}}d.mixin({computed:{$vuetify(){return R({defaults:_.call(this,X),display:_.call(this,Le),theme:_.call(this,ie),icons:_.call(this,Ne),locale:_.call(this,we),date:_.call(this,yt)})}}})}function M(){i.stop()}return{install:E,unmount:M,defaults:u,display:c,theme:f,icons:l,locale:m,date:p,goTo:y}})}const La="3.12.2";Na.version=La;function _(e){var r,a;const t=this.$,n=((r=t.parent)==null?void 0:r.provides)??((a=t.vnode.appContext)==null?void 0:a.provides);if(n&&e in n)return n[e]}export{Ln as $,Nr as A,ls as B,Mr as C,es as D,T as E,ja as F,Ps as G,qa as H,Sr as I,N as J,ps as K,Is as L,ys as M,gs as N,hs as O,Tn as P,ds as Q,fs as R,Va as S,vs as T,ms as U,zt as V,as as W,Vn as X,ws as Y,Ds as Z,rs as _,Ss as a,Vs as a0,cs as a1,Cs as a2,Fs as a3,bs as a4,Fn as a5,Ms as a6,Ks as a7,Rt as a8,xe as a9,Bs as aA,Ft as aB,Ys as aC,tt as aD,ns as aE,Hn as aF,os as aG,Ua as aH,is as aI,za as aJ,$t as aK,Qe as aL,_a as aM,us as aN,Wn as aO,ss as aP,Ws as aQ,Ls as aR,wa as aS,Es as aa,As as ab,Ts as ac,Rs as ad,ce as ae,Cn as af,Ja as ag,ve as ah,Ya as ai,On as aj,Bn as ak,Xs as al,Us as am,Pr as an,Za as ao,Nn as ap,Xa as aq,ks as ar,Ha as as,$e as at,ts as au,Hs as av,Os as aw,Ga as ax,_s as ay,Zs as az,L as b,Na as c,Qa as d,lr as e,jt as f,dr as g,zs as h,nr as i,xs as j,fr as k,W as l,js as m,Tr as n,br as o,U as p,te as q,Re as r,me as s,Gs as t,$s as u,Ns as v,Ka as w,Rn as x,$a as y,He as z}; diff --git a/assets/visitorId-ZHgZAIad.js b/assets/visitorId-BqmEfSoz.js similarity index 85% rename from assets/visitorId-ZHgZAIad.js rename to assets/visitorId-BqmEfSoz.js index e0df54f..df3daad 100644 --- a/assets/visitorId-ZHgZAIad.js +++ b/assets/visitorId-BqmEfSoz.js @@ -1 +1 @@ -import{f as e}from"./index-_6IQhlPZ.js";import"./vendor-vuetify-ChAgIwn2.js";import"./vendor-vue-H0jQBZ7T.js";let a;const r=t=>({get:async()=>({visitorId:"unknown",error:(t==null?void 0:t.message)||String(t||""),fallback:!0})}),o=async()=>{try{const t=await e(()=>import("./fp.esm-DTPSfLWv.js"),[],import.meta.url);return(t==null?void 0:t.default)||t}catch(t){return console.warn("Fingerprint library blocked or failed to load; using fallback agent.",t),null}},i=()=>(a||(a=(async()=>{const t=await o();if(!t)return r(new Error("fingerprint module unavailable"));try{return await t.load()}catch(n){return console.warn("FingerprintJS.load failed, using fallback agent.",n),r(n)}})()),a),u=async()=>{const n=await(await i()).get();return(n==null?void 0:n.visitorId)||"unknown"},g=async()=>await(await i()).get();export{g as getFingerprintData,u as getVisitorId,i as loadFingerprint}; +import{t as e}from"./index-CFUCTEXJ.js";import"./vendor-vuetify-s-yw_Hr8.js";import"./vendor-vue-B2vxubPy.js";let a;const r=t=>({get:async()=>({visitorId:"unknown",error:(t==null?void 0:t.message)||String(t||""),fallback:!0})}),o=async()=>{try{const t=await e(()=>import("./fp.esm-DTPSfLWv.js"),[],import.meta.url);return(t==null?void 0:t.default)||t}catch(t){return console.warn("Fingerprint library blocked or failed to load; using fallback agent.",t),null}},i=()=>(a||(a=(async()=>{const t=await o();if(!t)return r(new Error("fingerprint module unavailable"));try{return await t.load()}catch(n){return console.warn("FingerprintJS.load failed, using fallback agent.",n),r(n)}})()),a),u=async()=>{const n=await(await i()).get();return(n==null?void 0:n.visitorId)||"unknown"},g=async()=>await(await i()).get();export{g as getFingerprintData,u as getVisitorId,i as loadFingerprint}; diff --git a/index.html b/index.html index 5caca5c..c8c207d 100644 --- a/index.html +++ b/index.html @@ -41,9 +41,9 @@ - - - + + + diff --git a/sw.js b/sw.js index 76bdaca..04652be 100644 --- a/sw.js +++ b/sw.js @@ -1 +1 @@ -if(!self.define){let e,a={};const s=(s,c)=>(s=new URL(s+".js",c).href,a[s]||new Promise(a=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=a,document.head.appendChild(e)}else e=s,importScripts(s),a()}).then(()=>{let e=a[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e}));self.define=(c,n)=>{const i=e||("document"in self?document.currentScript.src:"")||location.href;if(a[i])return;let r={};const t=e=>s(e,i),o={module:{uri:i},exports:r,require:t};a[i]=Promise.all(c.map(e=>o[e]||t(e))).then(e=>(n(...e),r))}}define(["./workbox-ec372ce3"],function(e){"use strict";importScripts("/sw-cache-manager.js"),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"sw-cache-manager.js",revision:"e1c99eed8d27ad84cb5fc7c56efd223b"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"manifest.webmanifest",revision:"b0b994b429676afc68d0e6f9fe77af13"},{url:"index.html",revision:"c15ac2583e4a9722d5cd07999c5e5c7c"},{url:"favicon.ico",revision:"8e3a55390cf66d227f765a6063bb6c31"},{url:"banner.png",revision:"98c56bcdd08a6e6e50c613f73e270353"},{url:"328a0e159cf9b3fb3caacaab9c83bf17.txt",revision:"d06a7b1a4998b04f6c949893fa6b3c3b"},{url:"pwa/image/maskable-icon-512x512.png",revision:"dfa412c4bbe0f716216ac5db7a4c706d"},{url:"pwa/image/pwa-192x192.png",revision:"81802c789e8b735f7f8b181f002932f8"},{url:"pwa/image/pwa-512x512.png",revision:"57cc60501279a6d172b32211b1c67688"},{url:"pwa/image/pwa-64x64.png",revision:"b4ca4c3d8333391f20cddbb3f6cca2df"},{url:"manifest.webmanifest",revision:"b0b994b429676afc68d0e6f9fe77af13"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"))),e.registerRoute(({url:e,sameOrigin:a})=>a&&e.pathname.endsWith("/assets/"),new e.CacheFirst({cacheName:"assets-cache",plugins:[new e.ExpirationPlugin({maxEntries:200,maxAgeSeconds:5184e3}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),e.registerRoute(({url:e,sameOrigin:a})=>a&&e.pathname.startsWith("/pwa/"),new e.StaleWhileRevalidate({cacheName:"pwa-cache",plugins:[new e.ExpirationPlugin({maxEntries:50,maxAgeSeconds:604800}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),e.registerRoute(({url:e,sameOrigin:a})=>{if(!a)return!1;const s=e.pathname;return!(s.includes("/assets/")||s.includes("/pwa/"))},new e.NetworkFirst({cacheName:"other-resources",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:100,maxAgeSeconds:86400}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET")}); +if(!self.define){let e,a={};const s=(s,n)=>(s=new URL(s+".js",n).href,a[s]||new Promise(a=>{if("document"in self){const e=document.createElement("script");e.src=s,e.onload=a,document.head.appendChild(e)}else e=s,importScripts(s),a()}).then(()=>{let e=a[s];if(!e)throw new Error(`Module ${s} didn’t register its module`);return e}));self.define=(n,i)=>{const c=e||("document"in self?document.currentScript.src:"")||location.href;if(a[c])return;let r={};const t=e=>s(e,c),o={module:{uri:c},exports:r,require:t};a[c]=Promise.all(n.map(e=>o[e]||t(e))).then(e=>(i(...e),r))}}define(["./workbox-ec372ce3"],function(e){"use strict";importScripts("/sw-cache-manager.js"),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"sw-cache-manager.js",revision:"e1c99eed8d27ad84cb5fc7c56efd223b"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"manifest.webmanifest",revision:"b0b994b429676afc68d0e6f9fe77af13"},{url:"index.html",revision:"8086cc97182a589048964172aa55a26d"},{url:"favicon.ico",revision:"8e3a55390cf66d227f765a6063bb6c31"},{url:"banner.png",revision:"98c56bcdd08a6e6e50c613f73e270353"},{url:"328a0e159cf9b3fb3caacaab9c83bf17.txt",revision:"d06a7b1a4998b04f6c949893fa6b3c3b"},{url:"pwa/image/maskable-icon-512x512.png",revision:"dfa412c4bbe0f716216ac5db7a4c706d"},{url:"pwa/image/pwa-192x192.png",revision:"81802c789e8b735f7f8b181f002932f8"},{url:"pwa/image/pwa-512x512.png",revision:"57cc60501279a6d172b32211b1c67688"},{url:"pwa/image/pwa-64x64.png",revision:"b4ca4c3d8333391f20cddbb3f6cca2df"},{url:"manifest.webmanifest",revision:"b0b994b429676afc68d0e6f9fe77af13"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"))),e.registerRoute(({url:e,sameOrigin:a})=>a&&e.pathname.endsWith("/assets/"),new e.CacheFirst({cacheName:"assets-cache",plugins:[new e.ExpirationPlugin({maxEntries:200,maxAgeSeconds:5184e3}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),e.registerRoute(({url:e,sameOrigin:a})=>a&&e.pathname.startsWith("/pwa/"),new e.StaleWhileRevalidate({cacheName:"pwa-cache",plugins:[new e.ExpirationPlugin({maxEntries:50,maxAgeSeconds:604800}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),e.registerRoute(({url:e,sameOrigin:a})=>{if(!a)return!1;const s=e.pathname;return!(s.includes("/assets/")||s.includes("/pwa/"))},new e.NetworkFirst({cacheName:"other-resources",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:100,maxAgeSeconds:86400}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET")});