diff --git a/assets/404-D89xq0CT.js b/assets/404-BC-9JvcA.js similarity index 94% rename from assets/404-D89xq0CT.js rename to assets/404-BC-9JvcA.js index f18b9fe..5ce9f58 100644 --- a/assets/404-D89xq0CT.js +++ b/assets/404-BC-9JvcA.js @@ -1 +1 @@ -import{B as C,C as c,e as a,D as s}from"./index-DGIAsv4W.js";import{V as L,a as r}from"./VRow-Cjhiymuu.js";import{V as f}from"./VContainer-DZyPrcqa.js";import{X as n,Y as d,Z as e,j as t,k as i}from"./vendor-vue-BiQC5iF7.js";import"./vendor-vuetify-DsKlzgKp.js";const h="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(p){return(o,l)=>(n(),d(f,{class:"fill-height"},{default:e(()=>[t(C,{class:"align-centerfill-height mx-auto","max-width":"900"},{default:e(()=>[t(c,{class:"mb-4",height:"150",src:h}),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(c,{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=>o.$router.back())},{default:e(()=>[t(s,{contained:"","model-value":"",opacity:".06",persistent:"",scrim:"primary"})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}))}},Z={__name:"404",setup(p){return(o,l)=>(n(),d(m))}};export{Z as default}; +import{B as C,C as c,e as a,D as s}from"./index-Ceq_468-.js";import{V as L,a as r}from"./VRow-BiiRXDj9.js";import{V as f}from"./VContainer-BisEDTd3.js";import{X as n,Y as d,Z as e,j as t,k as i}from"./vendor-vue-BiQC5iF7.js";import"./vendor-vuetify-rtu3DHX4.js";const h="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(p){return(o,l)=>(n(),d(f,{class:"fill-height"},{default:e(()=>[t(C,{class:"align-centerfill-height mx-auto","max-width":"900"},{default:e(()=>[t(c,{class:"mb-4",height:"150",src:h}),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(c,{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=>o.$router.back())},{default:e(()=>[t(s,{contained:"","model-value":"",opacity:".06",persistent:"",scrim:"primary"})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}))}},Z={__name:"404",setup(p){return(o,l)=>(n(),d(m))}};export{Z as default}; diff --git a/assets/AttendanceManagementDialog-BpjEre5P.js b/assets/AttendanceManagementDialog-CCCxW1vX.js similarity index 97% rename from assets/AttendanceManagementDialog-BpjEre5P.js rename to assets/AttendanceManagementDialog-CCCxW1vX.js index a927d4a..4406a8c 100644 --- a/assets/AttendanceManagementDialog-BpjEre5P.js +++ b/assets/AttendanceManagementDialog-CCCxW1vX.js @@ -1 +1 @@ -import{_ as L,e as x,c as w,f as v,g as F,h as d,d as k,o as M,i as z,l as _,k as E,n as P}from"./index-DGIAsv4W.js";import{V as f}from"./VChip-mRzIPuM0.js";import{V as b,a as C}from"./VRow-Cjhiymuu.js";import{V as D}from"./VTextField-BurlcggD.js";import{a0 as B}from"./vendor-vuetify-DsKlzgKp.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-BiQC5iF7.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"},I={class:"flex-grow-1"},q={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",I,[o("div",q,[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 Q=L(N,[["render",X],["__scopeId","data-v-743b7bc1"]]);export{Q as default}; +import{_ as L,e as x,c as w,f as v,g as F,h as d,d as k,o as M,i as z,l as _,k as E,n as P}from"./index-Ceq_468-.js";import{V as f}from"./VChip-BdtDOEwz.js";import{V as b,a as C}from"./VRow-BiiRXDj9.js";import{V as D}from"./VTextField-DpXLMPq7.js";import{a0 as B}from"./vendor-vuetify-rtu3DHX4.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-BiQC5iF7.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"},I={class:"flex-grow-1"},q={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",I,[o("div",q,[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 Q=L(N,[["render",X],["__scopeId","data-v-743b7bc1"]]);export{Q as default}; diff --git a/assets/AttendanceSidebar-DmtvE998.js b/assets/AttendanceSidebar-Cz4nwVcc.js similarity index 93% rename from assets/AttendanceSidebar-DmtvE998.js rename to assets/AttendanceSidebar-Cz4nwVcc.js index cdf3bed..6391ae6 100644 --- a/assets/AttendanceSidebar-DmtvE998.js +++ b/assets/AttendanceSidebar-Cz4nwVcc.js @@ -1 +1 @@ -import{_ as w,n as g,a0 as m}from"./index-DGIAsv4W.js";import{a as k}from"./VRow-Cjhiymuu.js";import{a0 as f}from"./vendor-vuetify-DsKlzgKp.js";import{R as b,X as n,Y as _,Z as x,k as t,a1 as r,S as s,_ as l,F as c,a2 as p,$ as o,n as C}from"./vendor-vue-BiQC5iF7.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:f()}},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?b((n(),_(k,{key:0,class:C([{"cursor-not-allowed":a.isEditingDisabled},"attendance-area no-select"]),cols:"1",onClick:y.handleClick},{default:x(()=>[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-1b645894"]]);export{P as default}; +import{_ as w,n as g,a0 as m}from"./index-Ceq_468-.js";import{a as k}from"./VRow-BiiRXDj9.js";import{a0 as f}from"./vendor-vuetify-rtu3DHX4.js";import{R as b,X as n,Y as _,Z as x,k as t,a1 as r,S as s,_ as l,F as c,a2 as p,$ as o,n as C}from"./vendor-vue-BiQC5iF7.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:f()}},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?b((n(),_(k,{key:0,class:C([{"cursor-not-allowed":a.isEditingDisabled},"attendance-area no-select"]),cols:"1",onClick:y.handleClick},{default:x(()=>[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-1b645894"]]);export{P as default}; diff --git a/assets/CacheManagement-3L-v8_PB.js b/assets/CacheManagement-D69xlD6i.js similarity index 95% rename from assets/CacheManagement-3L-v8_PB.js rename to assets/CacheManagement-D69xlD6i.js index 1b3c261..580e3d6 100644 --- a/assets/CacheManagement-3L-v8_PB.js +++ b/assets/CacheManagement-D69xlD6i.js @@ -1 +1 @@ -import{_ as S,c as b,g as A,h as p,f as d,d as C,p as E,q as N,r as L,t as P,e as _}from"./index-DGIAsv4W.js";import{V as y}from"./VAlert-BZ4-f-hy.js";import{V as R,a as B,b as F,c as H}from"./VExpansionPanels-BDI8gHu5.js";import{V as I}from"./VChip-mRzIPuM0.js";import{V as z}from"./VSkeletonLoader-DwE_iqTb.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-BiQC5iF7.js";import{V as M,a as k}from"./VRow-Cjhiymuu.js";import{V as U}from"./VContainer-DZyPrcqa.js";import"./vendor-vuetify-DsKlzgKp.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 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:Z=>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(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:"缓存管理"}},q={class:"d-flex align-center mb-6"},J={class:"d-flex align-center mb-2"},K={class:"d-flex align-center mb-2"};function X(a,e,n,g,o,m){const u=W;return i(),c(U,null,{default:s(()=>[t(M,null,{default:s(()=>[t(k,{cols:"12"},{default:s(()=>[r("div",q,[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",J,[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",K,[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",X]]);export{oe as default}; +import{_ as S,c as b,g as A,h as p,f as d,d as C,p as E,q as N,r as L,t as P,e as _}from"./index-Ceq_468-.js";import{V as y}from"./VAlert-C02HdytA.js";import{V as R,a as B,b as F,c as H}from"./VExpansionPanels-DbwaqF41.js";import{V as I}from"./VChip-BdtDOEwz.js";import{V as z}from"./VSkeletonLoader-B0OOafGJ.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-BiQC5iF7.js";import{V as M,a as k}from"./VRow-BiiRXDj9.js";import{V as U}from"./VContainer-BisEDTd3.js";import"./vendor-vuetify-rtu3DHX4.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 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:Z=>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(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:"缓存管理"}},q={class:"d-flex align-center mb-6"},J={class:"d-flex align-center mb-2"},K={class:"d-flex align-center mb-2"};function X(a,e,n,g,o,m){const u=W;return i(),c(U,null,{default:s(()=>[t(M,null,{default:s(()=>[t(k,{cols:"12"},{default:s(()=>[r("div",q,[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",J,[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",K,[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",X]]);export{oe as default}; diff --git a/assets/ChatWidget-BXhjl6gS.js b/assets/ChatWidget-CdFpE857.js similarity index 98% rename from assets/ChatWidget-BXhjl6gS.js rename to assets/ChatWidget-CdFpE857.js index 7ad7afd..59c4b57 100644 --- a/assets/ChatWidget-BXhjl6gS.js +++ b/assets/ChatWidget-CdFpE857.js @@ -1,3 +1,3 @@ -import{s as Q,g as F,j as D,a as x}from"./socketClient-BKHEsaLg.js";import{_ as V,n as N,e as S,d as w,h as _,f as p,k as K,c as W,g as E,G as j,i as b,o as H,l as q}from"./index-DGIAsv4W.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 $,ae as R,aa as B}from"./vendor-vue-BiQC5iF7.js";import{p as O,s as Y}from"./soundList-D9U-Grcp.js";import{V as C}from"./VChip-mRzIPuM0.js";import{f as Z,s as ee,c as te}from"./deviceEvents-HN9RDua9.js";import{V as se,a as ie}from"./VTooltip-2IUjfpCS.js";import{V as ne,a as T}from"./VRow-Cjhiymuu.js";import{V as oe}from"./VPagination-DLzhjdaP.js";import{V as re}from"./VTextarea-vGWmTJww.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-DJ8u9nXv.js";import{_ as V,n as N,e as S,d as w,h as _,f as p,k as K,c as W,g as E,F as j,i as b,o as H,l as q}from"./index-Ceq_468-.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 $,ae as R,aa as B}from"./vendor-vue-BiQC5iF7.js";import{p as O,s as Y}from"./soundList-D9U-Grcp.js";import{V as C}from"./VChip-BdtDOEwz.js";import{f as Z,s as ee,c as te}from"./deviceEvents-Wy8_E1wQ.js";import{V as se,a as ie}from"./VTooltip-CWhmSQeX.js";import{V as ne,a as T}from"./VRow-BiiRXDj9.js";import{V as oe}from"./VPagination-BQZD6rf1.js";import{V as re}from"./VTextarea-UKN-Avq_.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-103eca06"]]),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(H,{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(),$(q,{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"]]),et=Object.freeze(Object.defineProperty({__proto__:null,default:Ke},Symbol.toStringTag,{value:"Module"}));export{et as C,P as _,Ke as a}; diff --git a/assets/ExamConfigEditor-BVwEXehR.js b/assets/ExamConfigEditor-o_7l6zek.js similarity index 64% rename from assets/ExamConfigEditor-BVwEXehR.js rename to assets/ExamConfigEditor-o_7l6zek.js index 81f9d52..7196b48 100644 --- a/assets/ExamConfigEditor-BVwEXehR.js +++ b/assets/ExamConfigEditor-o_7l6zek.js @@ -1,2 +1,2 @@ -import{d as x}from"./dataProvider-GWPC-0Vt.js";import{X as g,_ as v,Y as y,Z as a,k as c,j as s,a1 as m,S as D,$ as C,F as E,a2 as M,aa as q,R as Y,V as G,m as J}from"./vendor-vue-BiQC5iF7.js";import{_ as K,f as p,p as R,q as O,r as X,d as w,e as b,h,G as Z,c as V,g as k,a5 as Q,i as W,l as L,k as $}from"./index-DGIAsv4W.js";import{V as A}from"./VAlert-BZ4-f-hy.js";import{V as ee}from"./VSkeletonLoader-DwE_iqTb.js";import{a as _}from"./VTooltip-2IUjfpCS.js";import{V as z,a as te}from"./VChip-mRzIPuM0.js";import{a as T,V as I}from"./VRow-Cjhiymuu.js";import{V as N}from"./VTextField-BurlcggD.js";import{V as ae}from"./VTextarea-vGWmTJww.js";import{V as se}from"./VSwitch-k6hfPfa2.js";import{V as re}from"./VAutocomplete-N0zTUlyj.js";import{V as B}from"./VSheet-BBnSA_kJ.js";import{V as P}from"./VDatePicker-CuGF0KeL.js";import{V as H}from"./VTimePicker-BApLLZ8X.js";import"./vendor-utils-DwALrQNc.js";import"./serverRotation-BtcwvdZJ.js";import"./vendor-vuetify-DsKlzgKp.js";import"./VSelect-oxA0t9CG.js";import"./VCheckboxBtn-BKcSogH0.js";import"./VPicker-SM18M-iq.js";const le={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(t){return console.error("格式化JSON时出错:",t),"无效的JSON格式"}},formattedStorageJson(){try{const t={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(e=>({name:e.name,start:this.formatDisplayDateTime(e.start),end:this.formatDisplayDateTime(e.end),alertTime:parseInt(e.alertTime)||15}))};return JSON.stringify(t,null,2)}catch(t){return console.error("格式化存储JSON时出错:",t),"无效的JSON格式"}},isValidConfig(){return this.localConfig.examName&&this.localConfig.message&&this.localConfig.examInfos&&this.localConfig.examInfos.length>0&&this.localConfig.examInfos.every(t=>t.name&&t.start&&t.end)},validationErrors(){const t=[];if((!this.localConfig.examName||this.localConfig.examName.trim()==="")&&t.push("考试名称不能为空"),(!this.localConfig.message||this.localConfig.message.trim()==="")&&t.push("考试提示不能为空"),!this.localConfig.examInfos||this.localConfig.examInfos.length===0)t.push("至少需要添加一个考试科目");else{this.localConfig.examInfos.forEach((e,i)=>{const l=`第${i+1}个科目`;if((!e.name||e.name.trim()==="")&&t.push(`${l}的名称不能为空`),e.start||t.push(`${l}的开始时间不能为空`),e.end||t.push(`${l}的结束时间不能为空`),e.start&&e.end){const r=new Date(e.start),n=new Date(e.end);isNaN(r.getTime())&&t.push(`${l}的开始时间格式不正确`),isNaN(n.getTime())&&t.push(`${l}的结束时间格式不正确`),!isNaN(r.getTime())&&!isNaN(n.getTime())&&(n<=r&&t.push(`${l}的结束时间必须晚于开始时间`),(n-r)/(1e3*60*60)>24&&t.push(`${l}的考试时长不能超过24小时`))}});for(let e=0;eu&&t.push(`第${e+1}个科目与第${i+1}个科目的时间有重叠`)}}}return t},hasValidationErrors(){return this.validationErrors.length>0}},watch:{configId:{immediate:!0,handler(t){t&&this.loadConfig()}}},created(){this.loadSubjects()},methods:{async loadSubjects(){try{const t=await x.loadData("classworks-config-subject");t&&Array.isArray(t)?this.availableSubjects=t.sort((e,i)=>(e.order??0)-(i.order??0)).map(e=>({name:e.name,order:e.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(t){console.warn("加载科目列表失败,使用默认列表:",t),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 t=null;for(let e=this.localConfig.examInfos.length-1;e>=0;e--)if(this.localConfig.examInfos[e].end){t=new Date(this.localConfig.examInfos[e].end);break}t||(t=new Date);for(let e=0;e12)return`${e}月份不合法(1-12)`;if(S<1||S>31)return`${e}日期不合法(1-31)`;if(U<0||U>23)return`${e}小时不合法(0-23)`;if(F<0||F>59)return`${e}分钟不合法(0-59)`;const j=new Date(d,f-1,S,U,F);return isNaN(j.getTime())?`${e}日期不存在`:j.getMonth()!==f-1||j.getDate()!==S?`${e}日期不存在`:!0},validateEndAfterStart(t){if(!t.startFormatted||!t.endFormatted)return!0;try{const e=new Date(t.start||t.startFormatted.replace(/\//g,"-")),i=new Date(t.end||t.endFormatted.replace(/\//g,"-"));return isNaN(e.getTime())||isNaN(i.getTime())?!0:i<=e?"结束时间必须晚于开始时间":(i.getTime()-e.getTime())/(1e3*60*60)>24?"考试时长不能超过24小时":!0}catch{return!0}},validateNoTimeOverlap(t,e){if(!t.startFormatted||!t.endFormatted)return!0;try{const i=new Date(t.start||t.startFormatted.replace(/\//g,"-")),l=new Date(t.end||t.endFormatted.replace(/\//g,"-"));if(isNaN(i.getTime())||isNaN(l.getTime()))return!0;for(let r=0;r=o&&io&&l<=u||i<=o&&l>=u)return`时间与"${n.name||`第${r+1}个科目`}"重叠`}return!0}catch{return!0}},toggleAlertTimeMode(){this.enableCustomAlertTime||this.localConfig.examInfos.forEach(t=>{t.alertTime=15})},getExamDuration(t){if(!t.start||!t.end)return"";try{const e=new Date(t.start),i=new Date(t.end);if(isNaN(e.getTime())||isNaN(i.getTime()))return"";const l=i.getTime()-e.getTime(),r=Math.round(l/(1e3*60));if(r<60)return`${r}分钟`;const n=Math.floor(r/60),o=r%60;return o===0?`${n}小时`:`${n}小时${o}分钟`}catch{return""}},updateStartDateTimeFromInput(t){if(t===void 0||!this.localConfig.examInfos[t])return;const e=this.localConfig.examInfos[t],i=e.startFormatted;if(!i)return;const l=i.match(/(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s+(\d{1,2}):(\d{1,2})/);if(!l)return;const[,r,n,o,u,d]=l,f=new Date(parseInt(r),parseInt(n)-1,parseInt(o),parseInt(u),parseInt(d));isNaN(f.getTime())||(e.startDate=f,e.startTime=this.formatTimeOnly(f),e.start=this.formatDateTimeLocal(f),this.updateStartDateTime(t))},updateEndDateTimeFromInput(t){if(t===void 0||!this.localConfig.examInfos[t])return;const e=this.localConfig.examInfos[t],i=e.endFormatted;if(!i)return;const l=i.match(/(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s+(\d{1,2}):(\d{1,2})/);if(!l)return;const[,r,n,o,u,d]=l,f=new Date(parseInt(r),parseInt(n)-1,parseInt(o),parseInt(u),parseInt(d));isNaN(f.getTime())||(e.endDate=f,e.endTime=this.formatTimeOnly(f),e.end=this.formatDateTimeLocal(f),this.updateEndDateTime(t))},async loadConfig(){var t;this.loading=!0,this.error="";try{const e=await x.loadData(`es_${this.configId}`);if(e){this.localConfig={examName:"",message:"",room:"",examInfos:[],...e},Array.isArray(this.localConfig.examInfos)||(this.localConfig.examInfos=[]),this.localConfig.examInfos.forEach(l=>{if(l.start){const r=this.parseDateTime(l.start);l.start=this.formatDateTimeLocal(r),l.startDate=r,l.startTime=this.formatTimeOnly(r),l.startFormatted=this.formatDisplayDateTime(r),l.startDateMenu=!1}if(l.end){const r=this.parseDateTime(l.end);l.end=this.formatDateTimeLocal(r),l.endDate=r,l.endTime=this.formatTimeOnly(r),l.endFormatted=this.formatDisplayDateTime(r),l.endDateMenu=!1}try{if(l.start&&l.end){const r=new Date(l.start),n=new Date(l.end),o=Math.round((n.getTime()-r.getTime())/(1e3*60));o>0&&o<=24*60?l.durationMinutes=o:l.durationMinutes=120}else l.durationMinutes=120}catch{l.durationMinutes=120}l.alertTime===void 0||l.alertTime===null?l.alertTime=15:l.alertTime=parseInt(l.alertTime)||15});const i=this.localConfig.examInfos.some(l=>l.alertTime!==15);this.enableCustomAlertTime=i}else console.error("加载配置失败:",e),this.error="加载配置失败: "+(((t=e.error)==null?void 0:t.message)||"未知错误"),this.$emit("error",this.error)}catch(e){console.error(e),this.error="加载配置失败: "+e.message,this.$emit("error",this.error)}finally{this.loading=!1}},async saveConfig(){var t;if(!this.isValidConfig){const e=this.validationErrors;return e.length>0?this.error=`配置验证失败:${e.join(";")}`:this.error="请填写完整的配置信息",!1}this.saving=!0,this.error="";try{const e={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(l=>({name:l.name,start:this.formatDisplayDateTime(l.start),end:this.formatDisplayDateTime(l.end),alertTime:parseInt(l.alertTime)||15}))},i=await x.saveData(`es_${this.configId}`,e);return i?(this.success="配置保存成功",this.$emit("saved",e),!0):(this.error="保存配置失败: "+(((t=i.error)==null?void 0:t.message)||"未知错误"),this.$emit("error",this.error),!1)}catch(e){return this.error="保存配置失败: "+e,this.$emit("error",this.error),!1}finally{this.saving=!1}},addExamInfo(){let t=new Date;if(this.localConfig.examInfos.length>0){const r=this.localConfig.examInfos[this.localConfig.examInfos.length-1];r.end&&(t=new Date(r.end))}const e=new Date(t.getTime()+10*60*1e3),i=new Date(e.getTime()+2*60*60*1e3),l={name:"",start:this.formatDateTimeLocal(e),end:this.formatDateTimeLocal(i),durationMinutes:120,alertTime:15,startDate:e,startTime:this.formatTimeOnly(e),startFormatted:this.formatDisplayDateTime(e),startDateMenu:!1,endDate:i,endTime:this.formatTimeOnly(i),endFormatted:this.formatDisplayDateTime(i),endDateMenu:!1};this.localConfig.examInfos.push(l)},removeExamInfo(t){this.localConfig.examInfos.splice(t,1)},moveExamInfo(t,e){const i=t+e;if(i>=0&&i24*60&&(i=24*60),e.durationMinutes=i,(!e.startDate||!e.startTime)&&e.start){const l=new Date(e.start);isNaN(l.getTime())||(e.startDate=l,e.startTime=this.formatTimeOnly(l))}if(e.startDate&&e.startTime){const l=new Date(e.startDate),[r,n]=String(e.startTime).split(":");l.setHours(parseInt(r),parseInt(n),0,0);const o=new Date(l.getTime()+i*60*1e3);e.endDate=o,e.endTime=this.formatTimeOnly(o),e.end=this.formatDateTimeLocal(o),e.endFormatted=this.formatDisplayDateTime(o)}},formatDateTimeLocal(t){if(!t)return"";let e;if(typeof t=="string"?t.includes("/")?e=new Date(t.replace(/\//g,"-")):e=new Date(t):e=new Date(t),isNaN(e.getTime()))return"";const i=e.getFullYear(),l=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),o=String(e.getMinutes()).padStart(2,"0");return`${i}-${l}-${r}T${n}:${o}`},formatDisplayDateTime(t){if(!t)return"";const e=new Date(t);if(isNaN(e.getTime()))return t;const i=e.getFullYear(),l=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),o=String(e.getMinutes()).padStart(2,"0");return`${i}/${l}/${r} ${n}:${o}`},parseDateTime(t){return t?typeof t=="string"?t.includes("/")?new Date(t.replace(/\//g,"-")):new Date(t):new Date(t):new Date},formatTimeOnly(t){if(!t)return"00:00";const e=new Date(t);if(isNaN(e.getTime()))return"00:00";const i=String(e.getHours()).padStart(2,"0"),l=String(e.getMinutes()).padStart(2,"0");return`${i}:${l}`},updateStartDateTime(t){const e=this.localConfig.examInfos[t];if(!e.startDate||!e.startTime)return;const i=new Date(e.startDate),[l,r]=e.startTime.split(":");i.setHours(parseInt(l),parseInt(r),0,0),e.start=this.formatDateTimeLocal(i),e.startFormatted=this.formatDisplayDateTime(i);let n=parseInt(e.durationMinutes);if(isNaN(n)||n<=0||n>24*60)try{let u=null;if(e.endDate&&e.endTime){u=new Date(e.endDate);const[d,f]=String(e.endTime).split(":");u.setHours(parseInt(d),parseInt(f),0,0)}else e.end&&(u=new Date(e.end));if(u&&!isNaN(u.getTime())){const d=Math.round((u.getTime()-i.getTime())/6e4);d>0&&d<=24*60&&(n=d)}}catch{}(isNaN(n)||n<=0||n>24*60)&&(n=120);const o=new Date(i.getTime()+n*60*1e3);e.endDate=o,e.endTime=this.formatTimeOnly(o),e.end=this.formatDateTimeLocal(o),e.endFormatted=this.formatDisplayDateTime(o),e.durationMinutes=n},updateEndDateTime(t){const e=this.localConfig.examInfos[t];if(!e.endDate||!e.endTime)return;const i=new Date(e.endDate),[l,r]=e.endTime.split(":");i.setHours(parseInt(l),parseInt(r),0,0),e.end=this.formatDateTimeLocal(i),e.endFormatted=this.formatDisplayDateTime(i);try{if(e.startDate&&e.startTime){const n=new Date(e.startDate),[o,u]=String(e.startTime).split(":");n.setHours(parseInt(o),parseInt(u),0,0);const d=Math.round((i.getTime()-n.getTime())/(1e3*60));d>0&&d<=24*60&&(e.durationMinutes=d)}}catch{}},async openConfig(){try{const t=await x.getKeyCloudUrl(`es_${this.configId}`,{autoMigrate:!0,autoConfig:!0});if(t.success&&t.url){const e=`https://es.examaware.cn/exam/?configUrl=${encodeURIComponent(t.url)}`;window.open(e,"_blank"),this.success="配置已在新窗口中打开",this.$emit("opened",{configId:this.configId,url:t.url})}else throw new Error(t.error||"获取云端地址失败")}catch(t){this.error="打开配置失败: "+t.message,this.$emit("error","打开配置失败: "+t.message)}},confirmDelete(){this.deleteDialog=!0},async deleteConfig(){this.deleting=!0;try{const i=(await x.loadData("es_list")||[]).filter(r=>r.id!==this.configId);if(!await x.saveData("es_list",i))throw new Error("更新云端列表失败");this.deleteDialog=!1,this.$emit("deleted",{success:!0,message:"配置删除成功",configId:this.configId})}catch(t){console.error("删除配置失败:",t),this.$emit("deleted",{success:!1,message:"删除失败: "+t.message})}finally{this.deleting=!1}},openInEa2Player(){var t;try{const e={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=JSON.stringify(e),l=btoa(unescape(encodeURIComponent(i))),r=`examaware://player?data=${encodeURIComponent(l)}`;window.location.href=r,(t=this.$message)==null||t.success("正在拉起 ExamAware2 播放器...")}catch(e){this.error="拉起播放器失败: "+e.message}}}},oe={class:"d-flex align-center"},ie={class:"d-flex align-center"},ne={key:4,class:"d-flex justify-space-between align-center mb-4"},de={class:"d-flex align-center gap-2"},me={key:5},ue={class:"mb-8"},ce={class:"text-h3 font-weight-bold",style:{"line-height":"1.2"}},fe={class:"text-subtitle-1 text-grey",style:{"white-space":"pre-wrap","line-height":"1.8"}},ge={key:0,class:"mb-8"},pe={class:"d-flex align-center"},he={class:""},ye={class:"mb-3"},De={class:"d-flex align-center mb-1"},Ce={class:"text-h6 font-weight-medium text-success"},Te={class:"d-flex align-center mb-1"},ve={class:"text-h6 font-weight-medium text-error"},be={key:1,class:"text-center py-12"},we={class:"json-preview"},xe={key:6},Ve={class:"text-subtitle-2 font-weight-bold d-block mb-2"},ke={key:0,class:"mt-3"},Ie={class:"text-caption text-medium-emphasis mt-2 ml-2"},Ne={class:"d-flex align-center mr-4"},Se={class:"w-100"},Ee={class:"d-flex align-center mb-3"},Me={class:"d-flex gap-1"},_e={class:"text-primary font-weight-bold"},Ue={key:1,class:"text-center py-12"};function Fe(t,e,i,l,r,n){return g(),v("div",null,[r.error?(g(),y(A,{key:0,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"error",variant:"tonal","onClick:close":e[0]||(e[0]=o=>r.error="")},{default:a(()=>[c("div",oe,[s(p,{class:"mr-2"},{default:a(()=>[...e[10]||(e[10]=[m(" mdi-alert-circle ",-1)])]),_:1}),m(" "+D(r.error),1)])]),_:1})):C("",!0),r.success?(g(),y(A,{key:1,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"success",variant:"tonal","onClick:close":e[1]||(e[1]=o=>r.success="")},{default:a(()=>[c("div",ie,[s(p,{class:"mr-2"},{default:a(()=>[...e[11]||(e[11]=[m(" mdi-check-circle ",-1)])]),_:1}),m(" "+D(r.success),1)])]),_:1})):C("",!0),n.hasValidationErrors&&!r.loading?(g(),y(A,{key:2,border:"start",class:"mb-4 mt-3 mx-2",type:"warning",variant:"tonal"},{default:a(()=>[e[13]||(e[13]=c("div",{class:"d-flex align-center"},[c("span",{class:"font-weight-bold"},"配置验证失败,请检查以下问题:")],-1)),s(R,{class:"bg-transparent",density:"compact"},{default:a(()=>[(g(!0),v(E,null,M(n.validationErrors,(o,u)=>(g(),y(O,{key:u,class:"px-0 py-0"},{prepend:a(()=>[s(p,{color:"warning",size:"small"},{default:a(()=>[...e[12]||(e[12]=[m(" mdi-circle-small ",-1)])]),_:1})]),default:a(()=>[s(X,{class:"text-body-2"},{default:a(()=>[m(D(o),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):C("",!0),r.loading?(g(),y(b,{key:3,class:"my-4",outlined:""},{default:a(()=>[s(w,null,{default:a(()=>[s(ee,{class:"mx-auto",type:"article"})]),_:1})]),_:1})):C("",!0),r.loading?C("",!0):(g(),v("div",ne,[c("div",de,[s(h,{disabled:!n.isValidConfig,class:"text-none",color:"success","prepend-icon":"mdi-open-in-new",variant:"elevated",onClick:n.openConfig},{default:a(()=>[...e[14]||(e[14]=[m(" 打开 ExamSchedule ",-1)])]),_:1},8,["disabled","onClick"]),s(h,{disabled:!n.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-link-variant",variant:"elevated",onClick:n.copyConfigUrl},{default:a(()=>[...e[15]||(e[15]=[m(" 复制远程链接 ",-1)])]),_:1},8,["disabled","onClick"]),s(h,{disabled:!n.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-download",variant:"elevated",onClick:n.downloadAsJson},{default:a(()=>[...e[16]||(e[16]=[m(" JSON 文件 ",-1)])]),_:1},8,["disabled","onClick"]),s(h,{disabled:!n.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-download",variant:"elevated",onClick:n.downloadAsEa2},{default:a(()=>[...e[17]||(e[17]=[m(" .ea2 文件 ",-1)])]),_:1},8,["disabled","onClick"]),s(h,{disabled:!n.isValidConfig,class:"text-none",color:"secondary","prepend-icon":"mdi-play-circle",variant:"elevated",onClick:n.openInEa2Player},{default:a(()=>[...e[18]||(e[18]=[m(" 拉起EA2播放器 ",-1)])]),_:1},8,["disabled","onClick"]),n.isValidConfig?C("",!0):(g(),y(_,{key:0,activator:"parent",location:"bottom"},{default:a(()=>[...e[19]||(e[19]=[c("span",null,"请先完善配置信息后再操作",-1)])]),_:1}))]),s(Z,{modelValue:r.isEditMode,"onUpdate:modelValue":e[2]||(e[2]=o=>r.isEditMode=o),color:"primary",divided:"",variant:"outlined"},{default:a(()=>[s(h,{class:"text-error","prepend-icon":"mdi-delete",onClick:n.confirmDelete},{default:a(()=>[...e[20]||(e[20]=[m(" 删除配置 ",-1)])]),_:1},8,["onClick"]),s(h,{value:!1,"prepend-icon":"mdi-eye"},{default:a(()=>[...e[21]||(e[21]=[m(" 预览 ",-1)])]),_:1}),s(h,{value:!0,"prepend-icon":"mdi-pencil"},{default:a(()=>[...e[22]||(e[22]=[m(" 编辑 ",-1)])]),_:1})]),_:1},8,["modelValue"])])),!r.loading&&!r.isEditMode?(g(),v("div",me,[c("div",ue,[c("div",ce,D(r.localConfig.examName||"未设置考试名称"),1),c("div",fe,D(r.localConfig.message||"未设置考试提示"),1),r.localConfig.room?(g(),y(z,{key:0,class:"px-4 py-2",size:"large"},{default:a(()=>[s(p,{start:""},{default:a(()=>[...e[23]||(e[23]=[m(" mdi-home ",-1)])]),_:1}),m(" 考场:"+D(r.localConfig.room),1)]),_:1})):C("",!0)]),r.localConfig.examInfos&&r.localConfig.examInfos.length>0?(g(),v("div",ge,[s(I,null,{default:a(()=>[(g(!0),v(E,null,M(r.localConfig.examInfos,(o,u)=>(g(),y(T,{key:u,cols:"12",lg:"4",md:"6"},{default:a(()=>[s(b,{class:"h-100",hover:"",variant:"tonal"},{default:a(()=>[s(V,{class:"bg-primary-lighten-5 pa-4"},{default:a(()=>[c("div",pe,[s(p,{class:"mr-2"},{default:a(()=>[...e[24]||(e[24]=[m(" mdi-book-open-page-variant ",-1)])]),_:1}),c("span",he,D(o.name||"未设置科目"),1)])]),_:2},1024),s(w,{class:"pa-4"},{default:a(()=>[c("div",ye,[c("div",De,[s(p,{class:"mr-2",color:"success",size:"small"},{default:a(()=>[...e[25]||(e[25]=[m(" mdi-clock-start ",-1)])]),_:1}),e[26]||(e[26]=c("span",{class:"text-body-2 text-grey-darken-1"},"开始时间",-1))]),c("div",Ce,D(o.startFormatted||o.start||"未设置"),1)]),c("div",null,[c("div",Te,[s(p,{class:"mr-2",color:"error",size:"small"},{default:a(()=>[...e[27]||(e[27]=[m(" mdi-clock-end ",-1)])]),_:1}),e[28]||(e[28]=c("span",{class:"text-body-2 text-grey-darken-1"},"结束时间",-1))]),c("div",ve,D(o.endFormatted||o.end||"未设置"),1)])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):(g(),v("div",be,[s(p,{class:"mb-4",color:"grey-lighten-2",size:"80"},{default:a(()=>[...e[29]||(e[29]=[m(" mdi-calendar-blank ",-1)])]),_:1}),e[32]||(e[32]=c("div",{class:"text-h5 text-grey-darken-1 mb-2"}," 暂无考试科目安排 ",-1)),e[33]||(e[33]=c("div",{class:"text-body-1 text-grey mb-4"},' 点击上方"添加科目"按钮开始配置考试时间表 ',-1)),s(h,{color:"primary",variant:"outlined",onClick:n.quickEdit},{default:a(()=>[s(p,{start:""},{default:a(()=>[...e[30]||(e[30]=[m(" mdi-plus ",-1)])]),_:1}),e[31]||(e[31]=m(" 立即添加 ",-1))]),_:1},8,["onClick"])])),s(b,{border:"",class:"mb-4",elevation:"2"},{default:a(()=>[s(V,{class:"d-flex align-center text-white cursor-pointer",onClick:e[3]||(e[3]=o=>r.showJsonPreview=!r.showJsonPreview)},{default:a(()=>[s(p,{class:"mr-2"},{default:a(()=>[...e[34]||(e[34]=[m(" mdi-code-json ",-1)])]),_:1}),e[36]||(e[36]=m(" 配置预览 ",-1)),s(k),s(h,{color:"white","prepend-icon":"mdi-content-copy",size:"small",variant:"outlined",onClick:q(n.copyToClipboard,["stop"])},{default:a(()=>[...e[35]||(e[35]=[m(" 复制 ",-1)])]),_:1},8,["onClick"]),s(h,{icon:r.showJsonPreview?"mdi-chevron-up":"mdi-chevron-down",class:"ml-2",color:"white",size:"small",variant:"text"},null,8,["icon"])]),_:1}),s(Q,null,{default:a(()=>[Y(s(w,{class:"pa-4"},{default:a(()=>[s(b,{class:"pa-4",variant:"tonal"},{default:a(()=>[c("pre",we,[c("code",null,D(n.formattedStorageJson),1)])]),_:1})]),_:1},512),[[G,r.showJsonPreview]])]),_:1})]),_:1})])):C("",!0),!r.loading&&r.isEditMode?(g(),v("div",xe,[s(b,{border:"",class:"mb-4",elevation:"1"},{default:a(()=>[s(V,{class:"d-flex align-center bg-primary-lighten-5 pa-4"},{default:a(()=>[s(p,{class:"mr-2"},{default:a(()=>[...e[37]||(e[37]=[m(" mdi-information ",-1)])]),_:1}),e[38]||(e[38]=c("span",{class:"font-weight-bold"},"基本信息",-1))]),_:1}),s(w,{class:"pa-6"},{default:a(()=>[s(I,null,{default:a(()=>[s(T,{cols:"12",md:"6"},{default:a(()=>[s(N,{modelValue:r.localConfig.examName,"onUpdate:modelValue":e[4]||(e[4]=o=>r.localConfig.examName=o),rules:[o=>!!o||"考试名称不能为空",o=>o&&o.trim().length>0||"考试名称不能为空白字符",o=>!o||o.length<=100||"考试名称不能超过100个字符"],clearable:"",density:"comfortable",label:"考试名称",placeholder:"如:2025年高考模拟考试","prepend-inner-icon":"mdi-calendar-text",required:"",variant:"outlined"},null,8,["modelValue","rules"])]),_:1}),s(T,{cols:"12",md:"6"},{default:a(()=>[s(N,{modelValue:r.localConfig.room,"onUpdate:modelValue":e[5]||(e[5]=o=>r.localConfig.room=o),clearable:"",density:"comfortable",label:"考场号(仅 ExamSchedule-Management 支持此配置)",placeholder:"如:一号考场","prepend-inner-icon":"mdi-home",variant:"outlined"},null,8,["modelValue"])]),_:1})]),_:1}),s(I,null,{default:a(()=>[s(T,{cols:"12"},{default:a(()=>[c("span",Ve,[s(p,{size:"small",class:"mr-1"},{default:a(()=>[...e[39]||(e[39]=[m("mdi-message-text",-1)])]),_:1}),e[40]||(e[40]=m(" 考试提示 ",-1))]),s(ae,{modelValue:r.localConfig.message,"onUpdate:modelValue":e[6]||(e[6]=o=>r.localConfig.message=o),rules:[o=>!!o||"考试提示不能为空",o=>o&&o.trim().length>0||"考试提示不能为空白字符"],clearable:"",density:"comfortable",label:"输入考试相关的提示信息...","no-resize":"",placeholder:"例如:请保持卷面整洁,诚信应考。在听到终考铃时立刻停止作答。",rows:"3",variant:"outlined"},null,8,["modelValue","rules"]),!r.localConfig.message||r.localConfig.message.trim()===""?(g(),v("div",ke,[s(te,{class:"d-flex gap-2",column:""},{default:a(()=>[(g(!0),v(E,null,M(r.defaultExamTips,(o,u)=>(g(),y(z,{key:u,class:"cursor-pointer",color:"primary",size:"small",variant:"outlined",onClick:d=>n.selectDefaultTip(o)},{default:a(()=>[s(p,{size:"small",start:""},{default:a(()=>[...e[41]||(e[41]=[m(" mdi-plus ",-1)])]),_:1}),m(" "+D(o.substring(0,20))+"... ",1)]),_:2},1032,["onClick"]))),128))]),_:1}),c("div",Ie,[s(p,{class:"mr-1",size:"x-small"},{default:a(()=>[...e[42]||(e[42]=[m(" mdi-lightbulb-outline ",-1)])]),_:1}),e[43]||(e[43]=m(" 点击上方选项快速添加常用考试提示 ",-1))])])):C("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),s(b,{border:"",class:"mb-4",elevation:"1"},{default:a(()=>[s(V,{class:"d-flex align-center bg-success-lighten-5 pa-4"},{default:a(()=>[s(p,{class:"mr-2"},{default:a(()=>[...e[44]||(e[44]=[m(" mdi-format-list-bulleted ",-1)])]),_:1}),e[47]||(e[47]=c("span",{class:"font-weight-bold"},"考试科目安排",-1)),s(k),c("div",Ne,[s(se,{modelValue:r.enableCustomAlertTime,"onUpdate:modelValue":e[7]||(e[7]=o=>r.enableCustomAlertTime=o),color:"primary",density:"compact","hide-details":"",onChange:n.toggleAlertTimeMode},{label:a(()=>[...e[45]||(e[45]=[c("span",{class:"text-body-2"},"自定义提醒时间",-1)])]),_:1},8,["modelValue","onChange"])]),s(h,{color:"success","prepend-icon":"mdi-plus",size:"small",variant:"elevated",onClick:n.addExamInfo},{default:a(()=>[...e[46]||(e[46]=[m(" 添加科目 ",-1)])]),_:1},8,["onClick"])]),_:1}),s(w,{class:"pa-0"},{default:a(()=>[r.localConfig.examInfos&&r.localConfig.examInfos.length>0?(g(),y(R,{key:0,class:"py-0"},{default:a(()=>[(g(!0),v(E,null,M(r.localConfig.examInfos,(o,u)=>(g(),y(O,{key:u,class:"border-b pa-4 hover-highlight"},{default:a(()=>[c("div",Se,[c("div",Ee,[s(z,{color:u%2===0?"primary":"secondary",size:"small",variant:"tonal",class:"mr-3"},{default:a(()=>[s(p,{start:"",size:"small"},{default:a(()=>[m(" mdi-numeric-"+D(u+1)+"-circle ",1)]),_:2},1024),m(" 第 "+D(u+1)+" 科目 ",1)]),_:2},1032,["color"]),s(k),c("div",Me,[u>0?(g(),y(h,{key:0,color:"primary",icon:"mdi-arrow-up",size:"x-small",variant:"text",onClick:d=>n.moveExamInfo(u,-1)},{default:a(()=>[s(_,{activator:"parent",location:"bottom"},{default:a(()=>[...e[48]||(e[48]=[m(" 上移 ",-1)])]),_:1})]),_:1},8,["onClick"])):C("",!0),un.moveExamInfo(u,1)},{default:a(()=>[s(_,{activator:"parent",location:"bottom"},{default:a(()=>[...e[49]||(e[49]=[m(" 下移 ",-1)])]),_:1})]),_:1},8,["onClick"])):C("",!0),s(h,{color:"error",icon:"mdi-delete",size:"x-small",variant:"text",onClick:d=>n.removeExamInfo(u)},{default:a(()=>[s(_,{activator:"parent",location:"bottom"},{default:a(()=>[...e[50]||(e[50]=[m(" 删除 ",-1)])]),_:1})]),_:1},8,["onClick"])])]),s(I,{class:"align-start"},{default:a(()=>[s(T,{cols:"12",md:"4"},{default:a(()=>[s(re,{modelValue:o.name,"onUpdate:modelValue":d=>o.name=d,items:r.availableSubjects,rules:[d=>!!d||"科目名称不能为空",d=>d&&d.trim().length>0||"科目名称不能为空白字符"],clearable:"",density:"comfortable","item-title":"name",label:"科目名称","no-data-text":"没有可用科目,请输入自定义名称","prepend-inner-icon":"mdi-book",variant:"outlined"},{"prepend-item":a(()=>[r.customSubjectInput?(g(),y(O,{key:0,title:"自定义:"},{append:a(()=>[c("span",_e,D(r.customSubjectInput),1)]),_:1})):C("",!0),r.customSubjectInput?(g(),y(W,{key:1})):C("",!0)]),_:1},8,["modelValue","onUpdate:modelValue","items","rules"])]),_:2},1024),s(T,{cols:"12",md:"3"},{default:a(()=>[s(B,{modelValue:o.startDateMenu,"onUpdate:modelValue":d=>o.startDateMenu=d,"close-on-content-click":!1,"min-width":"auto","offset-y":"",transition:"scale-transition"},{activator:a(({props:d})=>[s(N,J({modelValue:o.startFormatted,"onUpdate:modelValue":f=>o.startFormatted=f,rules:[f=>!!f||"开始时间不能为空",f=>n.validateTimeFormat(f,"开始时间"),()=>n.validateNoTimeOverlap(o,u)],density:"comfortable",label:"开始时间",placeholder:"2025/01/01 09:00","prepend-inner-icon":"mdi-clock-start"},{ref_for:!0},d,{variant:"outlined",onBlur:f=>n.updateStartDateTimeFromInput(u)}),{append:a(()=>[s(p,null,{default:a(()=>[...e[51]||(e[51]=[m("mdi-calendar-clock",-1)])]),_:1})]),_:1},16,["modelValue","onUpdate:modelValue","rules","onBlur"])]),default:a(()=>[s(b,{"min-width":"500"},{default:a(()=>[s(V,{class:"text-center py-3 bg-primary-lighten-5"},{default:a(()=>[s(p,{class:"mr-2",color:"primary"},{default:a(()=>[...e[52]||(e[52]=[m(" mdi-clock-start ",-1)])]),_:1}),e[53]||(e[53]=m(" 选择开始时间 ",-1))]),_:1}),s(w,{class:"pa-0"},{default:a(()=>[s(I,{"no-gutters":""},{default:a(()=>[s(T,{class:"border-e",cols:"6"},{default:a(()=>[s(P,{modelValue:o.startDate,"onUpdate:modelValue":[d=>o.startDate=d,d=>n.updateStartDateTime(u)],color:"primary",elevation:"0",locale:"zh-cn","show-adjacent-months":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(T,{cols:"6"},{default:a(()=>[s(H,{modelValue:o.startTime,"onUpdate:modelValue":[d=>o.startTime=d,d=>n.updateStartDateTime(u)],color:"primary",elevation:"0",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),s(L,null,{default:a(()=>[s(k),s(h,{color:"grey",variant:"text",onClick:d=>o.startDateMenu=!1},{default:a(()=>[...e[54]||(e[54]=[m(" 关闭 ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(T,{cols:"12",md:"3"},{default:a(()=>[s(B,{modelValue:o.endDateMenu,"onUpdate:modelValue":d=>o.endDateMenu=d,"close-on-content-click":!1,"min-width":"auto","offset-y":"",transition:"scale-transition"},{activator:a(({props:d})=>[s(N,J({modelValue:o.endFormatted,"onUpdate:modelValue":f=>o.endFormatted=f,rules:[f=>!!f||"结束时间不能为空",f=>n.validateTimeFormat(f,"结束时间"),()=>n.validateEndAfterStart(o),()=>n.validateNoTimeOverlap(o,u)],density:"comfortable",label:"结束时间",placeholder:"2025/01/01 11:00","prepend-inner-icon":"mdi-clock-end"},{ref_for:!0},d,{variant:"outlined",onBlur:f=>n.updateEndDateTimeFromInput(u)}),{append:a(()=>[s(p,null,{default:a(()=>[...e[55]||(e[55]=[m("mdi-calendar-clock",-1)])]),_:1})]),_:1},16,["modelValue","onUpdate:modelValue","rules","onBlur"])]),default:a(()=>[s(b,{"min-width":"500"},{default:a(()=>[s(V,{class:"text-center py-3 bg-error-lighten-5"},{default:a(()=>[s(p,{class:"mr-2",color:"error"},{default:a(()=>[...e[56]||(e[56]=[m(" mdi-clock-end ",-1)])]),_:1}),e[57]||(e[57]=m(" 选择结束时间 ",-1))]),_:1}),s(w,{class:"pa-0"},{default:a(()=>[s(I,{"no-gutters":""},{default:a(()=>[s(T,{class:"border-e",cols:"6"},{default:a(()=>[s(P,{modelValue:o.endDate,"onUpdate:modelValue":[d=>o.endDate=d,d=>n.updateEndDateTime(u)],color:"error",elevation:"0",locale:"zh-cn","show-adjacent-months":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(T,{cols:"6"},{default:a(()=>[s(H,{modelValue:o.endTime,"onUpdate:modelValue":[d=>o.endTime=d,d=>n.updateEndDateTime(u)],color:"error",elevation:"0",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),s(L,null,{default:a(()=>[s(k),s(h,{color:"grey",variant:"text",onClick:d=>o.endDateMenu=!1},{default:a(()=>[...e[58]||(e[58]=[m(" 关闭 ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(T,{cols:"12",md:"2"},{default:a(()=>[s(N,{modelValue:o.durationMinutes,"onUpdate:modelValue":d=>o.durationMinutes=d,rules:[d=>!!d||"时长不能为空",d=>!isNaN(d)||"时长必须是数字",d=>parseInt(d)>0||"时长必须大于0",d=>parseInt(d)<=1440||"时长不能超过1440分钟(24小时)"],type:"number",min:"1",max:"1440",density:"comfortable",label:"时长(分钟)",placeholder:"例如:120","prepend-inner-icon":"mdi-timer",variant:"outlined",hint:n.durationHint(o),"persistent-hint":"",onBlur:d=>n.updateDurationFromInput(u)},null,8,["modelValue","onUpdate:modelValue","rules","hint","onBlur"])]),_:2},1024),r.enableCustomAlertTime?(g(),y(T,{key:0,cols:"12",md:"2"},{default:a(()=>[s(N,{modelValue:o.alertTime,"onUpdate:modelValue":d=>o.alertTime=d,rules:[d=>!!d||"提醒时间不能为空",d=>!isNaN(d)||"提醒时间必须是数字",d=>parseInt(d)>=0||"提醒时间不能为负数",d=>parseInt(d)<=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)):C("",!0)]),_:2},1024)])]),_:2},1024))),128))]),_:1})):(g(),v("div",Ue,[s(p,{class:"mb-4",color:"grey-lighten-2",size:"80"},{default:a(()=>[...e[59]||(e[59]=[m(" mdi-calendar-blank ",-1)])]),_:1}),e[61]||(e[61]=c("div",{class:"text-h5 text-grey-darken-1 mb-2"}," 暂无考试科目安排 ",-1)),e[62]||(e[62]=c("div",{class:"text-body-1 text-grey mb-4"},' 点击上方"添加科目"按钮开始配置 ',-1)),s(h,{color:"success","prepend-icon":"mdi-plus",size:"large",variant:"elevated",onClick:n.addExamInfo},{default:a(()=>[...e[60]||(e[60]=[m(" 立即添加科目 ",-1)])]),_:1},8,["onClick"])]))]),_:1})]),_:1})])):C("",!0),s($,{modelValue:r.deleteDialog,"onUpdate:modelValue":e[9]||(e[9]=o=>r.deleteDialog=o),"max-width":"400"},{default:a(()=>[s(b,null,{default:a(()=>[s(V,{class:"d-flex align-center"},{default:a(()=>[s(p,{class:"mr-2",color:"error"},{default:a(()=>[...e[63]||(e[63]=[m(" mdi-delete-alert ",-1)])]),_:1}),e[64]||(e[64]=m(" 确认删除配置 ",-1))]),_:1}),s(w,null,{default:a(()=>[e[65]||(e[65]=m(" 确定要删除配置 ",-1)),c("strong",null,D(r.localConfig.examName||`配置 ${i.configId}`),1),e[66]||(e[66]=m(" 吗? ",-1)),e[67]||(e[67]=c("br",null,null,-1)),e[68]||(e[68]=c("small",{class:"text-grey"},"此操作不可撤销,将会删除所有相关数据",-1))]),_:1}),s(L,null,{default:a(()=>[s(k),s(h,{color:"grey",variant:"text",onClick:e[8]||(e[8]=o=>r.deleteDialog=!1)},{default:a(()=>[...e[69]||(e[69]=[m(" 取消 ",-1)])]),_:1}),s(h,{loading:r.deleting,color:"error",variant:"outlined",onClick:n.deleteConfig},{default:a(()=>[...e[70]||(e[70]=[m(" 删除 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}const at=K(le,[["render",Fe],["__scopeId","data-v-05515a40"]]);export{at as default}; +import{d as x}from"./dataProvider-D5waPBEc.js";import{X as g,_ as v,Y as y,Z as a,k as c,j as s,a1 as m,S as D,$ as C,F as E,a2 as M,aa as q,R as Y,V as K,m as J}from"./vendor-vue-BiQC5iF7.js";import{_ as G,f as p,p as R,q as O,r as X,d as w,e as b,h,F as Z,c as V,g as k,a5 as Q,i as W,l as L,k as $}from"./index-Ceq_468-.js";import{V as A}from"./VAlert-C02HdytA.js";import{V as ee}from"./VSkeletonLoader-B0OOafGJ.js";import{a as _}from"./VTooltip-CWhmSQeX.js";import{V as z,a as te}from"./VChip-BdtDOEwz.js";import{a as T,V as I}from"./VRow-BiiRXDj9.js";import{V as N}from"./VTextField-DpXLMPq7.js";import{V as ae}from"./VTextarea-UKN-Avq_.js";import{V as se}from"./VSwitch-d4Yvphn0.js";import{V as re}from"./VAutocomplete-C-Az_ynh.js";import{V as B}from"./VMenu-DqtPWEMI.js";import{V as P}from"./VDatePicker-C_lQuyln.js";import{V as H}from"./VTimePicker-DXcm5dub.js";import"./vendor-utils-2lvrqI0-.js";import"./serverRotation-Bs3NH0Jb.js";import"./vendor-vuetify-rtu3DHX4.js";import"./VSelect-OEnAsVY5.js";import"./VSheet-MW0wxrpj.js";import"./VCheckboxBtn-snLiE5D5.js";import"./VPicker-DxbAs-x1.js";const le={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(t){return console.error("格式化JSON时出错:",t),"无效的JSON格式"}},formattedStorageJson(){try{const t={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(e=>({name:e.name,start:this.formatDisplayDateTime(e.start),end:this.formatDisplayDateTime(e.end),alertTime:parseInt(e.alertTime)||15}))};return JSON.stringify(t,null,2)}catch(t){return console.error("格式化存储JSON时出错:",t),"无效的JSON格式"}},isValidConfig(){return this.localConfig.examName&&this.localConfig.message&&this.localConfig.examInfos&&this.localConfig.examInfos.length>0&&this.localConfig.examInfos.every(t=>t.name&&t.start&&t.end)},validationErrors(){const t=[];if((!this.localConfig.examName||this.localConfig.examName.trim()==="")&&t.push("考试名称不能为空"),(!this.localConfig.message||this.localConfig.message.trim()==="")&&t.push("考试提示不能为空"),!this.localConfig.examInfos||this.localConfig.examInfos.length===0)t.push("至少需要添加一个考试科目");else{this.localConfig.examInfos.forEach((e,i)=>{const l=`第${i+1}个科目`;if((!e.name||e.name.trim()==="")&&t.push(`${l}的名称不能为空`),e.start||t.push(`${l}的开始时间不能为空`),e.end||t.push(`${l}的结束时间不能为空`),e.start&&e.end){const r=new Date(e.start),n=new Date(e.end);isNaN(r.getTime())&&t.push(`${l}的开始时间格式不正确`),isNaN(n.getTime())&&t.push(`${l}的结束时间格式不正确`),!isNaN(r.getTime())&&!isNaN(n.getTime())&&(n<=r&&t.push(`${l}的结束时间必须晚于开始时间`),(n-r)/(1e3*60*60)>24&&t.push(`${l}的考试时长不能超过24小时`))}});for(let e=0;eu&&t.push(`第${e+1}个科目与第${i+1}个科目的时间有重叠`)}}}return t},hasValidationErrors(){return this.validationErrors.length>0}},watch:{configId:{immediate:!0,handler(t){t&&this.loadConfig()}}},created(){this.loadSubjects()},methods:{async loadSubjects(){try{const t=await x.loadData("classworks-config-subject");t&&Array.isArray(t)?this.availableSubjects=t.sort((e,i)=>(e.order??0)-(i.order??0)).map(e=>({name:e.name,order:e.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(t){console.warn("加载科目列表失败,使用默认列表:",t),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 t=null;for(let e=this.localConfig.examInfos.length-1;e>=0;e--)if(this.localConfig.examInfos[e].end){t=new Date(this.localConfig.examInfos[e].end);break}t||(t=new Date);for(let e=0;e12)return`${e}月份不合法(1-12)`;if(S<1||S>31)return`${e}日期不合法(1-31)`;if(U<0||U>23)return`${e}小时不合法(0-23)`;if(F<0||F>59)return`${e}分钟不合法(0-59)`;const j=new Date(d,f-1,S,U,F);return isNaN(j.getTime())?`${e}日期不存在`:j.getMonth()!==f-1||j.getDate()!==S?`${e}日期不存在`:!0},validateEndAfterStart(t){if(!t.startFormatted||!t.endFormatted)return!0;try{const e=new Date(t.start||t.startFormatted.replace(/\//g,"-")),i=new Date(t.end||t.endFormatted.replace(/\//g,"-"));return isNaN(e.getTime())||isNaN(i.getTime())?!0:i<=e?"结束时间必须晚于开始时间":(i.getTime()-e.getTime())/(1e3*60*60)>24?"考试时长不能超过24小时":!0}catch{return!0}},validateNoTimeOverlap(t,e){if(!t.startFormatted||!t.endFormatted)return!0;try{const i=new Date(t.start||t.startFormatted.replace(/\//g,"-")),l=new Date(t.end||t.endFormatted.replace(/\//g,"-"));if(isNaN(i.getTime())||isNaN(l.getTime()))return!0;for(let r=0;r=o&&io&&l<=u||i<=o&&l>=u)return`时间与"${n.name||`第${r+1}个科目`}"重叠`}return!0}catch{return!0}},toggleAlertTimeMode(){this.enableCustomAlertTime||this.localConfig.examInfos.forEach(t=>{t.alertTime=15})},getExamDuration(t){if(!t.start||!t.end)return"";try{const e=new Date(t.start),i=new Date(t.end);if(isNaN(e.getTime())||isNaN(i.getTime()))return"";const l=i.getTime()-e.getTime(),r=Math.round(l/(1e3*60));if(r<60)return`${r}分钟`;const n=Math.floor(r/60),o=r%60;return o===0?`${n}小时`:`${n}小时${o}分钟`}catch{return""}},updateStartDateTimeFromInput(t){if(t===void 0||!this.localConfig.examInfos[t])return;const e=this.localConfig.examInfos[t],i=e.startFormatted;if(!i)return;const l=i.match(/(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s+(\d{1,2}):(\d{1,2})/);if(!l)return;const[,r,n,o,u,d]=l,f=new Date(parseInt(r),parseInt(n)-1,parseInt(o),parseInt(u),parseInt(d));isNaN(f.getTime())||(e.startDate=f,e.startTime=this.formatTimeOnly(f),e.start=this.formatDateTimeLocal(f),this.updateStartDateTime(t))},updateEndDateTimeFromInput(t){if(t===void 0||!this.localConfig.examInfos[t])return;const e=this.localConfig.examInfos[t],i=e.endFormatted;if(!i)return;const l=i.match(/(\d{4})[\/\-](\d{1,2})[\/\-](\d{1,2})\s+(\d{1,2}):(\d{1,2})/);if(!l)return;const[,r,n,o,u,d]=l,f=new Date(parseInt(r),parseInt(n)-1,parseInt(o),parseInt(u),parseInt(d));isNaN(f.getTime())||(e.endDate=f,e.endTime=this.formatTimeOnly(f),e.end=this.formatDateTimeLocal(f),this.updateEndDateTime(t))},async loadConfig(){var t;this.loading=!0,this.error="";try{const e=await x.loadData(`es_${this.configId}`);if(e){this.localConfig={examName:"",message:"",room:"",examInfos:[],...e},Array.isArray(this.localConfig.examInfos)||(this.localConfig.examInfos=[]),this.localConfig.examInfos.forEach(l=>{if(l.start){const r=this.parseDateTime(l.start);l.start=this.formatDateTimeLocal(r),l.startDate=r,l.startTime=this.formatTimeOnly(r),l.startFormatted=this.formatDisplayDateTime(r),l.startDateMenu=!1}if(l.end){const r=this.parseDateTime(l.end);l.end=this.formatDateTimeLocal(r),l.endDate=r,l.endTime=this.formatTimeOnly(r),l.endFormatted=this.formatDisplayDateTime(r),l.endDateMenu=!1}try{if(l.start&&l.end){const r=new Date(l.start),n=new Date(l.end),o=Math.round((n.getTime()-r.getTime())/(1e3*60));o>0&&o<=24*60?l.durationMinutes=o:l.durationMinutes=120}else l.durationMinutes=120}catch{l.durationMinutes=120}l.alertTime===void 0||l.alertTime===null?l.alertTime=15:l.alertTime=parseInt(l.alertTime)||15});const i=this.localConfig.examInfos.some(l=>l.alertTime!==15);this.enableCustomAlertTime=i}else console.error("加载配置失败:",e),this.error="加载配置失败: "+(((t=e.error)==null?void 0:t.message)||"未知错误"),this.$emit("error",this.error)}catch(e){console.error(e),this.error="加载配置失败: "+e.message,this.$emit("error",this.error)}finally{this.loading=!1}},async saveConfig(){var t;if(!this.isValidConfig){const e=this.validationErrors;return e.length>0?this.error=`配置验证失败:${e.join(";")}`:this.error="请填写完整的配置信息",!1}this.saving=!0,this.error="";try{const e={examName:this.localConfig.examName,message:this.localConfig.message,room:this.localConfig.room,examInfos:this.localConfig.examInfos.map(l=>({name:l.name,start:this.formatDisplayDateTime(l.start),end:this.formatDisplayDateTime(l.end),alertTime:parseInt(l.alertTime)||15}))},i=await x.saveData(`es_${this.configId}`,e);return i?(this.success="配置保存成功",this.$emit("saved",e),!0):(this.error="保存配置失败: "+(((t=i.error)==null?void 0:t.message)||"未知错误"),this.$emit("error",this.error),!1)}catch(e){return this.error="保存配置失败: "+e,this.$emit("error",this.error),!1}finally{this.saving=!1}},addExamInfo(){let t=new Date;if(this.localConfig.examInfos.length>0){const r=this.localConfig.examInfos[this.localConfig.examInfos.length-1];r.end&&(t=new Date(r.end))}const e=new Date(t.getTime()+10*60*1e3),i=new Date(e.getTime()+2*60*60*1e3),l={name:"",start:this.formatDateTimeLocal(e),end:this.formatDateTimeLocal(i),durationMinutes:120,alertTime:15,startDate:e,startTime:this.formatTimeOnly(e),startFormatted:this.formatDisplayDateTime(e),startDateMenu:!1,endDate:i,endTime:this.formatTimeOnly(i),endFormatted:this.formatDisplayDateTime(i),endDateMenu:!1};this.localConfig.examInfos.push(l)},removeExamInfo(t){this.localConfig.examInfos.splice(t,1)},moveExamInfo(t,e){const i=t+e;if(i>=0&&i24*60&&(i=24*60),e.durationMinutes=i,(!e.startDate||!e.startTime)&&e.start){const l=new Date(e.start);isNaN(l.getTime())||(e.startDate=l,e.startTime=this.formatTimeOnly(l))}if(e.startDate&&e.startTime){const l=new Date(e.startDate),[r,n]=String(e.startTime).split(":");l.setHours(parseInt(r),parseInt(n),0,0);const o=new Date(l.getTime()+i*60*1e3);e.endDate=o,e.endTime=this.formatTimeOnly(o),e.end=this.formatDateTimeLocal(o),e.endFormatted=this.formatDisplayDateTime(o)}},formatDateTimeLocal(t){if(!t)return"";let e;if(typeof t=="string"?t.includes("/")?e=new Date(t.replace(/\//g,"-")):e=new Date(t):e=new Date(t),isNaN(e.getTime()))return"";const i=e.getFullYear(),l=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),o=String(e.getMinutes()).padStart(2,"0");return`${i}-${l}-${r}T${n}:${o}`},formatDisplayDateTime(t){if(!t)return"";const e=new Date(t);if(isNaN(e.getTime()))return t;const i=e.getFullYear(),l=String(e.getMonth()+1).padStart(2,"0"),r=String(e.getDate()).padStart(2,"0"),n=String(e.getHours()).padStart(2,"0"),o=String(e.getMinutes()).padStart(2,"0");return`${i}/${l}/${r} ${n}:${o}`},parseDateTime(t){return t?typeof t=="string"?t.includes("/")?new Date(t.replace(/\//g,"-")):new Date(t):new Date(t):new Date},formatTimeOnly(t){if(!t)return"00:00";const e=new Date(t);if(isNaN(e.getTime()))return"00:00";const i=String(e.getHours()).padStart(2,"0"),l=String(e.getMinutes()).padStart(2,"0");return`${i}:${l}`},updateStartDateTime(t){const e=this.localConfig.examInfos[t];if(!e.startDate||!e.startTime)return;const i=new Date(e.startDate),[l,r]=e.startTime.split(":");i.setHours(parseInt(l),parseInt(r),0,0),e.start=this.formatDateTimeLocal(i),e.startFormatted=this.formatDisplayDateTime(i);let n=parseInt(e.durationMinutes);if(isNaN(n)||n<=0||n>24*60)try{let u=null;if(e.endDate&&e.endTime){u=new Date(e.endDate);const[d,f]=String(e.endTime).split(":");u.setHours(parseInt(d),parseInt(f),0,0)}else e.end&&(u=new Date(e.end));if(u&&!isNaN(u.getTime())){const d=Math.round((u.getTime()-i.getTime())/6e4);d>0&&d<=24*60&&(n=d)}}catch{}(isNaN(n)||n<=0||n>24*60)&&(n=120);const o=new Date(i.getTime()+n*60*1e3);e.endDate=o,e.endTime=this.formatTimeOnly(o),e.end=this.formatDateTimeLocal(o),e.endFormatted=this.formatDisplayDateTime(o),e.durationMinutes=n},updateEndDateTime(t){const e=this.localConfig.examInfos[t];if(!e.endDate||!e.endTime)return;const i=new Date(e.endDate),[l,r]=e.endTime.split(":");i.setHours(parseInt(l),parseInt(r),0,0),e.end=this.formatDateTimeLocal(i),e.endFormatted=this.formatDisplayDateTime(i);try{if(e.startDate&&e.startTime){const n=new Date(e.startDate),[o,u]=String(e.startTime).split(":");n.setHours(parseInt(o),parseInt(u),0,0);const d=Math.round((i.getTime()-n.getTime())/(1e3*60));d>0&&d<=24*60&&(e.durationMinutes=d)}}catch{}},async openConfig(){try{const t=await x.getKeyCloudUrl(`es_${this.configId}`,{autoMigrate:!0,autoConfig:!0});if(t.success&&t.url){const e=`https://es.examaware.cn/exam/?configUrl=${encodeURIComponent(t.url)}`;window.open(e,"_blank"),this.success="配置已在新窗口中打开",this.$emit("opened",{configId:this.configId,url:t.url})}else throw new Error(t.error||"获取云端地址失败")}catch(t){this.error="打开配置失败: "+t.message,this.$emit("error","打开配置失败: "+t.message)}},confirmDelete(){this.deleteDialog=!0},async deleteConfig(){this.deleting=!0;try{const i=(await x.loadData("es_list")||[]).filter(r=>r.id!==this.configId);if(!await x.saveData("es_list",i))throw new Error("更新云端列表失败");this.deleteDialog=!1,this.$emit("deleted",{success:!0,message:"配置删除成功",configId:this.configId})}catch(t){console.error("删除配置失败:",t),this.$emit("deleted",{success:!1,message:"删除失败: "+t.message})}finally{this.deleting=!1}},openInEa2Player(){var t;try{const e={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=JSON.stringify(e),l=btoa(unescape(encodeURIComponent(i))),r=`examaware://player?data=${encodeURIComponent(l)}`;window.location.href=r,(t=this.$message)==null||t.success("正在拉起 ExamAware2 播放器...")}catch(e){this.error="拉起播放器失败: "+e.message}}}},oe={class:"d-flex align-center"},ie={class:"d-flex align-center"},ne={key:4,class:"d-flex justify-space-between align-center mb-4"},de={class:"d-flex align-center gap-2"},me={key:5},ue={class:"mb-8"},ce={class:"text-h3 font-weight-bold",style:{"line-height":"1.2"}},fe={class:"text-subtitle-1 text-grey",style:{"white-space":"pre-wrap","line-height":"1.8"}},ge={key:0,class:"mb-8"},pe={class:"d-flex align-center"},he={class:""},ye={class:"mb-3"},De={class:"d-flex align-center mb-1"},Ce={class:"text-h6 font-weight-medium text-success"},Te={class:"d-flex align-center mb-1"},ve={class:"text-h6 font-weight-medium text-error"},be={key:1,class:"text-center py-12"},we={class:"json-preview"},xe={key:6},Ve={class:"text-subtitle-2 font-weight-bold d-block mb-2"},ke={key:0,class:"mt-3"},Ie={class:"text-caption text-medium-emphasis mt-2 ml-2"},Ne={class:"d-flex align-center mr-4"},Se={class:"w-100"},Ee={class:"d-flex align-center mb-3"},Me={class:"d-flex gap-1"},_e={class:"text-primary font-weight-bold"},Ue={key:1,class:"text-center py-12"};function Fe(t,e,i,l,r,n){return g(),v("div",null,[r.error?(g(),y(A,{key:0,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"error",variant:"tonal","onClick:close":e[0]||(e[0]=o=>r.error="")},{default:a(()=>[c("div",oe,[s(p,{class:"mr-2"},{default:a(()=>[...e[10]||(e[10]=[m(" mdi-alert-circle ",-1)])]),_:1}),m(" "+D(r.error),1)])]),_:1})):C("",!0),r.success?(g(),y(A,{key:1,border:"start",class:"mb-4 mt-3 mx-2",closable:"",type:"success",variant:"tonal","onClick:close":e[1]||(e[1]=o=>r.success="")},{default:a(()=>[c("div",ie,[s(p,{class:"mr-2"},{default:a(()=>[...e[11]||(e[11]=[m(" mdi-check-circle ",-1)])]),_:1}),m(" "+D(r.success),1)])]),_:1})):C("",!0),n.hasValidationErrors&&!r.loading?(g(),y(A,{key:2,border:"start",class:"mb-4 mt-3 mx-2",type:"warning",variant:"tonal"},{default:a(()=>[e[13]||(e[13]=c("div",{class:"d-flex align-center"},[c("span",{class:"font-weight-bold"},"配置验证失败,请检查以下问题:")],-1)),s(R,{class:"bg-transparent",density:"compact"},{default:a(()=>[(g(!0),v(E,null,M(n.validationErrors,(o,u)=>(g(),y(O,{key:u,class:"px-0 py-0"},{prepend:a(()=>[s(p,{color:"warning",size:"small"},{default:a(()=>[...e[12]||(e[12]=[m(" mdi-circle-small ",-1)])]),_:1})]),default:a(()=>[s(X,{class:"text-body-2"},{default:a(()=>[m(D(o),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})):C("",!0),r.loading?(g(),y(b,{key:3,class:"my-4",outlined:""},{default:a(()=>[s(w,null,{default:a(()=>[s(ee,{class:"mx-auto",type:"article"})]),_:1})]),_:1})):C("",!0),r.loading?C("",!0):(g(),v("div",ne,[c("div",de,[s(h,{disabled:!n.isValidConfig,class:"text-none",color:"success","prepend-icon":"mdi-open-in-new",variant:"elevated",onClick:n.openConfig},{default:a(()=>[...e[14]||(e[14]=[m(" 打开 ExamSchedule ",-1)])]),_:1},8,["disabled","onClick"]),s(h,{disabled:!n.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-link-variant",variant:"elevated",onClick:n.copyConfigUrl},{default:a(()=>[...e[15]||(e[15]=[m(" 复制远程链接 ",-1)])]),_:1},8,["disabled","onClick"]),s(h,{disabled:!n.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-download",variant:"elevated",onClick:n.downloadAsJson},{default:a(()=>[...e[16]||(e[16]=[m(" JSON 文件 ",-1)])]),_:1},8,["disabled","onClick"]),s(h,{disabled:!n.isValidConfig,class:"text-none",color:"primary","prepend-icon":"mdi-download",variant:"elevated",onClick:n.downloadAsEa2},{default:a(()=>[...e[17]||(e[17]=[m(" .ea2 文件 ",-1)])]),_:1},8,["disabled","onClick"]),s(h,{disabled:!n.isValidConfig,class:"text-none",color:"secondary","prepend-icon":"mdi-play-circle",variant:"elevated",onClick:n.openInEa2Player},{default:a(()=>[...e[18]||(e[18]=[m(" 拉起EA2播放器 ",-1)])]),_:1},8,["disabled","onClick"]),n.isValidConfig?C("",!0):(g(),y(_,{key:0,activator:"parent",location:"bottom"},{default:a(()=>[...e[19]||(e[19]=[c("span",null,"请先完善配置信息后再操作",-1)])]),_:1}))]),s(Z,{modelValue:r.isEditMode,"onUpdate:modelValue":e[2]||(e[2]=o=>r.isEditMode=o),color:"primary",divided:"",variant:"outlined"},{default:a(()=>[s(h,{class:"text-error","prepend-icon":"mdi-delete",onClick:n.confirmDelete},{default:a(()=>[...e[20]||(e[20]=[m(" 删除配置 ",-1)])]),_:1},8,["onClick"]),s(h,{value:!1,"prepend-icon":"mdi-eye"},{default:a(()=>[...e[21]||(e[21]=[m(" 预览 ",-1)])]),_:1}),s(h,{value:!0,"prepend-icon":"mdi-pencil"},{default:a(()=>[...e[22]||(e[22]=[m(" 编辑 ",-1)])]),_:1})]),_:1},8,["modelValue"])])),!r.loading&&!r.isEditMode?(g(),v("div",me,[c("div",ue,[c("div",ce,D(r.localConfig.examName||"未设置考试名称"),1),c("div",fe,D(r.localConfig.message||"未设置考试提示"),1),r.localConfig.room?(g(),y(z,{key:0,class:"px-4 py-2",size:"large"},{default:a(()=>[s(p,{start:""},{default:a(()=>[...e[23]||(e[23]=[m(" mdi-home ",-1)])]),_:1}),m(" 考场:"+D(r.localConfig.room),1)]),_:1})):C("",!0)]),r.localConfig.examInfos&&r.localConfig.examInfos.length>0?(g(),v("div",ge,[s(I,null,{default:a(()=>[(g(!0),v(E,null,M(r.localConfig.examInfos,(o,u)=>(g(),y(T,{key:u,cols:"12",lg:"4",md:"6"},{default:a(()=>[s(b,{class:"h-100",hover:"",variant:"tonal"},{default:a(()=>[s(V,{class:"bg-primary-lighten-5 pa-4"},{default:a(()=>[c("div",pe,[s(p,{class:"mr-2"},{default:a(()=>[...e[24]||(e[24]=[m(" mdi-book-open-page-variant ",-1)])]),_:1}),c("span",he,D(o.name||"未设置科目"),1)])]),_:2},1024),s(w,{class:"pa-4"},{default:a(()=>[c("div",ye,[c("div",De,[s(p,{class:"mr-2",color:"success",size:"small"},{default:a(()=>[...e[25]||(e[25]=[m(" mdi-clock-start ",-1)])]),_:1}),e[26]||(e[26]=c("span",{class:"text-body-2 text-grey-darken-1"},"开始时间",-1))]),c("div",Ce,D(o.startFormatted||o.start||"未设置"),1)]),c("div",null,[c("div",Te,[s(p,{class:"mr-2",color:"error",size:"small"},{default:a(()=>[...e[27]||(e[27]=[m(" mdi-clock-end ",-1)])]),_:1}),e[28]||(e[28]=c("span",{class:"text-body-2 text-grey-darken-1"},"结束时间",-1))]),c("div",ve,D(o.endFormatted||o.end||"未设置"),1)])]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})])):(g(),v("div",be,[s(p,{class:"mb-4",color:"grey-lighten-2",size:"80"},{default:a(()=>[...e[29]||(e[29]=[m(" mdi-calendar-blank ",-1)])]),_:1}),e[32]||(e[32]=c("div",{class:"text-h5 text-grey-darken-1 mb-2"}," 暂无考试科目安排 ",-1)),e[33]||(e[33]=c("div",{class:"text-body-1 text-grey mb-4"},' 点击上方"添加科目"按钮开始配置考试时间表 ',-1)),s(h,{color:"primary",variant:"outlined",onClick:n.quickEdit},{default:a(()=>[s(p,{start:""},{default:a(()=>[...e[30]||(e[30]=[m(" mdi-plus ",-1)])]),_:1}),e[31]||(e[31]=m(" 立即添加 ",-1))]),_:1},8,["onClick"])])),s(b,{border:"",class:"mb-4",elevation:"2"},{default:a(()=>[s(V,{class:"d-flex align-center text-white cursor-pointer",onClick:e[3]||(e[3]=o=>r.showJsonPreview=!r.showJsonPreview)},{default:a(()=>[s(p,{class:"mr-2"},{default:a(()=>[...e[34]||(e[34]=[m(" mdi-code-json ",-1)])]),_:1}),e[36]||(e[36]=m(" 配置预览 ",-1)),s(k),s(h,{color:"white","prepend-icon":"mdi-content-copy",size:"small",variant:"outlined",onClick:q(n.copyToClipboard,["stop"])},{default:a(()=>[...e[35]||(e[35]=[m(" 复制 ",-1)])]),_:1},8,["onClick"]),s(h,{icon:r.showJsonPreview?"mdi-chevron-up":"mdi-chevron-down",class:"ml-2",color:"white",size:"small",variant:"text"},null,8,["icon"])]),_:1}),s(Q,null,{default:a(()=>[Y(s(w,{class:"pa-4"},{default:a(()=>[s(b,{class:"pa-4",variant:"tonal"},{default:a(()=>[c("pre",we,[c("code",null,D(n.formattedStorageJson),1)])]),_:1})]),_:1},512),[[K,r.showJsonPreview]])]),_:1})]),_:1})])):C("",!0),!r.loading&&r.isEditMode?(g(),v("div",xe,[s(b,{border:"",class:"mb-4",elevation:"1"},{default:a(()=>[s(V,{class:"d-flex align-center bg-primary-lighten-5 pa-4"},{default:a(()=>[s(p,{class:"mr-2"},{default:a(()=>[...e[37]||(e[37]=[m(" mdi-information ",-1)])]),_:1}),e[38]||(e[38]=c("span",{class:"font-weight-bold"},"基本信息",-1))]),_:1}),s(w,{class:"pa-6"},{default:a(()=>[s(I,null,{default:a(()=>[s(T,{cols:"12",md:"6"},{default:a(()=>[s(N,{modelValue:r.localConfig.examName,"onUpdate:modelValue":e[4]||(e[4]=o=>r.localConfig.examName=o),rules:[o=>!!o||"考试名称不能为空",o=>o&&o.trim().length>0||"考试名称不能为空白字符",o=>!o||o.length<=100||"考试名称不能超过100个字符"],clearable:"",density:"comfortable",label:"考试名称",placeholder:"如:2025年高考模拟考试","prepend-inner-icon":"mdi-calendar-text",required:"",variant:"outlined"},null,8,["modelValue","rules"])]),_:1}),s(T,{cols:"12",md:"6"},{default:a(()=>[s(N,{modelValue:r.localConfig.room,"onUpdate:modelValue":e[5]||(e[5]=o=>r.localConfig.room=o),clearable:"",density:"comfortable",label:"考场号(仅 ExamSchedule-Management 支持此配置)",placeholder:"如:一号考场","prepend-inner-icon":"mdi-home",variant:"outlined"},null,8,["modelValue"])]),_:1})]),_:1}),s(I,null,{default:a(()=>[s(T,{cols:"12"},{default:a(()=>[c("span",Ve,[s(p,{size:"small",class:"mr-1"},{default:a(()=>[...e[39]||(e[39]=[m("mdi-message-text",-1)])]),_:1}),e[40]||(e[40]=m(" 考试提示 ",-1))]),s(ae,{modelValue:r.localConfig.message,"onUpdate:modelValue":e[6]||(e[6]=o=>r.localConfig.message=o),rules:[o=>!!o||"考试提示不能为空",o=>o&&o.trim().length>0||"考试提示不能为空白字符"],clearable:"",density:"comfortable",label:"输入考试相关的提示信息...","no-resize":"",placeholder:"例如:请保持卷面整洁,诚信应考。在听到终考铃时立刻停止作答。",rows:"3",variant:"outlined"},null,8,["modelValue","rules"]),!r.localConfig.message||r.localConfig.message.trim()===""?(g(),v("div",ke,[s(te,{class:"d-flex gap-2",column:""},{default:a(()=>[(g(!0),v(E,null,M(r.defaultExamTips,(o,u)=>(g(),y(z,{key:u,class:"cursor-pointer",color:"primary",size:"small",variant:"outlined",onClick:d=>n.selectDefaultTip(o)},{default:a(()=>[s(p,{size:"small",start:""},{default:a(()=>[...e[41]||(e[41]=[m(" mdi-plus ",-1)])]),_:1}),m(" "+D(o.substring(0,20))+"... ",1)]),_:2},1032,["onClick"]))),128))]),_:1}),c("div",Ie,[s(p,{class:"mr-1",size:"x-small"},{default:a(()=>[...e[42]||(e[42]=[m(" mdi-lightbulb-outline ",-1)])]),_:1}),e[43]||(e[43]=m(" 点击上方选项快速添加常用考试提示 ",-1))])])):C("",!0)]),_:1})]),_:1})]),_:1})]),_:1}),s(b,{border:"",class:"mb-4",elevation:"1"},{default:a(()=>[s(V,{class:"d-flex align-center bg-success-lighten-5 pa-4"},{default:a(()=>[s(p,{class:"mr-2"},{default:a(()=>[...e[44]||(e[44]=[m(" mdi-format-list-bulleted ",-1)])]),_:1}),e[47]||(e[47]=c("span",{class:"font-weight-bold"},"考试科目安排",-1)),s(k),c("div",Ne,[s(se,{modelValue:r.enableCustomAlertTime,"onUpdate:modelValue":e[7]||(e[7]=o=>r.enableCustomAlertTime=o),color:"primary",density:"compact","hide-details":"",onChange:n.toggleAlertTimeMode},{label:a(()=>[...e[45]||(e[45]=[c("span",{class:"text-body-2"},"自定义提醒时间",-1)])]),_:1},8,["modelValue","onChange"])]),s(h,{color:"success","prepend-icon":"mdi-plus",size:"small",variant:"elevated",onClick:n.addExamInfo},{default:a(()=>[...e[46]||(e[46]=[m(" 添加科目 ",-1)])]),_:1},8,["onClick"])]),_:1}),s(w,{class:"pa-0"},{default:a(()=>[r.localConfig.examInfos&&r.localConfig.examInfos.length>0?(g(),y(R,{key:0,class:"py-0"},{default:a(()=>[(g(!0),v(E,null,M(r.localConfig.examInfos,(o,u)=>(g(),y(O,{key:u,class:"border-b pa-4 hover-highlight"},{default:a(()=>[c("div",Se,[c("div",Ee,[s(z,{color:u%2===0?"primary":"secondary",size:"small",variant:"tonal",class:"mr-3"},{default:a(()=>[s(p,{start:"",size:"small"},{default:a(()=>[m(" mdi-numeric-"+D(u+1)+"-circle ",1)]),_:2},1024),m(" 第 "+D(u+1)+" 科目 ",1)]),_:2},1032,["color"]),s(k),c("div",Me,[u>0?(g(),y(h,{key:0,color:"primary",icon:"mdi-arrow-up",size:"x-small",variant:"text",onClick:d=>n.moveExamInfo(u,-1)},{default:a(()=>[s(_,{activator:"parent",location:"bottom"},{default:a(()=>[...e[48]||(e[48]=[m(" 上移 ",-1)])]),_:1})]),_:1},8,["onClick"])):C("",!0),un.moveExamInfo(u,1)},{default:a(()=>[s(_,{activator:"parent",location:"bottom"},{default:a(()=>[...e[49]||(e[49]=[m(" 下移 ",-1)])]),_:1})]),_:1},8,["onClick"])):C("",!0),s(h,{color:"error",icon:"mdi-delete",size:"x-small",variant:"text",onClick:d=>n.removeExamInfo(u)},{default:a(()=>[s(_,{activator:"parent",location:"bottom"},{default:a(()=>[...e[50]||(e[50]=[m(" 删除 ",-1)])]),_:1})]),_:1},8,["onClick"])])]),s(I,{class:"align-start"},{default:a(()=>[s(T,{cols:"12",md:"4"},{default:a(()=>[s(re,{modelValue:o.name,"onUpdate:modelValue":d=>o.name=d,items:r.availableSubjects,rules:[d=>!!d||"科目名称不能为空",d=>d&&d.trim().length>0||"科目名称不能为空白字符"],clearable:"",density:"comfortable","item-title":"name",label:"科目名称","no-data-text":"没有可用科目,请输入自定义名称","prepend-inner-icon":"mdi-book",variant:"outlined"},{"prepend-item":a(()=>[r.customSubjectInput?(g(),y(O,{key:0,title:"自定义:"},{append:a(()=>[c("span",_e,D(r.customSubjectInput),1)]),_:1})):C("",!0),r.customSubjectInput?(g(),y(W,{key:1})):C("",!0)]),_:1},8,["modelValue","onUpdate:modelValue","items","rules"])]),_:2},1024),s(T,{cols:"12",md:"3"},{default:a(()=>[s(B,{modelValue:o.startDateMenu,"onUpdate:modelValue":d=>o.startDateMenu=d,"close-on-content-click":!1,"min-width":"auto","offset-y":"",transition:"scale-transition"},{activator:a(({props:d})=>[s(N,J({modelValue:o.startFormatted,"onUpdate:modelValue":f=>o.startFormatted=f,rules:[f=>!!f||"开始时间不能为空",f=>n.validateTimeFormat(f,"开始时间"),()=>n.validateNoTimeOverlap(o,u)],density:"comfortable",label:"开始时间",placeholder:"2025/01/01 09:00","prepend-inner-icon":"mdi-clock-start"},{ref_for:!0},d,{variant:"outlined",onBlur:f=>n.updateStartDateTimeFromInput(u)}),{append:a(()=>[s(p,null,{default:a(()=>[...e[51]||(e[51]=[m("mdi-calendar-clock",-1)])]),_:1})]),_:1},16,["modelValue","onUpdate:modelValue","rules","onBlur"])]),default:a(()=>[s(b,{"min-width":"500"},{default:a(()=>[s(V,{class:"text-center py-3 bg-primary-lighten-5"},{default:a(()=>[s(p,{class:"mr-2",color:"primary"},{default:a(()=>[...e[52]||(e[52]=[m(" mdi-clock-start ",-1)])]),_:1}),e[53]||(e[53]=m(" 选择开始时间 ",-1))]),_:1}),s(w,{class:"pa-0"},{default:a(()=>[s(I,{"no-gutters":""},{default:a(()=>[s(T,{class:"border-e",cols:"6"},{default:a(()=>[s(P,{modelValue:o.startDate,"onUpdate:modelValue":[d=>o.startDate=d,d=>n.updateStartDateTime(u)],color:"primary",elevation:"0",locale:"zh-cn","show-adjacent-months":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(T,{cols:"6"},{default:a(()=>[s(H,{modelValue:o.startTime,"onUpdate:modelValue":[d=>o.startTime=d,d=>n.updateStartDateTime(u)],color:"primary",elevation:"0",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),s(L,null,{default:a(()=>[s(k),s(h,{color:"grey",variant:"text",onClick:d=>o.startDateMenu=!1},{default:a(()=>[...e[54]||(e[54]=[m(" 关闭 ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(T,{cols:"12",md:"3"},{default:a(()=>[s(B,{modelValue:o.endDateMenu,"onUpdate:modelValue":d=>o.endDateMenu=d,"close-on-content-click":!1,"min-width":"auto","offset-y":"",transition:"scale-transition"},{activator:a(({props:d})=>[s(N,J({modelValue:o.endFormatted,"onUpdate:modelValue":f=>o.endFormatted=f,rules:[f=>!!f||"结束时间不能为空",f=>n.validateTimeFormat(f,"结束时间"),()=>n.validateEndAfterStart(o),()=>n.validateNoTimeOverlap(o,u)],density:"comfortable",label:"结束时间",placeholder:"2025/01/01 11:00","prepend-inner-icon":"mdi-clock-end"},{ref_for:!0},d,{variant:"outlined",onBlur:f=>n.updateEndDateTimeFromInput(u)}),{append:a(()=>[s(p,null,{default:a(()=>[...e[55]||(e[55]=[m("mdi-calendar-clock",-1)])]),_:1})]),_:1},16,["modelValue","onUpdate:modelValue","rules","onBlur"])]),default:a(()=>[s(b,{"min-width":"500"},{default:a(()=>[s(V,{class:"text-center py-3 bg-error-lighten-5"},{default:a(()=>[s(p,{class:"mr-2",color:"error"},{default:a(()=>[...e[56]||(e[56]=[m(" mdi-clock-end ",-1)])]),_:1}),e[57]||(e[57]=m(" 选择结束时间 ",-1))]),_:1}),s(w,{class:"pa-0"},{default:a(()=>[s(I,{"no-gutters":""},{default:a(()=>[s(T,{class:"border-e",cols:"6"},{default:a(()=>[s(P,{modelValue:o.endDate,"onUpdate:modelValue":[d=>o.endDate=d,d=>n.updateEndDateTime(u)],color:"error",elevation:"0",locale:"zh-cn","show-adjacent-months":""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(T,{cols:"6"},{default:a(()=>[s(H,{modelValue:o.endTime,"onUpdate:modelValue":[d=>o.endTime=d,d=>n.updateEndDateTime(u)],color:"error",elevation:"0",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1024)]),_:2},1024)]),_:2},1024),s(L,null,{default:a(()=>[s(k),s(h,{color:"grey",variant:"text",onClick:d=>o.endDateMenu=!1},{default:a(()=>[...e[58]||(e[58]=[m(" 关闭 ",-1)])]),_:1},8,["onClick"])]),_:2},1024)]),_:2},1024)]),_:2},1032,["modelValue","onUpdate:modelValue"])]),_:2},1024),s(T,{cols:"12",md:"2"},{default:a(()=>[s(N,{modelValue:o.durationMinutes,"onUpdate:modelValue":d=>o.durationMinutes=d,rules:[d=>!!d||"时长不能为空",d=>!isNaN(d)||"时长必须是数字",d=>parseInt(d)>0||"时长必须大于0",d=>parseInt(d)<=1440||"时长不能超过1440分钟(24小时)"],type:"number",min:"1",max:"1440",density:"comfortable",label:"时长(分钟)",placeholder:"例如:120","prepend-inner-icon":"mdi-timer",variant:"outlined",hint:n.durationHint(o),"persistent-hint":"",onBlur:d=>n.updateDurationFromInput(u)},null,8,["modelValue","onUpdate:modelValue","rules","hint","onBlur"])]),_:2},1024),r.enableCustomAlertTime?(g(),y(T,{key:0,cols:"12",md:"2"},{default:a(()=>[s(N,{modelValue:o.alertTime,"onUpdate:modelValue":d=>o.alertTime=d,rules:[d=>!!d||"提醒时间不能为空",d=>!isNaN(d)||"提醒时间必须是数字",d=>parseInt(d)>=0||"提醒时间不能为负数",d=>parseInt(d)<=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)):C("",!0)]),_:2},1024)])]),_:2},1024))),128))]),_:1})):(g(),v("div",Ue,[s(p,{class:"mb-4",color:"grey-lighten-2",size:"80"},{default:a(()=>[...e[59]||(e[59]=[m(" mdi-calendar-blank ",-1)])]),_:1}),e[61]||(e[61]=c("div",{class:"text-h5 text-grey-darken-1 mb-2"}," 暂无考试科目安排 ",-1)),e[62]||(e[62]=c("div",{class:"text-body-1 text-grey mb-4"},' 点击上方"添加科目"按钮开始配置 ',-1)),s(h,{color:"success","prepend-icon":"mdi-plus",size:"large",variant:"elevated",onClick:n.addExamInfo},{default:a(()=>[...e[60]||(e[60]=[m(" 立即添加科目 ",-1)])]),_:1},8,["onClick"])]))]),_:1})]),_:1})])):C("",!0),s($,{modelValue:r.deleteDialog,"onUpdate:modelValue":e[9]||(e[9]=o=>r.deleteDialog=o),"max-width":"400"},{default:a(()=>[s(b,null,{default:a(()=>[s(V,{class:"d-flex align-center"},{default:a(()=>[s(p,{class:"mr-2",color:"error"},{default:a(()=>[...e[63]||(e[63]=[m(" mdi-delete-alert ",-1)])]),_:1}),e[64]||(e[64]=m(" 确认删除配置 ",-1))]),_:1}),s(w,null,{default:a(()=>[e[65]||(e[65]=m(" 确定要删除配置 ",-1)),c("strong",null,D(r.localConfig.examName||`配置 ${i.configId}`),1),e[66]||(e[66]=m(" 吗? ",-1)),e[67]||(e[67]=c("br",null,null,-1)),e[68]||(e[68]=c("small",{class:"text-grey"},"此操作不可撤销,将会删除所有相关数据",-1))]),_:1}),s(L,null,{default:a(()=>[s(k),s(h,{color:"grey",variant:"text",onClick:e[8]||(e[8]=o=>r.deleteDialog=!1)},{default:a(()=>[...e[69]||(e[69]=[m(" 取消 ",-1)])]),_:1}),s(h,{loading:r.deleting,color:"error",variant:"outlined",onClick:n.deleteConfig},{default:a(()=>[...e[70]||(e[70]=[m(" 删除 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}const st=G(le,[["render",Fe],["__scopeId","data-v-05515a40"]]);export{st as default}; diff --git a/assets/ExamScheduleCard-BMCIwBI1.js b/assets/ExamScheduleCard-BMCIwBI1.js new file mode 100644 index 0000000..fb3271f --- /dev/null +++ b/assets/ExamScheduleCard-BMCIwBI1.js @@ -0,0 +1 @@ +import{u as y}from"./index-CbUii4LM.js";import{X as l,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,a7 as b,a8 as k}from"./vendor-vue-BiQC5iF7.js";import{_ as v,c as I,f as c,g as w,h as C,d as T,V as E,p as N,q as z,r as B,t as D,o as L,e as j}from"./index-Ceq_468-.js";import{V as A}from"./VAlert-C02HdytA.js";import"./dataProvider-D5waPBEc.js";import"./vendor-utils-2lvrqI0-.js";import"./serverRotation-Bs3NH0Jb.js";import"./VChip-BdtDOEwz.js";import"./vendor-vuetify-rtu3DHX4.js";import"./VTabs-B7ztkrUN.js";import"./VTable-CJ8evfI8.js";import"./VTooltip-CWhmSQeX.js";import"./VTextField-DpXLMPq7.js";import"./soundList-D9U-Grcp.js";import"./VSwitch-d4Yvphn0.js";import"./VMenu-DqtPWEMI.js";import"./VContainer-BisEDTd3.js";import"./socketClient-DJ8u9nXv.js";import"./vendor-socket-dm1FmSOd.js";import"./deviceEvents-Wy8_E1wQ.js";import"./VAppBarTitle-q97S07ao.js";import"./VRow-BiiRXDj9.js";const q={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"},M={key:0,class:"d-flex justify-center align-center fill-height",style:{"min-height":"200px"}},$={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 l(),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 o;return[a(c,{class:"mr-2"},{default:e(()=>[...t[1]||(t[1]=[r(" mdi-calendar-clock ",-1)])]),_:1}),n("span",F,i(((o=s.exam)==null?void 0:o.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?(l(),d("div",M,[a(E,{indeterminate:"",color:"primary"})])):s.exam?(l(),d(h,{key:1},[s.exam.message?(l(),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(()=>[(l(!0),d(h,null,S(s.exam.examInfos,(o,g)=>(l(),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(o.name.charAt(0)),1)]),_:2},1024)]),default:e(()=>[a(B,{class:"font-weight-bold text-h6 mb-1"},{default:e(()=>[r(i(o.name),1)]),_:2},1024),a(D,{class:"text-body-1"},{default:e(()=>[n("div",$,[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(o.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(o.end)),1)])]),_:2},1024)]),_:2},1024))),128))]),_:1})],64)):(l(),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 pt=v(q,[["render",Y],["__scopeId","data-v-93870135"]]);export{pt as default}; diff --git a/assets/ExamScheduleCard-DhbbmO7J.js b/assets/ExamScheduleCard-DhbbmO7J.js deleted file mode 100644 index 24210af..0000000 --- a/assets/ExamScheduleCard-DhbbmO7J.js +++ /dev/null @@ -1 +0,0 @@ -import{u as y}from"./index-DCuIjJC4.js";import{X as l,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,a7 as b,a8 as k}from"./vendor-vue-BiQC5iF7.js";import{_ as v,c as I,f as c,g as w,h as C,d as T,V as E,p as N,q as z,r as B,t as D,o as L,e as j}from"./index-DGIAsv4W.js";import{V as A}from"./VAlert-BZ4-f-hy.js";import"./dataProvider-GWPC-0Vt.js";import"./vendor-utils-DwALrQNc.js";import"./serverRotation-BtcwvdZJ.js";import"./VChip-mRzIPuM0.js";import"./vendor-vuetify-DsKlzgKp.js";import"./VTabs-DqmvmKGK.js";import"./VTable-Cq72iBVc.js";import"./VTooltip-2IUjfpCS.js";import"./VTextField-BurlcggD.js";import"./soundList-D9U-Grcp.js";import"./VSwitch-k6hfPfa2.js";import"./VContainer-DZyPrcqa.js";import"./socketClient-BKHEsaLg.js";import"./vendor-socket-dm1FmSOd.js";import"./deviceEvents-HN9RDua9.js";import"./VAppBarTitle-DheyIZnb.js";import"./VRow-Cjhiymuu.js";const q={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"},M={key:0,class:"d-flex justify-center align-center fill-height",style:{"min-height":"200px"}},$={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 l(),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 o;return[a(c,{class:"mr-2"},{default:e(()=>[...t[1]||(t[1]=[r(" mdi-calendar-clock ",-1)])]),_:1}),n("span",F,i(((o=s.exam)==null?void 0:o.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?(l(),d("div",M,[a(E,{indeterminate:"",color:"primary"})])):s.exam?(l(),d(h,{key:1},[s.exam.message?(l(),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(()=>[(l(!0),d(h,null,S(s.exam.examInfos,(o,g)=>(l(),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(o.name.charAt(0)),1)]),_:2},1024)]),default:e(()=>[a(B,{class:"font-weight-bold text-h6 mb-1"},{default:e(()=>[r(i(o.name),1)]),_:2},1024),a(D,{class:"text-body-1"},{default:e(()=>[n("div",$,[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(o.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(o.end)),1)])]),_:2},1024)]),_:2},1024))),128))]),_:1})],64)):(l(),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(q,[["render",Y],["__scopeId","data-v-93870135"]]);export{ft as default}; diff --git a/assets/FloatingToolbar-BZD3ZR8B.js b/assets/FloatingToolbar-BZD3ZR8B.js deleted file mode 100644 index b9eec19..0000000 --- a/assets/FloatingToolbar-BZD3ZR8B.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as v,e as m,y as b,h as n,a0 as r,v as y,aA as g}from"./index-DGIAsv4W.js";import{V as k}from"./VSheet-BBnSA_kJ.js";import{V as T}from"./VDatePicker-CuGF0KeL.js";import{X as s,_ as V,j as t,Z as o,n as x,R as d,m as C,Y as u,$ as c,a1 as $}from"./vendor-vue-BiQC5iF7.js";import"./vendor-vuetify-DsKlzgKp.js";import"./VTooltip-2IUjfpCS.js";import"./VPicker-SM18M-iq.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(),V("div",D,[t(y,null,{default:o(()=>[t(m,{class:x([{"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(T,{"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 P=v(B,[["render",z],["__scopeId","data-v-ecf1022d"]]);export{P as default}; diff --git a/assets/FloatingToolbar-Bh03SB2m.js b/assets/FloatingToolbar-Bh03SB2m.js new file mode 100644 index 0000000..2c867b1 --- /dev/null +++ b/assets/FloatingToolbar-Bh03SB2m.js @@ -0,0 +1 @@ +import{_ as v,e as m,y as b,h as n,a0 as r,v as y,aC as g}from"./index-Ceq_468-.js";import{V as k}from"./VMenu-DqtPWEMI.js";import{V as T}from"./VDatePicker-C_lQuyln.js";import{X as s,_ as V,j as t,Z as o,n as x,R as d,m as C,Y as u,$ as c,a1 as $}from"./vendor-vue-BiQC5iF7.js";import"./vendor-vuetify-rtu3DHX4.js";import"./VTooltip-CWhmSQeX.js";import"./VPicker-DxbAs-x1.js";import"./VSheet-MW0wxrpj.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(),V("div",D,[t(y,null,{default:o(()=>[t(m,{class:x([{"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(T,{"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 U=v(B,[["render",z],["__scopeId","data-v-ecf1022d"]]);export{U as default}; diff --git a/assets/HomeworkEditDialog-BpaBTmY_.js b/assets/HomeworkEditDialog-CT_lOawC.js similarity index 92% rename from assets/HomeworkEditDialog-BpaBTmY_.js rename to assets/HomeworkEditDialog-CT_lOawC.js index df4aca6..5164b0e 100644 --- a/assets/HomeworkEditDialog-BpaBTmY_.js +++ b/assets/HomeworkEditDialog-CT_lOawC.js @@ -1,9 +1,9 @@ -import{d as L}from"./dataProvider-GWPC-0Vt.js";import{_ as V,e as w,c as D,g as B,h as C,F as T,d as P,k as R,n as _}from"./index-DGIAsv4W.js";import{V as j}from"./VTextarea-vGWmTJww.js";import{V as x}from"./VChip-mRzIPuM0.js";import{V as E}from"./VAlert-BZ4-f-hy.js";import{a0 as q}from"./vendor-vuetify-DsKlzgKp.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-BiQC5iF7.js";import"./vendor-utils-DwALrQNc.js";import"./serverRotation-BtcwvdZJ.js";import"./VTextField-BurlcggD.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-D5waPBEc.js";import{_ as V,e as w,c as D,g as B,h as C,E as T,d as P,k as R,n as _}from"./index-Ceq_468-.js";import{V as j}from"./VTextarea-UKN-Avq_.js";import{V as x}from"./VChip-BdtDOEwz.js";import{V as E}from"./VAlert-C02HdytA.js";import{a0 as q}from"./vendor-vuetify-rtu3DHX4.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-BiQC5iF7.js";import"./vendor-utils-2lvrqI0-.js";import"./serverRotation-Bs3NH0Jb.js";import"./VTextField-DpXLMPq7.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"},F={key:0,class:"mt-4"},I={key:0,class:"template-buttons"},N={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",F,[e.hasTemplates?(o(),u("div",I,[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",N,[(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(` +`;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 ht=V(A,[["render",et],["__scopeId","data-v-ea6704c8"]]);export{ht as default}; diff --git a/assets/InitServiceChooser-Cm36vuZZ.js b/assets/InitServiceChooser-jMiMsbAb.js similarity index 97% rename from assets/InitServiceChooser-Cm36vuZZ.js rename to assets/InitServiceChooser-jMiMsbAb.js index b759aea..318b481 100644 --- a/assets/InitServiceChooser-Cm36vuZZ.js +++ b/assets/InitServiceChooser-jMiMsbAb.js @@ -1 +1 @@ -import{_ as ie,n as A,s as L,d as Q,f as k,e as y,l as P,h as g,g as ee,c as be,j as ue,o as xe,W as M,k as Y}from"./index-DGIAsv4W.js";import{a as q}from"./dataProvider-GWPC-0Vt.js";import{V as ne}from"./VTextField-BurlcggD.js";import{V as re}from"./VAlert-BZ4-f-hy.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 as O,V as j,u as G,_ as F,F as we,a2 as ye,e as N,D as Ce}from"./vendor-vue-BiQC5iF7.js";import{V as Ve}from"./VTextarea-vGWmTJww.js";import{V as ve}from"./VChip-mRzIPuM0.js";import{V as $e,a as me,b as ce,c as pe}from"./VExpansionPanels-BDI8gHu5.js";import{V as ze,a as fe}from"./VRow-Cjhiymuu.js";import{v as Se}from"./vendor-utils-DwALrQNc.js";import"./vendor-vuetify-DsKlzgKp.js";import"./serverRotation-BtcwvdZJ.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,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;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=((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(Q,{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-4a0e5b44"]]),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(Q,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(Q,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"},Re={class:"diagram-item"},Oe={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"},Je={class:"button-group"},We={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"},Qe={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}},J=()=>{const S=p.value;if(!(S!=null&&S.uuid))return;const _=`${A("server.authDomain")}/?uuid=${encodeURIComponent(S.uuid)}&tolinktoaccount=true`;window.open(_,"_blank")},W=()=>{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(Q,{class:"pa-8"},{default:s(()=>[O(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]]),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(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]]),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",Je,[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",We,[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]]),O(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"]]),O(t("div",qe,[t("div",Qe,[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"]]),O(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:W},{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:J},{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:R},{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-20273397"]]),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};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`),J=A("device.uuid")||"00000000-0000-4000-8000-000000000000";let W=`${m}/authorize?app_id=${o}&mode=callback&callback_url=${oe}&remark=Classworks 自动授权 来自${window.location.hostname} ${new Date().toLocaleString()}`;J!=="00000000-0000-4000-8000-000000000000"&&(W+=`&uuid=${encodeURIComponent(J)}`),window.location.href=W},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: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)}},Lt=ie(_t,[["__scopeId","data-v-cbfbc6db"]]);export{Lt as default}; +import{_ as ie,n as A,s as L,d as Q,f as k,e as y,l as P,h as g,g as ee,c as be,j as ue,o as xe,W as M,k as Y}from"./index-Ceq_468-.js";import{a as q}from"./dataProvider-D5waPBEc.js";import{V as ne}from"./VTextField-DpXLMPq7.js";import{V as re}from"./VAlert-C02HdytA.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 as O,V as j,u as G,_ as F,F as we,a2 as ye,e as N,D as Ce}from"./vendor-vue-BiQC5iF7.js";import{V as Ve}from"./VTextarea-UKN-Avq_.js";import{V as ve}from"./VChip-BdtDOEwz.js";import{V as $e,a as me,b as ce,c as pe}from"./VExpansionPanels-DbwaqF41.js";import{V as ze,a as fe}from"./VRow-BiiRXDj9.js";import{v as Se}from"./vendor-utils-2lvrqI0-.js";import"./vendor-vuetify-rtu3DHX4.js";import"./serverRotation-Bs3NH0Jb.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,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;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=((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(Q,{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-4a0e5b44"]]),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(Q,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(Q,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"},Re={class:"diagram-item"},Oe={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"},Je={class:"button-group"},We={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"},Qe={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}},J=()=>{const S=p.value;if(!(S!=null&&S.uuid))return;const _=`${A("server.authDomain")}/?uuid=${encodeURIComponent(S.uuid)}&tolinktoaccount=true`;window.open(_,"_blank")},W=()=>{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(Q,{class:"pa-8"},{default:s(()=>[O(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]]),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(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]]),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",Je,[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",We,[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]]),O(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"]]),O(t("div",qe,[t("div",Qe,[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"]]),O(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:W},{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:J},{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:R},{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-20273397"]]),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};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`),J=A("device.uuid")||"00000000-0000-4000-8000-000000000000";let W=`${m}/authorize?app_id=${o}&mode=callback&callback_url=${oe}&remark=Classworks 自动授权 来自${window.location.hostname} ${new Date().toLocaleString()}`;J!=="00000000-0000-4000-8000-000000000000"&&(W+=`&uuid=${encodeURIComponent(J)}`),window.location.href=W},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: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)}},Lt=ie(_t,[["__scopeId","data-v-cbfbc6db"]]);export{Lt as default}; diff --git a/assets/MessageLog-CZsTVP4i.js b/assets/MessageLog-C_EKPx-f.js similarity index 86% rename from assets/MessageLog-CZsTVP4i.js rename to assets/MessageLog-C_EKPx-f.js index 1d70156..599174f 100644 --- a/assets/MessageLog-CZsTVP4i.js +++ b/assets/MessageLog-C_EKPx-f.js @@ -1 +1 @@ -import{af as de,I as Q,N as me,aw as fe,u as ge,L as he,ax as ye,C as we,ag as pe,a2 as be,a3 as ke,m as Se,ay as Te,R as Ve,$ as Ee,a4 as Me,ah as Ce,_ as Pe,az as W,p as _e,q as ee,r as te,t as Be,f as ae}from"./index-DGIAsv4W.js";import{b as xe,c as Le}from"./VAppBarTitle-DheyIZnb.js";import{D as se,o as H,A as re,s as x,e as V,w as De,q as Ie,I as Re,k as P,j as E,m as ne,P as He,F as ie,t as X,B as Ne,b as q,f as Ye,X as R,Y as $,Z as T,a1 as O,_ as $e,a2 as Oe,S as F,$ as A}from"./vendor-vue-BiQC5iF7.js";import{s as ze,K as We,C as z,z as Xe,f as Fe,A as Ae,h as qe,a0 as je,n as Ze,aC as Ue,j as Ke,u as Ge,aH as Je,p as Qe,m as et,a5 as tt,aD as at,az as nt,k as ot}from"./vendor-vuetify-DsKlzgKp.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(()=>{H(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",C,{passive:!1}),window.addEventListener("touchend",N,{passive:!0})}),re(()=>{window.removeEventListener("touchstart",M),window.removeEventListener("touchmove",C),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 p;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)&&(p=[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 C(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-p[0]),g=Math.abs(r-p[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,_,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",((_=I.value)==null?void 0:_.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,...Ce(),...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}=qe(e),{borderClasses:h}=de(e),{backgroundColorClasses:S,backgroundColorStyles:w}=Q(()=>e.color),{elevationClasses:v}=be(e),{displayClasses:d,mobile:c}=je(e),{roundedClasses:m}=me(e),y=fe(),p=Ze(e,"modelValue",null,b=>!!b),{ssrBootStyles:L}=ge(),{scopeId:D}=he(),M=q(),C=x(!1),{runOpenDelay:N,runCloseDelay:I}=ke(e,b=>{C.value=b}),o=V(()=>e.rail&&e.expandOnHover&&C.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:p,localTop:i,contentEl:M}),z(()=>e.expandOnHover&&e.rail!=null,()=>{H(C,b=>k("update:rail",!b))}),z(()=>!e.disableResizeWatcher,()=>{H(i,b=>!e.permanent&&Re(()=>p.value=!b))}),z(()=>!e.disableRouteWatcher&&!!y,()=>{H(y.currentRoute,()=>i.value&&(p.value=!1))}),H(()=>e.permanent,b=>{b&&(p.value=!0)}),e.modelValue==null&&!i.value&&(p.value=e.permanent||!c.value);const{isDragging:g,dragProgress:_}=ct({el:M,isActive:p,isTemporary:i,width:o,touchless:X(()=>e.touchless),position:l}),Y=V(()=>{const b=i.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):o.value;return g.value?b*_.value:b}),{layoutItemStyles:j,layoutItemScrimStyles:ue}=Ue({id:e.name,order:V(()=>parseInt(e.order,10)),position:l,layoutSize:Y,elementSize:o,active:Ne(p),disableTransitions:X(()=>g.value),absolute:V(()=>e.absolute||f.value&&typeof Z.value!="string")}),{isStuck:Z,stickyStyles:ce}=lt({rootEl:M,isSticky:f,layoutItemStyles:j}),U=Q(()=>typeof e.scrim=="string"?e.scrim:null),ve=V(()=>({...g.value?{opacity:_.value*.2,transition:"none"}:void 0,...ue.value}));return Ke({VList:{bgColor:"transparent"}}),Ge(()=>{const b=t.image||e.image;return P(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":C.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":i.value,"v-navigation-drawer--persistent":r.value,"v-navigation-drawer--active":p.value,"v-navigation-drawer--sticky":f.value},a.value,S.value,h.value,d.value,v.value,m.value,e.class],style:[w.value,j.value,L.value,ce.value,e.style],inert:!p.value},D,s),{default:()=>{var K,G,J;return[b&&P("div",{key:"image",class:"v-navigation-drawer__img"},[t.image?E(pe,{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&&P("div",{class:"v-navigation-drawer__prepend"},[(K=t.prepend)==null?void 0:K.call(t)]),P("div",{class:"v-navigation-drawer__content"},[(G=t.default)==null?void 0:G.call(t)]),t.append&&P("div",{class:"v-navigation-drawer__append"},[(J=t.append)==null?void 0:J.call(t)])]}}),E(He,{name:"fade-transition"},{default:()=>[i.value&&(g.value||p.value)&&!!e.scrim&&P("div",ne({class:["v-navigation-drawer__scrim",U.backgroundColorClasses.value],style:[ve.value,U.backgroundColorStyles.value],onClick:()=>{r.value||(p.value=!1)}},D),null)]})])}),{isStuck:Z}}}),ft=Ye({name:"MessageLog",setup(){const e=q(!1),n=q([]),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?(R(),$(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]=[O("消息记录",-1)])]),_:1})]),_:1}),E(_e,null,{default:T(()=>[(R(!0),$e(ie,null,Oe(e.messages,a=>(R(),$(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(()=>[O(F(a.title),1)]),_:2},1024),a.content?(R(),$(Be,{key:0},{default:T(()=>[O(F(a.content),1)]),_:2},1024)):A("",!0),P("span",gt,F(new Date(a.timestamp).toLocaleTimeString()),1)]),_:2},1024))),128)),e.messages.length?A("",!0):(R(),$(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]=[O(" 暂无消息 ",-1)])]),_:1})]),_:1}))]),_:1})]),_:1},8,["modelValue"])):A("",!0)}const yt=Pe(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{ai as de,H as Q,N as me,ay as fe,u as ge,L as he,az as ye,C as we,ag as pe,a2 as be,a3 as ke,m as Se,aA as Te,R as Ve,$ as Ee,a4 as Me,aj as Ce,_ as Pe,aB as z,p as _e,q as ee,r as te,t as Be,f as ae}from"./index-Ceq_468-.js";import{b as xe,c as Le}from"./VAppBarTitle-q97S07ao.js";import{D as se,o as H,A as re,s as x,e as V,w as De,q as Ie,I as Re,k as P,j as E,m as ne,P as He,F as ie,t as X,B as Ne,b as j,f as Ye,X as R,Y as $,Z as T,a1 as O,_ as $e,a2 as Oe,S as F,$ as A}from"./vendor-vue-BiQC5iF7.js";import{s as We,K as ze,C as W,z as Xe,f as Fe,A as Ae,h as je,a0 as qe,n as Ze,aC as Ue,j as Ke,u as Ge,aI as Je,p as Qe,m as et,a5 as tt,aD as at,ax as nt,k as ot}from"./vendor-vuetify-rtu3DHX4.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(()=>{H(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",C,{passive:!1}),window.addEventListener("touchend",N,{passive:!0})}),re(()=>{window.removeEventListener("touchstart",M),window.removeEventListener("touchmove",C),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 p;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)&&(p=[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 C(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-p[0]),g=Math.abs(r-p[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 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;De(()=>{var f,g,_,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",((_=I.value)==null?void 0:_.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,...Ce(),...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}=be(e),{displayClasses:d,mobile:c}=qe(e),{roundedClasses:m}=me(e),y=fe(),p=Ze(e,"modelValue",null,b=>!!b),{ssrBootStyles:L}=ge(),{scopeId:D}=he(),M=j(),C=x(!1),{runOpenDelay:N,runCloseDelay:I}=ke(e,b=>{C.value=b}),o=V(()=>e.rail&&e.expandOnHover&&C.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:p,localTop:i,contentEl:M}),W(()=>e.expandOnHover&&e.rail!=null,()=>{H(C,b=>k("update:rail",!b))}),W(()=>!e.disableResizeWatcher,()=>{H(i,b=>!e.permanent&&Re(()=>p.value=!b))}),W(()=>!e.disableRouteWatcher&&!!y,()=>{H(y.currentRoute,()=>i.value&&(p.value=!1))}),H(()=>e.permanent,b=>{b&&(p.value=!0)}),e.modelValue==null&&!i.value&&(p.value=e.permanent||!c.value);const{isDragging:g,dragProgress:_}=ct({el:M,isActive:p,isTemporary:i,width:o,touchless:X(()=>e.touchless),position:l}),Y=V(()=>{const b=i.value?0:e.rail&&e.expandOnHover?Number(e.railWidth):o.value;return g.value?b*_.value:b}),{layoutItemStyles:q,layoutItemScrimStyles:ue}=Ue({id:e.name,order:V(()=>parseInt(e.order,10)),position:l,layoutSize:Y,elementSize:o,active:Ne(p),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:_.value*.2,transition:"none"}:void 0,...ue.value}));return Ke({VList:{bgColor:"transparent"}}),Ge(()=>{const b=t.image||e.image;return P(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":C.value,"v-navigation-drawer--rail":e.rail,"v-navigation-drawer--temporary":i.value,"v-navigation-drawer--persistent":r.value,"v-navigation-drawer--active":p.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:!p.value},D,s),{default:()=>{var K,G,J;return[b&&P("div",{key:"image",class:"v-navigation-drawer__img"},[t.image?E(pe,{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&&P("div",{class:"v-navigation-drawer__prepend"},[(K=t.prepend)==null?void 0:K.call(t)]),P("div",{class:"v-navigation-drawer__content"},[(G=t.default)==null?void 0:G.call(t)]),t.append&&P("div",{class:"v-navigation-drawer__append"},[(J=t.append)==null?void 0:J.call(t)])]}}),E(He,{name:"fade-transition"},{default:()=>[i.value&&(g.value||p.value)&&!!e.scrim&&P("div",ne({class:["v-navigation-drawer__scrim",U.backgroundColorClasses.value],style:[ve.value,U.backgroundColorStyles.value],onClick:()=>{r.value||(p.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 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?(R(),$(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]=[O("消息记录",-1)])]),_:1})]),_:1}),E(_e,null,{default:T(()=>[(R(!0),$e(ie,null,Oe(e.messages,a=>(R(),$(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(()=>[O(F(a.title),1)]),_:2},1024),a.content?(R(),$(Be,{key:0},{default:T(()=>[O(F(a.content),1)]),_:2},1024)):A("",!0),P("span",gt,F(new Date(a.timestamp).toLocaleTimeString()),1)]),_:2},1024))),128)),e.messages.length?A("",!0):(R(),$(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]=[O(" 暂无消息 ",-1)])]),_:1})]),_:1}))]),_:1})]),_:1},8,["modelValue"])):A("",!0)}const yt=Pe(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-DM1cBO1c.js b/assets/PwaInstallCard-CPjNY6NL.js similarity index 85% rename from assets/PwaInstallCard-DM1cBO1c.js rename to assets/PwaInstallCard-CPjNY6NL.js index 2d9892e..d565792 100644 --- a/assets/PwaInstallCard-DM1cBO1c.js +++ b/assets/PwaInstallCard-CPjNY6NL.js @@ -1 +1 @@ -import{D as O,A as Q,X as f,Y as y,Z as e,k as _,j as t,a1 as l,_ as L,F as M,a2 as q,S as d,aa as ee,$ as te,b as C,e as E,r as A}from"./vendor-vue-BiQC5iF7.js";import{c as D,F as ae,d as B,p as R,q as T,r as W,t as F,h,o as U,f as j,l as G,k as se,e as H,g as ne,n as ie,s as oe,aG as le,aH as re}from"./index-DGIAsv4W.js";import{V as de}from"./VChip-mRzIPuM0.js";import"./vendor-vuetify-DsKlzgKp.js";const ue={class:"d-flex flex-no-wrap justify-space-between"},ce={class:"pe-4"},pe={class:"mb-3"},he={__name:"PwaInstallCard",setup(fe){const g=C(!1),o=C(!1),m=C(!1),r=A({title:"",message:"",links:[]}),X={pending:"待授权",granted:"已完成",denied:"已拒绝",unavailable:"不可用"},$={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=E(()=>[{key:"pwa",...n.pwa},{key:"notification",...n.notification},{key:"storage",...n.storage}]),V=E(()=>b.value.some(a=>a.status==="pending")),Y={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 w;const c=async()=>{var v;if(ie("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 p=Notification.permission;n.notification.status=p==="granted"?"granted":p==="denied"?"denied":"pending"}if((v=navigator.storage)!=null&&v.persisted){const p=await navigator.storage.persisted();n.storage.status=p?"granted":"pending"}else n.storage.status="unavailable";const i=b.value.some(p=>p.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 le();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 re();n.storage.status=a?"granted":"denied",a||u("storage","未能启用持久化存储,可按说明检查浏览器或系统设置。")},Z=async()=>{if(!(!V.value||o.value)){o.value=!0;try{await x(),await P(),await N()}finally{o.value=!1,await c()}}},J=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 c()}}},u=(a,s="")=>{a==="pwa"?r.title="如何安装为应用":a==="notification"?r.title="如何开启通知":r.title="如何启用离线存储",r.message=s||"查看以下步骤获取更多说明。",r.links=Y[a]||[],m.value=!0},K=()=>{oe("pwa.hideInstallCard",!0),g.value=!1},S=()=>{n.pwa.status!=="granted"&&(n.pwa.status="pending"),c()},z=()=>{c()},I=()=>{n.pwa.status="granted",c()};return O(()=>{c(),window.addEventListener("pwa-prompt-ready",S),window.addEventListener("pwa-installed",I),w=window.matchMedia("(display-mode: standalone)"),w.addEventListener("change",z)}),Q(()=>{window.removeEventListener("pwa-prompt-ready",S),window.removeEventListener("pwa-installed",I),w&&w.removeEventListener("change",z)}),(a,s)=>g.value?(f(),y(H,{key:0,class:"mb-4",color:"surface-variant",variant:"tonal"},{default:e(()=>[_("div",ue,[_("div",ce,[t(D,{class:"text-h6"},{default:e(()=>[...s[2]||(s[2]=[l(" 安装应用与授权 ",-1)])]),_:1}),t(ae,{class:"pb-1"},{default:e(()=>[...s[3]||(s[3]=[l(" 手动点选下方项目请求安装和权限,也可以直接关闭 ",-1)])]),_:1}),t(B,{class:"pt-0 pb-1"},{default:e(()=>[t(R,{density:"comfortable",lines:"two"},{default:e(()=>[(f(!0),L(M,null,q(b.value,i=>(f(),y(T,{key:i.key,disabled:o.value,onClick:()=>J(i.key)},{prepend:e(()=>[t(U,{color:k[i.status],size:"32",variant:"tonal"},{default:e(()=>[t(j,{icon:$[i.status]},null,8,["icon"])]),_:2},1032,["color"])]),append:e(()=>[t(de,{color:k[i.status],size:"small",variant:"tonal",class:"me-2"},{default:e(()=>[l(d(X[i.status]),1)]),_:2},1032,["color"]),t(h,{variant:"text",icon:"mdi-information",size:"small",disabled:o.value,onClick:ee(()=>u(i.key),["stop"])},null,8,["disabled","onClick"])]),default:e(()=>[t(W,null,{default:e(()=>[l(d(i.label),1)]),_:2},1024),t(F,null,{default:e(()=>[l(d(i.description),1)]),_:2},1024)]),_:2},1032,["disabled","onClick"]))),128))]),_:1})]),_:1}),t(G,null,{default:e(()=>[t(h,{class:"ms-2",variant:"outlined",size:"small",onClick:K},{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:Z},{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(se,{modelValue:m.value,"onUpdate:modelValue":s[1]||(s[1]=i=>m.value=i),"max-width":"520"},{default:e(()=>[t(H,null,{default:e(()=>[t(D,{class:"text-h6"},{default:e(()=>[l(d(r.title),1)]),_:1}),t(B,null,{default:e(()=>[_("p",pe,d(r.message),1),t(R,{density:"comfortable"},{default:e(()=>[(f(!0),L(M,null,q(r.links,(i,v)=>(f(),y(T,{key:v,href:i.href,target:"_blank",rel:"noopener"},{default:e(()=>[t(W,null,{default:e(()=>[l(d(i.text),1)]),_:2},1024),t(F,null,{default:e(()=>[l(d(i.desc),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1}),t(G,null,{default:e(()=>[t(ne),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})):te("",!0)}};export{he as default}; +import{D as O,A as Q,X as f,Y as y,Z as e,k as _,j as t,a1 as l,_ as L,F as M,a2 as E,S as d,aa as ee,$ as te,b as C,e as q,r as A}from"./vendor-vue-BiQC5iF7.js";import{c as D,E as ae,d as B,p as R,q as T,r as W,t as U,h,o as j,f as F,l as G,k as se,e as H,g as ne,n as ie,s as oe,aG as le,aH as re}from"./index-Ceq_468-.js";import{V as de}from"./VChip-BdtDOEwz.js";import"./vendor-vuetify-rtu3DHX4.js";const ue={class:"d-flex flex-no-wrap justify-space-between"},ce={class:"pe-4"},pe={class:"mb-3"},he={__name:"PwaInstallCard",setup(fe){const g=C(!1),o=C(!1),m=C(!1),r=A({title:"",message:"",links:[]}),X={pending:"待授权",granted:"已完成",denied:"已拒绝",unavailable:"不可用"},$={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")),Y={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 w;const c=async()=>{var v;if(ie("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 p=Notification.permission;n.notification.status=p==="granted"?"granted":p==="denied"?"denied":"pending"}if((v=navigator.storage)!=null&&v.persisted){const p=await navigator.storage.persisted();n.storage.status=p?"granted":"pending"}else n.storage.status="unavailable";const i=b.value.some(p=>p.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 le();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 re();n.storage.status=a?"granted":"denied",a||u("storage","未能启用持久化存储,可按说明检查浏览器或系统设置。")},Z=async()=>{if(!(!V.value||o.value)){o.value=!0;try{await x(),await P(),await N()}finally{o.value=!1,await c()}}},J=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 c()}}},u=(a,s="")=>{a==="pwa"?r.title="如何安装为应用":a==="notification"?r.title="如何开启通知":r.title="如何启用离线存储",r.message=s||"查看以下步骤获取更多说明。",r.links=Y[a]||[],m.value=!0},K=()=>{oe("pwa.hideInstallCard",!0),g.value=!1},S=()=>{n.pwa.status!=="granted"&&(n.pwa.status="pending"),c()},z=()=>{c()},I=()=>{n.pwa.status="granted",c()};return O(()=>{c(),window.addEventListener("pwa-prompt-ready",S),window.addEventListener("pwa-installed",I),w=window.matchMedia("(display-mode: standalone)"),w.addEventListener("change",z)}),Q(()=>{window.removeEventListener("pwa-prompt-ready",S),window.removeEventListener("pwa-installed",I),w&&w.removeEventListener("change",z)}),(a,s)=>g.value?(f(),y(H,{key:0,class:"mb-4",color:"surface-variant",variant:"tonal"},{default:e(()=>[_("div",ue,[_("div",ce,[t(D,{class:"text-h6"},{default:e(()=>[...s[2]||(s[2]=[l(" 安装应用与授权 ",-1)])]),_:1}),t(ae,{class:"pb-1"},{default:e(()=>[...s[3]||(s[3]=[l(" 手动点选下方项目请求安装和权限,也可以直接关闭 ",-1)])]),_:1}),t(B,{class:"pt-0 pb-1"},{default:e(()=>[t(R,{density:"comfortable",lines:"two"},{default:e(()=>[(f(!0),L(M,null,E(b.value,i=>(f(),y(T,{key:i.key,disabled:o.value,onClick:()=>J(i.key)},{prepend:e(()=>[t(j,{color:k[i.status],size:"32",variant:"tonal"},{default:e(()=>[t(F,{icon:$[i.status]},null,8,["icon"])]),_:2},1032,["color"])]),append:e(()=>[t(de,{color:k[i.status],size:"small",variant:"tonal",class:"me-2"},{default:e(()=>[l(d(X[i.status]),1)]),_:2},1032,["color"]),t(h,{variant:"text",icon:"mdi-information",size:"small",disabled:o.value,onClick:ee(()=>u(i.key),["stop"])},null,8,["disabled","onClick"])]),default:e(()=>[t(W,null,{default:e(()=>[l(d(i.label),1)]),_:2},1024),t(U,null,{default:e(()=>[l(d(i.description),1)]),_:2},1024)]),_:2},1032,["disabled","onClick"]))),128))]),_:1})]),_:1}),t(G,null,{default:e(()=>[t(h,{class:"ms-2",variant:"outlined",size:"small",onClick:K},{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:Z},{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(F,{icon:"mdi-monitor-cellphone",size:"80"})]),_:1})]),t(se,{modelValue:m.value,"onUpdate:modelValue":s[1]||(s[1]=i=>m.value=i),"max-width":"520"},{default:e(()=>[t(H,null,{default:e(()=>[t(D,{class:"text-h6"},{default:e(()=>[l(d(r.title),1)]),_:1}),t(B,null,{default:e(()=>[_("p",pe,d(r.message),1),t(R,{density:"comfortable"},{default:e(()=>[(f(!0),L(M,null,E(r.links,(i,v)=>(f(),y(T,{key:v,href:i.href,target:"_blank",rel:"noopener"},{default:e(()=>[t(W,null,{default:e(()=>[l(d(i.text),1)]),_:2},1024),t(U,null,{default:e(()=>[l(d(i.desc),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1}),t(G,null,{default:e(()=>[t(ne),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})):te("",!0)}};export{he as default}; diff --git a/assets/RandomPicker-CsXS_sbB.js b/assets/RandomPicker-CZHJEJmO.js similarity index 91% rename from assets/RandomPicker-CsXS_sbB.js rename to assets/RandomPicker-CZHJEJmO.js index 5c510a9..fedda0f 100644 --- a/assets/RandomPicker-CsXS_sbB.js +++ b/assets/RandomPicker-CZHJEJmO.js @@ -1 +1 @@ -import{_ as V,e as C,c as A,f as P,g as _,h,d as v,G as M,k as T,n as u,s as S}from"./index-DGIAsv4W.js";import{X as r,Y as g,Z as l,j as s,a1 as o,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-BiQC5iF7.js";import{V as F}from"./VTextField-BurlcggD.js";import{a as I}from"./VTooltip-2IUjfpCS.js";import{V as y}from"./VChip-mRzIPuM0.js";import"./vendor-vuetify-DsKlzgKp.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:u("randomPicker.defaultCount"),isPickingStarted:!1,isAnimating:!1,pickedStudents:[],animationStudents:[],highlightedIndices:[],animationTimer:null,getSetting:u,tempFilters:{excludeAbsent:u("randomPicker.excludeAbsent"),excludeLate:u("randomPicker.excludeLate"),excludeExcluded:u("randomPicker.excludeExcluded")},pickerMode:u("randomPicker.mode"),minNumber:u("randomPicker.minNumber"),maxNumber:u("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=u("randomPicker.defaultCount"),this.isPickingStarted=!1,this.isAnimating=!1,this.pickedStudents=[],this.tempFilters={excludeAbsent:u("randomPicker.excludeAbsent"),excludeLate:u("randomPicker.excludeLate"),excludeExcluded:u("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,u("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"},G={class:"d-flex justify-center align-center gap-4"},H={class:"mt-4"},R={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]=o(" 随机点名 ",-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(()=>[o(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]=[o(" 重新抽取 ",-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]=[o(" 关闭 ",-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]=[o(" 姓名模式 ",-1)])]),_:1}),s(h,{"prepend-icon":"mdi-numeric",value:"number"},{default:l(()=>[...e[12]||(e[12]=[o(" 学号模式 ",-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",G,[s(F,{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(F,{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",H,[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]=[o(" 开始抽取 ",-1)])]),_:1},8,["disabled","onClick"])]),d.filteredStudents.length===0?(r(),m("div",R,[t.pickerMode==="name"?(r(),m(b,{key:0},[o(" 没有可抽取的学生,请调整过滤选项 ")],64)):(r(),m(b,{key:1},[o(" 请设置有效的学号范围 ")],64))])):x("",!0),a("div",O,[o(" 当前可抽取学生: "+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(()=>[o(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(()=>[o(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(()=>[o(c(t.tempFilters.excludeExcluded?"排除":"包含")+"不参与学生 ",1)]),_:1},8,["color","variant"])])):x("",!0)])]),_:1}))]),_:1})]),_:1},8,["modelValue"])}const ue=V(z,[["render",te],["__scopeId","data-v-090899ef"]]);export{ue as default}; +import{_ as V,e as C,c as A,f as P,g as _,h,d as v,F as M,k as T,n as u,s as S}from"./index-Ceq_468-.js";import{X as r,Y as g,Z as l,j as s,a1 as o,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-BiQC5iF7.js";import{V as N}from"./VTextField-DpXLMPq7.js";import{a as I}from"./VTooltip-CWhmSQeX.js";import{V as y}from"./VChip-BdtDOEwz.js";import"./vendor-vuetify-rtu3DHX4.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:u("randomPicker.defaultCount"),isPickingStarted:!1,isAnimating:!1,pickedStudents:[],animationStudents:[],highlightedIndices:[],animationTimer:null,getSetting:u,tempFilters:{excludeAbsent:u("randomPicker.excludeAbsent"),excludeLate:u("randomPicker.excludeLate"),excludeExcluded:u("randomPicker.excludeExcluded")},pickerMode:u("randomPicker.mode"),minNumber:u("randomPicker.minNumber"),maxNumber:u("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=u("randomPicker.defaultCount"),this.isPickingStarted=!1,this.isAnimating=!1,this.pickedStudents=[],this.tempFilters={excludeAbsent:u("randomPicker.excludeAbsent"),excludeLate:u("randomPicker.excludeLate"),excludeExcluded:u("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,u("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]=o(" 随机点名 ",-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(()=>[o(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]=[o(" 重新抽取 ",-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]=[o(" 关闭 ",-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]=[o(" 姓名模式 ",-1)])]),_:1}),s(h,{"prepend-icon":"mdi-numeric",value:"number"},{default:l(()=>[...e[12]||(e[12]=[o(" 学号模式 ",-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]=[o(" 开始抽取 ",-1)])]),_:1},8,["disabled","onClick"])]),d.filteredStudents.length===0?(r(),m("div",G,[t.pickerMode==="name"?(r(),m(b,{key:0},[o(" 没有可抽取的学生,请调整过滤选项 ")],64)):(r(),m(b,{key:1},[o(" 请设置有效的学号范围 ")],64))])):x("",!0),a("div",O,[o(" 当前可抽取学生: "+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(()=>[o(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(()=>[o(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(()=>[o(c(t.tempFilters.excludeExcluded?"排除":"包含")+"不参与学生 ",1)]),_:1},8,["color","variant"])])):x("",!0)])]),_:1}))]),_:1})]),_:1},8,["modelValue"])}const ue=V(z,[["render",te],["__scopeId","data-v-090899ef"]]);export{ue as default}; diff --git a/assets/StudentNameManager-CfZ3q6RU.js b/assets/StudentNameManager-CfZ3q6RU.js new file mode 100644 index 0000000..b379a9d --- /dev/null +++ b/assets/StudentNameManager-CfZ3q6RU.js @@ -0,0 +1 @@ +import{_ as le,w as oe,e as ne,c as ue,d as re,l as ie,h as z,g as ve,k as de,n as $}from"./index-Ceq_468-.js";import{a as D,d as E}from"./dataProvider-D5waPBEc.js";import{V as ce}from"./VAutocomplete-C-Az_ynh.js";import{V as me}from"./VTextField-DpXLMPq7.js";import{V as pe}from"./VChip-BdtDOEwz.js";import{V as fe}from"./VSwitch-d4Yvphn0.js";import{V as ge}from"./VCombobox-CjTuZar9.js";import{V as ke}from"./VAlert-C02HdytA.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,af as Ve,e as g,b as c}from"./vendor-vue-BiQC5iF7.js";import"./vendor-vuetify-rtu3DHX4.js";import"./vendor-utils-2lvrqI0-.js";import"./serverRotation-Bs3NH0Jb.js";import"./VSelect-OEnAsVY5.js";import"./VMenu-DqtPWEMI.js";import"./VSheet-MW0wxrpj.js";import"./VCheckboxBtn-snLiE5D5.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:K,emit:X}){const F=X,v=c(!1),k=c(""),y=c([]),T=c(""),m=c(!1),i=c(""),u=c(null),r=c([]),Y=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"}),Z=g(()=>{var e;return((e=u.value)==null?void 0:e.isReadOnly)===!0}),q=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,Y.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()}),K({checkStudentNameStatus:A,openDialog:M,currentStudentName:T,currentTeacherName:b,isStudentToken:w,isTeacherToken:C,isReadOnly:Z,displayName:q,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-e0ac52e0"]]);export{Pe as default}; diff --git a/assets/StudentNameManager-DB-P5C67.js b/assets/StudentNameManager-DB-P5C67.js deleted file mode 100644 index b341a8a..0000000 --- a/assets/StudentNameManager-DB-P5C67.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as le,w as oe,e as ne,c as ue,d as re,l as ie,h as z,g as ve,k as de,n as $}from"./index-DGIAsv4W.js";import{a as D,d as E}from"./dataProvider-GWPC-0Vt.js";import{V as ce}from"./VAutocomplete-N0zTUlyj.js";import{V as me}from"./VTextField-BurlcggD.js";import{V as pe}from"./VChip-mRzIPuM0.js";import{V as fe}from"./VSwitch-k6hfPfa2.js";import{V as ge}from"./VCombobox-BGa7K58w.js";import{V as ke}from"./VAlert-BZ4-f-hy.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,af as Ve,e as g,b as c}from"./vendor-vue-BiQC5iF7.js";import"./vendor-vuetify-DsKlzgKp.js";import"./vendor-utils-DwALrQNc.js";import"./serverRotation-BtcwvdZJ.js";import"./VSelect-oxA0t9CG.js";import"./VSheet-BBnSA_kJ.js";import"./VCheckboxBtn-BKcSogH0.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:K,emit:X}){const F=X,v=c(!1),k=c(""),y=c([]),T=c(""),m=c(!1),i=c(""),u=c(null),r=c([]),Y=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"}),Z=g(()=>{var e;return((e=u.value)==null?void 0:e.isReadOnly)===!0}),q=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,Y.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()}),K({checkStudentNameStatus:A,openDialog:M,currentStudentName:T,currentTeacherName:b,isStudentToken:w,isTeacherToken:C,isReadOnly:Z,displayName:q,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))}},Oe=le(Se,[["__scopeId","data-v-e0ac52e0"]]);export{Oe as default}; diff --git a/assets/UafTransferDialog-BiTNoR1z.js b/assets/UafTransferDialog-BiTNoR1z.js new file mode 100644 index 0000000..8f9f104 --- /dev/null +++ b/assets/UafTransferDialog-BiTNoR1z.js @@ -0,0 +1,3 @@ +import{d as ee}from"./dataProvider-D5waPBEc.js";import{x as Ve,H as $e,C as _e,f as ue,ag as te,h as z,b as Se,av as je,a as De,_ as Ue,e as Ce,c as Pe,g as K,i as ae,d as Te,j as ne,p as se,q as oe,r as le,t as ie,l as Ee,k as Ae}from"./index-Ceq_468-.js";import{f as Ie,h as Me,a0 as de,u as Be,s as Fe,p as Le,I as Ne,m as ze,k as Re}from"./vendor-vuetify-rtu3DHX4.js";import{V as Oe}from"./VTextField-DpXLMPq7.js";import{V as W}from"./VAlert-C02HdytA.js";import{V as re}from"./VCheckboxBtn-snLiE5D5.js";import{V as L}from"./VChip-BdtDOEwz.js";import{k as b,F as A,j as r,N as Ye,n as Ke,o as We,X as g,Y as x,Z as m,a1 as k,S as w,_ as E,$ as D,a2 as N,u as qe,b as U,e as C}from"./vendor-vue-BiQC5iF7.js";import{V as He}from"./VFileInput-D2ZU5WsA.js";import{V as Je,a as Xe,b as Ze,c as Ge}from"./VExpansionPanels-DbwaqF41.js";import{V as Qe}from"./VSelect-OEnAsVY5.js";import"./vendor-utils-2lvrqI0-.js";import"./serverRotation-Bs3NH0Jb.js";import"./VSwitch-d4Yvphn0.js";import"./VMenu-DqtPWEMI.js";import"./VSheet-MW0wxrpj.js";const I={subjectMax:200,contentMax:2e3,tagMax:50,tagCountMax:20};class M extends Error{constructor(c){super(c.join(";")),this.name="UafExportValidationError",this.issues=c}}function O(e){if(/^\d{8}$/.test(e))return`${e.slice(0,4)}-${e.slice(4,6)}-${e.slice(6,8)}`;if(/^\d{4}-\d{2}-\d{2}$/.test(e))return e;if(/^\d{4}-\d{2}-\d{2}T/.test(e)&&!Number.isNaN(Date.parse(e)))return e.slice(0,10);throw new M([`日期 ${e||"(空)"} 不是有效的 YYYYMMDD 或 YYYY-MM-DD 格式`])}function ce(e){return O(e).replaceAll("-","")}function R(e){return Array.isArray(e)?e.map(c=>String(c)):[]}function me(e,c=e.subject||"作业"){const o=[];e.subject||o.push(`${c}:科目名称不能为空`),e.subject.length>I.subjectMax&&o.push(`${c}:科目名称超过 ${I.subjectMax} 个字符`);try{O(e.date)}catch(a){o.push(...a.issues.map(u=>`${c}:${u}`))}return e.content||o.push(`${c}:正文不能为空`),e.content.length>I.contentMax&&o.push(`${c}:正文超过 ${I.contentMax} 个字符`),e.tags.length>I.tagCountMax&&o.push(`${c}:标签超过 ${I.tagCountMax} 个`),e.tags.some(a=>!a||a.length>I.tagMax||a.includes(";"))&&o.push(`${c}:包含无效标签`),o}function et(e,c){const o=O(c);return e.filter(a=>a&&(a.type==="homework"||a.type==="custom")).filter(a=>typeof a.content=="string"&&a.content.trim().length>0).map((a,u)=>{const f={subject:String(a.name||"").trim(),date:o,content:a.content,tags:R(a.tags)},d=me(f,f.subject||`第 ${u+1} 张卡片`);return{id:`${a.key||u}-${u}`,assignment:f,selected:d.length===0,issues:d}})}function tt(e,c=[]){var u,f;const o=(e==null?void 0:e.homework)||{},a=[];for(const d of c){const s=o[d.name];(u=s==null?void 0:s.content)!=null&&u.trim()&&a.push({key:d.name,name:d.name,type:"homework",content:s.content,tags:R(s.tags),order:d.order??0})}for(const[d,s]of Object.entries(o))d.startsWith("custom-")&&((f=s==null?void 0:s.content)!=null&&f.trim())&&a.push({key:d,name:s.name,type:"custom",content:s.content,tags:R(s.tags),order:9999});return a.sort((d,s)=>d.order-s.order)}async function fe(){return Ve(()=>import("./browser-BcesygxY.js"),[],import.meta.url)}async function at(e){var f;if(!e||!((f=e.name)!=null&&f.toLowerCase().endsWith(".pdf")))throw new M(["请选择 UAF PDF 文件"]);const c=new Uint8Array(await e.arrayBuffer()),{validateUafPdf:o,extractUafPayload:a}=await fe(),u=await o(c);if(!u.valid)throw new M(u.errors.length?u.errors:["文件不是有效的 UAF PDF"]);return u.payload||a(c)}async function nt(e,c,o){const a=new Set(c.map(s=>s.name)),u=[...new Set(e.map(s=>ce(s.date)))],f=new Map;for(const s of u)f.set(s,await o(s));return{rows:e.map((s,l)=>{var P,V,S;const p=ce(s.date),y=f.get(p),$=a.has(s.subject);let v=$?s.subject:null;$||(v=Object.keys(y.homework||{}).find(T=>{var j;return T.startsWith("custom-")&&((j=y.homework[T])==null?void 0:j.name)===s.subject}));const _=!!(v&&((S=(V=(P=y.homework)==null?void 0:P[v])==null?void 0:V.content)!=null&&S.trim()));return{id:`uaf-import-${l}`,index:l,date:p,assignment:{...s,tags:R(s.tags)},targetType:$?"homework":"custom",targetKey:v,conflict:_,action:_?"keep":"import"}}),boards:f}}function pe(e){const c=[],o=new Map;for(const a of e){if(a.action==="keep")continue;const u=a.targetKey?`${a.date}:${a.targetKey}`:null;u&&o.has(u)&&c.push(`${a.date} 的“${a.assignment.subject}”有多条记录指向同一卡片`),u&&o.set(u,a.id)}return c}async function st(e,c){const o=pe(e.rows);if(o.length)throw new M(o);const a=new Set;let u=0,f=0;for(const l of e.rows){if(l.action==="keep"){f+=1;continue}const p=e.boards.get(l.date);if(p.homework||(p.homework={}),l.targetType==="homework")p.homework[l.assignment.subject]={...p.homework[l.assignment.subject]||{},content:l.assignment.content,tags:l.assignment.tags};else if(l.targetKey)p.homework[l.targetKey]={...p.homework[l.targetKey],name:l.assignment.subject,type:"custom",content:l.assignment.content,tags:l.assignment.tags};else{const y=`custom-uaf-${Date.now()}-${l.index}`;p.homework[y]={name:l.assignment.subject,type:"custom",content:l.assignment.content,tags:l.assignment.tags}}u+=1,a.add(l.date)}const d=[],s=[];for(const l of a)try{await c(l,e.boards.get(l)),d.push(l)}catch(p){s.push({date:l,error:p})}return{imported:u,skipped:f,savedDates:d,failedDates:s}}async function ot(e,c){if(!e.length)throw new M(["请至少选择一项作业"]);const o=e.flatMap(v=>me(v));if(o.length)throw new M(o);const{createUafPdf:a}=await fe(),u="./",f=new URL(`${u}uaf/NotoSansSC-Regular.otf`,window.location.origin),d=new URL(`${u}uaf/hb-subset.wasm`,window.location.origin),s=await a(e,{fontUrl:f,wasmUrl:d,theme:"classworks-dark"}),l=new window.Blob([s],{type:"application/pdf"}),p=URL.createObjectURL(l),y=document.createElement("a"),$=O(c);return y.href=p,y.download=`Classworks-作业-${$}.uaf.pdf`,document.body.appendChild(y),y.click(),y.remove(),window.setTimeout(()=>URL.revokeObjectURL(p),1e3),y.download}const lt=Le({actionText:String,bgColor:String,color:String,icon:Ne,image:String,justify:{type:String,default:"center"},headline:String,title:String,text:String,textWidth:{type:[Number,String],default:500},href:String,to:String,...Re(),...De(),...je({size:void 0}),...ze()},"VEmptyState"),it=Ie()({name:"VEmptyState",props:lt(),emits:{"click:action":e=>!0},setup(e,c){let{emit:o,slots:a}=c;const{themeClasses:u}=Me(e),{backgroundColorClasses:f,backgroundColorStyles:d}=$e(()=>e.bgColor),{dimensionStyles:s}=Se(e),{displayClasses:l}=de();function p(y){o("click:action",y)}return Be(()=>{var S,T,j;const y=!!(a.actions||e.actionText),$=!!(a.headline||e.headline),v=!!(a.title||e.title),_=!!(a.text||e.text),P=!!(a.media||e.image||e.icon),V=e.size||(e.image?200:96);return b("div",{class:Ke(["v-empty-state",{[`v-empty-state--${e.justify}`]:!0},u.value,f.value,l.value,e.class]),style:Ye([d.value,s.value,e.style])},[P&&b("div",{key:"media",class:"v-empty-state__media"},[a.media?r(te,{key:"media-defaults",defaults:{VImg:{src:e.image,height:V},VIcon:{size:V,icon:e.icon}}},{default:()=>[a.media()]}):b(A,null,[e.image?r(_e,{key:"image",src:e.image,height:V},null):e.icon?r(ue,{key:"icon",color:e.color,size:V,icon:e.icon},null):void 0])]),$&&b("div",{key:"headline",class:"v-empty-state__headline"},[((S=a.headline)==null?void 0:S.call(a))??e.headline]),v&&b("div",{key:"title",class:"v-empty-state__title"},[((T=a.title)==null?void 0:T.call(a))??e.title]),_&&b("div",{key:"text",class:"v-empty-state__text",style:{maxWidth:Fe(e.textWidth)}},[((j=a.text)==null?void 0:j.call(a))??e.text]),a.default&&b("div",{key:"content",class:"v-empty-state__content"},[a.default()]),y&&b("div",{key:"actions",class:"v-empty-state__actions"},[r(te,{defaults:{VBtn:{class:"v-empty-state__action-btn",color:e.color??"surface-variant",href:e.href,text:e.actionText,to:e.to}}},{default:()=>{var B;return[((B=a.actions)==null?void 0:B.call(a,{props:{onClick:p}}))??r(z,{onClick:p},null)]}})])])}),{}}}),rt={key:2,class:"d-flex align-center mb-2"},ct={class:"text-caption text-medium-emphasis"},ut={class:"d-flex flex-wrap align-center mt-1 ga-1"},dt={key:0,class:"text-caption text-error"},mt={class:"text-body-2 mb-3"},ft={class:"text-caption text-medium-emphasis ml-2"},pt={__name:"UafTransferDialog",props:{modelValue:Boolean,mode:{type:String,default:"export"},currentDate:{type:String,required:!0},currentItems:{type:Array,default:()=>[]},currentBoardData:{type:Object,required:!0},subjects:{type:Array,default:()=>[]}},emits:["update:modelValue","success","error","imported"],setup(e,{emit:c}){const o=e,a=c,{mobile:u}=de(),f=C({get:()=>o.modelValue,set:t=>a("update:modelValue",t)}),d=U(""),s=U([]),l=U(""),p=U(!1),y=U(!1),$=U(null),v=U(null),_=U(""),P=U(!1),V=U(!1),S=C(()=>y.value||V.value||P.value),T=C(()=>s.value.filter(t=>t.selected).map(t=>t.assignment)),j=C(()=>s.value.filter(t=>t.issues.length===0)),B=C(()=>j.value.length>0&&j.value.every(t=>t.selected)),ve=C(()=>j.value.some(t=>t.selected)),q=C(()=>{if(!v.value)return[];const t=new Map;for(const n of v.value.rows)t.has(n.date)||t.set(n.date,[]),t.get(n.date).push(n);return[...t].map(([n,i])=>({date:n,rows:i}))}),Y=C(()=>{var t;return pe(((t=v.value)==null?void 0:t.rows)||[])}),ge=C(()=>o.mode==="export"?T.value.length===0||p.value:!v.value||Y.value.length>0||V.value),ye=C(()=>{if(o.mode==="export")return`文件日期:${d.value||"未选择"}`;if(!v.value)return"仅支持内嵌 uaf_payload.csv 的 UAF PDF";const t=v.value.rows.filter(n=>n.action!=="keep").length;return`将导入 ${t} 项,保留 ${v.value.rows.length-t} 项`});We(()=>o.modelValue,t=>{t&&(o.mode==="export"?(d.value=Q(o.currentDate),X()):($.value=null,v.value=null,_.value=""))});function H(t){return JSON.parse(JSON.stringify(t||{homework:{},attendance:{}}))}async function J(t){var i,h;if(t===o.currentDate)return H(o.currentBoardData);const n=await ee.loadData(`classworks-data-${t}`);if((n==null?void 0:n.success)===!1){if(((i=n.error)==null?void 0:i.code)==="NOT_FOUND")return{homework:{},attendance:{absent:[],late:[],exclude:[]}};throw new Error(((h=n.error)==null?void 0:h.message)||`无法读取 ${t} 的作业`)}return H(n)}async function X(){if(d.value){p.value=!0,l.value="";try{const t=d.value.replaceAll("-",""),n=t===o.currentDate?o.currentItems:tt(await J(t),o.subjects);s.value=et(n,d.value)}catch(t){s.value=[],l.value=t.message||"无法加载该日期的作业"}finally{p.value=!1}}}function he(){const t=!B.value;for(const n of j.value)n.selected=t}async function we(){y.value=!0;try{const t=await ot(T.value,d.value);a("success","导出成功",t),f.value=!1}catch(t){Z("导出失败",t)}finally{y.value=!1}}async function ke(t){const n=Array.isArray(t)?t[0]:t;if(v.value=null,_.value="",!!n){P.value=!0;try{const i=await at(n);v.value=await nt(i,o.subjects,J)}catch(i){_.value=G(i)}finally{P.value=!1}}}function xe(t){return t.conflict?[{title:"保留现有",value:"keep"},{title:"覆盖现有",value:"overwrite"}]:[{title:"导入",value:"import"},{title:"跳过",value:"keep"}]}async function be(){V.value=!0;try{const t=await st(v.value,async(n,i)=>{var F;const h=await ee.saveData(`classworks-data-${n}`,i);if((h==null?void 0:h.success)===!1)throw new Error(((F=h.error)==null?void 0:F.message)||"保存失败")});a("imported",t),t.failedDates.length?a("error","部分日期导入失败",`已保存:${t.savedDates.join("、")||"无"} +失败:${t.failedDates.map(n=>n.date).join("、")}`):(a("success","导入完成",`已导入 ${t.imported} 项,保留 ${t.skipped} 项`),f.value=!1)}catch(t){Z("导入失败",t)}finally{V.value=!1}}function Z(t,n){a("error",t,G(n))}function G(t){return t instanceof M?t.issues.join(` +`):(t==null?void 0:t.message)||"发生未知错误"}function Q(t){return/^\d{8}$/.test(t)?`${t.slice(0,4)}-${t.slice(4,6)}-${t.slice(6,8)}`:t}return(t,n)=>(g(),x(Ae,{modelValue:f.value,"onUpdate:modelValue":n[5]||(n[5]=i=>f.value=i),fullscreen:qe(u),"max-width":"920",scrollable:""},{default:m(()=>[r(Ce,null,{default:m(()=>[r(Pe,{class:"d-flex align-center"},{default:m(()=>[r(ue,{icon:e.mode==="export"?"mdi-file-export-outline":"mdi-file-import-outline",class:"mr-2"},null,8,["icon"]),k(" "+w(e.mode==="export"?"导出 UAF":"导入 UAF")+" ",1),r(K),r(z,{icon:"mdi-close",variant:"text",onClick:n[0]||(n[0]=i=>f.value=!1)})]),_:1}),r(ae),r(Te,{class:"transfer-content"},{default:m(()=>[e.mode==="export"?(g(),E(A,{key:0},[r(Oe,{modelValue:d.value,"onUpdate:modelValue":[n[1]||(n[1]=i=>d.value=i),X],class:"mb-3",label:"导出日期","prepend-inner-icon":"mdi-calendar",type:"date","hide-details":"",disabled:S.value},null,8,["modelValue","disabled"]),p.value?(g(),x(ne,{key:0,class:"mb-3",indeterminate:""})):D("",!0),l.value?(g(),x(W,{key:1,class:"mb-3",type:"warning",variant:"tonal"},{default:m(()=>[k(w(l.value),1)]),_:1})):D("",!0),s.value.length?(g(),E("div",rt,[r(re,{"model-value":B.value,indeterminate:ve.value&&!B.value,onClick:he},null,8,["model-value","indeterminate"]),n[6]||(n[6]=b("span",{class:"text-body-2"},"选择全部有效作业",-1)),r(K),b("span",ct," 已选择 "+w(T.value.length)+" / "+w(s.value.length)+" 项 ",1)])):D("",!0),s.value.length?(g(),x(se,{key:3,border:"",lines:"three"},{default:m(()=>[(g(!0),E(A,null,N(s.value,i=>(g(),x(oe,{key:i.id},{prepend:m(()=>[r(re,{modelValue:i.selected,"onUpdate:modelValue":h=>i.selected=h,disabled:i.issues.length>0},null,8,["modelValue","onUpdate:modelValue","disabled"])]),default:m(()=>[r(le,null,{default:m(()=>[k(w(i.assignment.subject),1)]),_:2},1024),r(ie,{class:"content-preview"},{default:m(()=>[k(w(i.assignment.content),1)]),_:2},1024),b("div",ut,[r(L,{size:"x-small",variant:"tonal"},{default:m(()=>[k(w(i.assignment.date),1)]),_:2},1024),(g(!0),E(A,null,N(i.assignment.tags,h=>(g(),x(L,{key:h,size:"x-small",color:"primary",variant:"tonal"},{default:m(()=>[k(w(h),1)]),_:2},1024))),128)),i.issues.length?(g(),E("span",dt,w(i.issues.join(";")),1)):D("",!0)])]),_:2},1024))),128))]),_:1})):!p.value&&!l.value?(g(),x(it,{key:4,icon:"mdi-book-open-blank-variant-outline",text:"该日期没有可导出的作业",title:"暂无作业"})):D("",!0)],64)):(g(),E(A,{key:1},[r(He,{modelValue:$.value,"onUpdate:modelValue":[n[2]||(n[2]=i=>$.value=i),ke],accept:"application/pdf,.pdf",clearable:"",label:"选择 UAF PDF","prepend-icon":"mdi-file-pdf-box",disabled:S.value},null,8,["modelValue","disabled"]),P.value?(g(),x(ne,{key:0,class:"mb-3",indeterminate:""})):D("",!0),_.value?(g(),x(W,{key:1,class:"mb-3",type:"error",variant:"tonal"},{default:m(()=>[k(w(_.value),1)]),_:1})):D("",!0),Y.value.length?(g(),x(W,{key:2,class:"mb-3",type:"warning",variant:"tonal"},{default:m(()=>[k(w(Y.value.join(";")),1)]),_:1})):D("",!0),v.value?(g(),E(A,{key:3},[b("div",mt," 共 "+w(v.value.rows.length)+" 项作业,分布在 "+w(q.value.length)+" 个日期。 冲突项默认保留现有内容。 ",1),r(Je,{multiple:"",variant:"accordion"},{default:m(()=>[(g(!0),E(A,null,N(q.value,i=>(g(),x(Xe,{key:i.date},{default:m(()=>[r(Ze,null,{default:m(()=>[k(w(Q(i.date))+" ",1),r(L,{class:"ml-2",size:"small",variant:"tonal"},{default:m(()=>[k(w(i.rows.length)+" 项 ",1)]),_:2},1024)]),_:2},1024),r(Ge,null,{default:m(()=>[r(se,{lines:"three"},{default:m(()=>[(g(!0),E(A,null,N(i.rows,h=>(g(),x(oe,{key:h.id},{append:m(()=>[r(Qe,{modelValue:h.action,"onUpdate:modelValue":F=>h.action=F,class:"action-select",density:"compact","hide-details":"",items:xe(h),"item-title":"title","item-value":"value",variant:"outlined"},null,8,["modelValue","onUpdate:modelValue","items"])]),default:m(()=>[r(le,{class:"d-flex align-center"},{default:m(()=>[k(w(h.assignment.subject)+" ",1),h.conflict?(g(),x(L,{key:0,class:"ml-2",color:"warning",size:"x-small",variant:"tonal"},{default:m(()=>[...n[7]||(n[7]=[k(" 已有同名卡片 ",-1)])]),_:1})):D("",!0)]),_:2},1024),r(ie,{class:"content-preview"},{default:m(()=>[k(w(h.assignment.content),1)]),_:2},1024)]),_:2},1024))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})],64)):D("",!0)],64))]),_:1}),r(ae),r(Ee,null,{default:m(()=>[b("span",ft,w(ye.value),1),r(K),r(z,{variant:"text",disabled:S.value,onClick:n[3]||(n[3]=i=>f.value=!1)},{default:m(()=>[...n[8]||(n[8]=[k(" 取消 ",-1)])]),_:1},8,["disabled"]),r(z,{color:"primary",disabled:ge.value,loading:S.value,"prepend-icon":e.mode==="export"?"mdi-download":"mdi-database-import-outline",onClick:n[4]||(n[4]=i=>e.mode==="export"?we():be())},{default:m(()=>[k(w(e.mode==="export"?"导出所选作业":"确认导入"),1)]),_:1},8,["disabled","loading","prepend-icon"])]),_:1})]),_:1})]),_:1},8,["modelValue","fullscreen"]))}},Pt=Ue(pt,[["__scopeId","data-v-a7cd526e"]]);export{Pt as default}; diff --git a/assets/UafTransferDialog-zULs-G2u.css b/assets/UafTransferDialog-zULs-G2u.css new file mode 100644 index 0000000..33f7b15 --- /dev/null +++ b/assets/UafTransferDialog-zULs-G2u.css @@ -0,0 +1 @@ +.transfer-content[data-v-a7cd526e]{min-height:360px}.content-preview[data-v-a7cd526e]{display:-webkit-box;overflow:hidden;white-space:normal;-webkit-box-orient:vertical;-webkit-line-clamp:2}.action-select[data-v-a7cd526e]{min-width:132px;width:132px}@media (max-width: 600px){.action-select[data-v-a7cd526e]{min-width:112px;width:112px}}.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-empty-state{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100%;padding:16px}.v-empty-state--start{align-items:flex-start}.v-empty-state--center{align-items:center}.v-empty-state--end{align-items:flex-end}.v-empty-state__media{text-align:center;width:100%}.v-empty-state__media .v-icon{color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity))}.v-empty-state__headline{color:rgba(var(--v-theme-on-surface),var(--v-medium-emphasis-opacity));font-size:3.75rem;font-weight:300;line-height:1;text-align:center;margin-bottom:8px}.v-empty-state--mobile .v-empty-state__headline{font-size:2.125rem}.v-empty-state__title{font-size:1.25rem;font-weight:500;line-height:1.6;margin-bottom:4px;text-align:center}.v-empty-state__text{font-size:.875rem;font-weight:400;line-height:1.425;padding:0 16px;text-align:center}.v-empty-state__content{padding:24px 0}.v-empty-state__actions{display:flex;gap:8px;padding:16px}.v-empty-state__action-btn.v-btn{background-color:initial;color:initial} diff --git a/assets/UrgentTestDialog-BqTcJt8c.js b/assets/UrgentTestDialog-DIoDIryQ.js similarity index 93% rename from assets/UrgentTestDialog-BqTcJt8c.js rename to assets/UrgentTestDialog-DIoDIryQ.js index b11b5d9..01a7916 100644 --- a/assets/UrgentTestDialog-BqTcJt8c.js +++ b/assets/UrgentTestDialog-DIoDIryQ.js @@ -1 +1 @@ -import{_ as O,a as L}from"./ChatWidget-BXhjl6gS.js";import{a as S}from"./socketClient-BKHEsaLg.js";import{d as N}from"./dataProvider-GWPC-0Vt.js";import{_ as W,e as h,f as I,g as V,h as v,d as y,l as w,c as T,p as j,q,k as b}from"./index-DGIAsv4W.js";import{b as E,c as A}from"./VAppBarTitle-DheyIZnb.js";import{V as K}from"./VContainer-DZyPrcqa.js";import{V as F,a as x}from"./VRow-Cjhiymuu.js";import{V as M}from"./VForm-ObW_L7SS.js";import{V as P}from"./VSwitch-k6hfPfa2.js";import{V as R}from"./VCheckbox-BRi_fHJs.js";import{V as z}from"./VTextarea-vGWmTJww.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-BiQC5iF7.js";import"./soundList-D9U-Grcp.js";import"./VChip-mRzIPuM0.js";import"./vendor-vuetify-DsKlzgKp.js";import"./deviceEvents-HN9RDua9.js";import"./VTooltip-2IUjfpCS.js";import"./VPagination-DLzhjdaP.js";import"./vendor-socket-dm1FmSOd.js";import"./serverRotation-BtcwvdZJ.js";import"./vendor-utils-DwALrQNc.js";import"./VTextField-BurlcggD.js";import"./VCheckboxBtn-BKcSogH0.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 Ae=W(X,[["render",de],["__scopeId","data-v-128c728f"]]);export{Ae as default}; +import{_ as O,a as L}from"./ChatWidget-CdFpE857.js";import{a as S}from"./socketClient-DJ8u9nXv.js";import{d as N}from"./dataProvider-D5waPBEc.js";import{_ as W,e as h,f as I,g as V,h as v,d as y,l as w,c as T,p as j,q,k as b}from"./index-Ceq_468-.js";import{b as E,c as A}from"./VAppBarTitle-q97S07ao.js";import{V as K}from"./VContainer-BisEDTd3.js";import{V as F,a as x}from"./VRow-BiiRXDj9.js";import{V as M}from"./VForm-vCieX1EY.js";import{V as P}from"./VSwitch-d4Yvphn0.js";import{V as R}from"./VCheckbox-BM0AQhRG.js";import{V as z}from"./VTextarea-UKN-Avq_.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-BiQC5iF7.js";import"./soundList-D9U-Grcp.js";import"./VChip-BdtDOEwz.js";import"./vendor-vuetify-rtu3DHX4.js";import"./deviceEvents-Wy8_E1wQ.js";import"./VTooltip-CWhmSQeX.js";import"./VPagination-BQZD6rf1.js";import"./vendor-socket-dm1FmSOd.js";import"./serverRotation-Bs3NH0Jb.js";import"./vendor-utils-2lvrqI0-.js";import"./VTextField-DpXLMPq7.js";import"./VCheckboxBtn-snLiE5D5.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 Ae=W(X,[["render",de],["__scopeId","data-v-128c728f"]]);export{Ae as default}; diff --git a/assets/VAlert-BZ4-f-hy.js b/assets/VAlert-C02HdytA.js similarity index 73% rename from assets/VAlert-BZ4-f-hy.js rename to assets/VAlert-C02HdytA.js index e887600..e922513 100644 --- a/assets/VAlert-BZ4-f-hy.js +++ b/assets/VAlert-C02HdytA.js @@ -1 +1 @@ -import{aa as R,p as P,f as j,n as w,h as F,an as O,I as p,m as E,k as H}from"./vendor-vuetify-DsKlzgKp.js";import{aj as K,K as q,O as G,ak as J,N as Q,H as U,al as W,f as X,ag as y,h as Y,b as Z,a2 as ee,am as ae,m as te,R as le,an as ne,T as oe,$ as se,a as ie,M as re}from"./index-DGIAsv4W.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-BiQC5iF7.js";const ue=R("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 me(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 ve=["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:p,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=>ve.includes(e)},...H(),...re(),...ie(),...se(),...de(),...oe(),...ne(),...le(),...te(),...E(),...ae({variant:"flat"})},"VAlert"),be=j()({name:"VAlert",props:ye(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0},setup(e,s){let{emit:c,slots:a}=s;const t=w(e,"modelValue"),i=b(()=>{if(e.icon!==!1)return e.type?e.icon??`$${e.type}`:e.icon}),{iconSize:V}=me(e,()=>e.prominent?44:void 0),{themeClasses:g}=F(e),{colorClasses:z,colorStyles:C,variantClasses:x}=K(()=>({color:e.color??e.type,variant:e.variant})),{densityClasses:_}=q(e),{dimensionStyles:h}=Z(e),{elevationClasses:I}=ee(e),{locationStyles:B}=G(e),{positionClasses:T}=J(e),{roundedClasses:A}=Q(e),{textColorClasses:$,textColorStyles:D}=U(()=>e.borderColor),{t:L}=O(),u=b(()=>({"aria-label":L(e.closeLabel),onClick(r){t.value=!1,c("click:close",r)}}));return()=>{const r=!!(a.prepend||i.value),N=!!(a.title||e.title),M=!!(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,T.value,A.value,x.value,e.class]),style:f([C.value,h.value,B.value,e.style]),role:"alert"},{default:()=>{var m,v;return[W(!1,"v-alert"),e.border&&o("div",{key:"border",class:k(["v-alert__border",$.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]}}),((m=a.text)==null?void 0:m.call(a))??e.text,(v=a.default)==null?void 0:v.call(a)]),a.append&&o("div",{key:"append",class:"v-alert__append"},[a.append()]),M&&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}; +import{aa as R,p as P,f as p,n as w,h as F,an as O,I as j,m as E,k as G}from"./vendor-vuetify-rtu3DHX4.js";import{al as K,K as q,O as H,am as J,N as Q,G as U,an as W,f as X,ag as y,h as Y,b as Z,a2 as ee,ao as ae,m as te,R as le,ap as ne,T as oe,$ as se,a as ie,M as re}from"./index-Ceq_468-.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-BiQC5iF7.js";const ue=R("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 me(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 ve=["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:j,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=>ve.includes(e)},...G(),...re(),...ie(),...se(),...de(),...oe(),...ne(),...le(),...te(),...E(),...ae({variant:"flat"})},"VAlert"),be=p()({name:"VAlert",props:ye(),emits:{"click:close":e=>!0,"update:modelValue":e=>!0},setup(e,s){let{emit:c,slots:a}=s;const t=w(e,"modelValue"),i=b(()=>{if(e.icon!==!1)return e.type?e.icon??`$${e.type}`:e.icon}),{iconSize:V}=me(e,()=>e.prominent?44:void 0),{themeClasses:g}=F(e),{colorClasses:z,colorStyles:C,variantClasses:x}=K(()=>({color:e.color??e.type,variant:e.variant})),{densityClasses:_}=q(e),{dimensionStyles:h}=Z(e),{elevationClasses:I}=ee(e),{locationStyles:B}=H(e),{positionClasses:T}=J(e),{roundedClasses:A}=Q(e),{textColorClasses:$,textColorStyles:D}=U(()=>e.borderColor),{t:L}=O(),u=b(()=>({"aria-label":L(e.closeLabel),onClick(r){t.value=!1,c("click:close",r)}}));return()=>{const r=!!(a.prepend||i.value),N=!!(a.title||e.title),M=!!(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,T.value,A.value,x.value,e.class]),style:f([C.value,h.value,B.value,e.style]),role:"alert"},{default:()=>{var m,v;return[W(!1,"v-alert"),e.border&&o("div",{key:"border",class:S(["v-alert__border",$.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,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]}}),((m=a.text)==null?void 0:m.call(a))??e.text,(v=a.default)==null?void 0:v.call(a)]),a.append&&o("div",{key:"append",class:"v-alert__append"},[a.append()]),M&&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}; diff --git a/assets/VAppBarTitle-DheyIZnb.js b/assets/VAppBarTitle-q97S07ao.js similarity index 82% rename from assets/VAppBarTitle-DheyIZnb.js rename to assets/VAppBarTitle-q97S07ao.js index 4470203..9a5f210 100644 --- a/assets/VAppBarTitle-DheyIZnb.js +++ b/assets/VAppBarTitle-q97S07ao.js @@ -1 +1 @@ -import{m as U,I as K,af as Q,O as X,N as Z,C as ee,ag as D,a5 as te,a2 as ae,R as le,T as oe,$ as ne,ah as se,u as ie}from"./index-DGIAsv4W.js";import{f as N,u as A,p as R,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,aC as he,a5 as W,aD as fe}from"./vendor-vuetify-DsKlzgKp.js";import{j as f,k as P,N as $,n as j,s as h,e as d,o as I,D as be,A as ye,b as q,w as Se,m as F,t as L}from"./vendor-vue-BiQC5iF7.js";const O=R({text:String,...M(),...U()},"VToolbarTitle"),J=N()({name:"VToolbarTitle",props:O(),setup(e,b){let{slots:t}=b;return A(()=>{const u=!!(t.default||t.text||e.text);return f(e.tag,{class:j(["v-toolbar-title",e.class]),style:$(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=R({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"),z=N()({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"}}),A(()=>{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:j(["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:$([n.value,s.value,e.style])},{default:()=>[C&&P("div",{key:"image",class:"v-toolbar__image"},[t.image?f(D,{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(D,{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(J,{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(D,{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=R({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=q(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,_=v.value+g;B.value=T>_}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 _=Math.abs(s.value-n)>100,G=s.value<=5;(r.value&&n-s.value>1&&!g||_&&s.value{c.value=c.value||s.value}),I(k,()=>{c.value=0}),be(()=>{I(()=>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&&I(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=R({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=N()({name:"VAppBar",props:Be(),emits:{"update:modelValue":e=>!0},setup(e,b){let{slots:t}=b;const u=q(),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 A(()=>{const a=W(z.filterProps(e),["location"]);return f(z,F({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=N()({name:"VAppBarTitle",props:O(),setup(e,b){let{slots:t}=b;return A(()=>f(J,F(e,{class:"v-app-bar-title"}),t)),{}}});export{Ce as V,Pe as a,z as b,J as c}; +import{m as U,H as K,ai as Q,O as X,N as Z,C as ee,ag as D,a5 as te,a2 as ae,R as le,T as oe,$ as ne,aj as se,u as ie}from"./index-Ceq_468-.js";import{f as A,u as I,p as R,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,aC as he,a5 as j,aD as fe}from"./vendor-vuetify-rtu3DHX4.js";import{j as f,k as P,N as W,n as $,s as h,e as d,o as N,D as be,A as ye,b as q,w as Se,m as F,t as L}from"./vendor-vue-BiQC5iF7.js";const O=R({text:String,...M(),...U()},"VToolbarTitle"),J=A()({name:"VToolbarTitle",props:O(),setup(e,b){let{slots:t}=b;return I(()=>{const u=!!(t.default||t.text||e.text);return f(e.tag,{class:$(["v-toolbar-title",e.class]),style:W(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=R({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"),z=A()({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"}}),I(()=>{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:$(["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:W([n.value,s.value,e.style])},{default:()=>[C&&P("div",{key:"image",class:"v-toolbar__image"},[t.image?f(D,{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(D,{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(J,{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(D,{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=R({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=q(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,_=v.value+g;B.value=T>_}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 _=Math.abs(s.value-n)>100,G=s.value<=5;(r.value&&n-s.value>1&&!g||_&&s.value{c.value=c.value||s.value}),N(k,()=>{c.value=0}),be(()=>{N(()=>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&&N(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=R({scrollBehavior:String,modelValue:{type:Boolean,default:!0},location:{type:String,default:"top",validator:e=>["top","bottom"].includes(e)},...j(Y(),["location"]),...fe(),...He(),height:{type:[Number,String],default:64}},"VAppBar"),Pe=A()({name:"VAppBar",props:Be(),emits:{"update:modelValue":e=>!0},setup(e,b){let{slots:t}=b;const u=q(),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 I(()=>{const a=j(z.filterProps(e),["location"]);return f(z,F({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=A()({name:"VAppBarTitle",props:O(),setup(e,b){let{slots:t}=b;return I(()=>f(J,F(e,{class:"v-app-bar-title"}),t)),{}}});export{Ce as V,Pe as a,z as b,J as c}; diff --git a/assets/VAutocomplete-C-Az_ynh.js b/assets/VAutocomplete-C-Az_ynh.js new file mode 100644 index 0000000..c5a3018 --- /dev/null +++ b/assets/VAutocomplete-C-Az_ynh.js @@ -0,0 +1 @@ +import{h as Oe,u as ze,V as te,i as Ue}from"./VTextField-DpXLMPq7.js";import{u as $e,a as qe,c as Ge,h as He,d as je,e as We,m as Je,b as Qe,f as Xe}from"./VSelect-OEnAsVY5.js";import{aD as Ye,G as Ze,f as ue,p as el,q as ne,i as ll,a6 as al,o as tl,ag as ul,I as nl}from"./index-Ceq_468-.js";import{f as ol,an as il,n as W,w as sl,E as rl,u as cl,aK as vl,aL as dl,aM as oe,o as fl,_ as ie,p as ml,a5 as pl}from"./vendor-vuetify-rtu3DHX4.js";import{V as hl}from"./VMenu-DqtPWEMI.js";import{V as gl}from"./VSheet-MW0wxrpj.js";import{V as yl}from"./VCheckboxBtn-snLiE5D5.js";import{V as se}from"./VChip-BdtDOEwz.js";import{o as z,I as re,j as f,k as x,F as J,m as S,N as Vl,n as kl,a1 as bl,s as A,e as I,b as P,t as Cl}from"./vendor-vue-BiQC5iF7.js";const Sl=ml({autoSelectFirst:{type:[Boolean,String]},clearOnSelect:Boolean,search:String,...Je({filterKeys:["title"]}),...We(),...pl(Ue({modelValue:null,role:"combobox"}),["validationValue","dirty"])},"VAutocomplete"),El=ol()({name:"VAutocomplete",props:Sl(),emits:{"update:focused":l=>!0,"update:search":l=>!0,"update:modelValue":l=>!0,"update:menu":l=>!0},setup(l,ce){let{slots:t}=ce;const{t:ve}=il(),m=P(),h=A(!1),g=A(!0),U=A(!1),L=P(),$=P(),r=A(-1),R=A(null),{items:q,transformIn:de,transformOut:fe}=Ye(l),{textColorClasses:me,textColorStyles:pe}=Ze(()=>{var e;return(e=m.value)==null?void 0:e.color}),{InputIcon:he}=Oe(l),c=W(l,"search",""),n=W(l,"modelValue",[],e=>de(e===null?[null]:sl(e)),e=>{const a=fe(e);return l.multiple?a:a[0]??null}),ge=I(()=>typeof l.counterValue=="function"?l.counterValue(n.value):typeof l.counterValue=="number"?l.counterValue:n.value.length),D=ze(l),{filteredItems:_,getMatches:ye}=$e(l,q,()=>R.value??(g.value?"":c.value)),y=I(()=>l.hideSelected&&R.value===null?_.value.filter(e=>!n.value.some(a=>a.value===e.value)):_.value),Q=Cl(()=>l.closableChips&&!D.isReadonly.value&&!D.isDisabled.value),B=I(()=>!!(l.chips||t.chip)),M=I(()=>B.value||!!t.selection),Ve=I(()=>n.value.map(e=>e.props.value)),E=I(()=>y.value.find(e=>e.type==="item"&&!e.props.disabled)),G=I(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&c.value===((a=E.value)==null?void 0:a.title))&&y.value.length>0&&!g.value&&!U.value}),K=I(()=>l.hideNoData&&!y.value.length||D.isReadonly.value||D.isDisabled.value),H=W(l,"menu"),v=I({get:()=>H.value,set:e=>{var a;H.value&&!e&&((a=L.value)!=null&&a.ΨopenChildren.size)||e&&K.value||(H.value=e)}}),{menuId:ke,ariaExpanded:be,ariaControls:Ce}=qe(l,v),T=P(),X=P(),Y=P(),Se=je(T,m),Ie=Xe(v,()=>{var e;return(e=L.value)==null?void 0:e.contentEl},()=>{var e;return(e=m.value)==null?void 0:e.controlRef}),{onTabKeydown:we}=Qe({groups:[{type:"element",contentRef:X},{type:"list",contentRef:T,displayItemsCount:()=>y.value.length},{type:"element",contentRef:Y}],onLeave:()=>{var e;v.value=!1,(e=m.value)==null||e.focus()}});function xe(e){l.openOnClear&&(v.value=!0),c.value=""}function Fe(){K.value||(v.value=!0)}function Re(e){K.value||(h.value&&(e.preventDefault(),e.stopPropagation()),v.value=!v.value)}function De(e){var a,u;e.key==="Tab"&&we(e),(a=T.value)!=null&&a.$el.contains(e.target)&&(oe(e)||e.key==="Backspace")&&((u=m.value)==null||u.focus())}function Ae(e){var V,d,w,k,o;if(D.isReadonly.value)return;const a=(V=m.value)==null?void 0:V.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(i=>{let{value:b}=i;return b===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&&!c.value)return F(n.value[0],!1);if(~r.value){e.preventDefault();const i=r.value;F(n.value[r.value],!1),r.value=i>=u-1?u-2:i}else e.key==="Backspace"&&!c.value&&(r.value=u-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(r.value<0&&a&&a>0)return;const i=r.value>-1?r.value-1:u-1;if(n.value[i])r.value=i;else{const b=((w=c.value)==null?void 0:w.length)??null;r.value=-1,(k=m.value)==null||k.setSelectionRange(b,b)}}else if(e.key==="ArrowRight"){if(r.value<0)return;const i=r.value+1;n.value[i]?r.value=i:(r.value=-1,(o=m.value)==null||o.setSelectionRange(0,0))}else~r.value&&oe(e)&&(r.value=-1)}function Pe(e){if(ie(m.value,":autofill")||ie(m.value,":-webkit-autofill")){const a=q.value.find(u=>u.title===e.target.value);a&&F(a)}}function Me(){var e;l.eager&&((e=$.value)==null||e.calculateVisibleItems())}function Ee(){var e;h.value&&(g.value=!0,(e=m.value)==null||e.focus()),R.value=null}function Te(e){h.value=!0,setTimeout(()=>{U.value=!0})}function Le(e){var a;if(U.value=!1,!((a=m.value)!=null&&a.$el.contains(e.relatedTarget))){if(Ie(e))return;h.value=!1}}function _e(e){(e==null||e===""&&!l.multiple&&!M.value)&&(n.value=[])}function Be(e){var u;const a=(u=L.value)==null?void 0:u.contentEl;a!=null&&a.contains(e.relatedTarget)&&(h.value=!0)}const j=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||fl)(d.value,e.value)),V=a??!~u;if(~u){const d=V?[...n.value,e]:[...n.value];d.splice(u,1),n.value=d}else V&&(n.value=[...n.value,e]);l.clearOnSelect&&(c.value="")}else{const u=a!==!1;n.value=u?[e]:[],R.value=g.value?"":c.value??"",c.value=u&&!M.value?e.title:"",re(()=>{v.value=!1,g.value=!0})}}return z(h,(e,a)=>{var u;e!==a&&(e?(j.value=!0,c.value=l.multiple||M.value?"":String(((u=n.value.at(-1))==null?void 0:u.props.title)??""),g.value=!0,re(()=>j.value=!1)):(!l.multiple&&c.value==null&&(n.value=[]),v.value=!1,!g.value&&c.value&&(R.value=c.value),c.value="",r.value=-1))}),z(c,e=>{!h.value||j.value||(e&&(v.value=!0),g.value=!e)}),z(v,e=>{if(!l.hideSelected&&e&&n.value.length&&g.value){const a=y.value.findIndex(u=>n.value.some(V=>u.value===V.value));rl&&!l.noAutoScroll&&window.requestAnimationFrame(()=>{var u;a>=0&&((u=$.value)==null||u.scrollToIndex(a))})}e&&(R.value=null)}),z(q,(e,a)=>{v.value||h.value&&!a.length&&e.length&&(v.value=!0)}),cl(()=>{const e=!!(!l.hideNoData||y.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),a=n.value.length>0,u=te.filterProps(l),V={search:c,filteredItems:_.value};return f(te,S({ref:m},u,{modelValue:c.value,"onUpdate:modelValue":[d=>c.value=d,_e],focused:h.value,"onUpdate:focused":d=>h.value=d,validationValue:n.externalValue,counterValue:ge.value,dirty:a,onChange:Pe,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":r.value>-1},l.class],style:l.style,readonly:D.isReadonly.value,placeholder:a?void 0:l.placeholder,"onClick:clear":xe,"onMousedown:control":Fe,onKeydown:Ae,onBlur:Be,"aria-expanded":be.value,"aria-controls":Ce.value}),{...t,default:d=>{var k;let{id:w}=d;return x(J,null,[f(hl,S({id:ke.value,ref:L,modelValue:v.value,"onUpdate:modelValue":o=>v.value=o,activator:"parent",disabled:K.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:Me,onAfterLeave:Ee},l.menuProps,{contentClass:["v-autocomplete__content",(k=l.menuProps)==null?void 0:k.contentClass]}),{default:()=>[f(gl,{onFocusin:Te,onKeydown:De},{default:()=>[t["menu-header"]&&x("header",{ref:X},[t["menu-header"](V)]),e&&f(el,S({key:"autocomplete-list",ref:T,filterable:!0,selected:Ve.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:o=>o.preventDefault(),onFocusout:Le,tabindex:"-1",selectable:!!y.value.length,"aria-live":"polite","aria-labelledby":`${w.value}-label`,"aria-multiselectable":l.multiple,color:l.itemColor??l.color},Se,l.listProps),{default:()=>{var o,i,b;return[(o=t["prepend-item"])==null?void 0:o.call(t),!y.value.length&&!l.hideNoData&&(((i=t["no-data"])==null?void 0:i.call(t))??f(ne,{key:"no-data",title:ve(l.noDataText)},null)),f(Ge,{ref:$,renderless:!0,items:y.value,itemKey:"value"},{default:N=>{var ee,le,ae;let{item:s,index:C,itemRef:p}=N;const Z=S(s.props,{ref:p,key:s.value,active:G.value&&s===E.value?!0:void 0,onClick:()=>F(s,null),"aria-posinset":C+1,"aria-setsize":y.value.length});return s.type==="divider"?((ee=t.divider)==null?void 0:ee.call(t,{props:s.raw,index:C}))??f(ll,S(s.props,{key:`divider-${C}`}),null):s.type==="subheader"?((le=t.subheader)==null?void 0:le.call(t,{props:s.raw,index:C}))??f(al,S(s.props,{key:`subheader-${C}`}),null):((ae=t.item)==null?void 0:ae.call(t,{item:s,index:C,props:Z}))??f(ne,S(Z,{role:"option"}),{prepend:O=>{let{isSelected:Ke}=O;return x(J,null,[l.multiple&&!l.hideSelected?f(yl,{key:s.value,modelValue:Ke,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:Ne=>Ne.preventDefault()},null):void 0,s.props.prependAvatar&&f(tl,{image:s.props.prependAvatar},null),s.props.prependIcon&&f(ue,{icon:s.props.prependIcon},null)])},title:()=>{var O;return g.value?s.title:He("v-autocomplete",s.title,(O=ye(s))==null?void 0:O.title)}})}}),(b=t["append-item"])==null?void 0:b.call(t)]}}),t["menu-footer"]&&x("footer",{ref:Y},[t["menu-footer"](V)])]})]}),n.value.map((o,i)=>{function b(p){p.stopPropagation(),p.preventDefault(),F(o,!1)}const N=S(se.filterProps(o.props),{"onClick:close":b,onKeydown(p){p.key!=="Enter"&&p.key!==" "||(p.preventDefault(),p.stopPropagation(),b(p))},onMousedown(p){p.preventDefault(),p.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),s=B.value?!!t.chip:!!t.selection,C=s?dl(B.value?t.chip({item:o,index:i,props:N}):t.selection({item:o,index:i})):void 0;if(!(s&&!C))return x("div",{key:o.value,class:kl(["v-autocomplete__selection",i===r.value&&["v-autocomplete__selection--selected",me.value]]),style:Vl(i===r.value?pe.value:{})},[B.value?t.chip?f(ul,{key:"chip-defaults",defaults:{VChip:{closable:Q.value,size:"small",text:o.title}}},{default:()=>[C]}):f(se,S({key:"chip",closable:Q.value,size:"small",text:o.title,disabled:o.props.disabled},N),null):C??x("span",{class:"v-autocomplete__selection-text"},[o.title,l.multiple&&i!0,"update:search":l=>!0,"update:modelValue":l=>!0,"update:menu":l=>!0},setup(l,ce){let{slots:t}=ce;const{t:ve}=il(),m=A(),h=P(!1),g=P(!0),U=P(!1),_=A(),$=A(),r=P(-1),R=P(null),{items:q,transformIn:de,transformOut:fe}=Ye(l),{textColorClasses:me,textColorStyles:pe}=Ze(()=>{var e;return(e=m.value)==null?void 0:e.color}),{InputIcon:he}=Oe(l),c=J(l,"search",""),n=J(l,"modelValue",[],e=>de(e===null?[null]:sl(e)),e=>{const a=fe(e);return l.multiple?a:a[0]??null}),ge=I(()=>typeof l.counterValue=="function"?l.counterValue(n.value):typeof l.counterValue=="number"?l.counterValue:n.value.length),D=ze(l),{filteredItems:B,getMatches:ye}=$e(l,q,()=>R.value??(g.value?"":c.value)),y=I(()=>l.hideSelected&&R.value===null?B.value.filter(e=>!n.value.some(a=>a.value===e.value)):B.value),Q=Cl(()=>l.closableChips&&!D.isReadonly.value&&!D.isDisabled.value),L=I(()=>!!(l.chips||t.chip)),E=I(()=>L.value||!!t.selection),Ve=I(()=>n.value.map(e=>e.props.value)),M=I(()=>y.value.find(e=>e.type==="item"&&!e.props.disabled)),H=I(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&c.value===((a=M.value)==null?void 0:a.title))&&y.value.length>0&&!g.value&&!U.value}),K=I(()=>l.hideNoData&&!y.value.length||D.isReadonly.value||D.isDisabled.value),j=J(l,"menu"),v=I({get:()=>j.value,set:e=>{var a;j.value&&!e&&((a=_.value)!=null&&a.ΨopenChildren.size)||e&&K.value||(j.value=e)}}),{menuId:ke,ariaExpanded:be,ariaControls:Ce}=qe(l,v),T=A(),X=A(),Y=A(),Se=Ge(T,m),Ie=Xe(v,()=>{var e;return(e=_.value)==null?void 0:e.contentEl},()=>{var e;return(e=m.value)==null?void 0:e.controlRef}),{onTabKeydown:we}=Qe({groups:[{type:"element",contentRef:X},{type:"list",contentRef:T,displayItemsCount:()=>y.value.length},{type:"element",contentRef:Y}],onLeave:()=>{var e;v.value=!1,(e=m.value)==null||e.focus()}});function xe(e){l.openOnClear&&(v.value=!0),c.value=""}function Fe(){K.value||(v.value=!0)}function Re(e){K.value||(h.value&&(e.preventDefault(),e.stopPropagation()),v.value=!v.value)}function De(e){var a,u;e.key==="Tab"&&we(e),(a=T.value)!=null&&a.$el.contains(e.target)&&(oe(e)||e.key==="Backspace")&&((u=m.value)==null||u.focus())}function Pe(e){var V,d,w,k,o;if(D.isReadonly.value)return;const a=(V=m.value)==null?void 0:V.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),H.value&&["Enter","Tab"].includes(e.key)&&M.value&&!n.value.some(i=>{let{value:b}=i;return b===M.value.value})&&F(M.value),e.key==="ArrowDown"&&H.value&&((d=T.value)==null||d.focus("next")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&E.value&&n.value.length>0&&!c.value)return F(n.value[0],!1);if(~r.value){e.preventDefault();const i=r.value;F(n.value[r.value],!1),r.value=i>=u-1?u-2:i}else e.key==="Backspace"&&!c.value&&(r.value=u-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(r.value<0&&a&&a>0)return;const i=r.value>-1?r.value-1:u-1;if(n.value[i])r.value=i;else{const b=((w=c.value)==null?void 0:w.length)??null;r.value=-1,(k=m.value)==null||k.setSelectionRange(b,b)}}else if(e.key==="ArrowRight"){if(r.value<0)return;const i=r.value+1;n.value[i]?r.value=i:(r.value=-1,(o=m.value)==null||o.setSelectionRange(0,0))}else~r.value&&oe(e)&&(r.value=-1)}function Ae(e){if(ie(m.value,":autofill")||ie(m.value,":-webkit-autofill")){const a=q.value.find(u=>u.title===e.target.value);a&&F(a)}}function Ee(){var e;l.eager&&((e=$.value)==null||e.calculateVisibleItems())}function Me(){var e;h.value&&(g.value=!0,(e=m.value)==null||e.focus()),R.value=null}function Te(e){h.value=!0,setTimeout(()=>{U.value=!0})}function _e(e){var a;if(U.value=!1,!((a=m.value)!=null&&a.$el.contains(e.relatedTarget))){if(Ie(e))return;h.value=!1}}function Be(e){(e==null||e===""&&!l.multiple&&!E.value)&&(n.value=[])}function Le(e){var u;const a=(u=_.value)==null?void 0:u.contentEl;a!=null&&a.contains(e.relatedTarget)&&(h.value=!0)}const G=P(!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||fl)(d.value,e.value)),V=a??!~u;if(~u){const d=V?[...n.value,e]:[...n.value];d.splice(u,1),n.value=d}else V&&(n.value=[...n.value,e]);l.clearOnSelect&&(c.value="")}else{const u=a!==!1;n.value=u?[e]:[],R.value=g.value?"":c.value??"",c.value=u&&!E.value?e.title:"",re(()=>{v.value=!1,g.value=!0})}}return z(h,(e,a)=>{var u;e!==a&&(e?(G.value=!0,c.value=l.multiple||E.value?"":String(((u=n.value.at(-1))==null?void 0:u.props.title)??""),g.value=!0,re(()=>G.value=!1)):(!l.multiple&&c.value==null&&(n.value=[]),v.value=!1,!g.value&&c.value&&(R.value=c.value),c.value="",r.value=-1))}),z(c,e=>{!h.value||G.value||(e&&(v.value=!0),g.value=!e)}),z(v,e=>{if(!l.hideSelected&&e&&n.value.length&&g.value){const a=y.value.findIndex(u=>n.value.some(V=>u.value===V.value));rl&&window.requestAnimationFrame(()=>{var u;a>=0&&((u=$.value)==null||u.scrollToIndex(a))})}e&&(R.value=null)}),z(q,(e,a)=>{v.value||h.value&&!a.length&&e.length&&(v.value=!0)}),cl(()=>{const e=!!(!l.hideNoData||y.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),a=n.value.length>0,u=te.filterProps(l),V={search:c,filteredItems:B.value};return f(te,S({ref:m},u,{modelValue:c.value,"onUpdate:modelValue":[d=>c.value=d,Be],focused:h.value,"onUpdate:focused":d=>h.value=d,validationValue:n.externalValue,counterValue:ge.value,dirty:a,onChange:Ae,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":r.value>-1},l.class],style:l.style,readonly:D.isReadonly.value,placeholder:a?void 0:l.placeholder,"onClick:clear":xe,"onMousedown:control":Fe,onKeydown:Pe,onBlur:Le,"aria-expanded":be.value,"aria-controls":Ce.value}),{...t,default:d=>{var k;let{id:w}=d;return x(W,null,[f(hl,S({id:ke.value,ref:_,modelValue:v.value,"onUpdate:modelValue":o=>v.value=o,activator:"parent",disabled:K.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:Ee,onAfterLeave:Me},l.menuProps,{contentClass:["v-autocomplete__content",(k=l.menuProps)==null?void 0:k.contentClass]}),{default:()=>[f(gl,{onFocusin:Te,onKeydown:De},{default:()=>[t["menu-header"]&&x("header",{ref:X},[t["menu-header"](V)]),e&&f(el,S({key:"autocomplete-list",ref:T,filterable:!0,selected:Ve.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:o=>o.preventDefault(),onFocusout:_e,tabindex:"-1",selectable:!!y.value.length,"aria-live":"polite","aria-labelledby":`${w.value}-label`,"aria-multiselectable":l.multiple,color:l.itemColor??l.color},Se,l.listProps),{default:()=>{var o,i,b;return[(o=t["prepend-item"])==null?void 0:o.call(t),!y.value.length&&!l.hideNoData&&(((i=t["no-data"])==null?void 0:i.call(t))??f(ne,{key:"no-data",title:ve(l.noDataText)},null)),f(He,{ref:$,renderless:!0,items:y.value,itemKey:"value"},{default:N=>{var ee,le,ae;let{item:s,index:C,itemRef:p}=N;const Z=S(s.props,{ref:p,key:s.value,active:H.value&&s===M.value?!0:void 0,onClick:()=>F(s,null),"aria-posinset":C+1,"aria-setsize":y.value.length});return s.type==="divider"?((ee=t.divider)==null?void 0:ee.call(t,{props:s.raw,index:C}))??f(ll,S(s.props,{key:`divider-${C}`}),null):s.type==="subheader"?((le=t.subheader)==null?void 0:le.call(t,{props:s.raw,index:C}))??f(al,S(s.props,{key:`subheader-${C}`}),null):((ae=t.item)==null?void 0:ae.call(t,{item:s,index:C,props:Z}))??f(ne,S(Z,{role:"option"}),{prepend:O=>{let{isSelected:Ke}=O;return x(W,null,[l.multiple&&!l.hideSelected?f(yl,{key:s.value,modelValue:Ke,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:Ne=>Ne.preventDefault()},null):void 0,s.props.prependAvatar&&f(tl,{image:s.props.prependAvatar},null),s.props.prependIcon&&f(ue,{icon:s.props.prependIcon},null)])},title:()=>{var O;return g.value?s.title:je("v-autocomplete",s.title,(O=ye(s))==null?void 0:O.title)}})}}),(b=t["append-item"])==null?void 0:b.call(t)]}}),t["menu-footer"]&&x("footer",{ref:Y},[t["menu-footer"](V)])]})]}),n.value.map((o,i)=>{function b(p){p.stopPropagation(),p.preventDefault(),F(o,!1)}const N=S(se.filterProps(o.props),{"onClick:close":b,onKeydown(p){p.key!=="Enter"&&p.key!==" "||(p.preventDefault(),p.stopPropagation(),b(p))},onMousedown(p){p.preventDefault(),p.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),s=L.value?!!t.chip:!!t.selection,C=s?dl(L.value?t.chip({item:o,index:i,props:N}):t.selection({item:o,index:i})):void 0;if(!(s&&!C))return x("div",{key:o.value,class:kl(["v-autocomplete__selection",i===r.value&&["v-autocomplete__selection--selected",me.value]]),style:Vl(i===r.value?pe.value:{})},[L.value?t.chip?f(ul,{key:"chip-defaults",defaults:{VChip:{closable:Q.value,size:"small",text:o.title}}},{default:()=>[C]}):f(se,S({key:"chip",closable:Q.value,size:"small",text:o.title,disabled:o.props.disabled},N),null):C??x("span",{class:"v-autocomplete__selection-text"},[o.title,l.multiple&&i!0,"update:focused":e=>!0},setup(e,n){let{attrs:i,slots:a}=n;const s=j(e,"modelValue"),{isFocused:m,focus:f,blur:p}=R(e),t=N(),V=M();return w(()=>{const[b,k]=D(i),v=l.filterProps(e),x=r.filterProps(e);return d(l,c({ref:t,class:["v-checkbox",e.class]},b,v,{modelValue:s.value,"onUpdate:modelValue":o=>s.value=o,id:e.id||`checkbox-${V}`,focused:m.value,style:e.style}),{...a,default:o=>{let{id:h,messagesId:P,isDisabled:C,isReadonly:y,isValid:I}=o;return d(r,c(x,{id:h.value,"aria-describedby":P.value,disabled:C.value,readonly:y.value},k,{error:I.value===!1,modelValue:s.value,"onUpdate:modelValue":A=>s.value=A,onFocus:f,onBlur:p}),a)}})}),B({},t)}});export{K as V}; diff --git a/assets/VCheckbox-BRi_fHJs.js b/assets/VCheckbox-BRi_fHJs.js deleted file mode 100644 index b7286ca..0000000 --- a/assets/VCheckbox-BRi_fHJs.js +++ /dev/null @@ -1 +0,0 @@ -import{V as r,m as F}from"./VCheckboxBtn-BKcSogH0.js";import{u as R,a as l,d as g}from"./VTextField-BurlcggD.js";import{E as B}from"./index-DGIAsv4W.js";import{f as E,n as U,u as j,ao as w,p as D,a5 as u}from"./vendor-vuetify-DsKlzgKp.js";import{E as M,j as d,m as c,b as N}from"./vendor-vue-BiQC5iF7.js";const $=D({...u(g(),["direction"]),...u(F(),["inline"])},"VCheckbox"),K=E()({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:p}=R(e),t=N(),V=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-${V}`,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:p}),a)}})}),B({},t)}});export{K as V}; diff --git a/assets/VCheckboxBtn-BKcSogH0.js b/assets/VCheckboxBtn-snLiE5D5.js similarity index 86% rename from assets/VCheckboxBtn-BKcSogH0.js rename to assets/VCheckboxBtn-snLiE5D5.js index df3d237..49bd38f 100644 --- a/assets/VCheckboxBtn-BKcSogH0.js +++ b/assets/VCheckboxBtn-snLiE5D5.js @@ -1 +1 @@ -import{a,m as f}from"./VSwitch-k6hfPfa2.js";import{f as I,n as c,u as V,a5 as v,p as k,I as x}from"./vendor-vuetify-DsKlzgKp.js";import{j as h,m as b,t as l}from"./vendor-vue-BiQC5iF7.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-d4Yvphn0.js";import{f as I,n as c,u as V,a5 as v,p as k,I as x}from"./vendor-vuetify-rtu3DHX4.js";import{j as h,m as b,t as l}from"./vendor-vue-BiQC5iF7.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-mRzIPuM0.js b/assets/VChip-BdtDOEwz.js similarity index 71% rename from assets/VChip-mRzIPuM0.js rename to assets/VChip-BdtDOEwz.js index 15bc3f8..c97acc3 100644 --- a/assets/VChip-mRzIPuM0.js +++ b/assets/VChip-BdtDOEwz.js @@ -1 +1 @@ -import{o as ye,j as h,k,n as L,N as Pe,e as S,s as F,m as ee,t as A,R as se,V as we,F as ie,S as Re}from"./vendor-vue-BiQC5iF7.js";import{aa as pe,ao as oe,f as E,ap as ke,m as le,am as ge,a0 as ce,af as Ee,K as _e,N as Te,aq as Be,ab as re,ar as Fe,aj as Oe,al as Ge,as as De,ag as H,o as ue,a2 as Me,at as We,au as Le,R as He,ae as $e,$ as Ne,M as qe,ah as Ke}from"./index-DGIAsv4W.js";import{f as te,A as je,a0 as Ue,y as de,aG as Qe,E as ve,u as be,$ as Xe,p as ae,I as _,az 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-DsKlzgKp.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=Ve(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:ze(),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),I=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],I.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 z(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)))&&V(),x=!1}function B(){x=!0}function M(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=Xe(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 R(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:L(["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:L(["v-slide-group__prev",{"v-slide-group__prev--disabled":!Q.value}]),onMousedown:B,onClick:()=>Q.value&&R("prev")},[((t=n.prev)==null?void 0:t.call(n,j.value))??h(oe,null,{default:()=>[h(E,{icon:r.value?e.nextIcon:e.prevIcon},null)]})]),k("div",{key:"container",ref:d,class:L(["v-slide-group__container",e.contentClass]),onScroll:q},[k("div",{ref:u,class:"v-slide-group__content",onFocusin:f,onFocusout:z,onKeydown:M},[(l=n.default)==null?void 0:l.call(n,j.value)])]),U.value&&k("div",{key:"next",class:L(["v-slide-group__next",{"v-slide-group__next--disabled":!X.value}]),onMousedown:B,onClick:()=>X.value&&R("next")},[((o=n.next)==null?void 0:o.call(n,j.value))??h(oe,null,{default:()=>[h(E,{icon:r.value?e.prevIcon:e.nextIcon},null)]})])]}})),{selected:c.selected,scrollTo:R,scrollOffset:m,focus:V,hasPrev:Q,hasNext:X}}}),Ae=Symbol.for("vuetify:v-chip-group"),sl=ae({baseColor:String,column:Boolean,filter:Boolean,valueComparator:{type:Function,default:Ze},...ze({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,Ae);return Ye({VChip:{baseColor:A(()=>e.baseColor),color:A(()=>e.color),disabled:A(()=>e.disabled),filter:A(()=>e.filter),variant:A(()=>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 I;return[(I=n.default)==null?void 0:I.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(),...Le(),...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}=Ee(e),{densityClasses:p}=_e(e),{elevationClasses:m}=Me(e),{roundedClasses:g}=Te(e),{sizeClasses:I}=Be(e),{themeClasses:v}=Se(e),d=ll(e,"modelValue"),a=re(e,Ae,!1),u=re(e,Ie,!1),b=Fe(e,n),G=A(()=>e.link!==!1&&b.isLink.value),C=S(()=>!e.disabled&&e.link!==!1&&(!!a||e.link||b.isClickable.value)),$=A(()=>({"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 z,x;r("click",f),C.value&&((x=(z=b.navigate).value)==null||x.call(z,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,z=!!(e.appendIcon||e.appendAvatar),x=!!(z||i.append),K=!!(i.close||e.closable),B=!!(i.filter||e.filter)&&a,M=!!(e.prependIcon||e.prependAvatar),w=!!(M||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,m.value,g.value,I.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 R;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(E,{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:!M,defaults:{VAvatar:{image:e.prependAvatar,start:!0},VIcon:{icon:e.prependIcon,start:!0}}},i.prepend):k(ie,null,[e.prependIcon&&h(E,{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":""},[((R=i.default)==null?void 0:R.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}))??Re(e.text)]),x&&k("div",{key:"append",class:"v-chip__append"},[i.append?h(H,{key:"append-defaults",disabled:!z,defaults:{VAvatar:{end:!0,image:e.appendAvatar},VIcon:{end:!0,icon:e.appendIcon}}},i.append):k(ie,null,[e.appendIcon&&h(E,{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(E,{key:"close-icon",icon:e.closeIcon,size:"x-small"},null)])]}}),[[ce,C.value&&e.ripple,null]])}}});export{dl as V,ul as a,me as b,ze as m}; +import{o as me,j as h,k,n as L,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 Re}from"./vendor-vue-BiQC5iF7.js";import{aa as pe,aq as oe,f as E,ar as ke,m as le,ao as ge,a0 as ce,ai as Ee,K as _e,N as Te,as as Be,ab as re,at as Fe,al as Oe,an as Ge,au as De,ag as H,o as ue,a2 as Me,av as We,aw as Le,R as He,ae as $e,$ as Ne,M as qe,aj as Ke}from"./index-Ceq_468-.js";import{f as te,A as je,a0 as Ue,y as de,aG as Qe,E as ve,u as be,$ as Xe,p as ae,I as _,ax 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-rtu3DHX4.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(),...Je({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}=je(),{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(),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;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];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;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){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)))&&V(),x=!1}function B(){x=!0}function M(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=Xe(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 R(t){const l=v.value&&r.value?-1:1,o=(t==="prev"?-l:l)*g.value;let J=y.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(y.value)>0),U=S(()=>{switch(e.showArrows){case"never":return!1;case"always":return!0;case"desktop":return!m.value;case!0:return W.value;case"mobile":return m.value||W.value;default:return!m.value&&W.value}}),Q=S(()=>Math.abs(y.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(y.value)>1});return be(()=>h(e.tag,{class:L(["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:L(["v-slide-group__prev",{"v-slide-group__prev--disabled":!Q.value}]),onMousedown:B,onClick:()=>Q.value&&R("prev")},[((t=n.prev)==null?void 0:t.call(n,j.value))??h(oe,null,{default:()=>[h(E,{icon:r.value?e.nextIcon:e.prevIcon},null)]})]),k("div",{key:"container",ref:d,class:L(["v-slide-group__container",e.contentClass]),onScroll:q},[k("div",{ref:u,class:"v-slide-group__content",onFocusin:f,onFocusout:A,onKeydown:M},[(l=n.default)==null?void 0:l.call(n,j.value)])]),U.value&&k("div",{key:"next",class:L(["v-slide-group__next",{"v-slide-group__next--disabled":!X.value}]),onMousedown:B,onClick:()=>X.value&&R("next")},[((o=n.next)==null?void 0:o.call(n,j.value))??h(oe,null,{default:()=>[h(E,{icon:r.value?e.prevIcon:e.nextIcon},null)]})])]}})),{selected:c.selected,scrollTo:R,scrollOffset:y,focus:V,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: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(),...Ke(),...ne(),...qe(),...Ne(),...$e(),...He(),...Le(),...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:m}=el(),{borderClasses:c}=Ee(e),{densityClasses:p}=_e(e),{elevationClasses:y}=Me(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),G=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: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 V;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,M=!!(e.prependIcon||e.prependAvatar),w=!!(M||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,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 R;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(E,{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:!M,defaults:{VAvatar:{image:e.prependAvatar,start:!0},VIcon:{icon:e.prependIcon,start:!0}}},i.prepend):k(ie,null,[e.prependIcon&&h(E,{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":""},[((R=i.default)==null?void 0:R.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}))??Re(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(E,{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(E,{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/VCombobox-BGa7K58w.js b/assets/VCombobox-BGa7K58w.js deleted file mode 100644 index b993be9..0000000 --- a/assets/VCombobox-BGa7K58w.js +++ /dev/null @@ -1,2 +0,0 @@ -import{h as qe,e as He,V as se,i as Ge}from"./VTextField-BurlcggD.js";import{u as Je,a as We,b as Qe,c as Xe,h as Ye,d as Ze,e as el,m as ll,f as al}from"./VSelect-oxA0t9CG.js";import{aB as tl,H as nl,aC as _,f as re,p as ul,q as ce,i as ol,a6 as il,o as sl,ag as rl,E as cl}from"./index-DGIAsv4W.js";import{f as vl,an as dl,n as ve,w as fl,o as de,E as ml,u as hl,aI as bl,aJ as pl,aK as fe,aL as gl,p as yl,a5 as xl,aM as Vl}from"./vendor-vuetify-DsKlzgKp.js";import{V as kl,a as Cl}from"./VSheet-BBnSA_kJ.js";import{V as wl}from"./VCheckboxBtn-BKcSogH0.js";import{V as me}from"./VChip-mRzIPuM0.js";import{s as P,o as L,j as d,k as S,F as Q,m as F,N as Il,n as Dl,a1 as Fl,e as w,I as N,b as A,t as Sl}from"./vendor-vue-BiQC5iF7.js";const Rl=yl({alwaysFilter:Boolean,autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...ll({filterKeys:["title"]}),...el({hideNoData:!0,returnObject:!0}),...xl(Ge({modelValue:null,role:"combobox"}),["validationValue","dirty"])},"VCombobox"),Nl=vl()({name:"VCombobox",props:Rl(),emits:{"update:focused":l=>!0,"update:modelValue":l=>!0,"update:search":l=>!0,"update:menu":l=>!0},setup(l,he){var te;let{emit:be,slots:t}=he;const{t:pe}=dl(),m=A(),g=P(!1),I=P(!0),G=P(!1),K=A(),O=A(),i=P(-1);let $=!1;const{items:X,transformIn:ge,transformOut:ye}=tl(l),{textColorClasses:xe,textColorStyles:Ve}=nl(()=>{var e;return(e=m.value)==null?void 0:e.color}),{InputIcon:ke}=qe(l),o=ve(l,"modelValue",[],e=>ge(fl(e)),e=>{const a=ye(e);return l.multiple?a:a[0]??null}),R=He(l),Y=Sl(()=>l.closableChips&&!R.isReadonly.value&&!R.isDisabled.value),z=w(()=>!!(l.chips||t.chip)),D=w(()=>z.value||!!t.selection),y=P(!l.multiple&&!D.value?((te=o.value[0])==null?void 0:te.title)??"":""),T=P(null),v=w({get:()=>y.value,set:async e=>{var a;if(y.value=e??"",e===null||e===""&&!l.multiple&&!D.value?o.value=[]:!l.multiple&&!D.value&&(o.value=[_(l,e)],N(()=>{var n;return(n=O.value)==null?void 0:n.scrollToIndex(0)})),e&&l.multiple&&((a=l.delimiters)!=null&&a.length)){const n=le(e);n.length>1&&(ae(n),y.value="")}e||(i.value=-1),I.value=!e}}),Ce=w(()=>typeof l.counterValue=="function"?l.counterValue(o.value):typeof l.counterValue=="number"?l.counterValue:l.multiple?o.value.length:v.value.length),{filteredItems:U,getMatches:we}=Je(l,X,()=>T.value??(l.alwaysFilter||!I.value?v.value:"")),x=w(()=>l.hideSelected&&T.value===null?U.value.filter(e=>!o.value.some(a=>a.value===e.value)):U.value),j=w(()=>l.hideNoData&&!x.value.length||R.isReadonly.value||R.isDisabled.value),J=ve(l,"menu"),r=w({get:()=>J.value,set:e=>{var a;J.value&&!e&&((a=K.value)!=null&&a.ΨopenChildren.size)||e&&j.value||(J.value=e)}}),{menuId:Ie,ariaExpanded:De,ariaControls:Fe}=We(l,r);L(y,e=>{$?N(()=>$=!1):g.value&&!r.value&&(r.value=!0),be("update:search",e)}),L(o,e=>{var a;!l.multiple&&!D.value&&(y.value=((a=e[0])==null?void 0:a.title)??"")});const Se=w(()=>o.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"&&v.value===((a=E.value)==null?void 0:a.title))&&x.value.length>0&&!I.value&&!G.value}),M=A(),Z=A(),ee=A(),Re=Ze(M,m),Pe=al(r,()=>{var e;return(e=K.value)==null?void 0:e.contentEl},()=>{var e;return(e=m.value)==null?void 0:e.controlRef}),{onTabKeydown:Ae}=Qe({groups:[{type:"element",contentRef:Z},{type:"list",contentRef:M,displayItemsCount:()=>x.value.length},{type:"element",contentRef:ee}],onLeave:()=>{var e;r.value=!1,(e=m.value)==null||e.focus()}});function Te(e){$=!0,N(()=>$=!1),l.openOnClear&&(r.value=!0)}function Ee(){j.value||(r.value=!0)}function Me(e){j.value||(g.value&&(e.preventDefault(),e.stopPropagation()),r.value=!r.value)}function Be(e){var a,n;e.key==="Tab"&&Ae(e),(a=M.value)!=null&&a.$el.contains(e.target)&&(fe(e)||e.key==="Backspace")&&((n=m.value)==null||n.focus())}function _e(e){var c,f,h,k;if(gl(e)||R.isReadonly.value)return;const a=(c=m.value)==null?void 0:c.selectionStart,n=o.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(e.key)&&e.preventDefault(),["Enter","ArrowDown"].includes(e.key)&&(r.value=!0),["Escape"].includes(e.key)&&(r.value=!1),W.value&&["Enter","Tab"].includes(e.key)&&E.value&&!o.value.some(u=>{let{value:b}=u;return b===E.value.value})&&V(E.value),e.key==="ArrowDown"&&W.value&&((f=M.value)==null||f.focus("next")),e.key==="Enter"&&v.value&&(V(_(l,v.value),!0,!0),D.value&&(y.value="")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&D.value&&o.value.length>0&&!v.value)return V(o.value[0],!1);if(~i.value){e.preventDefault();const u=i.value;V(o.value[i.value],!1),i.value=u>=n-1?n-2:u}else e.key==="Backspace"&&!v.value&&(i.value=n-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(i.value<0&&a&&a>0)return;const u=i.value>-1?i.value-1:n-1;o.value[u]?i.value=u:(i.value=-1,(h=m.value)==null||h.setSelectionRange(v.value.length,v.value.length))}else if(e.key==="ArrowRight"){if(i.value<0)return;const u=i.value+1;o.value[u]?i.value=u:(i.value=-1,(k=m.value)==null||k.setSelectionRange(0,0))}else~i.value&&fe(e)&&(i.value=-1)}function Le(e){var c;const a=((c=e==null?void 0:e.clipboardData)==null?void 0:c.getData("Text"))??"",n=le(a);n.length>1&&l.multiple&&(e.preventDefault(),ae(n))}function Ne(){var e;l.eager&&((e=O.value)==null||e.calculateVisibleItems())}function Ke(){var e;g.value&&((e=m.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 c=o.value.findIndex(h=>(l.valueComparator||de)(h.value,e.value)),f=a??!~c;if(~c){const h=f?[...o.value,e]:[...o.value];h.splice(c,1),o.value=h}else f&&(o.value=[...o.value,e]);l.clearOnSelect&&(v.value="")}else{const c=a!==!1;o.value=c?[e]:[],(!I.value||l.alwaysFilter)&&y.value&&(T.value=y.value),y.value=c&&!D.value?e.title:"",N(()=>{r.value=n,I.value=!0})}}function le(e){const n=[` -`,...l.delimiters??[]].map(Vl).join("|");return e.split(new RegExp(`(?:${n})+`))}async function ae(e){for(let a of e)a=a.trim(),a&&(V(_(l,a)),await N())}function Oe(e){g.value=!0,setTimeout(()=>{G.value=!0})}function $e(e){var a;if(G.value=!1,!((a=m.value)!=null&&a.$el.contains(e.relatedTarget))){if(Pe(e))return;g.value=!1}}function ze(e){var n;const a=(n=K.value)==null?void 0:n.contentEl;a!=null&&a.contains(e.relatedTarget)&&(g.value=!0)}return L(g,(e,a)=>{if(!(e||e===a)&&(i.value=-1,r.value=!1,v.value)){if(l.multiple){V(_(l,v.value));return}if(!D.value)return;o.value.some(n=>{let{title:c}=n;return c===v.value})?y.value="":V(_(l,v.value))}}),L(r,e=>{if(!l.hideSelected&&e&&o.value.length&&I.value){const a=x.value.findIndex(n=>o.value.some(c=>(l.valueComparator||de)(c.value,n.value)));ml&&window.requestAnimationFrame(()=>{var n;a>=0&&((n=O.value)==null||n.scrollToIndex(a))})}e&&(T.value=null)}),L(X,(e,a)=>{r.value||g.value&&!a.length&&e.length&&(r.value=!0)}),hl(()=>{const e=!!(!l.hideNoData||x.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),a=o.value.length>0,n=se.filterProps(l),c={search:v,filteredItems:U.value};return d(se,F({ref:m},n,{modelValue:v.value,"onUpdate:modelValue":f=>v.value=f,focused:g.value,"onUpdate:focused":f=>g.value=f,validationValue:o.externalValue,counterValue:Ce.value,dirty:a,class:["v-combobox",{"v-combobox--active-menu":r.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":Te,"onMousedown:control":Ee,onKeydown:_e,onPaste:Le,onBlur:ze,"aria-expanded":De.value,"aria-controls":Fe.value}),{...t,default:f=>{var k;let{id:h}=f;return S(Q,null,[d(kl,F({id:Ie.value,ref:K,modelValue:r.value,"onUpdate:modelValue":u=>r.value=u,activator:"parent",disabled:j.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:Ne,onAfterLeave:Ke},l.menuProps,{contentClass:["v-combobox__content",(k=l.menuProps)==null?void 0:k.contentClass]}),{default:()=>[d(Cl,{onFocusin:Oe,onKeydown:Be},{default:()=>[t["menu-header"]&&S("header",{ref:Z},[t["menu-header"](c)]),e&&d(ul,F({key:"combobox-list",ref:M,filterable:!0,selected:Se.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:u=>u.preventDefault(),selectable:!!x.value.length,onFocusout:$e,tabindex:"-1","aria-live":"polite","aria-labelledby":`${h.value}-label`,"aria-multiselectable":l.multiple,color:l.itemColor??l.color},Re,l.listProps),{default:()=>{var u,b,B;return[(u=t["prepend-item"])==null?void 0:u.call(t),!x.value.length&&!l.hideNoData&&(((b=t["no-data"])==null?void 0:b.call(t))??d(ce,{key:"no-data",title:pe(l.noDataText)},null)),d(Xe,{ref:O,renderless:!0,items:x.value,itemKey:"value"},{default:q=>{var ue,oe,ie;let{item:s,index:C,itemRef:p}=q;const ne=F(s.props,{ref:p,key:s.value,active:W.value&&s===E.value?!0:void 0,onClick:()=>V(s,null),"aria-posinset":C+1,"aria-setsize":x.value.length});return s.type==="divider"?((ue=t.divider)==null?void 0:ue.call(t,{props:s.raw,index:C}))??d(ol,F(s.props,{key:`divider-${C}`}),null):s.type==="subheader"?((oe=t.subheader)==null?void 0:oe.call(t,{props:s.raw,index:C}))??d(il,F(s.props,{key:`subheader-${C}`}),null):((ie=t.item)==null?void 0:ie.call(t,{item:s,index:C,props:ne}))??d(ce,F(ne,{role:"option"}),{prepend:H=>{let{isSelected:Ue}=H;return S(Q,null,[l.multiple&&!l.hideSelected?d(wl,{key:s.value,modelValue:Ue,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:je=>je.preventDefault()},null):void 0,s.props.prependAvatar&&d(sl,{image:s.props.prependAvatar},null),s.props.prependIcon&&d(re,{icon:s.props.prependIcon},null)])},title:()=>{var H;return I.value?s.title:Ye("v-combobox",s.title,(H=we(s))==null?void 0:H.title)}})}}),(B=t["append-item"])==null?void 0:B.call(t)]}}),t["menu-footer"]&&S("footer",{ref:ee},[t["menu-footer"](c)])]})]}),o.value.map((u,b)=>{function B(p){p.stopPropagation(),p.preventDefault(),V(u,!1)}const q=F(me.filterProps(u.props),{"onClick:close":B,onKeydown(p){p.key!=="Enter"&&p.key!==" "||(p.preventDefault(),p.stopPropagation(),B(p))},onMousedown(p){p.preventDefault(),p.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),s=z.value?!!t.chip:!!t.selection,C=s?pl(z.value?t.chip({item:u,index:b,props:q}):t.selection({item:u,index:b})):void 0;if(!(s&&!C))return S("div",{key:u.value,class:Dl(["v-combobox__selection",b===i.value&&["v-combobox__selection--selected",xe.value]]),style:Il(b===i.value?Ve.value:{})},[z.value?t.chip?d(rl,{key:"chip-defaults",defaults:{VChip:{closable:Y.value,size:"small",text:u.title}}},{default:()=>[C]}):d(me,F({key:"chip",closable:Y.value,size:"small",text:u.title,disabled:u.props.disabled},q),null):C??S("span",{class:"v-combobox__selection-text"},[u.title,l.multiple&&b!0,"update:modelValue":l=>!0,"update:search":l=>!0,"update:menu":l=>!0},setup(l,he){var te;let{emit:be,slots:t}=he;const{t:ge}=dl(),m=A(),p=P(!1),I=P(!0),H=P(!1),K=A(),O=A(),i=P(-1);let $=!1;const{items:X,transformIn:pe,transformOut:ye}=tl(l),{textColorClasses:xe,textColorStyles:Ve}=nl(()=>{var e;return(e=m.value)==null?void 0:e.color}),{InputIcon:ke}=qe(l),o=ve(l,"modelValue",[],e=>pe(fl(e)),e=>{const a=ye(e);return l.multiple?a:a[0]??null}),R=Ge(l),Y=Fl(()=>l.closableChips&&!R.isReadonly.value&&!R.isDisabled.value),z=w(()=>!!(l.chips||t.chip)),D=w(()=>z.value||!!t.selection),y=P(!l.multiple&&!D.value?((te=o.value[0])==null?void 0:te.title)??"":""),T=P(null),v=w({get:()=>y.value,set:async e=>{var a;if(y.value=e??"",e===null||e===""&&!l.multiple&&!D.value?o.value=[]:!l.multiple&&!D.value&&(o.value=[N(l,e)],L(()=>{var n;return(n=O.value)==null?void 0:n.scrollToIndex(0)})),e&&l.multiple&&((a=l.delimiters)!=null&&a.length)){const n=le(e);n.length>1&&(ae(n),y.value="")}e||(i.value=-1),I.value=!e}}),Ce=w(()=>typeof l.counterValue=="function"?l.counterValue(o.value):typeof l.counterValue=="number"?l.counterValue:l.multiple?o.value.length:v.value.length),{filteredItems:U,getMatches:we}=We(l,X,()=>T.value??(l.alwaysFilter||!I.value?v.value:"")),x=w(()=>l.hideSelected&&T.value===null?U.value.filter(e=>!o.value.some(a=>a.value===e.value)):U.value),j=w(()=>l.hideNoData&&!x.value.length||R.isReadonly.value||R.isDisabled.value),W=ve(l,"menu"),r=w({get:()=>W.value,set:e=>{var a;W.value&&!e&&((a=K.value)!=null&&a.ΨopenChildren.size)||e&&j.value||(W.value=e)}}),{menuId:Ie,ariaExpanded:De,ariaControls:Se}=Je(l,r);_(y,e=>{$?L(()=>$=!1):p.value&&!r.value&&(r.value=!0),be("update:search",e)}),_(o,e=>{var a;!l.multiple&&!D.value&&(y.value=((a=e[0])==null?void 0:a.title)??"")});const Fe=w(()=>o.value.map(e=>e.value)),E=w(()=>x.value.find(e=>e.type==="item"&&!e.props.disabled)),J=w(()=>{var a;return(l.autoSelectFirst===!0||l.autoSelectFirst==="exact"&&v.value===((a=E.value)==null?void 0:a.title))&&x.value.length>0&&!I.value&&!H.value}),M=A(),Z=A(),ee=A(),Re=Ze(M,m),Pe=al(r,()=>{var e;return(e=K.value)==null?void 0:e.contentEl},()=>{var e;return(e=m.value)==null?void 0:e.controlRef}),{onTabKeydown:Ae}=Qe({groups:[{type:"element",contentRef:Z},{type:"list",contentRef:M,displayItemsCount:()=>x.value.length},{type:"element",contentRef:ee}],onLeave:()=>{var e;r.value=!1,(e=m.value)==null||e.focus()}});function Te(e){$=!0,L(()=>$=!1),l.openOnClear&&(r.value=!0)}function Ee(){j.value||(r.value=!0)}function Me(e){j.value||(p.value&&(e.preventDefault(),e.stopPropagation()),r.value=!r.value)}function Be(e){var a,n;e.key==="Tab"&&Ae(e),(a=M.value)!=null&&a.$el.contains(e.target)&&(fe(e)||e.key==="Backspace")&&((n=m.value)==null||n.focus())}function Ne(e){var c,f,h,k;if(pl(e)||R.isReadonly.value)return;const a=(c=m.value)==null?void 0:c.selectionStart,n=o.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(e.key)&&e.preventDefault(),["Enter","ArrowDown"].includes(e.key)&&(r.value=!0),["Escape"].includes(e.key)&&(r.value=!1),J.value&&["Enter","Tab"].includes(e.key)&&E.value&&!o.value.some(u=>{let{value:b}=u;return b===E.value.value})&&V(E.value),e.key==="ArrowDown"&&J.value&&((f=M.value)==null||f.focus("next")),e.key==="Enter"&&v.value&&(V(N(l,v.value),!0,!0),D.value&&(y.value="")),["Backspace","Delete"].includes(e.key)){if(!l.multiple&&D.value&&o.value.length>0&&!v.value)return V(o.value[0],!1);if(~i.value){e.preventDefault();const u=i.value;V(o.value[i.value],!1),i.value=u>=n-1?n-2:u}else e.key==="Backspace"&&!v.value&&(i.value=n-1);return}if(l.multiple)if(e.key==="ArrowLeft"){if(i.value<0&&a&&a>0)return;const u=i.value>-1?i.value-1:n-1;o.value[u]?i.value=u:(i.value=-1,(h=m.value)==null||h.setSelectionRange(v.value.length,v.value.length))}else if(e.key==="ArrowRight"){if(i.value<0)return;const u=i.value+1;o.value[u]?i.value=u:(i.value=-1,(k=m.value)==null||k.setSelectionRange(0,0))}else~i.value&&fe(e)&&(i.value=-1)}function _e(e){var c;const a=((c=e==null?void 0:e.clipboardData)==null?void 0:c.getData("Text"))??"",n=le(a);n.length>1&&l.multiple&&(e.preventDefault(),ae(n))}function Le(){var e;l.eager&&((e=O.value)==null||e.calculateVisibleItems())}function Ke(){var e;p.value&&((e=m.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 c=o.value.findIndex(h=>(l.valueComparator||de)(h.value,e.value)),f=a??!~c;if(~c){const h=f?[...o.value,e]:[...o.value];h.splice(c,1),o.value=h}else f&&(o.value=[...o.value,e]);l.clearOnSelect&&(v.value="")}else{const c=a!==!1;o.value=c?[e]:[],(!I.value||l.alwaysFilter)&&y.value&&(T.value=y.value),y.value=c&&!D.value?e.title:"",L(()=>{r.value=n,I.value=!0})}}function le(e){const n=[` +`,...l.delimiters??[]].map(Vl).join("|");return e.split(new RegExp(`(?:${n})+`))}async function ae(e){for(let a of e)a=a.trim(),a&&(V(N(l,a)),await L())}function Oe(e){p.value=!0,setTimeout(()=>{H.value=!0})}function $e(e){var a;if(H.value=!1,!((a=m.value)!=null&&a.$el.contains(e.relatedTarget))){if(Pe(e))return;p.value=!1}}function ze(e){var n;const a=(n=K.value)==null?void 0:n.contentEl;a!=null&&a.contains(e.relatedTarget)&&(p.value=!0)}return _(p,(e,a)=>{if(!(e||e===a)&&(i.value=-1,r.value=!1,v.value)){if(l.multiple){V(N(l,v.value));return}if(!D.value)return;o.value.some(n=>{let{title:c}=n;return c===v.value})?y.value="":V(N(l,v.value))}}),_(r,e=>{if(!l.hideSelected&&e&&o.value.length&&I.value){const a=x.value.findIndex(n=>o.value.some(c=>(l.valueComparator||de)(c.value,n.value)));ml&&!l.noAutoScroll&&window.requestAnimationFrame(()=>{var n;a>=0&&((n=O.value)==null||n.scrollToIndex(a))})}e&&(T.value=null)}),_(X,(e,a)=>{r.value||p.value&&!a.length&&e.length&&(r.value=!0)}),hl(()=>{const e=!!(!l.hideNoData||x.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),a=o.value.length>0,n=se.filterProps(l),c={search:v,filteredItems:U.value};return d(se,S({ref:m},n,{modelValue:v.value,"onUpdate:modelValue":f=>v.value=f,focused:p.value,"onUpdate:focused":f=>p.value=f,validationValue:o.externalValue,counterValue:Ce.value,dirty:a,class:["v-combobox",{"v-combobox--active-menu":r.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":Te,"onMousedown:control":Ee,onKeydown:Ne,onPaste:_e,onBlur:ze,"aria-expanded":De.value,"aria-controls":Se.value}),{...t,default:f=>{var k;let{id:h}=f;return F(Q,null,[d(kl,S({id:Ie.value,ref:K,modelValue:r.value,"onUpdate:modelValue":u=>r.value=u,activator:"parent",disabled:j.value,eager:l.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:Le,onAfterLeave:Ke},l.menuProps,{contentClass:["v-combobox__content",(k=l.menuProps)==null?void 0:k.contentClass]}),{default:()=>[d(Cl,{onFocusin:Oe,onKeydown:Be},{default:()=>[t["menu-header"]&&F("header",{ref:Z},[t["menu-header"](c)]),e&&d(ul,S({key:"combobox-list",ref:M,filterable:!0,selected:Fe.value,selectStrategy:l.multiple?"independent":"single-independent",onMousedown:u=>u.preventDefault(),selectable:!!x.value.length,onFocusout:$e,tabindex:"-1","aria-live":"polite","aria-labelledby":`${h.value}-label`,"aria-multiselectable":l.multiple,color:l.itemColor??l.color},Re,l.listProps),{default:()=>{var u,b,B;return[(u=t["prepend-item"])==null?void 0:u.call(t),!x.value.length&&!l.hideNoData&&(((b=t["no-data"])==null?void 0:b.call(t))??d(ce,{key:"no-data",title:ge(l.noDataText)},null)),d(Xe,{ref:O,renderless:!0,items:x.value,itemKey:"value"},{default:q=>{var ue,oe,ie;let{item:s,index:C,itemRef:g}=q;const ne=S(s.props,{ref:g,key:s.value,active:J.value&&s===E.value?!0:void 0,onClick:()=>V(s,null),"aria-posinset":C+1,"aria-setsize":x.value.length});return s.type==="divider"?((ue=t.divider)==null?void 0:ue.call(t,{props:s.raw,index:C}))??d(ol,S(s.props,{key:`divider-${C}`}),null):s.type==="subheader"?((oe=t.subheader)==null?void 0:oe.call(t,{props:s.raw,index:C}))??d(il,S(s.props,{key:`subheader-${C}`}),null):((ie=t.item)==null?void 0:ie.call(t,{item:s,index:C,props:ne}))??d(ce,S(ne,{role:"option"}),{prepend:G=>{let{isSelected:Ue}=G;return F(Q,null,[l.multiple&&!l.hideSelected?d(wl,{key:s.value,modelValue:Ue,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:je=>je.preventDefault()},null):void 0,s.props.prependAvatar&&d(sl,{image:s.props.prependAvatar},null),s.props.prependIcon&&d(re,{icon:s.props.prependIcon},null)])},title:()=>{var G;return I.value?s.title:Ye("v-combobox",s.title,(G=we(s))==null?void 0:G.title)}})}}),(B=t["append-item"])==null?void 0:B.call(t)]}}),t["menu-footer"]&&F("footer",{ref:ee},[t["menu-footer"](c)])]})]}),o.value.map((u,b)=>{function B(g){g.stopPropagation(),g.preventDefault(),V(u,!1)}const q=S(me.filterProps(u.props),{"onClick:close":B,onKeydown(g){g.key!=="Enter"&&g.key!==" "||(g.preventDefault(),g.stopPropagation(),B(g))},onMousedown(g){g.preventDefault(),g.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),s=z.value?!!t.chip:!!t.selection,C=s?gl(z.value?t.chip({item:u,index:b,props:q}):t.selection({item:u,index:b})):void 0;if(!(s&&!C))return F("div",{key:u.value,class:Dl(["v-combobox__selection",b===i.value&&["v-combobox__selection--selected",xe.value]]),style:Il(b===i.value?Ve.value:{})},[z.value?t.chip?d(rl,{key:"chip-defaults",defaults:{VChip:{closable:Y.value,size:"small",text:u.title}}},{default:()=>[C]}):d(me,S({key:"chip",closable:Y.value,size:"small",text:u.title,disabled:u.props.disabled},q),null):C??F("span",{class:"v-combobox__selection-text"},[u.title,l.multiple&&bp(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-rtu3DHX4.js";import{b as u,m as c,a as f}from"./index-Ceq_468-.js";import{j as p,N as C,n as d}from"./vendor-vue-BiQC5iF7.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-BtP49-4R.js b/assets/VDataTable-BtP49-4R.js new file mode 100644 index 0000000..9241a05 --- /dev/null +++ b/assets/VDataTable-BtP49-4R.js @@ -0,0 +1 @@ +import{n as q,p as _,l as He,z as be,f as J,an as ce,u as te,a5 as Pe,I as G,at as vt,s as R,au as yt,w as Z,ah as ht,o as $e,av as ue,aw as ne,F as bt,a0 as we,ax as ke,ag as pe,aj as xe,ay as Be,ai as re,j as pt}from"./vendor-vuetify-rtu3DHX4.js";import{l as j,e as I,d as X,o as Ie,p as Y,k as S,j as w,m as $,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,aa as se,S as It,y as Dt}from"./vendor-vue-BiQC5iF7.js";import{V as Ee}from"./VPagination-BQZD6rf1.js";import{V as Le,u as Tt,m as Vt}from"./VSelect-OEnAsVY5.js";import{a7 as Ct,H as Ft,a8 as Bt,f as _e,a9 as Ot,M as De,h as je,i as Et}from"./index-Ceq_468-.js";import{V as _t}from"./VChip-BdtDOEwz.js";import{V as de}from"./VCheckboxBtn-snLiE5D5.js";import{b as Ae,m as At}from"./VTable-CJ8evfI8.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 Gt(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 Y(Me,v),v}function Ht(){const e=X(Me);if(!e)throw new Error("Missing pagination!");return e}function $t(e){const a=He("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:G,default:"$prev"},nextIcon:{type:G,default:"$next"},firstIcon:{type:G,default:"$first"},lastIcon:{type:G,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=J()({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}=Ht(),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,$({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 Je(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?Je(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=Je(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);n.value={},r.value={},o.value={};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 Y(Ke,i),i}function fe(){const e=X(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}},Xe={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 Xe.select({items:l,value:a,selected:t})}},Jt={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):[])}},Xt=_({showSelect:Boolean,selectStrategy:{type:[String,Object],default:"page"},modelValue:{type:Array,default:()=>[]},valueComparator:Function},"DataTable-select"),Ye=Symbol.for("vuetify:data-table-selection");function Yt(e,a){let{allItems:l,currentPage:t}=a;const n=q(e,"modelValue",e.modelValue,s=>{const x=e.valueComparator;return x?new Set(Z(s).map(D=>{var P;return((P=l.value.find(F=>x(D,F.value)))==null?void 0:P.value)??D})):new Set(Z(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=>$e(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 Jt;case"page":default:return Xe}}),u=Pt(null);function c(s){return Z(s).every(x=>n.value.has(x.value))}function g(s){return Z(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 Y(Ye,b),b}function ge(){const e=X(Ye);if(!e)throw new Error("Missing selection!");return e}const Zt=_({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"),Ze=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 Y(Ze,u),u}function et(){const e=X(Ze);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:G},sortAscIcon:{type:G,default:"$sortAsc"},sortDescIcon:{type:G,default:"$sortDesc"},headerProps:{type:Object},sticky:Boolean,...De(),...ke(),...Ot()},"VDataTableHeaders"),Re=J()({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=$(e.headerProps??{},m.headerProps??{});return w(ee,$({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=Z(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,$({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 Y(at,c),c}function lt(){const e=X(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:G,default:"$tableGroupCollapse"},groupExpandIcon:{type:G,default:"$tableGroupExpand"},...De()},"VDataTableGroupHeaderRow"),da=J()({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 Y(st,o),o}function ut(){const e=X(st);if(!e)throw new Error("foo");return e}const it=_({color:String,index:Number,item:Object,cellProps:[Object,Function],collapseIcon:{type:G,default:"$collapse"},expandIcon:{type:G,default:"$expand"},onClick:pe(),onContextmenu:pe(),onDblclick:pe(),...De(),...ke()},"VDataTableRow"),ga=J()({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,$({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"),Ge=J()({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,$({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:$({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=He("VDataTable"),i=()=>({page:a.value,itemsPerPage:l.value,sortBy:t.value,groupBy:n.value,search:r.value});let u=null;Ie(i,c=>{$e(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(),...Xt(),...Zt(),...Pe(tt(),["multiSort","initialSortOrder"]),...At()},"DataTable"),xa=_({...Nt(),...pa(),...Vt(),...We()},"VDataTable"),Ca=J()({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}=Gt({page:c,itemsPerPage:g,itemsLength:ve}),{paginatedItems:le}=$t({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}=Yt(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 H=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=Ge.filterProps(e),he=Ae.filterProps(e);return w(Ae,$({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,H.value)},default:()=>{var K,ae,le,Ve,Ce,Fe;return t.default?t.default(H.value):S(Q,null,[(K=t.colgroup)==null?void 0:K.call(t,H.value),!e.hideDefaultHeader&&S("thead",{key:"thead"},[w(Re,$(ve,{multiSort:!!e.multiSort}),t)]),(ae=t.thead)==null?void 0:ae.call(t,H.value),!e.hideDefaultBody&&S("tbody",null,[(le=t["body.prepend"])==null?void 0:le.call(t,H.value),t.body?t.body(H.value):w(Ge,$(l,ye,{items:O.value}),t),(Ve=t["body.append"])==null?void 0:Ve.call(t,H.value)]),(Ce=t.tbody)==null?void 0:Ce.call(t,H.value),(Fe=t.tfoot)==null?void 0:Fe.call(t,H.value)])},bottom:()=>t.bottom?t.bottom(H.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-DmTCHg4b.js b/assets/VDataTable-DmTCHg4b.js deleted file mode 100644 index 53c6893..0000000 --- a/assets/VDataTable-DmTCHg4b.js +++ /dev/null @@ -1 +0,0 @@ -import{n as q,p as _,l as $e,z as be,f as J,an as ce,u as te,a5 as Pe,I as G,av as vt,s as R,aw as yt,w as Z,ah as ht,o as He,ax as ue,ay as ne,F as bt,a0 as we,az as ke,ag as pe,aj as xe,aA as Be,ai as re,j as pt}from"./vendor-vuetify-DsKlzgKp.js";import{l as j,e as I,d as X,o as Ie,p as Y,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,aa as se,S as It,y as Dt}from"./vendor-vue-BiQC5iF7.js";import{V as Ee}from"./VPagination-DLzhjdaP.js";import{V as Le,u as Tt,m as Vt}from"./VSelect-oxA0t9CG.js";import{a7 as Ct,I as Ft,a8 as Bt,f as _e,a9 as Ot,M as De,h as je,i as Et}from"./index-DGIAsv4W.js";import{V as _t}from"./VChip-mRzIPuM0.js";import{V as de}from"./VCheckboxBtn-BKcSogH0.js";import{b as Ae,m as At}from"./VTable-Cq72iBVc.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 Gt(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 Y(Me,v),v}function $t(){const e=X(Me);if(!e)throw new Error("Missing pagination!");return e}function Ht(e){const a=$e("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:G,default:"$prev"},nextIcon:{type:G,default:"$next"},firstIcon:{type:G,default:"$first"},lastIcon:{type:G,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=J()({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}=$t(),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"),ze=Symbol.for("vuetify:data-table-headers"),Ke={title:"",sortable:!1},Mt={...Ke,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 zt(e){if(e.key){if(e.key==="data-table-group")return Ke;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 Kt(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 Je(e){const a=[];for(const l of e){const t={...zt(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?Je(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=Je(c);Kt(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 Y(ze,i),i}function fe(){const e=X(ze);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}},Xe={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 Xe.select({items:l,value:a,selected:t})}},Jt={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):[])}},Xt=_({showSelect:Boolean,selectStrategy:{type:[String,Object],default:"page"},modelValue:{type:Array,default:()=>[]},valueComparator:Function},"DataTable-select"),Ye=Symbol.for("vuetify:data-table-selection");function Yt(e,a){let{allItems:l,currentPage:t}=a;const n=q(e,"modelValue",e.modelValue,s=>{const x=e.valueComparator;return x?new Set(Z(s).map(D=>{var P;return((P=l.value.find(F=>x(D,F.value)))==null?void 0:P.value)??D})):new Set(Z(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 Jt;case"page":default:return Xe}}),u=Pt(null);function c(s){return Z(s).every(x=>n.value.has(x.value))}function g(s){return Z(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 Y(Ye,b),b}function ge(){const e=X(Ye);if(!e)throw new Error("Missing selection!");return e}const Zt=_({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"),Ze=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 Y(Ze,u),u}function et(){const e=X(Ze);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:G},sortAscIcon:{type:G,default:"$sortAsc"},sortDescIcon:{type:G,default:"$sortDesc"},headerProps:{type:Object},sticky:Boolean,...De(),...ke(),...Ot()},"VDataTableHeaders"),Re=J()({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 K;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"?((K=l["header.data-table-select"])==null?void 0:K.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=Z(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(K=>K.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 Y(at,c),c}function lt(){const e=X(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:G,default:"$tableGroupCollapse"},groupExpandIcon:{type:G,default:"$tableGroupExpand"},...De()},"VDataTableGroupHeaderRow"),da=J()({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 Y(st,o),o}function ut(){const e=X(st);if(!e)throw new Error("foo");return e}const it=_({color:String,index:Number,item:Object,cellProps:[Object,Function],collapseIcon:{type:G,default:"$collapse"},expandIcon:{type:G,default:"$expand"},onClick:pe(),onContextmenu:pe(),onDblclick:pe(),...De(),...ke()},"VDataTableRow"),ga=J()({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"),Ge=J()({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=$e("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(),...Xt(),...Zt(),...Pe(tt(),["multiSort","initialSortOrder"]),...At()},"DataTable"),xa=_({...Nt(),...pa(),...Vt(),...We()},"VDataTable"),Ca=J()({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:z,setItemsPerPage:ae}=Gt({page:c,itemsPerPage:g,itemsLength:ve}),{paginatedItems:le}=Ht({items:A,startIndex:ye,stopIndex:he,itemsPerPage:g});return{paginatedItems:le,pageCount:z,setItemsPerPage:ae}},group:A=>ia(A,n,F,()=>!!t["group-summary"])}),L=I(()=>V(O.value)),{isSelected:C,select:M,selectAll:K,toggleSelect:me,someSelected:ct,allSelected:ft}=Yt(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 $=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:K,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=Ge.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 z;return(z=t.top)==null?void 0:z.call(t,$.value)},default:()=>{var z,ae,le,Ve,Ce,Fe;return t.default?t.default($.value):S(Q,null,[(z=t.colgroup)==null?void 0:z.call(t,$.value),!e.hideDefaultHeader&&S("thead",{key:"thead"},[w(Re,H(ve,{multiSort:!!e.multiSort}),t)]),(ae=t.thead)==null?void 0:ae.call(t,$.value),!e.hideDefaultBody&&S("tbody",null,[(le=t["body.prepend"])==null?void 0:le.call(t,$.value),t.body?t.body($.value):w(Ge,H(l,ye,{items:O.value}),t),(Ve=t["body.append"])==null?void 0:Ve.call(t,$.value)]),(Ce=t.tbody)==null?void 0:Ce.call(t,$.value),(Fe=t.tfoot)==null?void 0:Fe.call(t,$.value)])},bottom:()=>t.bottom?t.bottom($.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/VDatePicker-CuGF0KeL.js b/assets/VDatePicker-C_lQuyln.js similarity index 75% rename from assets/VDatePicker-CuGF0KeL.js rename to assets/VDatePicker-C_lQuyln.js index c271823..2c0dbb8 100644 --- a/assets/VDatePicker-CuGF0KeL.js +++ b/assets/VDatePicker-C_lQuyln.js @@ -1,2 +1,2 @@ -import{f as J,an as le,u as K,s as ne,p as E,I as ae,ag as Ie,aR as X,n as W,w as j,a5 as H,aS as Te,as as ke,X as de,A as Ne,aT as We}from"./vendor-vuetify-DsKlzgKp.js";import{h as I,g as ue,ag as re,I as Be,P as ge,av as se,ao as $e}from"./index-DGIAsv4W.js";import{j as b,k as M,F as G,n as Q,e as P,N as Re,o as be,a1 as Fe,s as Z,b as Le,t as L,w as De,m as $,R as je}from"./vendor-vue-BiQC5iF7.js";import{V as He}from"./VTooltip-2IUjfpCS.js";import{V as ce,m as Ee}from"./VPicker-SM18M-iq.js";const we=E({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=J()({name:"VDatePickerControls",props:we(),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:D,slots:l}=a;const{t}=le(),c=P(()=>Array.isArray(e.disabled)?e.disabled.includes("text"):!!e.disabled),m=P(()=>Array.isArray(e.disabled)?e.disabled.includes("mode"):!!e.disabled),s=P(()=>Array.isArray(e.disabled)?e.disabled.includes("prev-month"):!!e.disabled),u=P(()=>Array.isArray(e.disabled)?e.disabled.includes("next-month"):!!e.disabled),k=P(()=>Array.isArray(e.disabled)?e.disabled.includes("prev-year"):!!e.disabled),v=P(()=>Array.isArray(e.disabled)?e.disabled.includes("next-year"):!!e.disabled);function w(){D("click:prev")}function d(){D("click:next")}function x(){D("click:prev-year")}function S(){D("click:next-year")}function n(){D("click:year")}function h(){D("click:month")}return K(()=>{const i={VBtn:{density:"comfortable",variant:"text"}},A=b(I,{"data-testid":"prev-month",disabled:s.value,icon:e.prevIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.previousMonth"),onClick:w},null),T=b(I,{"data-testid":"next-month",disabled:u.value,icon:e.nextIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.nextMonth"),onClick:d},null),_=b(I,{"data-testid":"prev-year",disabled:k.value,icon:e.prevIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.previousYear"),onClick:x},null),R=b(I,{"data-testid":"next-year",disabled:v.value,icon:e.nextIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.nextYear"),onClick:S},null),y=b(I,{class:"v-date-picker-controls__only-month-btn","data-testid":"month-btn",density:"default",disabled:c.value,text:e.monthText,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectMonth"),onClick:h},null),r=b(I,{class:"v-date-picker-controls__only-year-btn","data-testid":"year-btn",density:"default",disabled:m.value,text:e.yearText,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null),g=b(I,{class:"v-date-picker-controls__year-btn","data-testid":"year-btn",density:"default",disabled:m.value,text:e.text,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null),C=M(G,null,[b(I,{class:"v-date-picker-controls__month-btn","data-testid":"month-btn",height:"36",disabled:c.value,text:e.text,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectMonth"),onClick:h},null),b(I,{class:"v-date-picker-controls__mode-btn","data-testid":"year-btn",disabled:m.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:h,openYears:n,prevMonth:w,nextMonth:d,prevYear:x,nextYear:S},U=M(G,null,[e.noMonthPicker?g:C,b(ue,null,null),M("div",{class:"v-date-picker-controls__month"},[A,T])]),ee=M(G,null,[M("div",{class:"v-date-picker-controls__month"},[A,y,T]),b(ue,null,null),M("div",{class:"v-date-picker-controls__year"},[_,r,R])]);return b(re,{defaults:i},{default:()=>{var te;return[M("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))??M(G,null,[e.controlVariant==="modal"&&U,e.controlVariant==="docked"&&ee])])]}})}),{}}}),Ue=E({appendIcon:ae,color:String,header:String,transition:String,onClick:Ie()},"VDatePickerHeader"),fe=J()({name:"VDatePickerHeader",props:Ue(),emits:{click:()=>!0,"click:append":()=>!0},setup(e,a){let{emit:D,slots:l}=a;const{backgroundColorClasses:t,backgroundColorStyles:c}=Be(()=>e.color);function m(){D("click")}function s(){D("click:append")}return K(()=>{const u=!!(l.default||e.header),k=!!(l.append||e.appendIcon);return M("div",{class:Q(["v-date-picker-header",{"v-date-picker-header--clickable":!!e.onClick},t.value]),style:Re(c.value),onClick:m},[l.prepend&&M("div",{key:"prepend",class:"v-date-picker-header__prepend"},[l.prepend()]),u&&b(ge,{key:"content",name:e.transition},{default:()=>{var v;return[M("div",{key:e.header,class:"v-date-picker-header__content"},[((v=l.default)==null?void 0:v.call(l))??e.header])]}}),k&&M("div",{class:"v-date-picker-header__append"},[l.append?b(re,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VBtn:{icon:e.appendIcon,variant:"text"}}},{default:()=>{var v;return[(v=l.append)==null?void 0:v.call(l)]}}):b(I,{key:"append-btn",icon:e.appendIcon,variant:"text",onClick:s},null)])])}),{}}}),pe=E({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 ze(e){const a=X(),D=W(e,"modelValue",[],n=>j(n).map(h=>a.date(h))),l=P(()=>e.displayValue?a.date(e.displayValue):D.value.length>0?a.date(D.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 h=n!=null?Number(n):a.getYear(l.value);return a.startOfYear(a.setYear(a.date(),h))},n=>a.getYear(n)),c=W(e,"month",void 0,n=>{const h=n!=null?Number(n):a.getMonth(l.value),i=a.setYear(a.startOfMonth(a.date()),a.getYear(t.value));return a.setMonth(i,h)},n=>a.getMonth(n)),m=P(()=>{const n=a.toJsDate(a.startOfWeek(a.date(),e.firstDayOfWeek)).getDay();return a.getWeekdays(e.firstDayOfWeek,e.weekdayFormat).filter((h,i)=>e.weekdays.includes((i+n)%7))}),s=P(()=>{const n=a.getWeekArray(c.value,e.firstDayOfWeek),h=n.flat(),i=6*7;if(e.weeksInMonth==="static"&&h.lengthe.weekdays.includes(a.toJsDate(i).getDay())).map((i,A)=>{const T=a.toISO(i),_=!a.isSameMonth(i,c.value),R=a.isSameDay(i,a.startOfMonth(c.value)),y=a.isSameDay(i,a.endOfMonth(c.value)),r=a.isSameDay(i,c.value),g=e.weekdays.length;return{date:i,formatted:a.format(i,"keyboardDate"),isAdjacent:_,isDisabled:S(i),isEnd:y,isHidden:_&&!e.showAdjacentMonths,isSame:r,isSelected:D.value.some(C=>a.isSameDay(i,C)),isStart:R,isToday:a.isSameDay(i,h),isWeekEnd:A%g===g-1,isWeekStart:A%g===0,isoDate:T,localized:a.format(i,"dayOfMonth"),month:a.getMonth(i),year:a.getYear(i)}})}const k=P(()=>{const n=a.startOfWeek(l.value,e.firstDayOfWeek),h=[];for(let A=0;A<=6;A++)h.push(a.addDays(n,A));const i=a.date();return u(h,i)}),v=P(()=>{const n=s.value.flat(),h=a.date();return u(n,h)}),w=P(()=>s.value.map(n=>n.length?a.getWeek(n[0],e.firstDayOfWeek,e.firstDayOfYear):null)),{minDate:d,maxDate:x}=Me(e);function S(n){if(e.disabled)return!0;const h=a.date(n);return d.value&&a.isBefore(a.endOfDay(h),d.value)||x.value&&a.isAfter(h,x.value)?!0:Array.isArray(e.allowedDates)&&e.allowedDates.length>0?!e.allowedDates.some(i=>a.isSameDay(a.date(i),h)):typeof e.allowedDates=="function"?!e.allowedDates(h):!1}return{displayValue:l,daysInMonth:v,daysInWeek:k,genDays:u,model:D,weeksInMonth:s,weekdayLabels:m,weekNumbers:w}}function Me(e){const a=X(),D=P(()=>{if(!e.min)return null;const m=a.date(e.min);return a.isValid(m)?m:null}),l=P(()=>{if(!e.max)return null;const m=a.date(e.max);return a.isValid(m)?m:null});function t(m){return D.value&&a.isBefore(m,D.value)?D.value:l.value&&a.isAfter(m,l.value)?l.value:m}function c(m){return(!D.value||a.isAfter(m,D.value))&&(!l.value||a.isBefore(m,l.value))}return{minDate:D,maxDate:l,clampDate:t,isInAllowedRange:c}}const xe=E({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},...H(pe(),["displayValue"])},"VDatePickerMonth"),he=J()({name:"VDatePickerMonth",props:xe(),emits:{"update:modelValue":e=>!0,"update:month":e=>!0,"update:year":e=>!0},setup(e,a){let{emit:D,slots:l}=a;const t=Le(),{t:c}=le(),{daysInMonth:m,model:s,weekNumbers:u,weekdayLabels:k}=ze(e),v=X(),w=Z(),d=Z(),x=Z(!1),S=L(()=>x.value?e.reverseTransition:e.transition);e.multiple==="range"&&s.value.length>0&&(w.value=s.value[0],s.value.length>1&&(d.value=s.value[s.value.length-1]));const n=P(()=>{const y=["number","string"].includes(typeof e.multiple)?Number(e.multiple):1/0;return s.value.length>=y});be(m,(y,r)=>{r&&(x.value=v.isBefore(y[0].date,r[0].date))});function h(y){const r=v.startOfDay(y);if(s.value.length===0?w.value=void 0:s.value.length===1&&(w.value=s.value[0],d.value=void 0),!w.value)w.value=r,s.value=[w.value];else if(d.value)w.value=y,d.value=void 0,s.value=[w.value];else{if(v.isSameDay(r,w.value)){w.value=void 0,s.value=[];return}else v.isBefore(r,w.value)?(d.value=v.endOfDay(w.value),w.value=r):d.value=v.endOfDay(r);s.value=Te(v,w.value,d.value)}}function i(y){const r=v.format(y.date,"fullDateWithWeekday"),g=y.isToday?"currentDate":"selectDate";return c(`$vuetify.datePicker.ariaLabel.${g}`,r)}function A(y){const r=s.value.findIndex(g=>v.isSameDay(g,y));if(r===-1)s.value=[...s.value,y];else{const g=[...s.value];g.splice(r,1),s.value=g}}function T(y){e.multiple==="range"?h(y):e.multiple?A(y):s.value=[y]}function _(y){const{events:r,eventColor:g}=e;let C,O=[];if(Array.isArray(r)?C=r.includes(y):r instanceof Function?C=r(y)||!1:r?C=r[y]||!1:C=!1,C)C!==!0?O=j(C):typeof g=="string"?O=[g]:typeof g=="function"?O=j(g(y)):Array.isArray(g)?O=g:typeof g=="object"&&g!==null&&(O=j(g[y]));else return[];return O.length?O.filter(Boolean).map(U=>typeof U=="string"?U:"surface-variant"):["surface-variant"]}function R(y){const r=_(y);return r.length?M("div",{class:"v-date-picker-month__events"},[r.map(g=>b(He,{dot:!0,color:g},null))]):null}K(()=>M("div",{class:"v-date-picker-month",style:{"--v-date-picker-days-in-week":e.weekdays.length}},[e.showWeek&&M("div",{key:"weeks",class:"v-date-picker-month__weeks"},[!e.hideWeekdays&&M("div",{key:"hide-week-days",class:"v-date-picker-month__day"},[Fe(" ")]),u.value.map(y=>M("div",{class:Q(["v-date-picker-month__day","v-date-picker-month__day--adjacent"])},[y]))]),b(ge,{name:S.value},{default:()=>{var y;return[M("div",{ref:t,key:(y=m.value[0].date)==null?void 0:y.toString(),class:"v-date-picker-month__days"},[!e.hideWeekdays&&k.value.map(r=>M("div",{class:Q(["v-date-picker-month__day","v-date-picker-month__weekday"])},[r])),m.value.map((r,g)=>{var O;const C={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:g};return n.value&&!r.isSelected&&(r.isDisabled=!0),M("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,C))??b(I,C.props,{default:()=>[r.localized,R(r.isoDate)]}))])})])]}})]))}}),Pe=E({color:String,height:[String,Number],min:null,max:null,modelValue:Number,year:Number,allowedMonths:[Array,Function]},"VDatePickerMonths"),ye=J()({name:"VDatePickerMonths",props:Pe(),emits:{"update:modelValue":e=>!0},setup(e,a){let{emit:D,slots:l}=a;const t=X(),c=W(e,"modelValue"),m=P(()=>{let u=t.startOfYear(t.date());return e.year&&(u=t.setYear(u,e.year)),ke(12).map(k=>{const v=t.format(u,"monthShort"),w=t.format(u,"month"),d=!!(!s(k)||e.min&&t.isAfter(t.startOfMonth(t.date(e.min)),u)||e.max&&t.isAfter(u,t.startOfMonth(t.date(e.max))));return u=t.getNextMonth(u),{isDisabled:d,text:v,label:w,value:k}})});De(()=>{c.value=c.value??t.getMonth(t.date())});function s(u){return Array.isArray(e.allowedMonths)&&e.allowedMonths.length?e.allowedMonths.includes(u):typeof e.allowedMonths=="function"?e.allowedMonths(u):!0}return K(()=>M("div",{class:"v-date-picker-months",style:{height:ne(e.height)}},[M("div",{class:"v-date-picker-months__content"},[m.value.map((u,k)=>{var d;const v={active:c.value===k,ariaLabel:u.label,color:c.value===k?e.color:void 0,disabled:u.isDisabled,rounded:!0,text:u.text,variant:c.value===u.value?"flat":"text",onClick:()=>w(k)};function w(x){if(c.value===x){D("update:modelValue",c.value);return}c.value=x}return((d=l.month)==null?void 0:d.call(l,{month:u,i:k,props:v}))??b(I,$({key:"month"},v),null)})])])),{}}}),Ye=E({color:String,height:[String,Number],min:null,max:null,modelValue:Number,allowedYears:[Array,Function]},"VDatePickerYears"),me=J()({name:"VDatePickerYears",props:Ye(),directives:{vIntersect:se},emits:{"update:modelValue":e=>!0},setup(e,a){let{emit:D,slots:l}=a;const t=X(),c=W(e,"modelValue"),m=Z(!1),s=P(()=>{const d=t.getYear(t.date());let x=d-100,S=d+52;e.min&&(x=t.getYear(t.date(e.min))),e.max&&(S=t.getYear(t.date(e.max)));let n=t.startOfYear(t.date());return n=t.setYear(n,x),ke(S-x+1,x).map(h=>{const i=t.format(n,"year");return n=t.setYear(n,t.getYear(n)+1),{text:i,value:h,isDisabled:!w(h)}})});De(()=>{c.value=c.value??t.getYear(t.date())});const u=de(),k=de();function v(){const d=u.el,x=k.el;if(!d||!x)return;const S=d.getBoundingClientRect(),n=x.getBoundingClientRect();d.scrollTop+=n.top-S.top-d.clientHeight/2+n.height/2}function w(d){return Array.isArray(e.allowedYears)&&e.allowedYears.length?e.allowedYears.includes(d):typeof e.allowedYears=="function"?e.allowedYears(d):!0}return K(()=>je(M("div",{class:"v-date-picker-years",ref:u,style:{height:ne(e.height)}},[M("div",{class:"v-date-picker-years__content",onFocus:()=>{var d;return(d=k.el)==null?void 0:d.focus()},onFocusin:()=>m.value=!0,onFocusout:()=>m.value=!1,tabindex:m.value?-1:0},[s.value.map((d,x)=>{var n;const S={ref:c.value===d.value?k:void 0,active:c.value===d.value,color:c.value===d.value?e.color:void 0,rounded:!0,text:d.text,disabled:d.isDisabled,variant:c.value===d.value?"flat":"text",onClick:()=>{if(c.value===d.value){D("update:modelValue",c.value);return}c.value=d.value}};return((n=l.year)==null?void 0:n.call(l,{year:d,i:x,props:S}))??b(I,$({key:"month"},S),null)})])]),[[se,{handler:v},null,{once:!0}]])),{}}}),Je=E({header:{type:String,default:"$vuetify.datePicker.header"},headerColor:String,headerDateFormat:{type:String,default:"normalDateWithWeekday"},landscapeHeaderWidth:[Number,String],...H(we(),["active","monthText","yearText"]),...xe({weeksInMonth:"static"}),...H(Pe(),["modelValue"]),...H(Ye(),["modelValue"]),...Ee({title:"$vuetify.datePicker.title"}),modelValue:null},"VDatePicker"),Ze=J()({name:"VDatePicker",props:Je(),emits:{"update:modelValue":e=>!0,"update:month":e=>!0,"update:year":e=>!0,"update:viewMode":e=>!0},setup(e,a){let{emit:D,slots:l}=a;const t=X(),{t:c}=le(),{rtlClasses:m}=Ne(),s=W(e,"modelValue",void 0,o=>j(o).map(f=>t.date(f)),o=>e.multiple?o:o[0]),u=W(e,"viewMode"),{minDate:k,maxDate:v,clampDate:w}=Me(e),d=P(()=>{var V;const o=t.date(),f=(V=s.value)!=null&&V[0]?t.date(s.value[0]):w(o);return f&&t.isValid(f)?f:o}),x=L(()=>e.headerColor??e.color),S=W(e,"month"),n=P({get:()=>Number(S.value??t.getMonth(t.startOfMonth(d.value))),set:o=>S.value=o}),h=W(e,"year"),i=P({get:()=>Number(h.value??t.getYear(t.startOfYear(t.setMonth(d.value,n.value)))),set:o=>h.value=o}),A=Z(!1),T=P(()=>{if(e.multiple&&s.value.length>1)return c("$vuetify.datePicker.itemsSelected",s.value.length);const o=s.value[0]&&t.isValid(s.value[0])?t.format(t.date(s.value[0]),e.headerDateFormat):c(e.header);return e.landscape&&o.split(" ").length===3?o.replace(" ",` -`):o}),_=L(()=>{let o=t.date();return o=t.setDate(o,1),o=t.setMonth(o,n.value),o=t.setYear(o,i.value),o}),R=L(()=>t.format(_.value,"monthAndYear")),y=L(()=>t.format(_.value,"monthShort")),r=L(()=>t.format(_.value,"year")),g=L(()=>`date-picker-header${A.value?"-reverse":""}-transition`),C=P(()=>{if(e.disabled)return!0;const o=[];if(u.value!=="month")o.push("prev-month","next-month","prev-year","next-year");else{let f=t.date();if(f=t.startOfMonth(f),f=t.setMonth(f,n.value),f=t.setYear(f,i.value),k.value){const V=t.addDays(t.startOfMonth(f),-1),N=t.addDays(t.startOfYear(f),-1);t.isAfter(k.value,V)&&o.push("prev-month"),t.isAfter(k.value,N)&&o.push("prev-year")}if(v.value){const V=t.addDays(t.endOfMonth(f),1),N=t.addDays(t.endOfYear(f),1);t.isAfter(V,v.value)&&o.push("next-month"),t.isAfter(N,v.value)&&o.push("next-year")}}return o}),O=P(()=>e.allowedYears||te),U=P(()=>e.allowedMonths||Se);function ee(o,f){const V=e.allowedDates;if(typeof V!="function")return!0;const N=1+We(t,o,f);for(let B=0;B0?n.value--:(i.value--,n.value=11,F()),q()}function Ce(){if(i.value++,v.value){const o=String(n.value+1).padStart(2,"0"),f=t.parseISO(`${i.value}-${o}-01`);t.isAfter(f,v.value)&&(n.value=t.getMonth(v.value))}F()}function _e(){if(i.value--,k.value){const o=String(n.value+1).padStart(2,"0"),f=t.endOfMonth(t.parseISO(`${i.value}-${o}-01`));t.isAfter(k.value,f)&&(n.value=t.getMonth(k.value))}F()}function Oe(){u.value="month"}function ie(){u.value=u.value==="months"?"month":"months"}function oe(){u.value=u.value==="year"?"month":"year"}function q(){u.value==="months"&&ie()}function F(){u.value==="year"&&oe()}return be(s,(o,f)=>{const V=j(f),N=j(o);if(!N.length)return;const B=t.date(V[V.length-1]),p=t.date(N[N.length-1]);if(t.isSameDay(B,p))return;const z=t.getMonth(p),Y=t.getYear(p);z!==n.value&&(n.value=z,q()),Y!==i.value&&(i.value=Y,F()),A.value=t.isBefore(B,p)}),K(()=>{const o=ce.filterProps(e),f=H(ve.filterProps(e),["viewMode"]),V=fe.filterProps(e),N=he.filterProps(e),B=H(ye.filterProps(e),["modelValue"]),p=H(me.filterProps(e),["modelValue"]),z={color:x.value,header:T.value,transition:g.value};return b(ce,$(o,{color:x.value,class:["v-date-picker",`v-date-picker--${u.value}`,{"v-date-picker--show-week":e.showWeek},m.value,e.class],style:[{"--v-date-picker-landscape-header-width":ne(e.landscapeHeaderWidth)},e.style]}),{title:()=>{var Y;return((Y=l.title)==null?void 0:Y.call(l))??M("div",{class:"v-date-picker__title"},[c(e.title)])},header:()=>l.header?b(re,{defaults:{VDatePickerHeader:{...z}}},{default:()=>{var Y;return[(Y=l.header)==null?void 0:Y.call(l,z)]}}):b(fe,$({key:"header"},V,z,{onClick:u.value!=="month"?Oe:void 0}),{prepend:l.prepend,append:l.append}),default:()=>M(G,null,[b(ve,$(f,{disabled:C.value,viewMode:u.value,text:R.value,monthText:y.value,yearText:r.value,"onClick:next":Ve,"onClick:prev":Ae,"onClick:nextYear":Ce,"onClick:prevYear":_e,"onClick:month":ie,"onClick:year":oe}),{default:l.controls}),b($e,{hideOnLeave:!0},{default:()=>[u.value==="months"?b(ye,$({key:"date-picker-months"},B,{modelValue:n.value,"onUpdate:modelValue":[Y=>n.value=Y,q],min:k.value,max:v.value,year:i.value,allowedMonths:U.value}),{month:l.month}):u.value==="year"?b(me,$({key:"date-picker-years"},p,{modelValue:i.value,"onUpdate:modelValue":[Y=>i.value=Y,F],min:k.value,max:v.value,allowedYears:O.value}),{year:l.year}):b(he,$({key:"date-picker-month"},N,{modelValue:s.value,"onUpdate:modelValue":Y=>s.value=Y,month:n.value,"onUpdate:month":[Y=>n.value=Y,q],year:i.value,"onUpdate:year":[Y=>i.value=Y,F],min:k.value,max:v.value}),{day:l.day})]})]),actions:l.actions})}),{}}});export{Ze as V}; +import{f as J,an as le,u as q,s as ne,p as E,I as ae,ag as Ie,aR as K,n as W,w as H,a5 as j,aS as Te,ap as ke,X as de,A as Ne,aT as We}from"./vendor-vuetify-rtu3DHX4.js";import{h as I,g as ue,ag as re,H as Be,P as ge,ax as se,aq as $e}from"./index-Ceq_468-.js";import{j as b,k as x,F as G,n as Q,e as P,N as Re,o as be,a1 as Fe,s as Z,b as Le,t as L,w as De,m as $,R as He}from"./vendor-vue-BiQC5iF7.js";import{V as je}from"./VTooltip-CWhmSQeX.js";import{V as ce,m as Ee}from"./VPicker-DxbAs-x1.js";const we=E({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=J()({name:"VDatePickerControls",props:we(),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:D,slots:l}=a;const{t}=le(),c=P(()=>Array.isArray(e.disabled)?e.disabled.includes("text"):!!e.disabled),m=P(()=>Array.isArray(e.disabled)?e.disabled.includes("mode"):!!e.disabled),s=P(()=>Array.isArray(e.disabled)?e.disabled.includes("prev-month"):!!e.disabled),u=P(()=>Array.isArray(e.disabled)?e.disabled.includes("next-month"):!!e.disabled),k=P(()=>Array.isArray(e.disabled)?e.disabled.includes("prev-year"):!!e.disabled),v=P(()=>Array.isArray(e.disabled)?e.disabled.includes("next-year"):!!e.disabled);function w(){D("click:prev")}function d(){D("click:next")}function M(){D("click:prev-year")}function S(){D("click:next-year")}function n(){D("click:year")}function h(){D("click:month")}return q(()=>{const i={VBtn:{density:"comfortable",variant:"text"}},A=b(I,{"data-testid":"prev-month",disabled:s.value,icon:e.prevIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.previousMonth"),onClick:w},null),T=b(I,{"data-testid":"next-month",disabled:u.value,icon:e.nextIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.nextMonth"),onClick:d},null),_=b(I,{"data-testid":"prev-year",disabled:k.value,icon:e.prevIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.previousYear"),onClick:M},null),R=b(I,{"data-testid":"next-year",disabled:v.value,icon:e.nextIcon,"aria-label":t("$vuetify.datePicker.ariaLabel.nextYear"),onClick:S},null),y=b(I,{class:"v-date-picker-controls__only-month-btn","data-testid":"month-btn",density:"default",disabled:c.value,text:e.monthText,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectMonth"),onClick:h},null),r=b(I,{class:"v-date-picker-controls__only-year-btn","data-testid":"year-btn",density:"default",disabled:m.value,text:e.yearText,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null),g=b(I,{class:"v-date-picker-controls__year-btn","data-testid":"year-btn",density:"default",disabled:m.value,text:e.text,appendIcon:e.modeIcon,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectYear"),onClick:n},null),C=x(G,null,[b(I,{class:"v-date-picker-controls__month-btn","data-testid":"month-btn",height:"36",disabled:c.value,text:e.text,rounded:!0,"aria-label":t("$vuetify.datePicker.ariaLabel.selectMonth"),onClick:h},null),b(I,{class:"v-date-picker-controls__mode-btn","data-testid":"year-btn",disabled:m.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:h,openYears:n,prevMonth:w,nextMonth:d,prevYear:M,nextYear:S},U=x(G,null,[e.noMonthPicker?g:C,b(ue,null,null),x("div",{class:"v-date-picker-controls__month"},[A,T])]),ee=x(G,null,[x("div",{class:"v-date-picker-controls__month"},[A,y,T]),b(ue,null,null),x("div",{class:"v-date-picker-controls__year"},[_,r,R])]);return b(re,{defaults:i},{default:()=>{var te;return[x("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))??x(G,null,[e.controlVariant==="modal"&&U,e.controlVariant==="docked"&&ee])])]}})}),{}}}),Ue=E({appendIcon:ae,color:String,header:String,transition:String,onClick:Ie()},"VDatePickerHeader"),fe=J()({name:"VDatePickerHeader",props:Ue(),emits:{click:()=>!0,"click:append":()=>!0},setup(e,a){let{emit:D,slots:l}=a;const{backgroundColorClasses:t,backgroundColorStyles:c}=Be(()=>e.color);function m(){D("click")}function s(){D("click:append")}return q(()=>{const u=!!(l.default||e.header),k=!!(l.append||e.appendIcon);return x("div",{class:Q(["v-date-picker-header",{"v-date-picker-header--clickable":!!e.onClick},t.value]),style:Re(c.value),onClick:m},[l.prepend&&x("div",{key:"prepend",class:"v-date-picker-header__prepend"},[l.prepend()]),u&&b(ge,{key:"content",name:e.transition},{default:()=>{var v;return[x("div",{key:e.header,class:"v-date-picker-header__content"},[((v=l.default)==null?void 0:v.call(l))??e.header])]}}),k&&x("div",{class:"v-date-picker-header__append"},[l.append?b(re,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VBtn:{icon:e.appendIcon,variant:"text"}}},{default:()=>{var v;return[(v=l.append)==null?void 0:v.call(l)]}}):b(I,{key:"append-btn",icon:e.appendIcon,variant:"text",onClick:s},null)])])}),{}}}),pe=E({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 ze(e){const a=K(),D=W(e,"modelValue",[],n=>H(n).map(h=>a.date(h))),l=P(()=>e.displayValue?a.date(e.displayValue):D.value.length>0?a.date(D.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 h=n!=null?Number(n):a.getYear(l.value);return a.startOfYear(a.setYear(a.date(),h))},n=>a.getYear(n)),c=W(e,"month",void 0,n=>{const h=n!=null?Number(n):a.getMonth(l.value),i=a.setYear(a.startOfMonth(a.date()),a.getYear(t.value));return a.setMonth(i,h)},n=>a.getMonth(n)),m=P(()=>{const n=a.toJsDate(a.startOfWeek(a.date(),e.firstDayOfWeek)).getDay();return a.getWeekdays(e.firstDayOfWeek,e.weekdayFormat).filter((h,i)=>e.weekdays.includes((i+n)%7))}),s=P(()=>{const n=a.getWeekArray(c.value,e.firstDayOfWeek),h=n.flat(),i=6*7;if(e.weeksInMonth==="static"&&h.lengthe.weekdays.includes(a.toJsDate(i).getDay())).map((i,A)=>{const T=a.toISO(i),_=!a.isSameMonth(i,c.value),R=a.isSameDay(i,a.startOfMonth(c.value)),y=a.isSameDay(i,a.endOfMonth(c.value)),r=a.isSameDay(i,c.value),g=e.weekdays.length;return{date:i,formatted:a.format(i,"keyboardDate"),isAdjacent:_,isDisabled:S(i),isEnd:y,isHidden:_&&!e.showAdjacentMonths,isSame:r,isSelected:D.value.some(C=>a.isSameDay(i,C)),isStart:R,isToday:a.isSameDay(i,h),isWeekEnd:A%g===g-1,isWeekStart:A%g===0,isoDate:T,localized:a.format(i,"dayOfMonth"),month:a.getMonth(i),year:a.getYear(i)}})}const k=P(()=>{const n=a.startOfWeek(l.value,e.firstDayOfWeek),h=[];for(let A=0;A<=6;A++)h.push(a.addDays(n,A));const i=a.date();return u(h,i)}),v=P(()=>{const n=s.value.flat(),h=a.date();return u(n,h)}),w=P(()=>s.value.map(n=>n.length?a.getWeek(n[0],e.firstDayOfWeek,e.firstDayOfYear):null)),{minDate:d,maxDate:M}=xe(e);function S(n){if(e.disabled)return!0;const h=a.date(n);return d.value&&a.isBefore(a.endOfDay(h),d.value)||M.value&&a.isAfter(h,M.value)?!0:Array.isArray(e.allowedDates)&&e.allowedDates.length>0?!e.allowedDates.some(i=>a.isSameDay(a.date(i),h)):typeof e.allowedDates=="function"?!e.allowedDates(h):!1}return{displayValue:l,daysInMonth:v,daysInWeek:k,genDays:u,model:D,weeksInMonth:s,weekdayLabels:m,weekNumbers:w}}function xe(e){const a=K(),D=P(()=>{if(!e.min)return null;const m=a.date(e.min);return a.isValid(m)?m:null}),l=P(()=>{if(!e.max)return null;const m=a.date(e.max);return a.isValid(m)?m:null});function t(m){return D.value&&a.isBefore(m,D.value)?D.value:l.value&&a.isAfter(m,l.value)?l.value:m}function c(m){return(!D.value||a.isAfter(m,D.value))&&(!l.value||a.isBefore(m,l.value))}return{minDate:D,maxDate:l,clampDate:t,isInAllowedRange:c}}const Me=E({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},...j(pe(),["displayValue"])},"VDatePickerMonth"),he=J()({name:"VDatePickerMonth",props:Me(),emits:{"update:modelValue":e=>!0,"update:month":e=>!0,"update:year":e=>!0},setup(e,a){let{emit:D,slots:l}=a;const t=Le(),{t:c}=le(),{daysInMonth:m,model:s,weekNumbers:u,weekdayLabels:k}=ze(e),v=K(),w=Z(),d=Z(),M=Z(!1),S=L(()=>M.value?e.reverseTransition:e.transition);e.multiple==="range"&&s.value.length>0&&(w.value=s.value[0],s.value.length>1&&(d.value=s.value[s.value.length-1]));const n=P(()=>{const y=["number","string"].includes(typeof e.multiple)?Number(e.multiple):1/0;return s.value.length>=y});be(m,(y,r)=>{r&&(M.value=v.isBefore(y[0].date,r[0].date))});function h(y){const r=v.startOfDay(y);if(s.value.length===0?w.value=void 0:s.value.length===1&&(w.value=s.value[0],d.value=void 0),!w.value)w.value=r,s.value=[w.value];else if(d.value)w.value=y,d.value=void 0,s.value=[w.value];else{if(v.isSameDay(r,w.value)){w.value=void 0,s.value=[];return}else v.isBefore(r,w.value)?(d.value=v.endOfDay(w.value),w.value=r):d.value=v.endOfDay(r);s.value=Te(v,w.value,d.value)}}function i(y){const r=v.format(y.date,"fullDateWithWeekday"),g=y.isToday?"currentDate":"selectDate";return c(`$vuetify.datePicker.ariaLabel.${g}`,r)}function A(y){const r=s.value.findIndex(g=>v.isSameDay(g,y));if(r===-1)s.value=[...s.value,y];else{const g=[...s.value];g.splice(r,1),s.value=g}}function T(y){e.multiple==="range"?h(y):e.multiple?A(y):s.value=[y]}function _(y){const{events:r,eventColor:g}=e;let C,O=[];if(Array.isArray(r)?C=r.includes(y):r instanceof Function?C=r(y)||!1:r?C=r[y]||!1:C=!1,C)C!==!0?O=H(C):typeof g=="string"?O=[g]:typeof g=="function"?O=H(g(y)):Array.isArray(g)?O=g:typeof g=="object"&&g!==null&&(O=H(g[y]));else return[];return O.length?O.filter(Boolean).map(U=>typeof U=="string"?U:"surface-variant"):["surface-variant"]}function R(y){const r=_(y);return r.length?x("div",{class:"v-date-picker-month__events"},[r.map(g=>b(je,{dot:!0,color:g},null))]):null}q(()=>x("div",{class:"v-date-picker-month",style:{"--v-date-picker-days-in-week":e.weekdays.length}},[e.showWeek&&x("div",{key:"weeks",class:"v-date-picker-month__weeks"},[!e.hideWeekdays&&x("div",{key:"hide-week-days",class:"v-date-picker-month__day"},[Fe(" ")]),u.value.map(y=>x("div",{class:Q(["v-date-picker-month__day","v-date-picker-month__day--adjacent"])},[y]))]),b(ge,{name:S.value},{default:()=>{var y;return[x("div",{ref:t,key:(y=m.value[0].date)==null?void 0:y.toString(),class:"v-date-picker-month__days"},[!e.hideWeekdays&&k.value.map(r=>x("div",{class:Q(["v-date-picker-month__day","v-date-picker-month__weekday"])},[r])),m.value.map((r,g)=>{var O;const C={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:g};return n.value&&!r.isSelected&&(r.isDisabled=!0),x("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,C))??b(I,C.props,{default:()=>[r.localized,R(r.isoDate)]}))])})])]}})]))}}),Pe=E({color:String,height:[String,Number],min:null,max:null,modelValue:Number,year:Number,allowedMonths:[Array,Function]},"VDatePickerMonths"),ye=J()({name:"VDatePickerMonths",props:Pe(),emits:{"update:modelValue":e=>!0},setup(e,a){let{emit:D,slots:l}=a;const t=K(),c=W(e,"modelValue"),m=P(()=>{let u=t.startOfYear(t.date());return e.year&&(u=t.setYear(u,e.year)),ke(12).map(k=>{const v=t.format(u,"monthShort"),w=t.format(u,"month"),d=!!(!s(k)||e.min&&t.isAfter(t.startOfMonth(t.date(e.min)),u)||e.max&&t.isAfter(u,t.startOfMonth(t.date(e.max))));return u=t.getNextMonth(u),{isDisabled:d,text:v,label:w,value:k}})});De(()=>{c.value=c.value??t.getMonth(t.date())});function s(u){return Array.isArray(e.allowedMonths)&&e.allowedMonths.length?e.allowedMonths.includes(u):typeof e.allowedMonths=="function"?e.allowedMonths(u):!0}return q(()=>x("div",{class:"v-date-picker-months",style:{height:ne(e.height)}},[x("div",{class:"v-date-picker-months__content"},[m.value.map((u,k)=>{var d;const v={active:c.value===k,ariaLabel:u.label,color:c.value===k?e.color:void 0,disabled:u.isDisabled,rounded:!0,text:u.text,variant:c.value===u.value?"flat":"text",onClick:()=>w(k)};function w(M){if(c.value===M){D("update:modelValue",c.value);return}c.value=M}return((d=l.month)==null?void 0:d.call(l,{month:u,i:k,props:v}))??b(I,$({key:"month"},v),null)})])])),{}}}),Ye=E({color:String,height:[String,Number],min:null,max:null,modelValue:Number,allowedYears:[Array,Function]},"VDatePickerYears"),me=J()({name:"VDatePickerYears",props:Ye(),directives:{vIntersect:se},emits:{"update:modelValue":e=>!0},setup(e,a){let{emit:D,slots:l}=a;const t=K(),c=W(e,"modelValue"),m=Z(!1),s=P(()=>{const d=t.getYear(t.date());let M=d-100,S=d+52;e.min&&(M=t.getYear(t.date(e.min))),e.max&&(S=t.getYear(t.date(e.max)));let n=t.startOfYear(t.date());return n=t.setYear(n,M),ke(S-M+1,M).map(h=>{const i=t.format(n,"year");return n=t.setYear(n,t.getYear(n)+1),{text:i,value:h,isDisabled:!w(h)}})});De(()=>{c.value=c.value??t.getYear(t.date())});const u=de(),k=de();function v(){const d=u.el,M=k.el;if(!d||!M)return;const S=d.getBoundingClientRect(),n=M.getBoundingClientRect();d.scrollTop+=n.top-S.top-d.clientHeight/2+n.height/2}function w(d){return Array.isArray(e.allowedYears)&&e.allowedYears.length?e.allowedYears.includes(d):typeof e.allowedYears=="function"?e.allowedYears(d):!0}return q(()=>He(x("div",{class:"v-date-picker-years",ref:u,style:{height:ne(e.height)}},[x("div",{class:"v-date-picker-years__content",onFocus:()=>{var d;return(d=k.el)==null?void 0:d.focus()},onFocusin:()=>m.value=!0,onFocusout:()=>m.value=!1,tabindex:m.value?-1:0},[s.value.map((d,M)=>{var n;const S={ref:c.value===d.value?k:void 0,active:c.value===d.value,color:c.value===d.value?e.color:void 0,rounded:!0,text:d.text,disabled:d.isDisabled,variant:c.value===d.value?"flat":"text",onClick:()=>{if(c.value===d.value){D("update:modelValue",c.value);return}c.value=d.value}};return((n=l.year)==null?void 0:n.call(l,{year:d,i:M,props:S}))??b(I,$({key:"month"},S),null)})])]),[[se,{handler:v},null,{once:!0}]])),{}}}),Je=E({header:{type:String,default:"$vuetify.datePicker.header"},headerColor:String,headerDateFormat:{type:String,default:"normalDateWithWeekday"},landscapeHeaderWidth:[Number,String],...j(we(),["active","monthText","yearText"]),...Me({weeksInMonth:"static"}),...j(Pe(),["modelValue"]),...j(Ye(),["modelValue"]),...Ee({title:"$vuetify.datePicker.title"}),modelValue:null},"VDatePicker"),Ze=J()({name:"VDatePicker",props:Je(),emits:{"update:modelValue":e=>!0,"update:month":e=>!0,"update:year":e=>!0,"update:viewMode":e=>!0},setup(e,a){let{emit:D,slots:l}=a;const t=K(),{t:c}=le(),{rtlClasses:m}=Ne(),s=W(e,"modelValue",void 0,o=>H(o).map(f=>t.date(f)),o=>e.multiple?o:o[0]),u=W(e,"viewMode"),{minDate:k,maxDate:v,clampDate:w}=xe(e),d=P(()=>{var V;const o=t.date(),f=(V=s.value)!=null&&V[0]?t.date(s.value[0]):w(o);return f&&t.isValid(f)?f:o}),M=L(()=>e.headerColor??e.color),S=W(e,"month"),n=P({get:()=>Number(S.value??t.getMonth(t.startOfMonth(d.value))),set:o=>S.value=o}),h=W(e,"year"),i=P({get:()=>Number(h.value??t.getYear(t.startOfYear(t.setMonth(d.value,n.value)))),set:o=>h.value=o}),A=Z(!1),T=P(()=>{if(e.multiple&&s.value.length>1)return c("$vuetify.datePicker.itemsSelected",s.value.length);const o=s.value[0]&&t.isValid(s.value[0])?t.format(t.date(s.value[0]),e.headerDateFormat):c(e.header);return e.landscape&&o.split(" ").length===3?o.replace(" ",` +`):o}),_=L(()=>{let o=t.date();return o=t.setDate(o,1),o=t.setMonth(o,n.value),o=t.setYear(o,i.value),o}),R=L(()=>t.format(_.value,"monthAndYear")),y=L(()=>t.format(_.value,"monthShort")),r=L(()=>t.format(_.value,"year")),g=L(()=>`date-picker-header${A.value?"-reverse":""}-transition`),C=P(()=>{if(e.disabled)return!0;const o=[];if(u.value!=="month")o.push("prev-month","next-month","prev-year","next-year");else{let f=t.date();if(f=t.startOfMonth(f),f=t.setMonth(f,n.value),f=t.setYear(f,i.value),k.value){const V=t.addDays(t.startOfMonth(f),-1),N=t.addDays(t.startOfYear(f),-1);t.isAfter(k.value,V)&&o.push("prev-month"),t.isAfter(k.value,N)&&o.push("prev-year")}if(v.value){const V=t.addDays(t.endOfMonth(f),1),N=t.addDays(t.endOfYear(f),1);t.isAfter(V,v.value)&&o.push("next-month"),t.isAfter(N,v.value)&&o.push("next-year")}}return o}),O=P(()=>e.allowedYears||te),U=P(()=>e.allowedMonths||Se);function ee(o,f){const V=e.allowedDates;if(typeof V!="function")return!0;const N=1+We(t,o,f);for(let B=0;B0?n.value--:(i.value--,n.value=11,F()),X()}function Ce(){if(i.value++,v.value){const o=String(n.value+1).padStart(2,"0"),f=t.parseISO(`${i.value}-${o}-01`);t.isAfter(f,v.value)&&(n.value=t.getMonth(v.value))}F()}function _e(){if(i.value--,k.value){const o=String(n.value+1).padStart(2,"0"),f=t.endOfMonth(t.parseISO(`${i.value}-${o}-01`));t.isAfter(k.value,f)&&(n.value=t.getMonth(k.value))}F()}function Oe(){u.value="month"}function ie(){u.value=u.value==="months"?"month":"months"}function oe(){u.value=u.value==="year"?"month":"year"}function X(){u.value==="months"&&ie()}function F(){u.value==="year"&&oe()}return be(s,(o,f)=>{const V=H(f),N=H(o);if(!N.length)return;const B=t.date(V[V.length-1]),p=t.date(N[N.length-1]);if(t.isSameDay(B,p))return;const z=t.getMonth(p),Y=t.getYear(p);z!==n.value&&(n.value=z,X()),Y!==i.value&&(i.value=Y,F()),A.value=t.isBefore(B,p)}),q(()=>{const o=ce.filterProps(e),f=j(ve.filterProps(e),["viewMode"]),V=fe.filterProps(e),N=he.filterProps(e),B=j(ye.filterProps(e),["modelValue"]),p=j(me.filterProps(e),["modelValue"]),z={color:M.value,header:T.value,transition:g.value};return b(ce,$(o,{color:M.value,class:["v-date-picker",`v-date-picker--${u.value}`,{"v-date-picker--show-week":e.showWeek},m.value,e.class],style:[{"--v-date-picker-landscape-header-width":ne(e.landscapeHeaderWidth)},e.style]}),{title:()=>{var Y;return((Y=l.title)==null?void 0:Y.call(l))??x("div",{class:"v-date-picker__title"},[c(e.title)])},header:()=>l.header?b(re,{defaults:{VDatePickerHeader:{...z}}},{default:()=>{var Y;return[(Y=l.header)==null?void 0:Y.call(l,z)]}}):b(fe,$({key:"header"},V,z,{onClick:u.value!=="month"?Oe:void 0}),{prepend:l.prepend,append:l.append}),default:()=>x(G,null,[b(ve,$(f,{disabled:C.value,viewMode:u.value,text:R.value,monthText:y.value,yearText:r.value,"onClick:next":Ve,"onClick:prev":Ae,"onClick:nextYear":Ce,"onClick:prevYear":_e,"onClick:month":ie,"onClick:year":oe}),{default:l.controls}),b($e,{hideOnLeave:!0},{default:()=>[u.value==="months"?b(ye,$({key:"date-picker-months"},B,{modelValue:n.value,"onUpdate:modelValue":[Y=>n.value=Y,X],min:k.value,max:v.value,year:i.value,allowedMonths:U.value}),{month:l.month}):u.value==="year"?b(me,$({key:"date-picker-years"},p,{modelValue:i.value,"onUpdate:modelValue":[Y=>i.value=Y,F],min:k.value,max:v.value,allowedYears:O.value}),{year:l.year}):b(he,$({key:"date-picker-month"},N,{modelValue:s.value,"onUpdate:modelValue":Y=>s.value=Y,month:n.value,"onUpdate:month":[Y=>n.value=Y,X],year:i.value,"onUpdate:year":[Y=>i.value=Y,F],min:k.value,max:v.value}),{day:l.day})]})]),actions:l.actions})}),{}}});export{Ze as V}; diff --git a/assets/VExpansionPanels-BDI8gHu5.js b/assets/VExpansionPanels-DbwaqF41.js similarity index 83% rename from assets/VExpansionPanels-BDI8gHu5.js rename to assets/VExpansionPanels-DbwaqF41.js index 5d4db80..0db2835 100644 --- a/assets/VExpansionPanels-BDI8gHu5.js +++ b/assets/VExpansionPanels-DbwaqF41.js @@ -1 +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-BiQC5iF7.js";import{ac as O,a5 as q,ad as H,a0 as C,I as R,f as J,ag as _,b as K,a as M,ab as Q,N as U,a2 as W,m as D,R as X,ae as Y,$ as Z,aa as ee,ap as ae}from"./index-DGIAsv4W.js";import{f as y,u as V,p as g,k as I,I as h,h as ne,j as le,m as te,aj as se}from"./vendor-vuetify-DsKlzgKp.js";const f=Symbol.for("vuetify:v-expansion-panel"),j=g({...I(),...H()},"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(q,{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,...I(),...M()},"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}=R(()=>e.color),{dimensionStyles:o}=K(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(_,{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(J,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=Q(e,f),{backgroundColorClasses:s,backgroundColorStyles:u}=R(()=>e.bgColor),{elevationClasses:o}=W(e),{roundedClasses:r}=U(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(_,{defaults:{VExpansionPanelTitle:{...k},VExpansionPanelText:{...N}}},{default:()=>{var S;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]}),(S=n.default)==null?void 0:S.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(),...I(),...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}; +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-BiQC5iF7.js";import{ac as H,a5 as O,ad as q,a0 as C,H as R,f as J,ag as _,b as K,a as M,ab as Q,N as U,a2 as W,m as D,R as X,ae as Y,$ as Z,aa as ee,ar as ae}from"./index-Ceq_468-.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-rtu3DHX4.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}=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(),...M()},"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}=R(()=>e.color),{dimensionStyles:o}=K(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(_,{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(J,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=Q(e,f),{backgroundColorClasses:s,backgroundColorStyles:u}=R(()=>e.bgColor),{elevationClasses:o}=W(e),{roundedClasses:r}=U(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(_,{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/VFileInput-CRcZ0Lr3.css b/assets/VFileInput-CRcZ0Lr3.css new file mode 100644 index 0000000..3a588ab --- /dev/null +++ b/assets/VFileInput-CRcZ0Lr3.css @@ -0,0 +1 @@ +.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/VFileInput-D2ZU5WsA.js b/assets/VFileInput-D2ZU5WsA.js new file mode 100644 index 0000000..28a43a6 --- /dev/null +++ b/assets/VFileInput-D2ZU5WsA.js @@ -0,0 +1 @@ +import{a as he,b as L,e as O,f as ge,g as ke,m as Fe}from"./VTextField-DpXLMPq7.js";import{p as W,f as be,an as we,n as Ie,w as H,u as Ce,as as De,aH as Se,aJ as G,a5 as Ve}from"./vendor-vuetify-rtu3DHX4.js";import{e as m,o as Ae,j as b,k as h,F as V,m as A,n as Be,b as B,t as Pe,I as Re,s as Te}from"./vendor-vue-BiQC5iF7.js";import{I as ze}from"./index-Ceq_468-.js";import{V as $e}from"./VChip-BdtDOEwz.js";function je(){function e(o){var a,n;return[...((a=o.dataTransfer)==null?void 0:a.items)??[]].filter(u=>u.kind==="file").map(u=>u.webkitGetAsEntry()).filter(Boolean).length>0||[...((n=o.dataTransfer)==null?void 0:n.files)??[]].length>0}async function r(o){var n,u;const s=[],a=[...((n=o.dataTransfer)==null?void 0:n.items)??[]].filter(i=>i.kind==="file").map(i=>i.webkitGetAsEntry()).filter(Boolean);if(a.length)for(const i of a){const f=await J(i,K(".",i));s.push(...f.map(y=>y.file))}else s.push(...((u=o.dataTransfer)==null?void 0:u.files)??[]);return s}return{handleDrop:r,hasFilesOrFolders:e}}function J(e){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"";return new Promise((o,s)=>{e.isFile?e.file(n=>o([{file:n,path:r}]),s):e.isDirectory&&e.createReader().readEntries(async n=>{const u=[];for(const i of n)u.push(...await J(i,K(r,i)));o(u)})})}function K(e,r){return r.isDirectory?`${e}/${r.name}`:e}const Ee=W({filterByType:String},"file-accept");function Ne(e){const r=m(()=>e.filterByType?xe(e.filterByType):null);function o(s){if(r.value){const a=s.filter(r.value);return{accepted:a,rejected:s.filter(n=>!a.includes(n))}}return{accepted:s,rejected:[]}}return{filterAccepted:o}}function xe(e){const r=e.split(",").map(n=>n.trim().toLowerCase()),o=r.filter(n=>n.startsWith(".")),s=r.filter(n=>n.endsWith("/*")),a=r.filter(n=>!o.includes(n)&&!s.includes(n));return n=>{var f,y;const u=((f=n.name.split(".").at(-1))==null?void 0:f.toLowerCase())??"",i=((y=n.type.split("/").at(0))==null?void 0:y.toLowerCase())??"";return a.includes(n.type)||o.includes(`.${u}`)||s.includes(`${i}/*`)}}const Me=W({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:e=>typeof e=="boolean"||[1e3,1024].includes(Number(e))},truncateLength:{type:[Number,String],default:22},...Ve(Fe({prependIcon:"$file"}),["direction"]),modelValue:{type:[Array,Object],default:e=>e.multiple?[]:null,validator:e=>H(e).every(r=>r!=null&&typeof r=="object")},...Ee(),...ke({clearable:!0})},"VFileInput"),Je=be()({name:"VFileInput",inheritAttrs:!1,props:Me(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0,rejected:e=>!0},setup(e,r){let{attrs:o,emit:s,slots:a}=r;const{t:n}=we(),{filterAccepted:u}=Ne(e),i=Ie(e,"modelValue",e.modelValue,t=>H(t),t=>!e.multiple&&Array.isArray(t)?t[0]:t),{isFocused:f,focus:y,blur:U}=he(e),P=m(()=>typeof e.showSize!="boolean"?e.showSize:void 0),R=m(()=>(i.value??[]).reduce((t,l)=>{let{size:d=0}=l;return t+d},0)),T=m(()=>G(R.value,P.value)),w=m(()=>(i.value??[]).map(t=>{const{name:l="",size:d=0}=t,p=ne(l);return e.showSize?`${p} (${G(d,P.value)})`:p})),_=m(()=>{var l;const t=((l=i.value)==null?void 0:l.length)??0;return e.showSize?n(e.counterSizeString,t,T.value):n(e.counterString,t)}),z=B(),$=B(),c=B(),q=Pe(()=>f.value||e.active),j=m(()=>["plain","underlined"].includes(e.variant)),k=Te(!1),{handleDrop:Q,hasFilesOrFolders:X}=je();function I(){var t;c.value!==document.activeElement&&((t=c.value)==null||t.focus()),f.value||y()}function Y(t){var l;(l=c.value)==null||l.click()}function Z(t){s("mousedown:control",t)}function ee(t){var l;(l=c.value)==null||l.click(),s("click:control",t)}function te(t){t.stopPropagation(),I(),Re(()=>{i.value=[],Se(e["onClick:clear"],t)})}function ne(t){if(t.length{(!Array.isArray(t)||!t.length)&&c.value&&(c.value.value="")}),Ce(()=>{const t=!!(a.counter||e.counter),l=!!(t||a.details),[d,p]=De(o),{modelValue:C,...D}=L.filterProps(e),oe={...O.filterProps(e),"onClick:clear":te},se=o.webkitdirectory!==void 0&&o.webkitdirectory!==!1,ue=o.accept?String(o.accept):void 0,ce=se?void 0:e.filterByType??ue;return b(L,A({ref:z,modelValue:e.multiple?i.value:i.value[0],class:["v-file-input",{"v-file-input--chips":!!e.chips,"v-file-input--dragging":k.value,"v-file-input--hide":e.hideInput,"v-input--plain-underlined":j.value},e.class],style:e.style,"onClick:prepend":Y},d,D,{centerAffix:!j.value,focused:f.value}),{...a,default:S=>{let{id:F,isDisabled:g,isDirty:N,isReadonly:x,isValid:fe,hasDetails:de}=S;return b(O,A({ref:$,prependIcon:e.prependIcon,onMousedown:Z,onClick:ee,"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"]},oe,{id:F.value,active:q.value||N.value,dirty:N.value||e.dirty,disabled:g.value,focused:f.value,details:de.value,error:fe.value===!1,onDragover:le,onDrop:ie}),{...a,default:pe=>{var M;let{props:{class:ve,...me},controlRef:ye}=pe;return h(V,null,[h("input",A({ref:v=>c.value=ye.value=v,type:"file",accept:ce,readonly:x.value,disabled:g.value,multiple:e.multiple,name:e.name,onClick:v=>{v.stopPropagation(),x.value&&v.preventDefault(),I()},onChange:re,onDragleave:ae,onFocus:I,onBlur:U},me,p),null),h("div",{class:Be(ve)},[!!((M=i.value)!=null&&M.length)&&!e.hideInput&&(a.selection?a.selection({fileNames:w.value,totalBytes:R.value,totalBytesReadable:T.value}):e.chips?w.value.map(v=>b($e,{key:v,size:"small",text:v},null)):w.value.join(", "))])])}})},details:l?S=>{var F,g;return h(V,null,[(F=a.details)==null?void 0:F.call(a,S),t&&h(V,null,[h("span",null,null),b(ge,{active:!!((g=i.value)!=null&&g.length),value:_.value,disabled:e.disabled},a.counter)])])}:void 0})}),ze({},z,$,c)}});export{Je as V}; diff --git a/assets/VForm-ObW_L7SS.js b/assets/VForm-vCieX1EY.js similarity index 77% rename from assets/VForm-ObW_L7SS.js rename to assets/VForm-vCieX1EY.js index 693e40d..8673699 100644 --- a/assets/VForm-ObW_L7SS.js +++ b/assets/VForm-vCieX1EY.js @@ -1 +1 @@ -import{f as p,u as b,p as v,k as y}from"./vendor-vuetify-DsKlzgKp.js";import{j as F,k as V}from"./VTextField-BurlcggD.js";import{E as k}from"./index-DGIAsv4W.js";import{k as h,N as R,n as P,b as C}from"./vendor-vue-BiQC5iF7.js";const S=v({...y(),...V()},"VForm"),j=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=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 h("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)])}),k(r,n)}});export{j as V}; +import{f as p,u as b,p as v,k as y}from"./vendor-vuetify-rtu3DHX4.js";import{j as F,k as V}from"./VTextField-DpXLMPq7.js";import{I as k}from"./index-Ceq_468-.js";import{k as h,N as R,n as P,b as C}from"./vendor-vue-BiQC5iF7.js";const S=v({...y(),...V()},"VForm"),j=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=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 h("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)])}),k(r,n)}});export{j as V}; diff --git a/assets/VMenu-C31D-C2L.css b/assets/VMenu-C31D-C2L.css new file mode 100644 index 0000000..fa15309 --- /dev/null +++ b/assets/VMenu-C31D-C2L.css @@ -0,0 +1 @@ +.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-menu>.v-overlay__content{display:flex;flex-direction:column}.v-menu>.v-overlay__content{border-radius:4px}.v-menu>.v-overlay__content>.v-card,.v-menu>.v-overlay__content>.v-sheet,.v-menu>.v-overlay__content>.v-list{background:rgb(var(--v-theme-surface));border-radius:inherit;overflow:auto;height:100%}.v-menu>.v-overlay__content>.v-card,.v-menu>.v-overlay__content>.v-sheet,.v-menu>.v-overlay__content>.v-list{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))} diff --git a/assets/VMenu-DqtPWEMI.js b/assets/VMenu-DqtPWEMI.js new file mode 100644 index 0000000..406c61a --- /dev/null +++ b/assets/VMenu-DqtPWEMI.js @@ -0,0 +1 @@ +import{L as C,af as w,D as A,ag as x,I as R,U as I,ah as M}from"./index-Ceq_468-.js";import{f as T,n as L,A as S,u as K,aA as O,$ as U,p as B,a5 as F,ak as m,aB as j}from"./vendor-vuetify-rtu3DHX4.js";import{E as H,d as N,A as $,G as z,o as G,j as k,m as E,e as q,t as J,b as Q,s as W,p as X}from"./vendor-vue-BiQC5iF7.js";const Y=B({id:String,submenu:Boolean,...F(I({captureFocus:!0,closeDelay:250,closeOnContentClick:!0,locationStrategy:"connected",location:void 0,openDelay:300,scrim:!1,scrollStrategy:"reposition",transition:{component:M}}),["absolute"])},"VMenu"),ae=T()({name:"VMenu",props:Y(),emits:{"update:modelValue":t=>!0},setup(t,V){let{slots:i}=V;const n=L(t,"modelValue"),{scopeId:b}=C(),{isRtl:c}=S(),v=H(),f=J(()=>t.id||`v-menu-${v}`),s=Q(),a=N(w,null),d=W(new Set);X(w,{register(){d.value.add(v)},unregister(){d.value.delete(v)},closeParents(e){setTimeout(()=>{var o;!d.value.size&&!t.persistent&&(e==null||(o=s.value)!=null&&o.contentEl&&!j(e,s.value.contentEl))&&(n.value=!1,a==null||a.closeParents())},40)}}),$(()=>a==null?void 0:a.unregister()),z(()=>n.value=!1),G(n,e=>{e?a==null||a.register():a==null||a.unregister()},{immediate:!0});function P(e){a==null||a.closeParents(e)}function h(e){var o,l,r,u,g;if(!t.disabled)if(e.key==="Tab"||e.key==="Enter"&&!t.closeOnContentClick){if(e.key==="Enter"&&(e.target instanceof HTMLTextAreaElement||e.target instanceof HTMLInputElement&&e.target.closest("form")))return;e.key==="Enter"&&e.preventDefault(),!O(U((o=s.value)==null?void 0:o.contentEl,!1),e.shiftKey?"prev":"next",p=>p.tabIndex>=0)&&!t.retainFocus&&(n.value=!1,(r=(l=s.value)==null?void 0:l.activatorEl)==null||r.focus())}else t.submenu&&e.key===(c.value?"ArrowRight":"ArrowLeft")&&(n.value=!1,(g=(u=s.value)==null?void 0:u.activatorEl)==null||g.focus())}function y(e){var l;if(t.disabled)return;const o=(l=s.value)==null?void 0:l.contentEl;o&&n.value?e.key==="ArrowDown"?(e.preventDefault(),e.stopImmediatePropagation(),m(o,"next")):e.key==="ArrowUp"?(e.preventDefault(),e.stopImmediatePropagation(),m(o,"prev")):t.submenu&&(e.key===(c.value?"ArrowRight":"ArrowLeft")?n.value=!1:e.key===(c.value?"ArrowLeft":"ArrowRight")&&(e.preventDefault(),m(o,"first"))):(t.submenu?e.key===(c.value?"ArrowLeft":"ArrowRight"):["ArrowDown","ArrowUp"].includes(e.key))&&(n.value=!0,e.preventDefault(),setTimeout(()=>setTimeout(()=>y(e))))}const D=q(()=>E({"aria-haspopup":"menu","aria-expanded":String(n.value),"aria-controls":f.value,"aria-owns":f.value,onKeydown:y},t.activatorProps));return K(()=>{const e=A.filterProps(t);return k(A,E({ref:s,id:f.value,class:["v-menu",t.class],style:t.style},e,{modelValue:n.value,"onUpdate:modelValue":o=>n.value=o,absolute:!0,activatorProps:D.value,location:t.location??(t.submenu?"end":"bottom"),"onClick:outside":P,onKeydown:h},b),{activator:i.activator,default:function(){for(var o=arguments.length,l=new Array(o),r=0;r{var u;return[(u=i.default)==null?void 0:u.call(i,...l)]}})}})}),R({id:f,ΨopenChildren:d},s)}});export{ae as V}; diff --git a/assets/VPagination-BQZD6rf1.js b/assets/VPagination-BQZD6rf1.js new file mode 100644 index 0000000..e242640 --- /dev/null +++ b/assets/VPagination-BQZD6rf1.js @@ -0,0 +1 @@ +import{h as P,ao as K,m as W,av as q,R as G,$ as O,M as U,aj as X}from"./index-Ceq_468-.js";import{f as H,n as J,an as Q,A as Y,h as Z,a0 as aa,j as R,y as ea,u as ta,ar as B,p as la,I as V,m as ia,k as na,ap as L}from"./vendor-vuetify-rtu3DHX4.js";import{ai as sa,b as ra,j as g,k as b,m as k,n as N,N as ua,s as oa,e as m,I as $,t as d}from"./vendor-vue-BiQC5iF7.js";function va(){const a=ra([]);sa(()=>a.value=[]);function _(r,p){a.value[p]=r}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:V,default:"$first"},prevIcon:{type:V,default:"$prev"},nextIcon:{type:V,default:"$next"},lastIcon:{type:V,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,...X(),...na(),...U(),...O(),...G(),...q(),...W({tag:"nav"}),...ia(),...K({variant:"text"})},"VPagination"),ba=H()({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:r,emit:p}=_;const i=J(a,"modelValue"),{t:f,n:C}=Q(),{isRtl:x}=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)}),n=m(()=>parseInt(a.length,10)),s=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(n.value<=0||isNaN(n.value)||n.value>Number.MAX_SAFE_INTEGER)return[];if(a.totalVisible==null&&n.value<3)return L(n.value,s.value);if(v.value<=0)return[];if(v.value===1)return[i.value];if(n.value<=v.value)return L(n.value,s.value);const e=v.value%2===0,t=e?v.value/2:Math.floor(v.value/2),l=e?t:t+1,u=n.value-t;if(l-i.value>=0)return[...L(Math.max(1,v.value-1),s.value),a.ellipsis,n.value];if(i.value-u>=(e?1:0)){const o=v.value-1,h=n.value-o+s.value;return[s.value,a.ellipsis,...L(o,h)]}else{const o=Math.max(1,v.value-2),h=o===1?i.value:i.value-Math.ceil(o/2)+s.value;return[s.value,a.ellipsis,...L(o,h),a.ellipsis,n.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<=s.value,t=!!a.disabled||i.value>=s.value+n.value-1;return{first:a.showFirstLastPage?{icon:x.value?a.lastIcon:a.firstIcon,onClick:l=>y(l,s.value,"first"),disabled:e,"aria-label":f(a.firstAriaLabel),"aria-disabled":e}:void 0,prev:{icon:x.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:x.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:x.value?a.firstIcon:a.lastIcon,onClick:l=>y(l,s.value+n.value-1,"last"),disabled:t,"aria-label":f(a.lastAriaLabel),"aria-disabled":t}:void 0}});function A(){var t;const e=i.value-s.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"},[r.first?r.first(c.value.first):g(P,k({_as:"VPaginationBtn"},c.value.first),null)]),b("li",{key:"prev",class:"v-pagination__prev","data-test":"v-pagination-prev"},[r.prev?r.prev(c.value.prev):g(P,k({_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"},[r.item?r.item(e):g(P,k({_as:"VPaginationBtn"},e.props),{default:()=>[e.page]})])),b("li",{key:"next",class:"v-pagination__next","data-test":"v-pagination-next"},[r.next?r.next(c.value.next):g(P,k({_as:"VPaginationBtn"},c.value.next),null)]),a.showFirstLastPage&&b("li",{key:"last",class:"v-pagination__last","data-test":"v-pagination-last"},[r.last?r.last(c.value.last):g(P,k({_as:"VPaginationBtn"},c.value.last),null)])])]})),{}}});export{ba as V}; diff --git a/assets/VPagination-DLzhjdaP.js b/assets/VPagination-DLzhjdaP.js deleted file mode 100644 index 0521214..0000000 --- a/assets/VPagination-DLzhjdaP.js +++ /dev/null @@ -1 +0,0 @@ -import{h as P,am as K,m as W,at as q,R as G,$ as O,M as U,ah as X}from"./index-DGIAsv4W.js";import{f as H,n as J,an as Q,A as Y,h as Z,a0 as aa,j as R,y as ea,u as ta,au as B,p as la,I as x,m as ia,k as na,as as V}from"./vendor-vuetify-DsKlzgKp.js";import{ai 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-BiQC5iF7.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,...X(),...na(),...U(),...O(),...G(),...q(),...W({tag:"nav"}),...ia(),...K({variant:"text"})},"VPagination"),ba=H()({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=J(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(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}; diff --git a/assets/VPicker-SM18M-iq.js b/assets/VPicker-DxbAs-x1.js similarity index 68% rename from assets/VPicker-SM18M-iq.js rename to assets/VPicker-DxbAs-x1.js index e6f2c6c..6e34d7d 100644 --- a/assets/VPicker-SM18M-iq.js +++ b/assets/VPicker-DxbAs-x1.js @@ -1 +1 @@ -import{aa as m,f as v,u,p as h}from"./vendor-vuetify-DsKlzgKp.js";import{I as p,ag as f}from"./index-DGIAsv4W.js";import{a as s,m as V}from"./VSheet-BBnSA_kJ.js";import{j as i,k as t,N as P,n as g,m as y}from"./vendor-vue-BiQC5iF7.js";const C=m("v-picker-title"),_=h({bgColor:String,divided:Boolean,landscape:Boolean,title:String,hideHeader:Boolean,hideTitle:Boolean,...V()},"VPicker"),N=v()({name:"VPicker",props:_(),setup(a,o){let{slots:e}=o;const{backgroundColorClasses:c,backgroundColorStyles:d}=p(()=>a.color);return u(()=>{const n=s.filterProps(a),k=!a.hideTitle&&!!(a.title||e.title);return i(s,y(n,{color:a.bgColor,class:["v-picker",{"v-picker--divided":a.divided,"v-picker--landscape":a.landscape,"v-picker--with-actions":!!e.actions},a.class],style:a.style}),{default:()=>{var r;return[!a.hideHeader&&t("div",{key:"header",class:g(["v-picker__header-wrapper",c.value]),style:P([d.value])},[k&&i(C,{key:"picker-title"},{default:()=>{var l;return[((l=e.title)==null?void 0:l.call(e))??a.title]}}),e.header&&t("div",{class:"v-picker__header"},[e.header()])]),t("div",{class:"v-picker__body"},[(r=e.default)==null?void 0:r.call(e)]),e.actions&&i(f,{defaults:{VBtn:{slim:!0,variant:"text"}}},{default:()=>[t("div",{class:"v-picker__actions"},[e.actions()])]})]}})}),{}}});export{N as V,_ as m}; +import{aa as m,f as v,u,p as h}from"./vendor-vuetify-rtu3DHX4.js";import{H as p,ag as V}from"./index-Ceq_468-.js";import{V as s,m as f}from"./VSheet-MW0wxrpj.js";import{j as i,k as t,N as P,n as g,m as y}from"./vendor-vue-BiQC5iF7.js";const C=m("v-picker-title"),_=h({bgColor:String,divided:Boolean,landscape:Boolean,title:String,hideHeader:Boolean,hideTitle:Boolean,...f()},"VPicker"),H=v()({name:"VPicker",props:_(),setup(a,o){let{slots:e}=o;const{backgroundColorClasses:c,backgroundColorStyles:d}=p(()=>a.color);return u(()=>{const n=s.filterProps(a),k=!a.hideTitle&&!!(a.title||e.title);return i(s,y(n,{color:a.bgColor,class:["v-picker",{"v-picker--divided":a.divided,"v-picker--landscape":a.landscape,"v-picker--with-actions":!!e.actions},a.class],style:a.style}),{default:()=>{var r;return[!a.hideHeader&&t("div",{key:"header",class:g(["v-picker__header-wrapper",c.value]),style:P([d.value])},[k&&i(C,{key:"picker-title"},{default:()=>{var l;return[((l=e.title)==null?void 0:l.call(e))??a.title]}}),e.header&&t("div",{class:"v-picker__header"},[e.header()])]),t("div",{class:"v-picker__body"},[(r=e.default)==null?void 0:r.call(e)]),e.actions&&i(V,{defaults:{VBtn:{slim:!0,variant:"text"}}},{default:()=>[t("div",{class:"v-picker__actions"},[e.actions()])]})]}})}),{}}});export{H as V,_ as m}; diff --git a/assets/VRow-Cjhiymuu.js b/assets/VRow-BiiRXDj9.js similarity index 95% rename from assets/VRow-Cjhiymuu.js rename to assets/VRow-BiiRXDj9.js index fe6e83f..721ea89 100644 --- a/assets/VRow-Cjhiymuu.js +++ b/assets/VRow-BiiRXDj9.js @@ -1 +1 @@ -import{f as C,p as S,k as b,aE as i}from"./vendor-vuetify-DsKlzgKp.js";import{m as k}from"./index-DGIAsv4W.js";import{h as N,e as j,a as u}from"./vendor-vue-BiQC5iF7.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),E=d("justify",()=>({type:String,default:null,validator:P})),U=[...f,...$,"stretch"],A=t=>U.includes(t),O=d("alignContent",()=>({type:String,default:null,validator:A})),m={align:Object.keys(w),justify:Object.keys(E),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},...E,alignContent:{type:String,default:null,validator:A},...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,aE as i}from"./vendor-vuetify-rtu3DHX4.js";import{m as k}from"./index-Ceq_468-.js";import{h as N,e as j,a as u}from"./vendor-vue-BiQC5iF7.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),E=d("justify",()=>({type:String,default:null,validator:P})),U=[...f,...$,"stretch"],A=t=>U.includes(t),O=d("alignContent",()=>({type:String,default:null,validator:A})),m={align:Object.keys(w),justify:Object.keys(E),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},...E,alignContent:{type:String,default:null,validator:A},...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-OEnAsVY5.js b/assets/VSelect-OEnAsVY5.js new file mode 100644 index 0000000..77067fd --- /dev/null +++ b/assets/VSelect-OEnAsVY5.js @@ -0,0 +1 @@ +import{u as lt,l as nt,h as at,V as Le,i as ot}from"./VTextField-DpXLMPq7.js";import{f as xe,y as ze,u as Re,p as ue,k as He,a0 as ut,z as Ve,aP as rt,ai as Ne,E as Ue,l as st,C as it,a3 as ct,s as he,$ as je,w as Ce,an as ft,n as ke,aQ as dt,aL as vt,o as ge,aM as Oe,_ as Ee,a5 as mt,I as ht}from"./vendor-vuetify-rtu3DHX4.js";import{o as oe,k as C,F as se,m as U,w as Fe,s as j,q as Ge,b as X,e as $,I as Qe,D as gt,j as T,N as pt,n as pe,t as ye,l as Pe,u as ie,E as yt,a1 as bt}from"./vendor-vue-BiQC5iF7.js";import{b as wt,a as Vt,aD as kt,f as Be,p as It,q as Ke,i as St,a6 as Ct,o as Ft,ag as Pt,I as xt,Q as Rt,ah as Tt,aF as At}from"./index-Ceq_468-.js";import{V as Mt}from"./VMenu-DqtPWEMI.js";import{V as Dt}from"./VSheet-MW0wxrpj.js";import{V as _t}from"./VCheckboxBtn-snLiE5D5.js";import{V as $e}from"./VChip-BdtDOEwz.js";const Lt=ue({renderless:Boolean,...He()},"VVirtualScrollItem"),Ot=xe()({name:"VVirtualScrollItem",inheritAttrs:!1,props:Lt(),emits:{"update:height":e=>!0},setup(e,n){let{attrs:t,emit:s,slots:a}=n;const{resizeRef:c,contentRect:d}=ze(void 0,"border");oe(()=>{var o;return(o=d.value)==null?void 0:o.height},o=>{o!=null&&s("update:height",o)}),Re(()=>{var o,r;return e.renderless?C(se,null,[(o=a.default)==null?void 0:o.call(a,{itemRef:c})]):C("div",U({ref:c,class:["v-virtual-scroll__item",e.class],style:e.style},t),[(r=a.default)==null?void 0:r.call(a)])})}}),Et=-1,Bt=1,Ie=100,Kt=ue({itemHeight:{type:[Number,String],default:null},itemKey:{type:[String,Array,Function],default:null},height:[Number,String]},"virtual");function $t(e,n){const t=ut(),s=j(0);Fe(()=>{s.value=parseFloat(e.itemHeight||0)});const a=j(0),c=j(Math.ceil((parseInt(e.height)||t.height.value)/(s.value||16))||1),d=j(0),o=j(0),r=X(),h=X();let V=0;const{resizeRef:y,contentRect:p}=ze();Fe(()=>{y.value=r.value});const g=$(()=>{var f;return r.value===document.documentElement?t.height.value:((f=p.value)==null?void 0:f.height)||parseInt(e.height)||0}),v=$(()=>!!(r.value&&h.value&&g.value&&s.value));let u=Array.from({length:n.value.length}),S=Array.from({length:n.value.length});const b=j(0);let A=-1;function z(f){return u[f]||s.value}const P=rt(()=>{const f=performance.now();S[0]=0;const k=n.value.length;for(let x=1;x<=k;x++)S[x]=(S[x-1]||0)+z(x-1);b.value=Math.max(b.value,performance.now()-f)},b),Y=oe(v,f=>{f&&(Y(),V=h.value.offsetTop,P.immediate(),G(),~A&&Qe(()=>{Ue&&window.requestAnimationFrame(()=>{O(A),A=-1})}))});Ge(()=>{P.clear()});function q(f,k){const x=u[f],D=s.value;s.value=D?Math.min(s.value,k):k,(x!==k||D!==s.value)&&(u[f]=k,P())}function R(f){f=Ve(f,0,n.value.length);const k=Math.floor(f),x=f%1,D=k+1,te=S[k]||0,H=S[D]||te;return te+(H-te)*x}function Q(f){return zt(S,f)}let J=0,M=0,Z=0;oe(g,(f,k)=>{G(),f{M=0,G()})});let ee=-1;function F(){if(!r.value||!h.value)return;const f=r.value.scrollTop,k=performance.now();k-Z>500?(M=Math.sign(f-J),V=h.value.offsetTop):M=f-J,J=f,Z=k,window.clearTimeout(ee),ee=window.setTimeout(ce,500),G()}function ce(){!r.value||!h.value||(M=0,Z=0,window.clearTimeout(ee),G())}let fe=-1;function G(){cancelAnimationFrame(fe),fe=requestAnimationFrame(de)}function de(){if(!r.value||!g.value||!s.value)return;const f=J-V,k=Math.sign(M),x=Math.max(0,f-Ie),D=Ve(Q(x),0,n.value.length),te=f+g.value+Ie,H=Ve(Q(te)+1,D+1,n.value.length);if((k!==Et||Dc.value)){const re=R(a.value)-R(D),we=R(H)-R(c.value);Math.max(re,we)>Ie?(a.value=D,c.value=H):(D<=0&&(a.value=D),H>=n.value.length&&(c.value=H))}d.value=R(a.value),o.value=R(n.value.length)-R(c.value)}function O(f){const k=R(f);!r.value||f&&!k?A=f:r.value.scrollTop=k}const be=$(()=>n.value.slice(a.value,c.value).map((f,k)=>{const x=k+a.value;return{raw:f,index:x,key:Ne(f,e.itemKey,x)}}));return oe(n,()=>{u=Array.from({length:n.value.length}),S=Array.from({length:n.value.length}),P.immediate(),G()},{deep:1}),{calculateVisibleItems:G,containerRef:r,markerRef:h,computedItems:be,paddingTop:d,paddingBottom:o,scrollToIndex:O,handleScroll:F,handleScrollend:ce,handleItemResize:q}}function zt(e,n){let t=e.length-1,s=0,a=0,c=null,d=-1;if(e[t]>1,c=e[a],c>n)t=a-1;else if(c[]},renderless:Boolean,...Kt(),...He(),...Vt()},"VVirtualScroll"),Nt=xe()({name:"VVirtualScroll",props:Ht(),setup(e,n){let{slots:t}=n;const s=st("VVirtualScroll"),{dimensionStyles:a}=wt(e),{calculateVisibleItems:c,containerRef:d,markerRef:o,handleScroll:r,handleScrollend:h,handleItemResize:V,scrollToIndex:y,paddingTop:p,paddingBottom:g,computedItems:v}=$t(e,ye(()=>e.items));return it(()=>e.renderless,()=>{function u(){var A,z;const b=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)?"addEventListener":"removeEventListener";d.value===document.documentElement?(document[b]("scroll",r,{passive:!0}),document[b]("scrollend",h)):((A=d.value)==null||A[b]("scroll",r,{passive:!0}),(z=d.value)==null||z[b]("scrollend",h))}gt(()=>{d.value=ct(s.vnode.el,!0),u(!0)}),Ge(u)}),Re(()=>{const u=v.value.map(S=>T(Ot,{key:S.key,renderless:e.renderless,"onUpdate:height":b=>V(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(se,null,[C("div",{ref:o,class:"v-virtual-scroll__spacer",style:{paddingTop:he(p.value)}},null),u,C("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:he(g.value)}},null)]):C("div",{ref:d,class:pe(["v-virtual-scroll",e.class]),onScrollPassive:r,onScrollend:h,style:pt([a.value,e.style])},[C("div",{ref:o,class:"v-virtual-scroll__container",style:{paddingTop:he(p.value),paddingBottom:he(g.value)}},[u])])}),{calculateVisibleItems:c,scrollToIndex:y}}});function Ut(e,n,t){return function(a){return!a.relatedTarget&&document.activeElement===document.body&&e.value?(requestAnimationFrame(()=>{if(!e.value)return;const c=n(),d=(c&&je(c)[0])??t();d==null||d.focus({preventScroll:!0})}),!0):!1}}function jt(e,n){const t=j(!1);let s;function a(o){cancelAnimationFrame(s),t.value=!0,s=requestAnimationFrame(()=>{s=requestAnimationFrame(()=>{t.value=!1})})}async function c(){await new Promise(o=>requestAnimationFrame(o)),await new Promise(o=>requestAnimationFrame(o)),await new Promise(o=>requestAnimationFrame(o)),await new Promise(o=>{if(t.value){const r=oe(t,()=>{r(),o()})}else o()})}async function d(o){var V,y;if(o.key==="Tab"&&((V=n.value)==null||V.focus()),!["PageDown","PageUp","Home","End"].includes(o.key))return;const r=(y=e.value)==null?void 0:y.$el;if(!r)return;(o.key==="Home"||o.key==="End")&&r.scrollTo({top:o.key==="Home"?0:r.scrollHeight,behavior:"smooth"}),await c();const h=r.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(o.key==="PageDown"||o.key==="Home"){const p=r.getBoundingClientRect().top;for(const g of h)if(g.getBoundingClientRect().top>=p){g.focus();break}}else{const p=r.getBoundingClientRect().bottom;for(const g of[...h].reverse())if(g.getBoundingClientRect().bottom<=p){g.focus();break}}}return{onScrollPassive:a,onKeydown:d}}function Gt(e){let{groups:n,onLeave:t}=e;function s(o){var r;return o.type==="list"?(r=o.contentRef.value)==null?void 0:r.$el:o.contentRef.value}function a(o){const r=s(o);return r?je(r):[]}function c(o){var g;const r=o.target,h=o.shiftKey?"backward":"forward",V=n.map(a),y=n.map(v=>{var u;return v.type==="list"?(u=v.contentRef.value)==null?void 0:u.$el:v.contentRef.value}).findIndex(v=>v==null?void 0:v.contains(r)),p=d(V,y,h,r);if(p===null){const v=n[y],u=V[y];(v.type==="list"||(h==="forward"?u.at(-1)===o.target:u.at(0)===o.target))&&t()}else{o.preventDefault(),o.stopImmediatePropagation();const v=n[p];if(v.type==="list"&&Pe(v.displayItemsCount)>0)(g=v.contentRef.value)==null||g.focus(0);else{const u=h==="forward";V[p].at(u?0:-1).focus()}}}function d(o,r,h,V){const y=n[r],p=o[r];if(y.type!=="list"&&!(h==="forward"?p.at(-1)===V:p.at(0)===V))return null;const g=h==="forward"?1:-1;for(let v=r+g;v>=0&&v0||u.type==="list"&&Pe(u.displayItemsCount)>0)return v}return null}return{onTabKeydown:c}}const Qt=(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 a=e.indexOf(n);for(;~a;)s.push([a,a+n.length]),a=e.indexOf(n,a+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 Wt=ue({customFilter:Function,customKeyFilter:Object,filterKeys:[Array,String],filterMode:{type:String,default:"intersection"},noFilter:Boolean},"filter");function Xt(e,n,t){var r,h;const s=[],a=(t==null?void 0:t.default)??Qt,c=t!=null&&t.filterKeys?Ce(t.filterKeys):!1,d=Object.keys((t==null?void 0:t.customKeyFilter)??{}).length;if(!(e!=null&&e.length))return s;let o=[];e:for(let V=0;V0)&&!(t!=null&&t.noFilter)){let S=!1;if(typeof y=="object"){if(y.type==="divider"||y.type==="subheader"){(((r=o.at(-1))==null?void 0:r.type)!=="divider"||y.type!=="subheader")&&(o=[]),o.push({index:V,matches:{},type:y.type});continue}const z=c||Object.keys(p);S=z.length===d;for(const P of z){const Y=Ne(p,P),q=(h=t==null?void 0:t.customKeyFilter)==null?void 0:h[P];if(u=q?q(Y,n,y):a(Y,n,y),u!==-1&&u!==!1)q?g[P]=Se(u,n):v[P]=Se(u,n);else if((t==null?void 0:t.filterMode)==="every")continue e}}else u=a(y,n,y),u!==-1&&u!==!1&&(v.title=Se(u,n));const b=Object.keys(v).length,A=Object.keys(g).length;if(!b&&!A||(t==null?void 0:t.filterMode)==="union"&&A!==d&&!b||(t==null?void 0:t.filterMode)==="intersection"&&(A!==d||!b&&d>0&&!S))continue}o.length&&(s.push(...o),o=[]),s.push({index:V,matches:{...v,...g}})}return s}function Yt(e,n,t,s){const a=j([]),c=j(new Map),d=$(()=>s!=null&&s.transform?ie(n).map(r=>[r,s.transform(r)]):ie(n));Fe(()=>{const r=typeof t=="function"?t():ie(t),h=typeof r!="string"&&typeof r!="number"?"":String(r),V=Xt(d.value,h,{customKeyFilter:{...e.customKeyFilter,...ie(s==null?void 0:s.customKeyFilter)},default:e.customFilter,filterKeys:e.filterKeys,filterMode:e.filterMode,noFilter:e.noFilter}),y=ie(n),p=[],g=new Map;V.forEach(v=>{let{index:u,matches:S}=v;const b=y[u];p.push(b),g.set(b.value,S)}),a.value=p,c.value=g});function o(r){return c.value.get(r.value)}return{filteredItems:a,filteredMatches:c,getMatches:o}}function qt(e,n,t){return t==null||!t.length?n:t.map((s,a)=>{const c=a===0?0:t[a-1][1],d=[C("span",{class:pe(`${e}__unmask`)},[n.slice(c,s[0])]),C("span",{class:pe(`${e}__mask`)},[n.slice(s[0],s[1])])];return a===t.length-1&&d.push(C("span",{class:pe(`${e}__unmask`)},[n.slice(s[1])])),C(se,null,[d])})}const Jt=ue({closeText:{type:String,default:"$vuetify.close"},openText:{type:String,default:"$vuetify.open"}},"autocomplete");function Zt(e,n){const t=yt(),s=$(()=>`menu-${t}`),a=ye(()=>Pe(n)),c=ye(()=>s.value);return{menuId:s,ariaExpanded:a,ariaControls:c}}const el=ue({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,...Jt(),...At({itemChildren:!1})},"Select"),tl=ue({search:String,...Wt({filterKeys:["title"]}),...el(),...mt(ot({modelValue:null,role:"combobox"}),["validationValue","dirty"]),...Rt({transition:{component:Tt}})},"VSelect"),cl=xe()({name:"VSelect",props:tl(),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(),a=X(),c=X(),d=X(),o=X(),r=X(),{items:h,transformIn:V,transformOut:y}=kt(e),p=ke(e,"search",""),{filteredItems:g,getMatches:v}=Yt(e,h,()=>p.value),u=ke(e,"modelValue",[],l=>V(l===null?[null]:Ce(l)),l=>{const i=y(l);return e.multiple?i:i[0]??null}),S=$(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:u.value.length),b=lt(e),A=nt(e),z=$(()=>u.value.map(l=>l.value)),P=j(!1),Y=ye(()=>e.closableChips&&!b.isReadonly.value&&!b.isDisabled.value),{InputIcon:q}=at(e);let R="",Q=0,J;const M=$(()=>{const l=p.value?g.value:h.value;return e.hideSelected?l.filter(i=>!u.value.some(I=>(e.valueComparator||ge)(I,i))):l}),Z=$(()=>e.hideNoData&&!M.value.length||b.isReadonly.value||b.isDisabled.value),ee=ke(e,"menu"),F=$({get:()=>ee.value,set:l=>{var i;ee.value&&!l&&((i=c.value)!=null&&i.ΨopenChildren.size)||l&&Z.value||(ee.value=l)}}),{menuId:ce,ariaExpanded:fe,ariaControls:G}=Zt(e,F),de=$(()=>{var l;return{...e.menuProps,activatorProps:{...((l=e.menuProps)==null?void 0:l.activatorProps)||{},"aria-haspopup":"listbox"}}}),O=X(),be=jt(O,a),f=Ut(F,()=>{var l;return(l=c.value)==null?void 0:l.contentEl},()=>{var l;return(l=a.value)==null?void 0:l.controlRef}),{onTabKeydown:k}=Gt({groups:[{type:"element",contentRef:d},{type:"list",contentRef:O,displayItemsCount:()=>M.value.length},{type:"element",contentRef:o}],onLeave:()=>{var l;F.value=!1,(l=a.value)==null||l.focus()}});function x(l){e.openOnClear&&(F.value=!0)}function D(){Z.value||(F.value=!F.value)}function te(l){var i;l.key==="Tab"&&k(l),(i=O.value)!=null&&i.$el.contains(l.target)&&Oe(l)&&H(l)}function H(l){var E,K,ae;if(!l.key||b.isReadonly.value)return;if(["Enter"," ","ArrowDown","ArrowUp","Home","End"].includes(l.key)&&l.preventDefault(),["Enter","ArrowDown"," "].includes(l.key)&&(F.value=!0),["Escape","Tab"].includes(l.key)&&(F.value=!1),e.clearable&&l.key==="Backspace"){l.preventDefault(),u.value=[],x();return}l.key==="Home"?(E=O.value)==null||E.focus("first"):l.key==="End"&&((K=O.value)==null||K.focus("last"));const i=1e3;if(!Oe(l))return;const I=performance.now();I-J>i&&(R="",Q=0),R+=l.key.toLowerCase(),J=I;const W=M.value;function N(){let m=le();return m||R.at(-1)===R.at(-2)&&(R=R.slice(0,-1),Q++,m=le(),m)||(Q=0,m=le(),m)?m:(R=l.key.toLowerCase(),le())}function le(){for(let m=Q;m1&&arguments[1]!==void 0?arguments[1]:!0;if(!l.props.disabled)if(e.multiple){const I=u.value.findIndex(N=>(e.valueComparator||ge)(N.value,l.value)),W=i??!~I;if(~I){const N=W?[...u.value,l]:[...u.value];N.splice(I,1),u.value=N}else W&&(u.value=[...u.value,l])}else{const I=i!==!1;u.value=I?[l]:[],Qe(()=>{F.value=!1})}}function we(l){var I;const i=l.target;(I=a.value)!=null&&I.$el.contains(i)||(F.value=!1)}function Te(){return M.value.findIndex(l=>u.value.some(i=>(e.valueComparator||ge)(i.value,l.value)))}function We(){if(!u.value.length)return-1;const l=e.valueComparator||ge;let i=0;for(const I of M.value){if(u.value.some(N=>l(N.value,I.value)))return I.props.disabled?-1:i;I.props.disabled||i++}return-1}function Xe(){var l;if(e.eager&&((l=r.value)==null||l.calculateVisibleItems()),O.value&&P.value){const i=We();O.value.focus(i>=0?i:"first",{focusVisible:!1,preventScroll:e.noAutoScroll})}}function Ye(){var l;p.value="",P.value&&((l=a.value)==null||l.focus())}function qe(l){P.value=!0}function Je(l){var i;if(!((i=a.value)!=null&&i.$el.contains(l.relatedTarget))){if(f(l))return;P.value=!1}}function Ze(l){if(l==null)u.value=[];else if(Ee(a.value,":autofill")||Ee(a.value,":-webkit-autofill")){const i=h.value.find(I=>I.title===l);i&&re(i)}else a.value&&(a.value.value="")}return oe(F,()=>{if(!e.hideSelected&&F.value&&u.value.length){const l=Te();Ue&&!e.noAutoScroll&&window.requestAnimationFrame(()=>{var i;l>=0&&((i=r.value)==null||i.scrollToIndex(l))})}}),oe(h,(l,i)=>{F.value||P.value&&e.hideNoData&&!i.length&&l.length&&(F.value=!0)}),Re(()=>{const l=!!(e.chips||t.chip),i=!!(!e.hideNoData||M.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),I=u.value.length>0,W=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:a},W,{modelValue:u.value.map(B=>B.props.title).join(", "),name:void 0,"onUpdate:modelValue":Ze,focused:P.value,"onUpdate:focused":B=>P.value=B,validationValue:u.externalValue,counterValue:S.value,dirty:I,class:["v-select",{"v-select--active-menu":F.value,"v-select--chips":!!e.chips,[`v-select--${e.multiple?"multiple":"single"}`]:!0,"v-select--selected":u.value.length,"v-select--selection-slot":!!t.selection},e.class],style:e.style,inputmode:"none",placeholder:N,"onClick:clear":x,"onMousedown:control":D,onBlur:we,onKeydown:H,"aria-expanded":fe.value,"aria-controls":G.value}),{...t,default:B=>{let{id:ne}=B;return C(se,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:z.value.includes(w.value)},null))]),T(Mt,U({id:ce.value,ref:c,modelValue:F.value,"onUpdate:modelValue":w=>F.value=w,activator:"parent",disabled:Z.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterEnter:Xe,onAfterLeave:Ye},de.value,{contentClass:["v-select__content",de.value.contentClass]}),{default:()=>[T(Dt,{onFocusin:qe,onFocusout:Je,onKeydown:te},{default:()=>[t["menu-header"]&&C("header",{ref:d},[t["menu-header"](le)]),i&&T(It,U({key:"select-list",ref:O,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},be,e.listProps),{default:()=>{var w,E,K;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(Nt,{ref:r,renderless:!0,items:M.value,itemKey:"value"},{default:ae=>{var Me,De,_e;let{item:m,index:_,itemRef:L}=ae;const ve=dt(m.props),Ae=U(m.props,{ref:L,key:m.value,onClick:()=>re(m,null),"aria-posinset":_+1,"aria-setsize":M.value.length});return m.type==="divider"?((Me=t.divider)==null?void 0:Me.call(t,{props:m.raw,index:_}))??T(St,U(m.props,{key:`divider-${_}`}),null):m.type==="subheader"?((De=t.subheader)==null?void 0:De.call(t,{props:m.raw,index:_}))??T(Ct,U(m.props,{key:`subheader-${_}`}),null):((_e=t.item)==null?void 0:_e.call(t,{item:m,index:_,props:Ae}))??T(Ke,U(Ae,{role:"option"}),{prepend:me=>{let{isSelected:et}=me;return C(se,null,[e.multiple&&!e.hideSelected?T(_t,{key:m.value,modelValue:et,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:tt=>tt.preventDefault()},null):void 0,ve.prependAvatar&&T(Ft,{image:ve.prependAvatar},null),ve.prependIcon&&T(Be,{icon:ve.prependIcon},null)])},title:()=>{var me;return p.value?qt("v-select",m.title,(me=v(m))==null?void 0:me.title):m.title}})}}),(K=t["append-item"])==null?void 0:K.call(t)]}}),t["menu-footer"]&&C("footer",{ref:o},[t["menu-footer"](le)])]})]}),u.value.map((w,E)=>{function K(L){L.stopPropagation(),L.preventDefault(),re(w,!1)}const ae=U($e.filterProps(w.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}),m=l?!!t.chip:!!t.selection,_=m?vt(l?t.chip({item:w,index:E,props:ae}):t.selection({item:w,index:E})):void 0;if(!(m&&!_))return C("div",{key:w.value,class:"v-select__selection"},[l?t.chip?T(Pt,{key:"chip-defaults",defaults:{VChip:{closable:Y.value,size:"small",text:w.title}}},{default:()=>[_]}):T($e,U({key:"chip",closable:Y.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(e,n){let{attrs:t,emit:s,slots:a}=n;const{resizeRef:c,contentRect:d}=ze(void 0,"border");oe(()=>{var o;return(o=d.value)==null?void 0:o.height},o=>{o!=null&&s("update:height",o)}),Re(()=>{var o,r;return e.renderless?C(se,null,[(o=a.default)==null?void 0:o.call(a,{itemRef:c})]):C("div",U({ref:c,class:["v-virtual-scroll__item",e.class],style:e.style},t),[(r=a.default)==null?void 0:r.call(a)])})}}),Lt=-1,Bt=1,Ie=100,Kt=ue({itemHeight:{type:[Number,String],default:null},itemKey:{type:[String,Array,Function],default:null},height:[Number,String]},"virtual");function $t(e,n){const t=ut(),s=j(0);Fe(()=>{s.value=parseFloat(e.itemHeight||0)});const a=j(0),c=j(Math.ceil((parseInt(e.height)||t.height.value)/(s.value||16))||1),d=j(0),o=j(0),r=J(),h=J();let k=0;const{resizeRef:y,contentRect:p}=ze();Fe(()=>{y.value=r.value});const g=$(()=>{var f;return r.value===document.documentElement?t.height.value:((f=p.value)==null?void 0:f.height)||parseInt(e.height)||0}),v=$(()=>!!(r.value&&h.value&&g.value&&s.value));let u=Array.from({length:n.value.length}),S=Array.from({length:n.value.length});const b=j(0);let A=-1;function z(f){return u[f]||s.value}const x=rt(()=>{const f=performance.now();S[0]=0;const V=n.value.length;for(let P=1;P<=V;P++)S[P]=(S[P-1]||0)+z(P-1);b.value=Math.max(b.value,performance.now()-f)},b),X=oe(v,f=>{f&&(X(),k=h.value.offsetTop,x.immediate(),G(),~A&&We(()=>{Ue&&window.requestAnimationFrame(()=>{_(A),A=-1})}))});Ge(()=>{x.clear()});function Y(f,V){const P=u[f],D=s.value;s.value=D?Math.min(s.value,V):V,(P!==V||D!==s.value)&&(u[f]=V,x())}function R(f){f=ke(f,0,n.value.length);const V=Math.floor(f),P=f%1,D=V+1,te=S[V]||0,H=S[D]||te;return te+(H-te)*P}function W(f){return zt(S,f)}let q=0,M=0,Z=0;oe(g,(f,V)=>{G(),f{M=0,G()})});let ee=-1;function F(){if(!r.value||!h.value)return;const f=r.value.scrollTop,V=performance.now();V-Z>500?(M=Math.sign(f-q),k=h.value.offsetTop):M=f-q,q=f,Z=V,window.clearTimeout(ee),ee=window.setTimeout(ce,500),G()}function ce(){!r.value||!h.value||(M=0,Z=0,window.clearTimeout(ee),G())}let fe=-1;function G(){cancelAnimationFrame(fe),fe=requestAnimationFrame(de)}function de(){if(!r.value||!g.value||!s.value)return;const f=q-k,V=Math.sign(M),P=Math.max(0,f-Ie),D=ke(W(P),0,n.value.length),te=f+g.value+Ie,H=ke(W(te)+1,D+1,n.value.length);if((V!==Lt||Dc.value)){const re=R(a.value)-R(D),we=R(H)-R(c.value);Math.max(re,we)>Ie?(a.value=D,c.value=H):(D<=0&&(a.value=D),H>=n.value.length&&(c.value=H))}d.value=R(a.value),o.value=R(n.value.length)-R(c.value)}function _(f){const V=R(f);!r.value||f&&!V?A=f:r.value.scrollTop=V}const be=$(()=>n.value.slice(a.value,c.value).map((f,V)=>{const P=V+a.value;return{raw:f,index:P,key:Ne(f,e.itemKey,P)}}));return oe(n,()=>{u=Array.from({length:n.value.length}),S=Array.from({length:n.value.length}),x.immediate(),G()},{deep:1}),{calculateVisibleItems:G,containerRef:r,markerRef:h,computedItems:be,paddingTop:d,paddingBottom:o,scrollToIndex:_,handleScroll:F,handleScrollend:ce,handleItemResize:Y}}function zt(e,n){let t=e.length-1,s=0,a=0,c=null,d=-1;if(e[t]>1,c=e[a],c>n)t=a-1;else if(c[]},renderless:Boolean,...Kt(),...He(),...kt()},"VVirtualScroll"),Nt=Pe()({name:"VVirtualScroll",props:Ht(),setup(e,n){let{slots:t}=n;const s=st("VVirtualScroll"),{dimensionStyles:a}=wt(e),{calculateVisibleItems:c,containerRef:d,markerRef:o,handleScroll:r,handleScrollend:h,handleItemResize:k,scrollToIndex:y,paddingTop:p,paddingBottom:g,computedItems:v}=$t(e,ye(()=>e.items));return it(()=>e.renderless,()=>{function u(){var A,z;const b=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1)?"addEventListener":"removeEventListener";d.value===document.documentElement?(document[b]("scroll",r,{passive:!0}),document[b]("scrollend",h)):((A=d.value)==null||A[b]("scroll",r,{passive:!0}),(z=d.value)==null||z[b]("scrollend",h))}gt(()=>{d.value=ct(s.vnode.el,!0),u(!0)}),Ge(u)}),Re(()=>{const u=v.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(se,null,[C("div",{ref:o,class:"v-virtual-scroll__spacer",style:{paddingTop:he(p.value)}},null),u,C("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:he(g.value)}},null)]):C("div",{ref:d,class:pe(["v-virtual-scroll",e.class]),onScrollPassive:r,onScrollend:h,style:pt([a.value,e.style])},[C("div",{ref:o,class:"v-virtual-scroll__container",style:{paddingTop:he(p.value),paddingBottom:he(g.value)}},[u])])}),{calculateVisibleItems:c,scrollToIndex:y}}});function Ut(e,n,t){return function(a){return!a.relatedTarget&&document.activeElement===document.body&&e.value?(requestAnimationFrame(()=>{if(!e.value)return;const c=n(),d=(c&&je(c)[0])??t();d==null||d.focus({preventScroll:!0})}),!0):!1}}function jt(e,n){const t=j(!1);let s;function a(o){cancelAnimationFrame(s),t.value=!0,s=requestAnimationFrame(()=>{s=requestAnimationFrame(()=>{t.value=!1})})}async function c(){await new Promise(o=>requestAnimationFrame(o)),await new Promise(o=>requestAnimationFrame(o)),await new Promise(o=>requestAnimationFrame(o)),await new Promise(o=>{if(t.value){const r=oe(t,()=>{r(),o()})}else o()})}async function d(o){var k,y;if(o.key==="Tab"&&((k=n.value)==null||k.focus()),!["PageDown","PageUp","Home","End"].includes(o.key))return;const r=(y=e.value)==null?void 0:y.$el;if(!r)return;(o.key==="Home"||o.key==="End")&&r.scrollTo({top:o.key==="Home"?0:r.scrollHeight,behavior:"smooth"}),await c();const h=r.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(o.key==="PageDown"||o.key==="Home"){const p=r.getBoundingClientRect().top;for(const g of h)if(g.getBoundingClientRect().top>=p){g.focus();break}}else{const p=r.getBoundingClientRect().bottom;for(const g of[...h].reverse())if(g.getBoundingClientRect().bottom<=p){g.focus();break}}}return{onScrollPassive:a,onKeydown:d}}function Gt(e){let{groups:n,onLeave:t}=e;function s(o){var r;return o.type==="list"?(r=o.contentRef.value)==null?void 0:r.$el:o.contentRef.value}function a(o){const r=s(o);return r?je(r):[]}function c(o){var g;const r=o.target,h=o.shiftKey?"backward":"forward",k=n.map(a),y=n.map(v=>{var u;return v.type==="list"?(u=v.contentRef.value)==null?void 0:u.$el:v.contentRef.value}).findIndex(v=>v==null?void 0:v.contains(r)),p=d(k,y,h,r);if(p===null){const v=n[y],u=k[y];(v.type==="list"||(h==="forward"?u.at(-1)===o.target:u.at(0)===o.target))&&t()}else{o.preventDefault(),o.stopImmediatePropagation();const v=n[p];if(v.type==="list"&&xe(v.displayItemsCount)>0)(g=v.contentRef.value)==null||g.focus(0);else{const u=h==="forward";k[p].at(u?0:-1).focus()}}}function d(o,r,h,k){const y=n[r],p=o[r];if(y.type!=="list"&&!(h==="forward"?p.at(-1)===k:p.at(0)===k))return null;const g=h==="forward"?1:-1;for(let v=r+g;v>=0&&v0||u.type==="list"&&xe(u.displayItemsCount)>0)return v}return null}return{onTabKeydown:c}}const Wt=(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 a=e.indexOf(n);for(;~a;)s.push([a,a+n.length]),a=e.indexOf(n,a+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 Qt=ue({customFilter:Function,customKeyFilter:Object,filterKeys:[Array,String],filterMode:{type:String,default:"intersection"},noFilter:Boolean},"filter");function Jt(e,n,t){var r,h;const s=[],a=(t==null?void 0:t.default)??Wt,c=t!=null&&t.filterKeys?Ce(t.filterKeys):!1,d=Object.keys((t==null?void 0:t.customKeyFilter)??{}).length;if(!(e!=null&&e.length))return s;let o=[];e:for(let k=0;k0)&&!(t!=null&&t.noFilter)){let S=!1;if(typeof y=="object"){if(y.type==="divider"||y.type==="subheader"){(((r=o.at(-1))==null?void 0:r.type)!=="divider"||y.type!=="subheader")&&(o=[]),o.push({index:k,matches:{},type:y.type});continue}const z=c||Object.keys(p);S=z.length===d;for(const x of z){const X=Ne(p,x),Y=(h=t==null?void 0:t.customKeyFilter)==null?void 0:h[x];if(u=Y?Y(X,n,y):a(X,n,y),u!==-1&&u!==!1)Y?g[x]=Se(u,n):v[x]=Se(u,n);else if((t==null?void 0:t.filterMode)==="every")continue e}}else u=a(y,n,y),u!==-1&&u!==!1&&(v.title=Se(u,n));const b=Object.keys(v).length,A=Object.keys(g).length;if(!b&&!A||(t==null?void 0:t.filterMode)==="union"&&A!==d&&!b||(t==null?void 0:t.filterMode)==="intersection"&&(A!==d||!b&&d>0&&!S))continue}o.length&&(s.push(...o),o=[]),s.push({index:k,matches:{...v,...g}})}return s}function Xt(e,n,t,s){const a=j([]),c=j(new Map),d=$(()=>s!=null&&s.transform?ie(n).map(r=>[r,s.transform(r)]):ie(n));Fe(()=>{const r=typeof t=="function"?t():ie(t),h=typeof r!="string"&&typeof r!="number"?"":String(r),k=Jt(d.value,h,{customKeyFilter:{...e.customKeyFilter,...ie(s==null?void 0:s.customKeyFilter)},default:e.customFilter,filterKeys:e.filterKeys,filterMode:e.filterMode,noFilter:e.noFilter}),y=ie(n),p=[],g=new Map;k.forEach(v=>{let{index:u,matches:S}=v;const b=y[u];p.push(b),g.set(b.value,S)}),a.value=p,c.value=g});function o(r){return c.value.get(r.value)}return{filteredItems:a,filteredMatches:c,getMatches:o}}function Yt(e,n,t){return t==null||!t.length?n:t.map((s,a)=>{const c=a===0?0:t[a-1][1],d=[C("span",{class:pe(`${e}__unmask`)},[n.slice(c,s[0])]),C("span",{class:pe(`${e}__mask`)},[n.slice(s[0],s[1])])];return a===t.length-1&&d.push(C("span",{class:pe(`${e}__unmask`)},[n.slice(s[1])])),C(se,null,[d])})}const qt=ue({closeText:{type:String,default:"$vuetify.close"},openText:{type:String,default:"$vuetify.open"}},"autocomplete");function Zt(e,n){const t=yt(),s=$(()=>`menu-${t}`),a=ye(()=>xe(n)),c=ye(()=>s.value);return{menuId:s,ariaExpanded:a,ariaControls:c}}const el=ue({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,...qt(),...At({itemChildren:!1})},"Select"),tl=ue({search:String,...Qt({filterKeys:["title"]}),...el(),...mt(ot({modelValue:null,role:"combobox"}),["validationValue","dirty"]),...Rt({transition:{component:Tt}})},"VSelect"),il=Pe()({name:"VSelect",props:tl(),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(),a=J(),c=J(),d=J(),o=J(),r=J(),{items:h,transformIn:k,transformOut:y}=Vt(e),p=Ve(e,"search",""),{filteredItems:g,getMatches:v}=Xt(e,h,()=>p.value),u=Ve(e,"modelValue",[],l=>k(l===null?[null]:Ce(l)),l=>{const i=y(l);return e.multiple?i:i[0]??null}),S=$(()=>typeof e.counterValue=="function"?e.counterValue(u.value):typeof e.counterValue=="number"?e.counterValue:u.value.length),b=lt(e),A=nt(e),z=$(()=>u.value.map(l=>l.value)),x=j(!1),X=ye(()=>e.closableChips&&!b.isReadonly.value&&!b.isDisabled.value),{InputIcon:Y}=at(e);let R="",W=0,q;const M=$(()=>{const l=p.value?g.value:h.value;return e.hideSelected?l.filter(i=>!u.value.some(I=>(e.valueComparator||ge)(I,i))):l}),Z=$(()=>e.hideNoData&&!M.value.length||b.isReadonly.value||b.isDisabled.value),ee=Ve(e,"menu"),F=$({get:()=>ee.value,set:l=>{var i;ee.value&&!l&&((i=c.value)!=null&&i.ΨopenChildren.size)||l&&Z.value||(ee.value=l)}}),{menuId:ce,ariaExpanded:fe,ariaControls:G}=Zt(e,F),de=$(()=>{var l;return{...e.menuProps,activatorProps:{...((l=e.menuProps)==null?void 0:l.activatorProps)||{},"aria-haspopup":"listbox"}}}),_=J(),be=jt(_,a),f=Ut(F,()=>{var l;return(l=c.value)==null?void 0:l.contentEl},()=>{var l;return(l=a.value)==null?void 0:l.controlRef}),{onTabKeydown:V}=Gt({groups:[{type:"element",contentRef:d},{type:"list",contentRef:_,displayItemsCount:()=>M.value.length},{type:"element",contentRef:o}],onLeave:()=>{var l;F.value=!1,(l=a.value)==null||l.focus()}});function P(l){e.openOnClear&&(F.value=!0)}function D(){Z.value||(F.value=!F.value)}function te(l){var i;l.key==="Tab"&&V(l),(i=_.value)!=null&&i.$el.contains(l.target)&&_e(l)&&H(l)}function H(l){var L,K,ae;if(!l.key||b.isReadonly.value)return;if(["Enter"," ","ArrowDown","ArrowUp","Home","End"].includes(l.key)&&l.preventDefault(),["Enter","ArrowDown"," "].includes(l.key)&&(F.value=!0),["Escape","Tab"].includes(l.key)&&(F.value=!1),e.clearable&&l.key==="Backspace"){l.preventDefault(),u.value=[],P();return}l.key==="Home"?(L=_.value)==null||L.focus("first"):l.key==="End"&&((K=_.value)==null||K.focus("last"));const i=1e3;if(!_e(l))return;const I=performance.now();I-q>i&&(R="",W=0),R+=l.key.toLowerCase(),q=I;const Q=M.value;function N(){let m=le();return m||R.at(-1)===R.at(-2)&&(R=R.slice(0,-1),W++,m=le(),m)||(W=0,m=le(),m)?m:(R=l.key.toLowerCase(),le())}function le(){for(let m=W;m1&&arguments[1]!==void 0?arguments[1]:!0;if(!l.props.disabled)if(e.multiple){const I=u.value.findIndex(N=>(e.valueComparator||ge)(N.value,l.value)),Q=i??!~I;if(~I){const N=Q?[...u.value,l]:[...u.value];N.splice(I,1),u.value=N}else Q&&(u.value=[...u.value,l])}else{const I=i!==!1;u.value=I?[l]:[],We(()=>{F.value=!1})}}function we(l){var I;const i=l.target;(I=a.value)!=null&&I.$el.contains(i)||(F.value=!1)}function Te(){return M.value.findIndex(l=>u.value.some(i=>(e.valueComparator||ge)(i.value,l.value)))}function Qe(){if(!u.value.length)return-1;const l=e.valueComparator||ge;let i=0;for(const I of M.value){if(u.value.some(N=>l(N.value,I.value)))return I.props.disabled?-1:i;I.props.disabled||i++}return-1}function Je(){var l;if(e.eager&&((l=r.value)==null||l.calculateVisibleItems()),_.value&&x.value){const i=Qe();_.value.focus(i>=0?i:"first",{focusVisible:!1})}}function Xe(){var l;p.value="",x.value&&((l=a.value)==null||l.focus())}function Ye(l){x.value=!0}function qe(l){var i;if(!((i=a.value)!=null&&i.$el.contains(l.relatedTarget))){if(f(l))return;x.value=!1}}function Ze(l){if(l==null)u.value=[];else if(Le(a.value,":autofill")||Le(a.value,":-webkit-autofill")){const i=h.value.find(I=>I.title===l);i&&re(i)}else a.value&&(a.value.value="")}return oe(F,()=>{if(!e.hideSelected&&F.value&&u.value.length){const l=Te();Ue&&!e.noAutoScroll&&window.requestAnimationFrame(()=>{var i;l>=0&&((i=r.value)==null||i.scrollToIndex(l))})}}),oe(h,(l,i)=>{F.value||x.value&&e.hideNoData&&!i.length&&l.length&&(F.value=!0)}),Re(()=>{const l=!!(e.chips||t.chip),i=!!(!e.hideNoData||M.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),I=u.value.length>0,Q=Oe.filterProps(e),N=I||!x.value&&e.label&&!e.persistentPlaceholder?void 0:e.placeholder,le={search:p,filteredItems:g.value};return T(Oe,U({ref:a},Q,{modelValue:u.value.map(B=>B.props.title).join(", "),name:void 0,"onUpdate:modelValue":Ze,focused:x.value,"onUpdate:focused":B=>x.value=B,validationValue:u.externalValue,counterValue:S.value,dirty:I,class:["v-select",{"v-select--active-menu":F.value,"v-select--chips":!!e.chips,[`v-select--${e.multiple?"multiple":"single"}`]:!0,"v-select--selected":u.value.length,"v-select--selection-slot":!!t.selection},e.class],style:e.style,inputmode:"none",placeholder:N,"onClick:clear":P,"onMousedown:control":D,onBlur:we,onKeydown:H,"aria-expanded":fe.value,"aria-controls":G.value}),{...t,default:B=>{let{id:ne}=B;return C(se,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:z.value.includes(w.value)},null))]),T(Mt,U({id:ce.value,ref:c,modelValue:F.value,"onUpdate:modelValue":w=>F.value=w,activator:"parent",disabled:Z.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterEnter:Je,onAfterLeave:Xe},de.value,{contentClass:["v-select__content",de.value.contentClass]}),{default:()=>[T(Dt,{onFocusin:Ye,onFocusout:qe,onKeydown:te},{default:()=>[t["menu-header"]&&C("header",{ref:d},[t["menu-header"](le)]),i&&T(It,U({key:"select-list",ref:_,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},be,e.listProps),{default:()=>{var w,L,K;return[(w=t["prepend-item"])==null?void 0:w.call(t),!M.value.length&&!e.hideNoData&&(((L=t["no-data"])==null?void 0:L.call(t))??T(Ke,{key:"no-data",title:s(e.noDataText)},null)),T(Nt,{ref:r,renderless:!0,items:M.value,itemKey:"value"},{default:ae=>{var Me,De,Ee;let{item:m,index:E,itemRef:O}=ae;const ve=dt(m.props),Ae=U(m.props,{ref:O,key:m.value,onClick:()=>re(m,null),"aria-posinset":E+1,"aria-setsize":M.value.length});return m.type==="divider"?((Me=t.divider)==null?void 0:Me.call(t,{props:m.raw,index:E}))??T(St,U(m.props,{key:`divider-${E}`}),null):m.type==="subheader"?((De=t.subheader)==null?void 0:De.call(t,{props:m.raw,index:E}))??T(Ct,U(m.props,{key:`subheader-${E}`}),null):((Ee=t.item)==null?void 0:Ee.call(t,{item:m,index:E,props:Ae}))??T(Ke,U(Ae,{role:"option"}),{prepend:me=>{let{isSelected:et}=me;return C(se,null,[e.multiple&&!e.hideSelected?T(Et,{key:m.value,modelValue:et,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:tt=>tt.preventDefault()},null):void 0,ve.prependAvatar&&T(Ft,{image:ve.prependAvatar},null),ve.prependIcon&&T(Be,{icon:ve.prependIcon},null)])},title:()=>{var me;return p.value?Yt("v-select",m.title,(me=v(m))==null?void 0:me.title):m.title}})}}),(K=t["append-item"])==null?void 0:K.call(t)]}}),t["menu-footer"]&&C("footer",{ref:o},[t["menu-footer"](le)])]})]}),u.value.map((w,L)=>{function K(O){O.stopPropagation(),O.preventDefault(),re(w,!1)}const ae=U($e.filterProps(w.props),{"onClick:close":K,onKeydown(O){O.key!=="Enter"&&O.key!==" "||(O.preventDefault(),O.stopPropagation(),K(O))},onMousedown(O){O.preventDefault(),O.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),m=l?!!t.chip:!!t.selection,E=m?vt(l?t.chip({item:w,index:L,props:ae}):t.selection({item:w,index:L})):void 0;if(!(m&&!E))return C("div",{key:w.value,class:"v-select__selection"},[l?t.chip?T(xt,{key:"chip-defaults",defaults:{VChip:{closable:X.value,size:"small",text:w.title}}},{default:()=>[E]}):T($e,U({key:"chip",closable:X.value,size:"small",text:w.title,disabled:w.props.disabled},ae),null):E??C("span",{class:"v-select__selection-text"},[w.title,e.multiple&&L!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(C,null),m=de(new Set);ve(C,{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 S(e){var s,l,r,v,h;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,(h=(v=n.value)==null?void 0:v.activatorEl)==null||h.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(()=>b({"aria-haspopup":"menu","aria-expanded":String(o.value),"aria-controls":c.value,"aria-owns":c.value,onKeydown:w},a.activatorProps));return A(()=>{const e=V.filterProps(a);return P(V,b({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:S},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)]}})}})}),L({id:c,ΨopenChildren:m},n)}}),ke=D({color:String,...J(),...se(),...q(),...Q(),...G(),...H(),...j(),...$(),...te()},"VSheet"),be=E()({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}=N(a),{elevationClasses:n}=z(a),{locationStyles:t}=K(a),{positionClasses:m}=U(a),{roundedClasses:g}=F(a);return A(()=>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{Ve as V,be as a,ke as m}; diff --git a/assets/VSheet-DW_b51tO.css b/assets/VSheet-DW_b51tO.css new file mode 100644 index 0000000..520891e --- /dev/null +++ b/assets/VSheet-DW_b51tO.css @@ -0,0 +1 @@ +.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-sheet{display:block}.v-sheet{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-sheet--border{border-width:thin;box-shadow:none}.v-sheet{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-sheet--absolute{position:absolute}.v-sheet--fixed{position:fixed}.v-sheet--relative{position:relative}.v-sheet--sticky{position:sticky}.v-sheet{border-radius:0}.v-sheet{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-sheet--rounded{border-radius:4px} diff --git a/assets/VSheet-DxsDksIw.css b/assets/VSheet-DxsDksIw.css deleted file mode 100644 index 5c47a9a..0000000 --- a/assets/VSheet-DxsDksIw.css +++ /dev/null @@ -1 +0,0 @@ -.v-menu>.v-overlay__content{display:flex;flex-direction:column}.v-menu>.v-overlay__content{border-radius:4px}.v-menu>.v-overlay__content>.v-card,.v-menu>.v-overlay__content>.v-sheet,.v-menu>.v-overlay__content>.v-list{background:rgb(var(--v-theme-surface));border-radius:inherit;overflow:auto;height:100%}.v-menu>.v-overlay__content>.v-card,.v-menu>.v-overlay__content>.v-sheet,.v-menu>.v-overlay__content>.v-list{box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity, rgba(0, 0, 0, .2)),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity, rgba(0, 0, 0, .14)),0 3px 14px 2px var(--v-shadow-key-ambient-opacity, rgba(0, 0, 0, .12))}.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-sheet{display:block}.v-sheet{border-color:rgba(var(--v-border-color),var(--v-border-opacity));border-style:solid;border-width:0}.v-sheet--border{border-width:thin;box-shadow:none}.v-sheet{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-sheet--absolute{position:absolute}.v-sheet--fixed{position:fixed}.v-sheet--relative{position:relative}.v-sheet--sticky{position:sticky}.v-sheet{border-radius:0}.v-sheet{background:rgb(var(--v-theme-surface));color:rgba(var(--v-theme-on-surface),var(--v-high-emphasis-opacity))}.v-sheet--rounded{border-radius:4px} diff --git a/assets/VSheet-MW0wxrpj.js b/assets/VSheet-MW0wxrpj.js new file mode 100644 index 0000000..4d13221 --- /dev/null +++ b/assets/VSheet-MW0wxrpj.js @@ -0,0 +1 @@ +import{H as d,ai as k,O as v,am as C,N as P,b as h,a2 as S,m as g,R as y,ap as V,T as p,$ as b,a as f,aj as R}from"./index-Ceq_468-.js";import{f as T,h as B,u as N,p as j,m as z,k as D}from"./vendor-vuetify-rtu3DHX4.js";import{j as E,N as L,n as x}from"./vendor-vue-BiQC5iF7.js";const F=j({color:String,...R(),...D(),...f(),...b(),...p(),...V(),...y(),...g(),...z()},"VSheet"),q=T()({name:"VSheet",props:F(),setup(e,s){let{slots:a}=s;const{themeClasses:o}=B(e),{backgroundColorClasses:t,backgroundColorStyles:n}=d(()=>e.color),{borderClasses:l}=k(e),{dimensionStyles:r}=h(e),{elevationClasses:m}=S(e),{locationStyles:i}=v(e),{positionClasses:u}=C(e),{roundedClasses:c}=P(e);return N(()=>E(e.tag,{class:x(["v-sheet",o.value,t.value,l.value,m.value,u.value,c.value,e.class]),style:L([n.value,r.value,i.value,e.style])},a)),{}}});export{q as V,F as m}; diff --git a/assets/VSkeletonLoader-DwE_iqTb.js b/assets/VSkeletonLoader-B0OOafGJ.js similarity index 87% rename from assets/VSkeletonLoader-DwE_iqTb.js rename to assets/VSkeletonLoader-B0OOafGJ.js index f1ebc27..0ffc101 100644 --- a/assets/VSkeletonLoader-DwE_iqTb.js +++ b/assets/VSkeletonLoader-B0OOafGJ.js @@ -1 +1 @@ -import{I as f,b as k,a2 as x,$ as y,a as S}from"./index-DGIAsv4W.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-DsKlzgKp.js";import{k as r,m as A,F as _,e as F,n as $}from"./vendor-vue-BiQC5iF7.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(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return r("div",{class:$(["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(e,a)]}function d(e){return e.replace(/\s/g,"").split(",").map(i)}const I=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:I(),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{R as V}; +import{H as f,b as k,a2 as x,$ as y,a as S}from"./index-Ceq_468-.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-rtu3DHX4.js";import{k as r,m as A,F as _,e as F,n as $}from"./vendor-vue-BiQC5iF7.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(e){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return r("div",{class:$(["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(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-k6hfPfa2.js b/assets/VSwitch-d4Yvphn0.js similarity index 76% rename from assets/VSwitch-k6hfPfa2.js rename to assets/VSwitch-d4Yvphn0.js index 1fcebc9..22598a9 100644 --- a/assets/VSwitch-k6hfPfa2.js +++ b/assets/VSwitch-d4Yvphn0.js @@ -1 +1 @@ -import{M as ie,a0 as J,f as Z,K as se,H as re,I as ce,a7 as de,ag as ve,a1 as fe,a8 as me,V as ye,E as Ce}from"./index-DGIAsv4W.js";import{f as Ve,u as be,a as Q,d as ge}from"./VTextField-BurlcggD.js";import{p as G,o as ke,I as W,m as Se,k as p,f as q,n as D,j as he,u as O,ao as ee,_ as we,w as H,aF as Ie}from"./vendor-vuetify-DsKlzgKp.js";import{E as K,t as n,k as r,N as M,n as R,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 X,e as x}from"./vendor-vue-BiQC5iF7.js";const ae=Symbol.for("vuetify:selection-control-group"),te=G({color:String,disabled:{type:Boolean,default:null},defaultsTarget:String,error:Boolean,id:String,inline:Boolean,falseIcon:W,trueIcon:W,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:ke},...p(),...ie(),...Se()},"SelectionControlGroup"),xe=G({...te({defaultsTarget:"VSelectionControl"})},"VSelectionControlGroup");q()({name:"VSelectionControlGroup",props:xe(),emits:{"update:modelValue":e=>!0},setup(e,i){let{slots:f}=i;const l=D(e,"modelValue"),a=K(),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:R(["v-selection-control-group",{"v-selection-control-group--inline":e.inline},e.class]),style:M(e.style),role:e.type==="radio"?"radiogroup":void 0},[(o=f.default)==null?void 0:o.call(f)])}),{}}});const ne=G({label:String,baseColor:String,trueValue:null,falseValue:null,value:null,...p(),...te()},"VSelectionControl");function Re(e){const i=Be(ae,void 0),{densityClasses:f}=se(e),l=D(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:g}=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:g,icon:I}}const Y=q()({name:"VSelectionControl",directives:{vRipple:J},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:g,trueValue:I}=Re(e),m=K(),s=X(!1),y=X(!1),d=$(),P=n(()=>e.id||`input-${m}`),k=n(()=>!e.disabled&&!e.readonly);a==null||a.onForceUpdate(()=>{d.value&&(d.value.checked=t.value)});function S(v){k.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(!k.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,[E,N]=ee(f),T=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]},E,{style:e.style}),[r("div",{class:R(["v-selection-control__wrapper",o.value]),style:M(w.value)},[(B=l.default)==null?void 0:B.call(l,{backgroundColorClasses:b,backgroundColorStyles:g}),Ae(r("div",{class:R(["v-selection-control__input"])},[((_=l.input)==null?void 0:_.call(l,{model:t,textColorClasses:o,textColorStyles:w,backgroundColorClasses:b,backgroundColorStyles:g,inputNode:T,icon:c.value,props:{onFocus:S,onBlur:h,id:P.value}}))??r(le,null,[c.value&&C(Z,{key:"icon",icon:c.value},null),T])]),[[J,!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}}}),Te=G({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...ge(),...ne()},"VSwitch"),ze=q()({name:"VSwitch",inheritAttrs:!1,props:Te(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,i){let{attrs:f,slots:l}=i;const a=D(e,"indeterminate"),u=D(e,"modelValue"),{loaderClasses:c}=de(e),{isFocused:t,focus:o,blur:w}=be(e),b=$(),g=$(),I=Ie&&window.matchMedia("(forced-colors: active)").matches,m=n(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),s=K(),y=n(()=>e.id||`switch-${s}`);function d(){a.value&&(a.value=!1)}function P(k){var S,h;k.stopPropagation(),k.preventDefault(),(h=(S=b.value)==null?void 0:S.input)==null||h.click()}return O(()=>{const[k,S]=ee(f),h=Q.filterProps(e),z=Y.filterProps(e);return C(Q,U({ref:g,class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":a.value},c.value,e.class]},k,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:E,isDisabled:N,isReadonly:T,isValid:B}=A;const _={model:u,isValid:B};return C(Y,U({ref:b},z,{modelValue:u.value,"onUpdate:modelValue":[F=>u.value=F,d],id:v.value,"aria-describedby":E.value,type:"checkbox","aria-checked":a.value?"mixed":void 0,disabled:N.value,readonly:T.value,onFocus:o,onBlur:w},S),{...l,default:F=>{let{backgroundColorClasses:j,backgroundColorStyles:V}=F;return r("div",{class:R(["v-switch__track",I?void 0:j.value]),style:M(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:R(["v-switch__thumb",{"v-switch__thumb--filled":V||e.loading},e.inset||I?void 0:oe.value]),style:M(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:L=>l.loader?l.loader(L):C(ye,{active:L.isActive,color:L.color,indeterminate:!0,size:"16",width:"2"},null)}):V&&C(Z,{key:String(V),icon:V,size:"x-small"},null)]})])])}})}})}),Ce({},g)}});export{ze as V,Y as a,ne as m}; +import{M as ie,a0 as J,f as Z,K as se,G as re,H as ce,a7 as de,ag as ve,a1 as fe,a8 as me,V as ye,I as Ce}from"./index-Ceq_468-.js";import{c as Ve,a as be,b as Q,m as ge}from"./VTextField-DpXLMPq7.js";import{p as U,o as ke,I as W,m as Se,k as p,f as q,n as D,j as he,u as O,as as ee,_ as we,w as H,aF as Ie}from"./vendor-vuetify-rtu3DHX4.js";import{E as K,t as n,k as r,N as G,n as R,p as Pe,q as _e,m as M,R as Ae,F as le,j as C,d as Be,b as $,I as Fe,s as X,e as x}from"./vendor-vue-BiQC5iF7.js";const ae=Symbol.for("vuetify:selection-control-group"),te=U({color:String,disabled:{type:Boolean,default:null},defaultsTarget:String,error:Boolean,id:String,inline:Boolean,falseIcon:W,trueIcon:W,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:ke},...p(),...ie(),...Se()},"SelectionControlGroup"),xe=U({...te({defaultsTarget:"VSelectionControl"})},"VSelectionControlGroup");q()({name:"VSelectionControlGroup",props:xe(),emits:{"update:modelValue":e=>!0},setup(e,i){let{slots:f}=i;const l=D(e,"modelValue"),a=K(),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:R(["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=U({label:String,baseColor:String,trueValue:null,falseValue:null,value:null,...p(),...te()},"VSelectionControl");function Re(e){const i=Be(ae,void 0),{densityClasses:f}=se(e),l=D(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:g}=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:g,icon:I}}const Y=q()({name:"VSelectionControl",directives:{vRipple:J},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:g,trueValue:I}=Re(e),m=K(),s=X(!1),y=X(!1),d=$(),P=n(()=>e.id||`input-${m}`),k=n(()=>!e.disabled&&!e.readonly);a==null||a.onForceUpdate(()=>{d.value&&(d.value.checked=t.value)});function S(v){k.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(!k.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,[N,j]=ee(f),T=r("input",M({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},j),null);return r("div",M({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]},N,{style:e.style}),[r("div",{class:R(["v-selection-control__wrapper",o.value]),style:G(w.value)},[(B=l.default)==null?void 0:B.call(l,{backgroundColorClasses:b,backgroundColorStyles:g}),Ae(r("div",{class:R(["v-selection-control__input"])},[((_=l.input)==null?void 0:_.call(l,{model:t,textColorClasses:o,textColorStyles:w,backgroundColorClasses:b,backgroundColorStyles:g,inputNode:T,icon:c.value,props:{onFocus:S,onBlur:h,id:P.value}}))??r(le,null,[c.value&&C(Z,{key:"icon",icon:c.value},null),T])]),[[J,!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}}}),Te=U({indeterminate:Boolean,inset:Boolean,flat:Boolean,loading:{type:[Boolean,String],default:!1},...ge(),...ne()},"VSwitch"),ze=q()({name:"VSwitch",inheritAttrs:!1,props:Te(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,i){let{attrs:f,slots:l}=i;const a=D(e,"indeterminate"),u=D(e,"modelValue"),{loaderClasses:c}=de(e),{isFocused:t,focus:o,blur:w}=be(e),b=$(),g=$(),I=Ie&&window.matchMedia("(forced-colors: active)").matches,m=n(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),s=K(),y=n(()=>e.id||`switch-${s}`);function d(){a.value&&(a.value=!1)}function P(k){var S,h;k.stopPropagation(),k.preventDefault(),(h=(S=b.value)==null?void 0:S.input)==null||h.click()}return O(()=>{const[k,S]=ee(f),h=Q.filterProps(e),z=Y.filterProps(e);return C(Q,M({ref:g,class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":e.inset},{"v-switch--indeterminate":a.value},c.value,e.class]},k,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:N,isDisabled:j,isReadonly:T,isValid:B}=A;const _={model:u,isValid:B};return C(Y,M({ref:b},z,{modelValue:u.value,"onUpdate:modelValue":[F=>u.value=F,d],id:v.value,"aria-describedby":N.value,type:"checkbox","aria-checked":a.value?"mixed":void 0,disabled:j.value,readonly:T.value,onFocus:o,onBlur:w},S),{...l,default:F=>{let{backgroundColorClasses:E,backgroundColorStyles:V}=F;return r("div",{class:R(["v-switch__track",I?void 0:E.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:E,icon:V,backgroundColorClasses:oe,backgroundColorStyles:ue}=F;return r(le,null,[E,r("div",{class:R(["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:L=>l.loader?l.loader(L):C(ye,{active:L.isActive,color:L.color,indeterminate:!0,size:"16",width:"2"},null)}):V&&C(Z,{key:String(V),icon:V,size:"x-small"},null)]})])])}})}})}),Ce({},g)}});export{ze as V,Y as a,ne as m}; diff --git a/assets/VTable-Cq72iBVc.js b/assets/VTable-CJ8evfI8.js similarity index 91% rename from assets/VTable-Cq72iBVc.js rename to assets/VTable-CJ8evfI8.js index 498c3fa..0682eaf 100644 --- a/assets/VTable-Cq72iBVc.js +++ b/assets/VTable-CJ8evfI8.js @@ -1 +1 @@ -import{aB as G,f as b,h as N,A as ae,an as se,E as M,a3 as ie,u as T,P as le,s as B,p as V,m as U,k as Y,n as ue,a5 as re}from"./vendor-vuetify-DsKlzgKp.js";import{o as ce,I as _,R as K,j as g,k as w,n as E,N as H,b as $,s as C,e as m,t as F,p as de,d as q,m as J,V as ve}from"./vendor-vue-BiQC5iF7.js";import{aa as fe,h as O,m as Q,ab as he,u as me,ac as we,P as ge,ad as ye,ae as be,K as Te,M as Ve}from"./index-DGIAsv4W.js";const Se=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 xe(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 _e(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 Be(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 Ee(){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=>xe(t,o),touchend:t=>_e(t,o),touchmove:t=>Be(t,o)}}function We(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=Ee(o.value);n._touchHandlers=n._touchHandlers??Object.create(null),n._touchHandlers[u]=a,G(a).forEach(d=>{n.addEventListener(d,a[d],i)})}function ke(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];G(i).forEach(r=>{t.removeEventListener(r,i[r])}),delete t._touchHandlers[n]}const R={mounted:We,unmounted:ke},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(),...Q(),...U()},"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}=N(e),{isRtl:i}=ae(),{t:u}=se(),a=fe(e,p),r=$(),d=m(()=>i.value?!e.reverse:e.reverse),f=C(!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=C(0),I=$(void 0),y=m(()=>a.items.value.findIndex(s=>a.selected.value.includes(s.id)));ce(y,(s,c)=>{let l;const h={left:0,top:0};M&&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(!M||!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"}),de(Z,{transition:S,isReversed:f,transitionCount:W,transitionHeight:I,rootRef:r});const v=F(()=>e.continuous||y.value!==0),k=F(()=>e.continuous||y.value!==a.items.value.length-1);function P(){v.value&&a.prev()}function A(){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(O,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(O,l,null):w("div",null,null)),s}),ne=m(()=>e.touch===!1?e.touch:{...{left:()=>{d.value?P():A()},right:()=>{d.value?A():P()},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(),P(),_(()=>{v.value?x(0):x(1)})),(e.direction==="horizontal"&&s.key==="ArrowRight"||e.direction==="vertical"&&s.key==="ArrowDown")&&(s.preventDefault(),A(),_(()=>{k.value?x(1):x(0)}))}function x(s){var h;const c=X.value[s];if(!c)return;(h=(Array.isArray(c)?c[0]:c).el)==null||h.focus()}return T(()=>K(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:I.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}}}),Pe=V({...re(ee(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),Le=b()({name:"VTabsWindow",props:Pe(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:t}=o;const n=q(Se,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,J({_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(),...be(),...ye()},"VWindowItem"),j=b()({name:"VWindowItem",directives:{vTouch:R},props:te(),emits:{"group:selected":e=>!0},setup(e,o){let{slots:t}=o;const n=q(Z),i=he(e,p),{isBooted:u}=me();if(!n||!i)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const a=C(!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 I=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}=we(e,i.isSelected);return T(()=>g(ge,{transition:I.value,disabled:!u.value},{default:()=>{var v;return[K(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}}}),Ae=V({...te()},"VTabsWindowItem"),Me=b()({name:"VTabsWindowItem",props:Ae(),setup(e,o){let{slots:t}=o;return T(()=>{const n=j.filterProps(e);return g(j,J({_as:"VTabsWindowItem"},n,{class:["v-tabs-window-item",e.class],style:e.style}),t)}),{}}}),Ce=V({fixedHeader:Boolean,fixedFooter:Boolean,height:[Number,String],hover:Boolean,striped:{type:String,default:null,validator:e=>["even","odd"].includes(e)},...Y(),...Ve(),...Q(),...U()},"VTable"),$e=b()({name:"VTable",props:Ce(),setup(e,o){let{slots:t,emit:n}=o;const{themeClasses:i}=N(e),{densityClasses:u}=Te(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)]}})),{}}});export{Le as V,Me as a,$e as b,z as c,j as d,Se as e,Ce as m}; +import{az as G,f as b,h as N,A as ae,an as se,E as M,a3 as ie,u as T,P as le,s as B,p as V,m as U,k as Y,n as ue,a5 as re}from"./vendor-vuetify-rtu3DHX4.js";import{o as ce,I as _,R as K,j as g,k as w,n as E,N as H,b as $,s as C,e as m,t as z,p as de,d as q,m as J,V as ve}from"./vendor-vue-BiQC5iF7.js";import{aa as fe,h as F,m as Q,ab as he,u as me,ac as we,P as ge,ad as ye,ae as be,K as Te,M as Ve}from"./index-Ceq_468-.js";const Se=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 xe(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 _e(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 Be(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 Ee(){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=>xe(t,o),touchend:t=>_e(t,o),touchmove:t=>Be(t,o)}}function We(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=Ee(o.value);n._touchHandlers=n._touchHandlers??Object.create(null),n._touchHandlers[u]=a,G(a).forEach(d=>{n.addEventListener(d,a[d],i)})}function ke(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];G(i).forEach(r=>{t.removeEventListener(r,i[r])}),delete t._touchHandlers[n]}const R={mounted:We,unmounted:ke},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(),...Q(),...U()},"VWindow"),O=b()({name:"VWindow",directives:{vTouch:R},props:ee(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:t}=o;const{themeClasses:n}=N(e),{isRtl:i}=ae(),{t:u}=se(),a=fe(e,p),r=$(),d=m(()=>i.value?!e.reverse:e.reverse),f=C(!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=C(0),I=$(void 0),y=m(()=>a.items.value.findIndex(s=>a.selected.value.includes(s.id)));ce(y,(s,c)=>{let l;const h={left:0,top:0};M&&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(!M||!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"}),de(Z,{transition:S,isReversed:f,transitionCount:W,transitionHeight:I,rootRef:r});const v=z(()=>e.continuous||y.value!==0),k=z(()=>e.continuous||y.value!==a.items.value.length-1);function P(){v.value&&a.prev()}function A(){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(F,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(F,l,null):w("div",null,null)),s}),ne=m(()=>e.touch===!1?e.touch:{...{left:()=>{d.value?P():A()},right:()=>{d.value?A():P()},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(),P(),_(()=>{v.value?x(0):x(1)})),(e.direction==="horizontal"&&s.key==="ArrowRight"||e.direction==="vertical"&&s.key==="ArrowDown")&&(s.preventDefault(),A(),_(()=>{k.value?x(1):x(0)}))}function x(s){var h;const c=X.value[s];if(!c)return;(h=(Array.isArray(c)?c[0]:c).el)==null||h.focus()}return T(()=>K(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:I.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}}}),Pe=V({...re(ee(),["continuous","nextIcon","prevIcon","showArrows","touch","mandatory"])},"VTabsWindow"),Le=b()({name:"VTabsWindow",props:Pe(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:t}=o;const n=q(Se,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=O.filterProps(e);return g(O,J({_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(),...be(),...ye()},"VWindowItem"),j=b()({name:"VWindowItem",directives:{vTouch:R},props:te(),emits:{"group:selected":e=>!0},setup(e,o){let{slots:t}=o;const n=q(Z),i=he(e,p),{isBooted:u}=me();if(!n||!i)throw new Error("[Vuetify] VWindowItem must be used inside VWindow");const a=C(!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 I=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}=we(e,i.isSelected);return T(()=>g(ge,{transition:I.value,disabled:!u.value},{default:()=>{var v;return[K(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}}}),Ae=V({...te()},"VTabsWindowItem"),Me=b()({name:"VTabsWindowItem",props:Ae(),setup(e,o){let{slots:t}=o;return T(()=>{const n=j.filterProps(e);return g(j,J({_as:"VTabsWindowItem"},n,{class:["v-tabs-window-item",e.class],style:e.style}),t)}),{}}}),Ce=V({fixedHeader:Boolean,fixedFooter:Boolean,height:[Number,String],hover:Boolean,striped:{type:String,default:null,validator:e=>["even","odd"].includes(e)},...Y(),...Ve(),...Q(),...U()},"VTable"),$e=b()({name:"VTable",props:Ce(),setup(e,o){let{slots:t,emit:n}=o;const{themeClasses:i}=N(e),{densityClasses:u}=Te(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)]}})),{}}});export{Le as V,Me as a,$e as b,O as c,j as d,Se as e,Ce as m}; diff --git a/assets/VTabs-DqmvmKGK.js b/assets/VTabs-B7ztkrUN.js similarity index 83% rename from assets/VTabs-DqmvmKGK.js rename to assets/VTabs-B7ztkrUN.js index 4679c5f..d063443 100644 --- a/assets/VTabs-DqmvmKGK.js +++ b/assets/VTabs-B7ztkrUN.js @@ -1 +1 @@ -import{H as q,I as j,h as M,E as J,J as K,K as L,L as Q,m as Z,M as p}from"./index-DGIAsv4W.js";import{e as F,a as ee,V as te}from"./VTable-Cq72iBVc.js";import{f as G,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-DsKlzgKp.js";import{j as T,k as D,N as de,n as ue,F as Y,m as P,b as R,e as N,t as r}from"./vendor-vue-BiQC5iF7.js";import{b as I,m as ce}from"./VChip-mRzIPuM0.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=G()({name:"VTab",props:_(),setup(e,d){let{slots:C,attrs:t}=d;const{textColorClasses:g,textColorStyles:k}=q(()=>e.sliderColor),{backgroundColorClasses:V,backgroundColorStyles:w}=j(()=>e.sliderColor),h=R(),x=R(),u=N(()=>e.direction==="horizontal"),m=N(()=>{var s,n;return((n=(s=h.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],y=$>H?i[S]-o[S]:i[v]-o[v],U=Math.sign(y)>0?u.value?"right":"bottom":Math.sign(y)<0?u.value?"left":"top":"center",A=(Math.abs(y)+(Math.sign(y)<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}(${y}px) scale${b}(${O})`,`translate${b}(${y/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=h.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=M.filterProps(e);return T(M,P({symbol:F,ref:h,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({},h)}});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=G()({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:h}=j(()=>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=I.filterProps(e),m=!!(t.window||e.items.length>0);return D(Y,null,[T(I,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},h.value,e.style],role:"tablist",symbol:F},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}; +import{G as q,H as I,h as M,I as J,J as K,K as L,L as Q,m as Z,M as p}from"./index-Ceq_468-.js";import{e as j,a as ee,V as te}from"./VTable-CJ8evfI8.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-rtu3DHX4.js";import{j as T,k as D,N as de,n as ue,F as Y,m as P,b as R,e as N,t as r}from"./vendor-vue-BiQC5iF7.js";import{b as G,m as ce}from"./VChip-BdtDOEwz.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),h=R(),x=R(),u=N(()=>e.direction==="horizontal"),m=N(()=>{var s,n;return((n=(s=h.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],y=$>H?i[S]-o[S]:i[v]-o[v],U=Math.sign(y)>0?u.value?"right":"bottom":Math.sign(y)<0?u.value?"left":"top":"center",A=(Math.abs(y)+(Math.sign(y)<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}(${y}px) scale${b}(${O})`,`translate${b}(${y/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=h.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=M.filterProps(e);return T(M,P({symbol:j,ref:h,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({},h)}});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:h}=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},h.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/VTextField-BurlcggD.js b/assets/VTextField-DpXLMPq7.js similarity index 86% rename from assets/VTextField-BurlcggD.js rename to assets/VTextField-DpXLMPq7.js index bc60a7a..6308c85 100644 --- a/assets/VTextField-BurlcggD.js +++ b/assets/VTextField-DpXLMPq7.js @@ -1 +1 @@ -import{j as C,R as ve,V as Ce,k as r,N as Z,n as G,t as V,m as U,E as re,o as J,F as ie,b as H,e as m,d as Ve,s as oe,p as Oe,ag as ze,a0 as je,A as Ue,D as He,I as se,u as Ke,ah as We}from"./vendor-vue-BiQC5iF7.js";import{P as xe,Q as ke,v as Ie,f as qe,a7 as pe,N as Ge,I as Qe,H as Se,a8 as Xe,ag as Ye,as as Je,R as Ze,a9 as ea,K as aa,b as la,a as na,M as ta,av as me,E as ia}from"./index-DGIAsv4W.js";import{f as Q,u as X,p as $,k as ee,m as fe,ag as p,an as sa,ap as _e,g as Pe,n as de,h as Be,A as we,P as ua,T as oa,G as ra,a4 as da,s as ca,I as ae,a6 as va,w as ue,l as fa,C as ye,aj as ga,ao as ma,a5 as Fe}from"./vendor-vuetify-DsKlzgKp.js";const ya=$({active:Boolean,disabled:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...ee(),...ke({transition:{component:Ie}})},"VCounter"),ba=Q()({name:"VCounter",functional:!0,props:ya(),setup(e,t){let{slots:u}=t;const n=V(()=>e.max?`${e.value} / ${e.max}`:String(e.value));return X(()=>C(xe,{transition:e.transition},{default:()=>[ve(r("div",{class:G(["v-counter",{"text-error":e.max&&!e.disabled&&parseFloat(e.value)>parseFloat(e.max)},e.class]),style:Z(e.style)},[u.default?u.default({counter:n.value,max:e.max,value:e.value}):n.value]),[[Ce,e.active]])]})),{}}}),ha=$({text:String,onClick:p(),...ee(),...fe()},"VLabel"),Ca=Q()({name:"VLabel",props:ha(),setup(e,t){let{slots:u}=t;return X(()=>{var n;return r("label",{class:G(["v-label",{"v-label--clickable":!!e.onClick},e.class]),style:Z(e.style),onClick:e.onClick},[e.text,(n=u.default)==null?void 0:n.call(u)])}),{}}}),Va=$({floating:Boolean,...ee()},"VFieldLabel"),te=Q()({name:"VFieldLabel",props:Va(),setup(e,t){let{slots:u}=t;return X(()=>C(Ca,{class:G(["v-field-label",{"v-field-label--floating":e.floating},e.class]),style:Z(e.style)},u)),{}}});function Me(e){const{t}=sa();function u(n){let{name:l,color:a,...y}=n;const b={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[l],x=e[`onClick:${l}`];function I(s){s.key!=="Enter"&&s.key!==" "||(s.preventDefault(),s.stopPropagation(),_e(x,new PointerEvent("click",s)))}const o=x&&b?t(`$vuetify.input.${b}`,e.label??""):void 0;return C(qe,U({icon:e[`${l}Icon`],"aria-label":o,onClick:x,onKeydown:I,color:a},y),null)}return{InputIcon:u}}const Ae=$({focused:Boolean,"onUpdate:focused":p()},"focus");function De(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Pe();const u=de(e,"focused"),n=V(()=>({[`${t}--focused`]:u.value}));function l(){u.value=!0}function a(){u.value=!1}return{focusClasses:n,isFocused:u,focus:l,blur:a}}const xa=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],Re=$({appendInnerIcon:ae,bgColor:String,clearable:Boolean,clearIcon:{type:ae,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:ae,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:e=>xa.includes(e)},"onClick:clear":p(),"onClick:appendInner":p(),"onClick:prependInner":p(),...ee(),...ea(),...Ze(),...fe()},"VField"),be=Q()({name:"VField",inheritAttrs:!1,props:{id:String,details:Boolean,labelId:String,...Ae(),...Re()},emits:{"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{attrs:u,emit:n,slots:l}=t;const{themeClasses:a}=Be(e),{loaderClasses:y}=pe(e),{focusClasses:b,isFocused:x,focus:I,blur:o}=De(e),{InputIcon:s}=Me(e),{roundedClasses:c}=Ge(e),{rtlClasses:v}=we(),k=V(()=>e.dirty||e.active),B=V(()=>!!(e.label||l.label)),h=V(()=>!e.singleLine&&B.value),T=re(),_=m(()=>e.id||`input-${T}`),P=V(()=>e.details?`${_.value}-messages`:void 0),i=H(),g=H(),A=H(),d=m(()=>["plain","underlined"].includes(e.variant)),f=m(()=>e.error||e.disabled?void 0:k.value&&x.value?e.color:e.baseColor),w=m(()=>{if(!(!e.iconColor||e.glow&&!x.value))return e.iconColor===!0?f.value:e.iconColor}),{backgroundColorClasses:N,backgroundColorStyles:E}=Qe(()=>e.bgColor),{textColorClasses:O,textColorStyles:R}=Se(f);J(k,F=>{if(h.value&&!ua()){const L=i.value.$el,z=g.value.$el;requestAnimationFrame(()=>{const j=oa(L),M=new ra(z),q=M.x-j.x,Y=M.y-j.y-(j.height/2-M.height/2),le=M.width/.75,ne=Math.abs(le-j.width)>1?{maxWidth:ca(le)}:void 0,ce=getComputedStyle(L),ge=getComputedStyle(z),Le=parseFloat(ce.transitionDuration)*1e3||150,Te=parseFloat(ge.getPropertyValue("--v-field-label-scale")),Ne=ge.getPropertyValue("color");L.style.visibility="visible",z.style.visibility="hidden",da(L,{transform:`translate(${q}px, ${Y}px) scale(${Te})`,color:Ne,...ne},{duration:Le,easing:va,direction:F?"normal":"reverse"}).finished.then(()=>{L.style.removeProperty("visibility"),z.style.removeProperty("visibility")})})}},{flush:"post"});const S=m(()=>({isActive:k,isFocused:x,controlRef:A,iconColor:w,blur:o,focus:I})),D=V(()=>{const F=!k.value;return{"aria-hidden":F,for:F?void 0:_.value}}),K=V(()=>{const F=h.value&&k.value;return{"aria-hidden":F,for:F?void 0:_.value}});function W(F){F.target!==document.activeElement&&F.preventDefault()}return X(()=>{var q;const F=e.variant==="outlined",L=!!(l["prepend-inner"]||e.prependInnerIcon),z=!!(e.clearable||l.clear)&&!e.disabled,j=!!(l["append-inner"]||e.appendInnerIcon||z),M=()=>l.label?l.label({...S.value,label:e.label,props:{for:_.value}}):e.label;return r("div",U({class:["v-field",{"v-field--active":k.value,"v-field--appended":j,"v-field--center-affix":e.centerAffix??!d.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":L,"v-field--reverse":e.reverse,"v-field--single-line":e.singleLine,"v-field--no-label":!M(),[`v-field--variant-${e.variant}`]:!0},a.value,N.value,b.value,y.value,c.value,v.value,e.class],style:[E.value,e.style],onClick:W},u),[r("div",{class:"v-field__overlay"},null),C(Xe,{name:"v-field",active:!!e.loading,color:e.error?"error":typeof e.loading=="string"?e.loading:e.color},{default:l.loader}),L&&r("div",{key:"prepend",class:"v-field__prepend-inner"},[l["prepend-inner"]?l["prepend-inner"](S.value):e.prependInnerIcon&&C(s,{key:"prepend-icon",name:"prependInner",color:w.value},null)]),r("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(e.variant)&&h.value&&C(te,U({key:"floating-label",ref:g,class:[O.value],floating:!0},D.value,{style:R.value}),{default:()=>[M()]}),B.value&&C(te,U({key:"label",ref:i,id:e.labelId},K.value),{default:()=>[M()]}),((q=l.default)==null?void 0:q.call(l,{...S.value,props:{id:_.value,class:"v-field__input","aria-describedby":P.value},focus:I,blur:o}))??r("div",{id:_.value,class:"v-field__input","aria-describedby":P.value},null)]),z&&C(Je,{key:"clear"},{default:()=>[ve(r("div",{class:"v-field__clearable",onMousedown:Y=>{Y.preventDefault(),Y.stopPropagation()}},[C(Ye,{defaults:{VIcon:{icon:e.clearIcon}}},{default:()=>[l.clear?l.clear({...S.value,props:{onFocus:I,onBlur:o,onClick:e["onClick:clear"],tabindex:-1}}):C(s,{name:"clear",onFocus:I,onBlur:o,tabindex:-1},null)]})]),[[Ce,e.dirty]])]}),j&&r("div",{key:"append",class:"v-field__append-inner"},[l["append-inner"]?l["append-inner"](S.value):e.appendInnerIcon&&C(s,{key:"append-icon",name:"appendInner",color:w.value},null)]),r("div",{class:G(["v-field__outline",O.value]),style:Z(R.value)},[F&&r(ie,null,[r("div",{class:"v-field__outline__start"},null),h.value&&r("div",{class:"v-field__outline__notch"},[C(te,U({ref:g,floating:!0},D.value),{default:()=>[M()]})]),r("div",{class:"v-field__outline__end"},null)]),d.value&&h.value&&C(te,U({ref:g,floating:!0},D.value),{default:()=>[M()]})])])}),{controlRef:A,fieldIconColor:w}}}),ka=$({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...ee(),...ke({transition:{component:Ie,leaveAbsolute:!0,group:!0}})},"VMessages"),Ia=Q()({name:"VMessages",props:ka(),setup(e,t){let{slots:u}=t;const n=m(()=>ue(e.messages)),{textColorClasses:l,textColorStyles:a}=Se(()=>e.color);return X(()=>C(xe,{transition:e.transition,tag:"div",class:G(["v-messages",l.value,e.class]),style:Z([a.value,e.style])},{default:()=>[e.active&&n.value.map((y,b)=>r("div",{class:"v-messages__message",key:`${b}-${n.value}`},[u.message?u.message({message:y}):y]))]})),{}}}),$e=Symbol.for("vuetify:form"),Ta=$({disabled:Boolean,fastFail:Boolean,readonly:Boolean,modelValue:{type:Boolean,default:null},validateOn:{type:String,default:"input"}},"form");function Na(e){const t=de(e,"modelValue"),u=V(()=>e.disabled),n=V(()=>e.readonly),l=oe(!1),a=H([]),y=H([]);async function b(){const o=[];let s=!0;y.value=[],l.value=!0;for(const c of a.value){const v=await c.validate();if(v.length>0&&(s=!1,o.push({id:c.id,errorMessages:v})),!s&&e.fastFail)break}return y.value=o,l.value=!1,{valid:s,errors:y.value}}function x(){a.value.forEach(o=>o.reset())}function I(){a.value.forEach(o=>o.resetValidation())}return J(a,()=>{let o=0,s=0;const c=[];for(const v of a.value)v.isValid===!1?(s++,c.push({id:v.id,errorMessages:v.errorMessages})):v.isValid===!0&&o++;y.value=c,t.value=s>0?!1:o===a.value.length?!0:null},{deep:!0,flush:"post"}),Oe($e,{register:o=>{let{id:s,vm:c,validate:v,reset:k,resetValidation:B}=o;a.value.some(h=>h.id===s),a.value.push({id:s,validate:v,reset:k,resetValidation:B,vm:ze(c),isValid:null,errorMessages:[]})},unregister:o=>{a.value=a.value.filter(s=>s.id!==o)},update:(o,s,c)=>{const v=a.value.find(k=>k.id===o);v&&(v.isValid=s,v.errorMessages=c)},isDisabled:u,isReadonly:n,isValidating:l,isValid:t,items:a,validateOn:V(()=>e.validateOn)}),{errors:y,isDisabled:u,isReadonly:n,isValidating:l,isValid:t,items:a,validate:b,reset:x,resetValidation:I}}function Sa(e){const t=Ve($e,null);return{...t,isReadonly:m(()=>!!((e==null?void 0:e.readonly)??(t==null?void 0:t.isReadonly.value))),isDisabled:m(()=>!!((e==null?void 0:e.disabled)??(t==null?void 0:t.isDisabled.value)))}}const _a=Symbol.for("vuetify:rules");function Pa(e){const t=Ve(_a,null);if(!e){if(!t)throw new Error("Could not find Vuetify rules injection");return t.aliases}return(t==null?void 0:t.resolve(e))??V(e)}const Ba=$({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,...Ae()},"validation");function wa(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Pe(),u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:re();const n=de(e,"modelValue"),l=m(()=>e.validationValue===void 0?n.value:e.validationValue),a=Sa(e),y=Pa(()=>e.rules),b=H([]),x=oe(!0),I=m(()=>!!(ue(n.value===""?null:n.value).length||ue(l.value===""?null:l.value).length)),o=m(()=>{var i;return(i=e.errorMessages)!=null&&i.length?ue(e.errorMessages).concat(b.value).slice(0,Math.max(0,Number(e.maxErrors))):b.value}),s=m(()=>{var A;let i=(e.validateOn??((A=a.validateOn)==null?void 0:A.value))||"input";i==="lazy"&&(i="input lazy"),i==="eager"&&(i="input eager");const g=new Set((i==null?void 0:i.split(" "))??[]);return{input:g.has("input"),blur:g.has("blur")||g.has("input")||g.has("invalid-input"),invalidInput:g.has("invalid-input"),lazy:g.has("lazy"),eager:g.has("eager")}}),c=m(()=>{var i;return e.error||(i=e.errorMessages)!=null&&i.length?!1:e.rules.length?x.value?b.value.length||s.value.lazy?null:!0:!b.value.length:!0}),v=oe(!1),k=m(()=>({[`${t}--error`]:c.value===!1,[`${t}--dirty`]:I.value,[`${t}--disabled`]:a.isDisabled.value,[`${t}--readonly`]:a.isReadonly.value})),B=fa("validation"),h=m(()=>e.name??Ke(u));je(()=>{var i;(i=a.register)==null||i.call(a,{id:h.value,vm:B,validate:P,reset:T,resetValidation:_})}),Ue(()=>{var i;(i=a.unregister)==null||i.call(a,h.value)}),He(async()=>{var i;s.value.lazy||await P(!s.value.eager),(i=a.update)==null||i.call(a,h.value,c.value,o.value)}),ye(()=>s.value.input||s.value.invalidInput&&c.value===!1,()=>{J(l,()=>{if(l.value!=null)P();else if(e.focused){const i=J(()=>e.focused,g=>{g||P(),i()})}})}),ye(()=>s.value.blur,()=>{J(()=>e.focused,i=>{i||P()})}),J([c,o],()=>{var i;(i=a.update)==null||i.call(a,h.value,c.value,o.value)});async function T(){n.value=null,await se(),await _()}async function _(){x.value=!0,s.value.lazy?b.value=[]:await P(!s.value.eager)}async function P(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const g=[];v.value=!0;for(const A of y.value){if(g.length>=Number(e.maxErrors??1))break;const f=await(typeof A=="function"?A:()=>A)(l.value);if(f!==!0){if(f!==!1&&typeof f!="string"){console.warn(`${f} is not a valid value. Rule functions must return boolean true or a string.`);continue}g.push(f||"")}}return b.value=g,v.value=!1,x.value=i,b.value}return{errorMessages:o,isDirty:I,isDisabled:a.isDisabled,isReadonly:a.isReadonly,isPristine:x,isValid:c,isValidating:v,reset:T,resetValidation:_,validate:P,validationClasses:k}}const Ee=$({id:String,appendIcon:ae,baseColor:String,centerAffix:{type:Boolean,default:!0},color:String,glow:Boolean,iconColor:[Boolean,String],prependIcon:ae,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":p(),"onClick:append":p(),...ee(),...ta(),...ga(na(),["maxWidth","minWidth","width"]),...fe(),...Ba()},"VInput"),he=Q()({name:"VInput",props:{...Ee()},emits:{"update:modelValue":e=>!0},setup(e,t){let{attrs:u,slots:n,emit:l}=t;const{densityClasses:a}=aa(e),{dimensionStyles:y}=la(e),{themeClasses:b}=Be(e),{rtlClasses:x}=we(),{InputIcon:I}=Me(e),o=re(),s=m(()=>e.id||`input-${o}`),{errorMessages:c,isDirty:v,isDisabled:k,isReadonly:B,isPristine:h,isValid:T,isValidating:_,reset:P,resetValidation:i,validate:g,validationClasses:A}=wa(e,"v-input",s),d=m(()=>{var S;return(S=e.errorMessages)!=null&&S.length||!h.value&&c.value.length?c.value:e.hint&&(e.persistentHint||e.focused)?e.hint:e.messages}),f=V(()=>d.value.length>0),w=V(()=>!e.hideDetails||e.hideDetails==="auto"&&(f.value||!!n.details)),N=m(()=>w.value?`${s.value}-messages`:void 0),E=m(()=>({id:s,messagesId:N,isDirty:v,isDisabled:k,isReadonly:B,isPristine:h,isValid:T,isValidating:_,hasDetails:w,reset:P,resetValidation:i,validate:g})),O=V(()=>e.error||e.disabled?void 0:e.focused?e.color:e.baseColor),R=V(()=>{if(e.iconColor)return e.iconColor===!0?O.value:e.iconColor});return X(()=>{var K,W;const S=!!(n.prepend||e.prependIcon),D=!!(n.append||e.appendIcon);return r("div",{class:G(["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,b.value,x.value,A.value,e.class]),style:Z([y.value,e.style])},[S&&r("div",{key:"prepend",class:"v-input__prepend"},[n.prepend?n.prepend(E.value):e.prependIcon&&C(I,{key:"prepend-icon",name:"prepend",color:R.value},null)]),n.default&&r("div",{class:"v-input__control"},[(K=n.default)==null?void 0:K.call(n,E.value)]),D&&r("div",{key:"append",class:"v-input__append"},[n.append?n.append(E.value):e.appendIcon&&C(I,{key:"append-icon",name:"append",color:R.value},null)]),w.value&&r("div",{id:N.value,class:"v-input__details",role:"alert","aria-live":"polite"},[C(Ia,{active:f.value,messages:d.value},{message:n.message}),(W=n.details)==null?void 0:W.call(n,E.value)])])}),{reset:P,resetValidation:i,validate:g,isValid:T,errorMessages:c}}}),Fa=$({autocomplete:String},"autocomplete");function Ma(e){const t=re(),u=oe(0),n=V(()=>e.autocomplete==="suppress"),l=V(()=>{if(e.name)return n.value?`${e.name}-${t}-${u.value}`:e.name}),a=V(()=>n.value?"off":e.autocomplete);return{isSuppressing:n,fieldAutocomplete:a,fieldName:l,update:()=>u.value=new Date().getTime()}}function Aa(e){function t(u,n){if(!e.autofocus||!u)return;const l=n[0].target,a=l.matches("input,textarea")?l:l.querySelector("input,textarea");a==null||a.focus()}return{onIntersect:t}}const Da=["color","file","time","date","datetime-local","week","month"],Ra=$({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,...Fa(),...Fe(Ee(),["direction"]),...Re()},"VTextField"),Oa=Q()({name:"VTextField",directives:{vIntersect:me},inheritAttrs:!1,props:Ra(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{attrs:u,emit:n,slots:l}=t;const a=de(e,"modelValue",void 0,d=>Object.is(d,-0)?"-0":d),{isFocused:y,focus:b,blur:x}=De(e),{onIntersect:I}=Aa(e),o=m(()=>typeof e.counterValue=="function"?e.counterValue(a.value):typeof e.counterValue=="number"?e.counterValue:(a.value??"").toString().length),s=m(()=>{if(u.maxlength)return u.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),c=m(()=>["plain","underlined"].includes(e.variant)),v=H(),k=H(),B=H(),h=Ma(e),T=m(()=>Da.includes(e.type)||e.persistentPlaceholder||y.value||e.active);function _(){h.isSuppressing.value&&h.update(),y.value||b(),se(()=>{var d;B.value!==document.activeElement&&((d=B.value)==null||d.focus())})}function P(d){n("mousedown:control",d),d.target!==B.value&&(_(),d.preventDefault())}function i(d){n("click:control",d)}function g(d,f){d.stopPropagation(),_(),se(()=>{f(),_e(e["onClick:clear"],d)})}function A(d){var O;const f=d.target;if(!((O=e.modelModifiers)!=null&&O.trim&&["text","search","password","tel","url"].includes(e.type))){a.value=f.value;return}const w=f.value,N=f.selectionStart,E=f.selectionEnd;a.value=w,se(()=>{let R=0;w.trimStart().length===f.value.length&&(R=w.length-f.value.length),N!=null&&(f.selectionStart=N-R),E!=null&&(f.selectionEnd=E-R)})}return X(()=>{const d=!!(l.counter||e.counter!==!1&&e.counter!=null),f=!!(d||l.details),[w,N]=ma(u),{modelValue:E,...O}=he.filterProps(e),R=be.filterProps(e);return C(he,U({ref:v,modelValue:a.value,"onUpdate:modelValue":S=>a.value=S,class:["v-text-field",{"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-input--plain-underlined":c.value},e.class],style:e.style},w,O,{centerAffix:!c.value,focused:y.value}),{...l,default:S=>{let{id:D,isDisabled:K,isDirty:W,isReadonly:F,isValid:L,hasDetails:z,reset:j}=S;return C(be,U({ref:k,onMousedown:P,onClick:i,"onClick:clear":M=>g(M,j),role:e.role},Fe(R,["onClick:clear"]),{id:D.value,labelId:`${D.value}-label`,active:T.value||W.value,dirty:W.value||e.dirty,disabled:K.value,focused:y.value,details:z.value,error:L.value===!1}),{...l,default:M=>{let{props:{class:q,...Y},controlRef:le}=M;const ne=r("input",U({ref:ce=>B.value=le.value=ce,value:a.value,onInput:A,autofocus:e.autofocus,readonly:F.value,disabled:K.value,name:h.fieldName.value,autocomplete:h.fieldAutocomplete.value,placeholder:e.placeholder,size:1,role:e.role,type:e.type,onFocus:b,onBlur:x,"aria-labelledby":`${D.value}-label`},Y,N),null);return r(ie,null,[e.prefix&&r("span",{class:"v-text-field__prefix"},[r("span",{class:"v-text-field__prefix__text"},[e.prefix])]),ve(l.default?r("div",{class:G(q),"data-no-activator":""},[l.default({id:D}),ne]):We(ne,{class:q}),[[me,I,null,{once:!0}]]),e.suffix&&r("span",{class:"v-text-field__suffix"},[r("span",{class:"v-text-field__suffix__text"},[e.suffix])])])}})},details:f?S=>{var D;return r(ie,null,[(D=l.details)==null?void 0:D.call(l,S),d&&r(ie,null,[r("span",null,null),C(ba,{active:e.persistentCounter||y.value,value:o.value,max:s.value,disabled:e.disabled},l.counter)])])}:void 0})}),ia({},v,k,B)}});export{Oa as V,he as a,be as b,ba as c,Ee as d,Sa as e,Ca as f,Ae as g,Me as h,Ra as i,Na as j,Ta as k,Ma as l,Re as m,Aa as n,Fa as o,De as u}; +import{j as C,R as ve,V as Ce,k as r,N as Z,n as Q,t as V,m as U,E as re,o as J,F as ie,b as H,e as m,d as Ve,s as oe,p as Oe,ag as ze,a0 as je,A as Ue,D as He,I as se,u as Ke,ah as We}from"./vendor-vue-BiQC5iF7.js";import{P as xe,Q as ke,v as Ie,f as qe,a7 as Ge,N as Qe,H as Xe,G as Se,a8 as Ye,ag as pe,au as Je,R as Ze,a9 as ea,K as aa,b as la,a as na,M as ta,ax as me,I as ia}from"./index-Ceq_468-.js";import{f as X,u as Y,p as $,k as ee,m as fe,ag as G,an as sa,aH as _e,g as Pe,n as de,h as Be,A as we,P as ua,T as oa,G as ra,a4 as da,s as ca,I as ae,a6 as va,w as ue,l as fa,C as ye,aj as ga,as as ma,a5 as Fe}from"./vendor-vuetify-rtu3DHX4.js";const ya=$({active:Boolean,disabled:Boolean,max:[Number,String],value:{type:[Number,String],default:0},...ee(),...ke({transition:{component:Ie}})},"VCounter"),ba=X()({name:"VCounter",functional:!0,props:ya(),setup(e,t){let{slots:u}=t;const n=V(()=>e.max?`${e.value} / ${e.max}`:String(e.value));return Y(()=>C(xe,{transition:e.transition},{default:()=>[ve(r("div",{class:Q(["v-counter",{"text-error":e.max&&!e.disabled&&parseFloat(e.value)>parseFloat(e.max)},e.class]),style:Z(e.style)},[u.default?u.default({counter:n.value,max:e.max,value:e.value}):n.value]),[[Ce,e.active]])]})),{}}}),ha=$({text:String,onClick:G(),...ee(),...fe()},"VLabel"),Ca=X()({name:"VLabel",props:ha(),setup(e,t){let{slots:u}=t;return Y(()=>{var n;return r("label",{class:Q(["v-label",{"v-label--clickable":!!e.onClick},e.class]),style:Z(e.style),onClick:e.onClick},[e.text,(n=u.default)==null?void 0:n.call(u)])}),{}}}),Va=$({floating:Boolean,...ee()},"VFieldLabel"),te=X()({name:"VFieldLabel",props:Va(),setup(e,t){let{slots:u}=t;return Y(()=>C(Ca,{class:Q(["v-field-label",{"v-field-label--floating":e.floating},e.class]),style:Z(e.style)},u)),{}}});function Me(e){const{t}=sa();function u(n){let{name:l,color:a,...y}=n;const b={prepend:"prependAction",prependInner:"prependAction",append:"appendAction",appendInner:"appendAction",clear:"clear"}[l],x=e[`onClick:${l}`];function I(s){s.key!=="Enter"&&s.key!==" "||(s.preventDefault(),s.stopPropagation(),_e(x,new PointerEvent("click",s)))}const o=x&&b?t(`$vuetify.input.${b}`,e.label??""):void 0;return C(qe,U({icon:e[`${l}Icon`],"aria-label":o,onClick:x,onKeydown:I,color:a},y),null)}return{InputIcon:u}}const Ae=$({focused:Boolean,"onUpdate:focused":G()},"focus");function De(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Pe();const u=de(e,"focused"),n=V(()=>({[`${t}--focused`]:u.value}));function l(){u.value=!0}function a(){u.value=!1}return{focusClasses:n,isFocused:u,focus:l,blur:a}}const xa=["underlined","outlined","filled","solo","solo-inverted","solo-filled","plain"],Re=$({appendInnerIcon:ae,bgColor:String,clearable:Boolean,clearIcon:{type:ae,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:ae,reverse:Boolean,singleLine:Boolean,variant:{type:String,default:"filled",validator:e=>xa.includes(e)},"onClick:clear":G(),"onClick:appendInner":G(),"onClick:prependInner":G(),...ee(),...ea(),...Ze(),...fe()},"VField"),be=X()({name:"VField",inheritAttrs:!1,props:{id:String,details:Boolean,labelId:String,...Ae(),...Re()},emits:{"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{attrs:u,emit:n,slots:l}=t;const{themeClasses:a}=Be(e),{loaderClasses:y}=Ge(e),{focusClasses:b,isFocused:x,focus:I,blur:o}=De(e),{InputIcon:s}=Me(e),{roundedClasses:c}=Qe(e),{rtlClasses:v}=we(),k=V(()=>e.dirty||e.active),B=V(()=>!!(e.label||l.label)),h=V(()=>!e.singleLine&&B.value),T=re(),_=m(()=>e.id||`input-${T}`),P=V(()=>e.details?`${_.value}-messages`:void 0),i=H(),g=H(),A=H(),d=m(()=>["plain","underlined"].includes(e.variant)),f=m(()=>e.error||e.disabled?void 0:k.value&&x.value?e.color:e.baseColor),w=m(()=>{if(!(!e.iconColor||e.glow&&!x.value))return e.iconColor===!0?f.value:e.iconColor}),{backgroundColorClasses:N,backgroundColorStyles:E}=Xe(()=>e.bgColor),{textColorClasses:O,textColorStyles:R}=Se(f);J(k,F=>{if(h.value&&!ua()){const L=i.value.$el,z=g.value.$el;requestAnimationFrame(()=>{const j=oa(L),M=new ra(z),q=M.x-j.x,p=M.y-j.y-(j.height/2-M.height/2),le=M.width/.75,ne=Math.abs(le-j.width)>1?{maxWidth:ca(le)}:void 0,ce=getComputedStyle(L),ge=getComputedStyle(z),Le=parseFloat(ce.transitionDuration)*1e3||150,Te=parseFloat(ge.getPropertyValue("--v-field-label-scale")),Ne=ge.getPropertyValue("color");L.style.visibility="visible",z.style.visibility="hidden",da(L,{transform:`translate(${q}px, ${p}px) scale(${Te})`,color:Ne,...ne},{duration:Le,easing:va,direction:F?"normal":"reverse"}).finished.then(()=>{L.style.removeProperty("visibility"),z.style.removeProperty("visibility")})})}},{flush:"post"});const S=m(()=>({isActive:k,isFocused:x,controlRef:A,iconColor:w,blur:o,focus:I})),D=V(()=>{const F=!k.value;return{"aria-hidden":F,for:F?void 0:_.value}}),K=V(()=>{const F=h.value&&k.value;return{"aria-hidden":F,for:F?void 0:_.value}});function W(F){F.target!==document.activeElement&&F.preventDefault()}return Y(()=>{var q;const F=e.variant==="outlined",L=!!(l["prepend-inner"]||e.prependInnerIcon),z=!!(e.clearable||l.clear)&&!e.disabled,j=!!(l["append-inner"]||e.appendInnerIcon||z),M=()=>l.label?l.label({...S.value,label:e.label,props:{for:_.value}}):e.label;return r("div",U({class:["v-field",{"v-field--active":k.value,"v-field--appended":j,"v-field--center-affix":e.centerAffix??!d.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":L,"v-field--reverse":e.reverse,"v-field--single-line":e.singleLine,"v-field--no-label":!M(),[`v-field--variant-${e.variant}`]:!0},a.value,N.value,b.value,y.value,c.value,v.value,e.class],style:[E.value,e.style],onClick:W},u),[r("div",{class:"v-field__overlay"},null),C(Ye,{name:"v-field",active:!!e.loading,color:e.error?"error":typeof e.loading=="string"?e.loading:e.color},{default:l.loader}),L&&r("div",{key:"prepend",class:"v-field__prepend-inner"},[l["prepend-inner"]?l["prepend-inner"](S.value):e.prependInnerIcon&&C(s,{key:"prepend-icon",name:"prependInner",color:w.value},null)]),r("div",{class:"v-field__field","data-no-activator":""},[["filled","solo","solo-inverted","solo-filled"].includes(e.variant)&&h.value&&C(te,U({key:"floating-label",ref:g,class:[O.value],floating:!0},D.value,{style:R.value}),{default:()=>[M()]}),B.value&&C(te,U({key:"label",ref:i,id:e.labelId},K.value),{default:()=>[M()]}),((q=l.default)==null?void 0:q.call(l,{...S.value,props:{id:_.value,class:"v-field__input","aria-describedby":P.value},focus:I,blur:o}))??r("div",{id:_.value,class:"v-field__input","aria-describedby":P.value},null)]),z&&C(Je,{key:"clear"},{default:()=>[ve(r("div",{class:"v-field__clearable",onMousedown:p=>{p.preventDefault(),p.stopPropagation()}},[C(pe,{defaults:{VIcon:{icon:e.clearIcon}}},{default:()=>[l.clear?l.clear({...S.value,props:{onFocus:I,onBlur:o,onClick:e["onClick:clear"],tabindex:-1}}):C(s,{name:"clear",onFocus:I,onBlur:o,tabindex:-1},null)]})]),[[Ce,e.dirty]])]}),j&&r("div",{key:"append",class:"v-field__append-inner"},[l["append-inner"]?l["append-inner"](S.value):e.appendInnerIcon&&C(s,{key:"append-icon",name:"appendInner",color:w.value},null)]),r("div",{class:Q(["v-field__outline",O.value]),style:Z(R.value)},[F&&r(ie,null,[r("div",{class:"v-field__outline__start"},null),h.value&&r("div",{class:"v-field__outline__notch"},[C(te,U({ref:g,floating:!0},D.value),{default:()=>[M()]})]),r("div",{class:"v-field__outline__end"},null)]),d.value&&h.value&&C(te,U({ref:g,floating:!0},D.value),{default:()=>[M()]})])])}),{controlRef:A,fieldIconColor:w}}}),ka=$({active:Boolean,color:String,messages:{type:[Array,String],default:()=>[]},...ee(),...ke({transition:{component:Ie,leaveAbsolute:!0,group:!0}})},"VMessages"),Ia=X()({name:"VMessages",props:ka(),setup(e,t){let{slots:u}=t;const n=m(()=>ue(e.messages)),{textColorClasses:l,textColorStyles:a}=Se(()=>e.color);return Y(()=>C(xe,{transition:e.transition,tag:"div",class:Q(["v-messages",l.value,e.class]),style:Z([a.value,e.style])},{default:()=>[e.active&&n.value.map((y,b)=>r("div",{class:"v-messages__message",key:`${b}-${n.value}`},[u.message?u.message({message:y}):y]))]})),{}}}),$e=Symbol.for("vuetify:form"),Ta=$({disabled:Boolean,fastFail:Boolean,readonly:Boolean,modelValue:{type:Boolean,default:null},validateOn:{type:String,default:"input"}},"form");function Na(e){const t=de(e,"modelValue"),u=V(()=>e.disabled),n=V(()=>e.readonly),l=oe(!1),a=H([]),y=H([]);async function b(){const o=[];let s=!0;y.value=[],l.value=!0;for(const c of a.value){const v=await c.validate();if(v.length>0&&(s=!1,o.push({id:c.id,errorMessages:v})),!s&&e.fastFail)break}return y.value=o,l.value=!1,{valid:s,errors:y.value}}function x(){a.value.forEach(o=>o.reset())}function I(){a.value.forEach(o=>o.resetValidation())}return J(a,()=>{let o=0,s=0;const c=[];for(const v of a.value)v.isValid===!1?(s++,c.push({id:v.id,errorMessages:v.errorMessages})):v.isValid===!0&&o++;y.value=c,t.value=s>0?!1:o===a.value.length?!0:null},{deep:!0,flush:"post"}),Oe($e,{register:o=>{let{id:s,vm:c,validate:v,reset:k,resetValidation:B}=o;a.value.some(h=>h.id===s),a.value.push({id:s,validate:v,reset:k,resetValidation:B,vm:ze(c),isValid:null,errorMessages:[]})},unregister:o=>{a.value=a.value.filter(s=>s.id!==o)},update:(o,s,c)=>{const v=a.value.find(k=>k.id===o);v&&(v.isValid=s,v.errorMessages=c)},isDisabled:u,isReadonly:n,isValidating:l,isValid:t,items:a,validateOn:V(()=>e.validateOn)}),{errors:y,isDisabled:u,isReadonly:n,isValidating:l,isValid:t,items:a,validate:b,reset:x,resetValidation:I}}function Sa(e){const t=Ve($e,null);return{...t,isReadonly:m(()=>!!((e==null?void 0:e.readonly)??(t==null?void 0:t.isReadonly.value))),isDisabled:m(()=>!!((e==null?void 0:e.disabled)??(t==null?void 0:t.isDisabled.value)))}}const _a=Symbol.for("vuetify:rules");function Pa(e){const t=Ve(_a,null);if(!e){if(!t)throw new Error("Could not find Vuetify rules injection");return t.aliases}return(t==null?void 0:t.resolve(e))??V(e)}const Ba=$({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,...Ae()},"validation");function wa(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Pe(),u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:re();const n=de(e,"modelValue"),l=m(()=>e.validationValue===void 0?n.value:e.validationValue),a=Sa(e),y=Pa(()=>e.rules),b=H([]),x=oe(!0),I=m(()=>!!(ue(n.value===""?null:n.value).length||ue(l.value===""?null:l.value).length)),o=m(()=>{var i;return(i=e.errorMessages)!=null&&i.length?ue(e.errorMessages).concat(b.value).slice(0,Math.max(0,Number(e.maxErrors))):b.value}),s=m(()=>{var A;let i=(e.validateOn??((A=a.validateOn)==null?void 0:A.value))||"input";i==="lazy"&&(i="input lazy"),i==="eager"&&(i="input eager");const g=new Set((i==null?void 0:i.split(" "))??[]);return{input:g.has("input"),blur:g.has("blur")||g.has("input")||g.has("invalid-input"),invalidInput:g.has("invalid-input"),lazy:g.has("lazy"),eager:g.has("eager")}}),c=m(()=>{var i;return e.error||(i=e.errorMessages)!=null&&i.length?!1:e.rules.length?x.value?b.value.length||s.value.lazy?null:!0:!b.value.length:!0}),v=oe(!1),k=m(()=>({[`${t}--error`]:c.value===!1,[`${t}--dirty`]:I.value,[`${t}--disabled`]:a.isDisabled.value,[`${t}--readonly`]:a.isReadonly.value})),B=fa("validation"),h=m(()=>e.name??Ke(u));je(()=>{var i;(i=a.register)==null||i.call(a,{id:h.value,vm:B,validate:P,reset:T,resetValidation:_})}),Ue(()=>{var i;(i=a.unregister)==null||i.call(a,h.value)}),He(async()=>{var i;s.value.lazy||await P(!s.value.eager),(i=a.update)==null||i.call(a,h.value,c.value,o.value)}),ye(()=>s.value.input||s.value.invalidInput&&c.value===!1,()=>{J(l,()=>{if(l.value!=null)P();else if(e.focused){const i=J(()=>e.focused,g=>{g||P(),i()})}})}),ye(()=>s.value.blur,()=>{J(()=>e.focused,i=>{i||P()})}),J([c,o],()=>{var i;(i=a.update)==null||i.call(a,h.value,c.value,o.value)});async function T(){n.value=null,await se(),await _()}async function _(){x.value=!0,s.value.lazy?b.value=[]:await P(!s.value.eager)}async function P(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;const g=[];v.value=!0;for(const A of y.value){if(g.length>=Number(e.maxErrors??1))break;const f=await(typeof A=="function"?A:()=>A)(l.value);if(f!==!0){if(f!==!1&&typeof f!="string"){console.warn(`${f} is not a valid value. Rule functions must return boolean true or a string.`);continue}g.push(f||"")}}return b.value=g,v.value=!1,x.value=i,b.value}return{errorMessages:o,isDirty:I,isDisabled:a.isDisabled,isReadonly:a.isReadonly,isPristine:x,isValid:c,isValidating:v,reset:T,resetValidation:_,validate:P,validationClasses:k}}const Ee=$({id:String,appendIcon:ae,baseColor:String,centerAffix:{type:Boolean,default:!0},color:String,glow:Boolean,iconColor:[Boolean,String],prependIcon:ae,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":G(),"onClick:append":G(),...ee(),...ta(),...ga(na(),["maxWidth","minWidth","width"]),...fe(),...Ba()},"VInput"),he=X()({name:"VInput",props:{...Ee()},emits:{"update:modelValue":e=>!0},setup(e,t){let{attrs:u,slots:n,emit:l}=t;const{densityClasses:a}=aa(e),{dimensionStyles:y}=la(e),{themeClasses:b}=Be(e),{rtlClasses:x}=we(),{InputIcon:I}=Me(e),o=re(),s=m(()=>e.id||`input-${o}`),{errorMessages:c,isDirty:v,isDisabled:k,isReadonly:B,isPristine:h,isValid:T,isValidating:_,reset:P,resetValidation:i,validate:g,validationClasses:A}=wa(e,"v-input",s),d=m(()=>{var S;return(S=e.errorMessages)!=null&&S.length||!h.value&&c.value.length?c.value:e.hint&&(e.persistentHint||e.focused)?e.hint:e.messages}),f=V(()=>d.value.length>0),w=V(()=>!e.hideDetails||e.hideDetails==="auto"&&(f.value||!!n.details)),N=m(()=>w.value?`${s.value}-messages`:void 0),E=m(()=>({id:s,messagesId:N,isDirty:v,isDisabled:k,isReadonly:B,isPristine:h,isValid:T,isValidating:_,hasDetails:w,reset:P,resetValidation:i,validate:g})),O=V(()=>e.error||e.disabled?void 0:e.focused?e.color:e.baseColor),R=V(()=>{if(e.iconColor)return e.iconColor===!0?O.value:e.iconColor});return Y(()=>{var K,W;const S=!!(n.prepend||e.prependIcon),D=!!(n.append||e.appendIcon);return r("div",{class:Q(["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,b.value,x.value,A.value,e.class]),style:Z([y.value,e.style])},[S&&r("div",{key:"prepend",class:"v-input__prepend"},[n.prepend?n.prepend(E.value):e.prependIcon&&C(I,{key:"prepend-icon",name:"prepend",color:R.value},null)]),n.default&&r("div",{class:"v-input__control"},[(K=n.default)==null?void 0:K.call(n,E.value)]),D&&r("div",{key:"append",class:"v-input__append"},[n.append?n.append(E.value):e.appendIcon&&C(I,{key:"append-icon",name:"append",color:R.value},null)]),w.value&&r("div",{id:N.value,class:"v-input__details",role:"alert","aria-live":"polite"},[C(Ia,{active:f.value,messages:d.value},{message:n.message}),(W=n.details)==null?void 0:W.call(n,E.value)])])}),{reset:P,resetValidation:i,validate:g,isValid:T,errorMessages:c}}}),Fa=$({autocomplete:String},"autocomplete");function Ma(e){const t=re(),u=oe(0),n=V(()=>e.autocomplete==="suppress"),l=V(()=>{if(e.name)return n.value?`${e.name}-${t}-${u.value}`:e.name}),a=V(()=>n.value?"off":e.autocomplete);return{isSuppressing:n,fieldAutocomplete:a,fieldName:l,update:()=>u.value=new Date().getTime()}}function Aa(e){function t(u,n){if(!e.autofocus||!u)return;const l=n[0].target,a=l.matches("input,textarea")?l:l.querySelector("input,textarea");a==null||a.focus()}return{onIntersect:t}}const Da=["color","file","time","date","datetime-local","week","month"],Ra=$({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,...Fa(),...Fe(Ee(),["direction"]),...Re()},"VTextField"),Oa=X()({name:"VTextField",directives:{vIntersect:me},inheritAttrs:!1,props:Ra(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0},setup(e,t){let{attrs:u,emit:n,slots:l}=t;const a=de(e,"modelValue",void 0,d=>Object.is(d,-0)?"-0":d),{isFocused:y,focus:b,blur:x}=De(e),{onIntersect:I}=Aa(e),o=m(()=>typeof e.counterValue=="function"?e.counterValue(a.value):typeof e.counterValue=="number"?e.counterValue:(a.value??"").toString().length),s=m(()=>{if(u.maxlength)return u.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),c=m(()=>["plain","underlined"].includes(e.variant)),v=H(),k=H(),B=H(),h=Ma(e),T=m(()=>Da.includes(e.type)||e.persistentPlaceholder||y.value||e.active);function _(){h.isSuppressing.value&&h.update(),y.value||b(),se(()=>{var d;B.value!==document.activeElement&&((d=B.value)==null||d.focus())})}function P(d){n("mousedown:control",d),d.target!==B.value&&(_(),d.preventDefault())}function i(d){n("click:control",d)}function g(d,f){d.stopPropagation(),_(),se(()=>{f(),_e(e["onClick:clear"],d)})}function A(d){var O;const f=d.target;if(!((O=e.modelModifiers)!=null&&O.trim&&["text","search","password","tel","url"].includes(e.type))){a.value=f.value;return}const w=f.value,N=f.selectionStart,E=f.selectionEnd;a.value=w,se(()=>{let R=0;w.trimStart().length===f.value.length&&(R=w.length-f.value.length),N!=null&&(f.selectionStart=N-R),E!=null&&(f.selectionEnd=E-R)})}return Y(()=>{const d=!!(l.counter||e.counter!==!1&&e.counter!=null),f=!!(d||l.details),[w,N]=ma(u),{modelValue:E,...O}=he.filterProps(e),R=be.filterProps(e);return C(he,U({ref:v,modelValue:a.value,"onUpdate:modelValue":S=>a.value=S,class:["v-text-field",{"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-input--plain-underlined":c.value},e.class],style:e.style},w,O,{centerAffix:!c.value,focused:y.value}),{...l,default:S=>{let{id:D,isDisabled:K,isDirty:W,isReadonly:F,isValid:L,hasDetails:z,reset:j}=S;return C(be,U({ref:k,onMousedown:P,onClick:i,"onClick:clear":M=>g(M,j),role:e.role},Fe(R,["onClick:clear"]),{id:D.value,labelId:`${D.value}-label`,active:T.value||W.value,dirty:W.value||e.dirty,disabled:K.value,focused:y.value,details:z.value,error:L.value===!1}),{...l,default:M=>{let{props:{class:q,...p},controlRef:le}=M;const ne=r("input",U({ref:ce=>B.value=le.value=ce,value:a.value,onInput:A,autofocus:e.autofocus,readonly:F.value,disabled:K.value,name:h.fieldName.value,autocomplete:h.fieldAutocomplete.value,placeholder:e.placeholder,size:1,role:e.role,type:e.type,onFocus:b,onBlur:x,"aria-labelledby":`${D.value}-label`},p,N),null);return r(ie,null,[e.prefix&&r("span",{class:"v-text-field__prefix"},[r("span",{class:"v-text-field__prefix__text"},[e.prefix])]),ve(l.default?r("div",{class:Q(q),"data-no-activator":""},[l.default({id:D}),ne]):We(ne,{class:q}),[[me,I,null,{once:!0}]]),e.suffix&&r("span",{class:"v-text-field__suffix"},[r("span",{class:"v-text-field__suffix__text"},[e.suffix])])])}})},details:f?S=>{var D;return r(ie,null,[(D=l.details)==null?void 0:D.call(l,S),d&&r(ie,null,[r("span",null,null),C(ba,{active:e.persistentCounter||y.value,value:o.value,max:s.value,disabled:e.disabled},l.counter)])])}:void 0})}),ia({},v,k,B)}});export{Oa as V,De as a,he as b,Ca as c,Ae as d,be as e,ba as f,Re as g,Me as h,Ra as i,Na as j,Ta as k,Ma as l,Ee as m,Aa as n,Fa as o,Sa as u}; diff --git a/assets/VTextarea-vGWmTJww.js b/assets/VTextarea-UKN-Avq_.js similarity index 75% rename from assets/VTextarea-vGWmTJww.js rename to assets/VTextarea-UKN-Avq_.js index 4dfad07..fecef77 100644 --- a/assets/VTextarea-vGWmTJww.js +++ b/assets/VTextarea-UKN-Avq_.js @@ -1 +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,aj as de,n as fe,I as C,e as P,s as ve}from"./vendor-vue-BiQC5iF7.js";import{u as me,l as xe,a as $,b as j,c as ge,n as he,m as we,d as ye,o as Ve}from"./VTextField-BurlcggD.js";import{av as O,E as be}from"./index-DGIAsv4W.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-DsKlzgKp.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(ye(),["direction"]),...we()},"VTextarea"),Te=Fe()({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=Ce(e,"modelValue"),{isFocused:y,focus:q,blur:J}=me(e),{onIntersect:K}=he(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(),F=xe(e),Y=P(()=>e.persistentPlaceholder||y.value||e.active);function N(){var t;F.isSuppressing.value&&F.update(),v.value!==document.activeElement&&((t=v.value)==null||t.focus()),y.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(),V=w(Number(e.rows)),S=P(()=>["plain","underlined"].includes(e.variant));re(()=>{e.autoGrow||(V.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);V.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(V,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}=$.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,g,{centerAffix:V.value===1&&!S.value,focused:y.value}),{...o,default:i=>{let{id:h,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:h.value,active:Y.value||p.value,labelId:`${h.value}-label`,centerAffix:V.value===1&&!S.value,dirty:p.value||e.dirty,disabled:_.value,focused:y.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:_.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),[[O,{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(ge,{active:e.persistentCounter||y.value,value:L.value,max:Q.value,disabled:e.disabled},o.counter)])])}:void 0})}),be({},D,b,v)}});export{Te as V}; +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,aj as de,n as fe,I as C,e as P,s as ve}from"./vendor-vue-BiQC5iF7.js";import{a as me,l as xe,b as $,e as j,f as ge,n as he,g as we,m as ye,o as Ve}from"./VTextField-DpXLMPq7.js";import{ax as O,I as be}from"./index-Ceq_468-.js";import{f as Fe,n as Ce,a0 as Pe,u as Ie,as as ke,s as B,z as Re,aH as He,p as Ne,a5 as Se}from"./vendor-vuetify-rtu3DHX4.js";const Ae=Ne({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(),...Se(ye(),["direction"]),...we()},"VTextarea"),Te=Fe()({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=Ce(e,"modelValue"),{isFocused:y,focus:q,blur:J}=me(e),{onIntersect:K}=he(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(),F=xe(e),Y=P(()=>e.persistentPlaceholder||y.value||e.active);function H(){var t;F.isSuppressing.value&&F.update(),v.value!==document.activeElement&&((t=v.value)==null||t.focus()),y.value||q()}function Z(t){H(),k("click:control",t)}function ee(t){k("mousedown:control",t)}function te(t){t.stopPropagation(),H(),C(()=>{l.value="",He(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(),V=w(Number(e.rows)),N=P(()=>["plain","underlined"].includes(e.variant));re(()=>{e.autoGrow||(V.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);V.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(V,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}=$.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":N.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:V.value===1&&!N.value,focused:y.value}),{...o,default:i=>{let{id:h,isDisabled:_,isDirty:G,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:h.value,active:Y.value||G.value,labelId:`${h.value}-label`,centerAffix:V.value===1&&!N.value,dirty:G.value||e.dirty,disabled:_.value,focused:y.value,details:oe.value,error:ne.value===!1}),{...o,default:ue=>{let{props:{class:p,...E},controlRef:ie}=ue;return r(M,null,[e.prefix&&r("span",{class:"v-text-field__prefix"},[e.prefix]),U(r("textarea",z({ref:S=>v.value=ie.value=S,class:p,value:l.value,onInput:ae,autofocus:e.autofocus,readonly:le.value,disabled:_.value,placeholder:e.placeholder,rows:e.rows,name:F.fieldName.value,autocomplete:F.fieldAutocomplete.value,onFocus:H,onBlur:J,"aria-labelledby":`${h.value}-label`},E,x),null),[[O,{handler:K},null,{once:!0}]]),e.autoGrow&&U(r("textarea",{class:fe([p,"v-textarea__sizer"]),id:`${E.id}-sizer`,"onUpdate:modelValue":S=>l.value=S,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(ge,{active:e.persistentCounter||y.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/VTimePicker-BApLLZ8X.js b/assets/VTimePicker-DXcm5dub.js similarity index 89% rename from assets/VTimePicker-BApLLZ8X.js rename to assets/VTimePicker-DXcm5dub.js index 17dff33..836f92b 100644 --- a/assets/VTimePicker-BApLLZ8X.js +++ b/assets/VTimePicker-DXcm5dub.js @@ -1 +1 @@ -import{H as be,I as xe,E as Ne,h as me,K as Ce,M as He}from"./index-DGIAsv4W.js";import{f as p,u as ee,p as Q,aN as Ae,an as ge,n as G,z as ve,a5 as le}from"./vendor-vuetify-DsKlzgKp.js";import{o as E,q as Te,k as A,N as ae,n as z,b as y,e as V,j as $,s as De,a1 as fe,F as Be,I as Ie,D as Fe,m as ne,t as $e}from"./vendor-vue-BiQC5iF7.js";import{V as Ue}from"./VTextField-BurlcggD.js";import{V as ke,m as Re}from"./VPicker-SM18M-iq.js";const Ee=Q({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"),we=p()({name:"VTimePickerClock",props:Ee(),emits:{change:e=>!0,input:e=>!0},setup(e,d){let{emit:f}=d;const k=y(null),x=y(null),v=y(void 0),u=y(!1),o=y(null),i=y(null),_=Ae(n=>f("change",n),750),{textColorClasses:N,textColorStyles:S}=be(()=>e.color),{backgroundColorClasses:h,backgroundColorStyles:a}=xe(()=>e.color),b=V(()=>e.max-e.min+1),g=V(()=>e.double?b.value/2:b.value),s=V(()=>360/g.value),T=V(()=>s.value*Math.PI/180),I=V(()=>e.modelValue==null?e.min:e.modelValue),q=V(()=>.62),j=V(()=>{const n=[];for(let c=e.min;c<=e.max;c=c+e.step)n.push(c);return n});E(()=>e.modelValue,n=>{v.value=n});function D(n){v.value!==n&&(v.value=n),f("input",n)}function B(n){return!e.allowedValues||e.allowedValues(n)}function L(n){if(!e.scrollable||e.disabled)return;n.preventDefault();const c=Math.sign(-n.deltaY||1);let w=I.value;do w=w+c,w=(w-e.min+b.value)%b.value+e.min;while(!B(w)&&w!==I.value);w!==e.displayedValue&&D(w),_(w)}function K(n){return e.double&&n-e.min>=g.value}function U(n){return K(n)?q.value:1}function r(n){const c=e.rotate*Math.PI/180;return{x:Math.sin((n-e.min)*T.value+c)*U(n),y:-Math.cos((n-e.min)*T.value+c)*U(n)}}function M(n,c){const w=(Math.round(n/s.value)+(c?g.value:0))%b.value+e.min;return n<360-s.value/2?w:c?e.max-g.value+1:e.min}function R(n){const{x:c,y:w}=r(n);return{left:`${Math.round(50+c*50)}%`,top:`${Math.round(50+w*50)}%`}}function t(n,c){const w=c.x-n.x,W=c.y-n.y;return Math.sqrt(w*w+W*W)}function l(n,c){const w=2*Math.atan2(c.y-n.y-t(n,c),c.x-n.x);return Math.abs(w*180/Math.PI)}function C(n){o.value===null&&(o.value=n),i.value=n,D(n)}function m(n){var de,se;if(n.preventDefault(),!u.value&&n.type!=="click"||!k.value)return;const{width:c,top:w,left:W}=(de=k.value)==null?void 0:de.getBoundingClientRect(),{width:te}=((se=x.value)==null?void 0:se.getBoundingClientRect())??{width:0},{clientX:Me,clientY:Se}="touches"in n?n.touches[0]:n,ie={x:c/2,y:-c/2},oe={x:Me-W,y:w-Se},re=Math.round(l(ie,oe)-e.rotate+360)%360,ce=e.double&&t(ie,oe)<(te+te*q.value)/4,Pe=Math.ceil(15/s.value);let Y;for(let Z=0;ZA("div",{class:z([{"v-time-picker-clock":!0,"v-time-picker-clock--indeterminate":e.modelValue==null,"v-time-picker-clock--readonly":e.readonly}]),onMousedown:P,onTouchstart:P,onWheel:L,ref:k},[A("div",{class:"v-time-picker-clock__inner",ref:x},[A("div",{class:z([{"v-time-picker-clock__hand":!0,"v-time-picker-clock__hand--inner":K(e.modelValue)},N.value]),style:ae([{transform:`rotate(${e.rotate+s.value*(I.value-e.min)}deg) scaleY(${U(I.value)})`},S.value])},null),j.value.map(n=>{const c=n===I.value;return A("div",{class:z([{"v-time-picker-clock__item":!0,"v-time-picker-clock__item--active":c,"v-time-picker-clock__item--disabled":e.disabled||!B(n)},c&&h.value]),style:ae([R(n),c&&a.value])},[A("span",null,[e.format(n)])])})])]))}}),Le=Q({active:Boolean,color:String,disabled:Boolean,label:String,modelValue:String,error:String,showHint:Boolean,readonly:Boolean},"VTimePickerField"),ue=p()({name:"VTimePickerField",props:Le(),emits:{"update:modelValue":e=>!0},setup(e,d){let{emit:f}=d;const{textColorClasses:k,textColorStyles:x}=be(()=>e.color),v=y(),u=De(!1);function o(i){if(["Backspace","Delete"].includes(i.key)){i.preventDefault();const _=i.target;_.value="",f("update:modelValue",null)}}return ee(()=>$(Ue,{ref:v,_as:"VTimePickerField",autocomplete:"off",class:z(["v-time-picker-controls__time__field",{"v-time-picker-controls__time__field--active":e.active},e.active?k.value:[]]),style:ae(e.active?x.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??(u.value?"":"--"),"onUpdate:modelValue":i=>f("update:modelValue",i),onKeydown:o,onFocus:()=>u.value=!0,onBlur:()=>u.value=!1},null)),Ne({},v)}});function H(e){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return String(e).padStart(d,"0")}function ye(e){return e?(e-1)%12+1:12}function J(e,d){return e%12+(d==="pm"?12:0)}function X(e){const d=e.replaceAll(/\D/g,"");return d.length>0?Number(d):null}function Ke(e,d,f){{if(e===23&&d)return{value:0};if(e===0&&!d)return{value:23}}return{value:e+(d?1:-1)}}function ze(e,d){return e===59&&d?0:e===0&&!d?59:e+(d?1:-1)}const Ve=Q({allowedHours:[Function,Array],allowedMinutes:[Function,Array],allowedSeconds:[Function,Array],max:String,min:String},"time-validation");function _e(e){const d=V(()=>{const v=e.min?Number(e.min.split(":")[0]):0,u=e.max?Number(e.max.split(":")[0]):23;return o=>ou?!1:Array.isArray(e.allowedHours)?e.allowedHours.includes(o):typeof e.allowedHours=="function"?e.allowedHours(o):!0}),f=V(()=>{const[v,u]=e.min?e.min.split(":").map(Number):[0,0],[o,i]=e.max?e.max.split(":").map(Number):[23,59],_=v*60+u,N=o*60+i;return(S,h)=>{if(S!==null){const a=60*S+h;if(a<_||a>N)return!1}return Array.isArray(e.allowedMinutes)?e.allowedMinutes.includes(h):typeof e.allowedMinutes=="function"?e.allowedMinutes(h):!0}}),k=V(()=>{const[v,u,o]=e.min?e.min.split(":").map(Number):[0,0,0],[i,_,N]=e.max?e.max.split(":").map(Number):[23,59,59],S=v*3600+u*60+(o||0),h=i*3600+_*60+(N||0);return(a,b,g)=>{if(a!==null&&b!==null){const s=3600*a+60*b+g;if(sh)return!1}return Array.isArray(e.allowedSeconds)?e.allowedSeconds.includes(g):typeof e.allowedSeconds=="function"?e.allowedSeconds(g):!0}});function x(v,u,o){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,_=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;const N=v==="hour"?d.value:v==="minute"?a=>f.value(i,a):a=>k.value(i,_,a),S=v==="hour"?a=>Ke(a,o).value:a=>ze(a,o),h=v==="hour"?24:60;for(let a=1;a<=h&&(u=S(u),!N(u));a++);return u}return{isAllowedHour:d,isAllowedMinute:f,isAllowedSecond:k,findNextAllowed:x}}const qe=Q({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,...Ve()},"VTimePickerControls"),he=p()({name:"VTimePickerControls",props:qe(),emits:{"update:period":e=>!0,"update:viewMode":e=>!0,"update:hour":e=>!0,"update:minute":e=>!0,"update:second":e=>!0},setup(e,d){let{emit:f}=d;const{t:k}=ge(),{isAllowedHour:x,isAllowedMinute:v,isAllowedSecond:u,findNextAllowed:o}=_e(e),i=V(()=>e.hour!==null?e.ampm?J(Number(e.hour),e.period??"am"):Number(e.hour):null),_=V(()=>e.minute!==null?Number(e.minute):null),N=V(()=>{var t;return e.hour===null?!0:((t=x.value)==null?void 0:t.call(x,Number(i.value)))??!0}),S=V(()=>{var t;return e.minute===null?!0:((t=v.value)==null?void 0:t.call(v,i.value,Number(e.minute)))??!0}),h=V(()=>{var t;return e.second===null?!0:((t=u.value)==null?void 0:t.call(u,i.value,_.value,Number(e.second)))??!0}),a={in:t=>{if(t==null||isNaN(Number(t)))return null;const l=Number(t);return e.ampm?H(ye(l)):H(l)},out:t=>{if(isNaN(Number(t))||t==null||t==="")return null;const l=typeof t=="string"?X(t):Number(t);return l===null?null:e.ampm?J(l,e.period??"am"):ve(l,0,23)}},b=G(e,"hour",void 0,a.in,a.out),g={in:t=>t!=null&&!isNaN(Number(t))?H(`${t}`):null,out:t=>{if(isNaN(Number(t))||t==null||t==="")return null;const l=typeof t=="string"?X(t):Number(t);return l!==null?ve(l,0,59):null}},s=G(e,"minute",void 0,g.in,g.out),T=G(e,"second",void 0,g.in,g.out);function I(t){if(!["ArrowUp","ArrowDown"].includes(t.key))return;t.preventDefault(),t.stopPropagation();const l=e.period==="am",C=e.ampm?J(Number(b.value??0),l?"am":"pm"):Number(b.value??0),m=o("hour",C,t.key==="ArrowUp"),P=l&&m>=12||!l&&m<12;e.ampm&&P?(f("update:period",e.period==="am"?"pm":"am"),Ie(()=>b.value=H(m))):b.value=H(m)}function q(t){if(!["ArrowUp","ArrowDown"].includes(t.key))return;t.preventDefault(),t.stopPropagation();const l=Number(s.value??0),C=o("minute",l,t.key==="ArrowUp",i.value);s.value=H(C)}function j(t){if(!["ArrowUp","ArrowDown"].includes(t.key))return;t.preventDefault(),t.stopPropagation();const l=Number(T.value??0),C=o("second",l,t.key==="ArrowUp",i.value,_.value);T.value=H(C)}function D(t,l,C){return m=>{if(!m.data)return;const P=m.target,{value:F,selectionStart:O,selectionEnd:n}=P??{};if(X(m.data)===null){m.preventDefault();return}const c=F?F.slice(0,O)+m.data+F.slice(n):m.data;if(c.length>2){if(O===n&&n===0&&m.data.trim().startsWith("0")){m.preventDefault(),P.value=c.trim().substring(0,2),C(P.value),m.data.trim().length===1&&P.setSelectionRange(1,1);return}if(O===n&&n===1&&F.startsWith("0")){m.preventDefault(),P.value=c.trim().substring(0,2),C(P.value);return}const W=e.viewMode==="hour"?e.ampm?12:23:59;if(X(c)>W){m.preventDefault(),P.value=H(String(X(m.data)).substring(0,2)),C(P.value);return}}const w=t(c);l(w)&&m.preventDefault()}}function B(t){f("update:period",t)}const L=y(),K=y(),U=y();E(()=>e.viewMode,(t,l)=>{switch(l){case"hour":L.value.blur();break;case"minute":K.value.blur();break;case"second":U.value.blur();break}});const r=D(a.out,t=>a.in(t)===b.value,t=>b.value=t),M=D(g.out,t=>g.in(t)===s.value,t=>s.value=t),R=D(g.out,t=>g.in(t)===T.value,t=>T.value=t);return ee(()=>A("div",{class:"v-time-picker-controls"},[A("div",{class:z({"v-time-picker-controls__time":!0,"v-time-picker-controls__time--with-ampm":e.ampm,"v-time-picker-controls__time--with-seconds":e.useSeconds})},[$(ue,{ref:L,active:e.viewMode==="hour",color:e.color,disabled:e.disabled,label:k("$vuetify.timePicker.hour"),showHint:e.inputHints,error:N.value?void 0:k("$vuetify.timePicker.notAllowed"),modelValue:b.value,"onUpdate:modelValue":t=>b.value=t,onKeydown:I,onBeforeinput:r,onFocus:()=>f("update:viewMode","hour")},null),A("span",{class:"v-time-picker-controls__time__separator"},[fe(":")]),$(ue,{ref:K,active:e.viewMode==="minute",color:e.color,disabled:e.disabled,label:k("$vuetify.timePicker.minute"),showHint:e.inputHints,error:S.value?void 0:k("$vuetify.timePicker.notAllowed"),modelValue:s.value,"onUpdate:modelValue":t=>s.value=t,onKeydown:q,onBeforeinput:M,onFocus:()=>f("update:viewMode","minute")},null),e.useSeconds&&A("span",{key:"secondsDivider",class:"v-time-picker-controls__time__separator"},[fe(":")]),e.useSeconds&&A(Be,null,[$(ue,{key:"secondsVal",ref:U,active:e.viewMode==="second",color:e.color,disabled:e.disabled,label:k("$vuetify.timePicker.second"),showHint:e.inputHints,error:h.value?void 0:k("$vuetify.timePicker.notAllowed"),modelValue:T.value,"onUpdate:modelValue":t=>T.value=t,onKeydown:j,onBeforeinput:R,onFocus:()=>f("update:viewMode","second")},null)]),e.ampm&&A("div",{class:"v-time-picker-controls__ampm"},[$(me,{active:e.period==="am",color:e.period==="am"?e.color:void 0,class:z({"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:k("$vuetify.timePicker.am"),variant:e.disabled&&e.period==="am"?"elevated":"tonal",onClick:()=>e.period!=="am"?B("am"):null},null),$(me,{active:e.period==="pm",color:e.period==="pm"?e.color:void 0,class:z({"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:k("$vuetify.timePicker.pm"),variant:e.disabled&&e.period==="pm"?"elevated":"tonal",onClick:()=>e.period!=="pm"?B("pm"):null},null)])])])),{}}}),Oe=Q({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"},...Ve(),...le(Re({title:"$vuetify.timePicker.title"}),["landscape"]),...He()},"VTimePicker"),Je=p()({name:"VTimePicker",props:Oe(),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,d){let{emit:f,slots:k}=d;const{t:x}=ge(),{densityClasses:v}=Ce(e),u=y(null),o=y(null),i=y(null),_=y(null),N=y(null),S=y(null),h=G(e,"period","am"),a=G(e,"viewMode","hour"),b=y(null),g=y(null),s=V(()=>e.format==="ampm"),{isAllowedHour:T,isAllowedMinute:I,isAllowedSecond:q}=_e(e),j=$e(()=>e.modelValue!==null&&u.value===null&&o.value===null&&(!e.useSeconds||i.value===null));function D(){const r=B();r!==null&&r!==e.modelValue&&f("update:modelValue",r),j.value&&f("update:modelValue",null)}E(u,D),E(o,D),E(i,D),E(h,(r,M)=>{u.value==null||r===M||(r==="pm"&&u.value<12?u.value=u.value+12:r==="am"&&u.value>=12&&(u.value=u.value-12))}),E(()=>e.modelValue,r=>L(r)),E(()=>e.useSeconds,(r,M)=>{M&&!r&&a.value==="second"&&(a.value="minute"),!r&&i.value!==null&&(i.value=null)}),Fe(()=>{L(e.modelValue)});function B(){return u.value!=null&&o.value!=null&&(!e.useSeconds||i.value!=null)?`${H(u.value)}:${H(o.value)}`+(e.useSeconds?`:${H(i.value)}`:""):null}function L(r){if(r==null||r==="")u.value=null,o.value=null,i.value=null;else if(r instanceof Date)u.value=r.getHours(),o.value=r.getMinutes(),i.value=r.getSeconds();else{const[M,,R,,t,l]=r.trim().toLowerCase().match(/^(\d+):(\d+)(:(\d+))?([ap]m)?$/)||new Array(6);u.value=l?J(parseInt(M,10),l):parseInt(M,10),o.value=parseInt(R,10),i.value=parseInt(t||0,10)}h.value=u.value==null||u.value<12?"am":"pm"}function K(r){a.value==="hour"?u.value=s.value?J(r,h.value):r:a.value==="minute"?o.value=r:i.value=r}function U(r){switch(a.value||"hour"){case"hour":f("update:hour",r);break;case"minute":f("update:minute",r);break;case"second":f("update:second",r);break}const M=u.value!==null&&o.value!==null&&(e.useSeconds?i.value!==null:!0);a.value==="hour"?a.value="minute":e.useSeconds&&a.value==="minute"&&(a.value="second"),!(u.value===_.value&&o.value===N.value&&(!e.useSeconds||i.value===S.value)||B()===null)&&(_.value=u.value,N.value=o.value,e.useSeconds&&(S.value=i.value),M&&D())}ee(()=>{const r=le(ke.filterProps(e),["hideHeader"]),M=he.filterProps(e),R=we.filterProps(le(e,["format","modelValue","min","max"])),t=a.value==="hour"?T.value:a.value==="minute"?l=>I.value(u.value,l):l=>q.value(u.value,o.value,l);return $(ke,ne(r,{color:void 0,class:["v-time-picker",`v-time-picker--variant-${e.variant}`,e.class,v.value],hideHeader:e.hideHeader&&e.variant!=="input",style:e.style}),{title:()=>{var l;return((l=k.title)==null?void 0:l.call(k))??A("div",{class:"v-time-picker__title"},[x(e.title)])},header:()=>$(he,ne(M,{ampm:s.value,hour:u.value,minute:o.value,period:h.value,second:i.value,viewMode:a.value,inputHints:e.variant==="input","onUpdate:hour":l=>u.value=l,"onUpdate:minute":l=>o.value=l,"onUpdate:second":l=>i.value=l,"onUpdate:period":l=>h.value=l,"onUpdate:viewMode":l=>a.value=l,ref:b}),null),default:()=>$(we,ne(R,{allowedValues:t,double:a.value==="hour"&&!s.value,format:a.value==="hour"?s.value?ye:l=>l:l=>H(l,2),max:a.value==="hour"?s.value&&h.value==="am"?11:23:59,min:a.value==="hour"&&s.value&&h.value==="pm"?12:0,size:20,step:a.value==="hour"?1:5,modelValue:a.value==="hour"?u.value:a.value==="minute"?o.value:i.value,onChange:U,onInput:K,ref:g}),null),actions:k.actions})})}});export{Je as V}; +import{G as be,H as xe,I as Ne,h as me,K as Ce,M as He}from"./index-Ceq_468-.js";import{f as p,u as ee,p as Q,aP as Ae,an as ge,n as X,z as ve,a5 as le}from"./vendor-vuetify-rtu3DHX4.js";import{o as L,q as Te,k as A,N as ae,n as z,b as y,e as V,j as $,s as De,a1 as fe,F as Be,I as Ie,D as Fe,m as ne,t as $e}from"./vendor-vue-BiQC5iF7.js";import{V as Ue}from"./VTextField-DpXLMPq7.js";import{V as ke,m as Re}from"./VPicker-DxbAs-x1.js";const Le=Q({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"),we=p()({name:"VTimePickerClock",props:Le(),emits:{change:e=>!0,input:e=>!0},setup(e,d){let{emit:f}=d;const k=y(null),x=y(null),v=y(void 0),u=y(!1),o=y(null),i=y(null),_=Ae(n=>f("change",n),750),{textColorClasses:N,textColorStyles:S}=be(()=>e.color),{backgroundColorClasses:h,backgroundColorStyles:a}=xe(()=>e.color),b=V(()=>e.max-e.min+1),g=V(()=>e.double?b.value/2:b.value),s=V(()=>360/g.value),T=V(()=>s.value*Math.PI/180),I=V(()=>e.modelValue==null?e.min:e.modelValue),q=V(()=>.62),j=V(()=>{const n=[];for(let c=e.min;c<=e.max;c=c+e.step)n.push(c);return n});L(()=>e.modelValue,n=>{v.value=n});function D(n){v.value!==n&&(v.value=n),f("input",n)}function B(n){return!e.allowedValues||e.allowedValues(n)}function E(n){if(!e.scrollable||e.disabled)return;n.preventDefault();const c=Math.sign(-n.deltaY||1);let w=I.value;do w=w+c,w=(w-e.min+b.value)%b.value+e.min;while(!B(w)&&w!==I.value);w!==e.displayedValue&&D(w),_(w)}function K(n){return e.double&&n-e.min>=g.value}function U(n){return K(n)?q.value:1}function r(n){const c=e.rotate*Math.PI/180;return{x:Math.sin((n-e.min)*T.value+c)*U(n),y:-Math.cos((n-e.min)*T.value+c)*U(n)}}function M(n,c){const w=(Math.round(n/s.value)+(c?g.value:0))%b.value+e.min;return n<360-s.value/2?w:c?e.max-g.value+1:e.min}function R(n){const{x:c,y:w}=r(n);return{left:`${Math.round(50+c*50)}%`,top:`${Math.round(50+w*50)}%`}}function t(n,c){const w=c.x-n.x,W=c.y-n.y;return Math.sqrt(w*w+W*W)}function l(n,c){const w=2*Math.atan2(c.y-n.y-t(n,c),c.x-n.x);return Math.abs(w*180/Math.PI)}function C(n){o.value===null&&(o.value=n),i.value=n,D(n)}function m(n){var de,se;if(n.preventDefault(),!u.value&&n.type!=="click"||!k.value)return;const{width:c,top:w,left:W}=(de=k.value)==null?void 0:de.getBoundingClientRect(),{width:te}=((se=x.value)==null?void 0:se.getBoundingClientRect())??{width:0},{clientX:Me,clientY:Se}="touches"in n?n.touches[0]:n,ie={x:c/2,y:-c/2},oe={x:Me-W,y:w-Se},re=Math.round(l(ie,oe)-e.rotate+360)%360,ce=e.double&&t(ie,oe)<(te+te*q.value)/4,Pe=Math.ceil(15/s.value);let Y;for(let Z=0;ZA("div",{class:z([{"v-time-picker-clock":!0,"v-time-picker-clock--indeterminate":e.modelValue==null,"v-time-picker-clock--readonly":e.readonly}]),onMousedown:P,onTouchstart:P,onWheel:E,ref:k},[A("div",{class:"v-time-picker-clock__inner",ref:x},[A("div",{class:z([{"v-time-picker-clock__hand":!0,"v-time-picker-clock__hand--inner":K(e.modelValue)},N.value]),style:ae([{transform:`rotate(${e.rotate+s.value*(I.value-e.min)}deg) scaleY(${U(I.value)})`},S.value])},null),j.value.map(n=>{const c=n===I.value;return A("div",{class:z([{"v-time-picker-clock__item":!0,"v-time-picker-clock__item--active":c,"v-time-picker-clock__item--disabled":e.disabled||!B(n)},c&&h.value]),style:ae([R(n),c&&a.value])},[A("span",null,[e.format(n)])])})])]))}}),Ee=Q({active:Boolean,color:String,disabled:Boolean,label:String,modelValue:String,error:String,showHint:Boolean,readonly:Boolean},"VTimePickerField"),ue=p()({name:"VTimePickerField",props:Ee(),emits:{"update:modelValue":e=>!0},setup(e,d){let{emit:f}=d;const{textColorClasses:k,textColorStyles:x}=be(()=>e.color),v=y(),u=De(!1);function o(i){if(["Backspace","Delete"].includes(i.key)){i.preventDefault();const _=i.target;_.value="",f("update:modelValue",null)}}return ee(()=>$(Ue,{ref:v,_as:"VTimePickerField",autocomplete:"off",class:z(["v-time-picker-controls__time__field",{"v-time-picker-controls__time__field--active":e.active},e.active?k.value:[]]),style:ae(e.active?x.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??(u.value?"":"--"),"onUpdate:modelValue":i=>f("update:modelValue",i),onKeydown:o,onFocus:()=>u.value=!0,onBlur:()=>u.value=!1},null)),Ne({},v)}});function H(e){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2;return String(e).padStart(d,"0")}function ye(e){return e?(e-1)%12+1:12}function J(e,d){return e%12+(d==="pm"?12:0)}function G(e){const d=e.replaceAll(/\D/g,"");return d.length>0?Number(d):null}function Ke(e,d,f){{if(e===23&&d)return{value:0};if(e===0&&!d)return{value:23}}return{value:e+(d?1:-1)}}function ze(e,d){return e===59&&d?0:e===0&&!d?59:e+(d?1:-1)}const Ve=Q({allowedHours:[Function,Array],allowedMinutes:[Function,Array],allowedSeconds:[Function,Array],max:String,min:String},"time-validation");function _e(e){const d=V(()=>{const v=e.min?Number(e.min.split(":")[0]):0,u=e.max?Number(e.max.split(":")[0]):23;return o=>ou?!1:Array.isArray(e.allowedHours)?e.allowedHours.includes(o):typeof e.allowedHours=="function"?e.allowedHours(o):!0}),f=V(()=>{const[v,u]=e.min?e.min.split(":").map(Number):[0,0],[o,i]=e.max?e.max.split(":").map(Number):[23,59],_=v*60+u,N=o*60+i;return(S,h)=>{if(S!==null){const a=60*S+h;if(a<_||a>N)return!1}return Array.isArray(e.allowedMinutes)?e.allowedMinutes.includes(h):typeof e.allowedMinutes=="function"?e.allowedMinutes(h):!0}}),k=V(()=>{const[v,u,o]=e.min?e.min.split(":").map(Number):[0,0,0],[i,_,N]=e.max?e.max.split(":").map(Number):[23,59,59],S=v*3600+u*60+(o||0),h=i*3600+_*60+(N||0);return(a,b,g)=>{if(a!==null&&b!==null){const s=3600*a+60*b+g;if(sh)return!1}return Array.isArray(e.allowedSeconds)?e.allowedSeconds.includes(g):typeof e.allowedSeconds=="function"?e.allowedSeconds(g):!0}});function x(v,u,o){let i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,_=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;const N=v==="hour"?d.value:v==="minute"?a=>f.value(i,a):a=>k.value(i,_,a),S=v==="hour"?a=>Ke(a,o).value:a=>ze(a,o),h=v==="hour"?24:60;for(let a=1;a<=h&&(u=S(u),!N(u));a++);return u}return{isAllowedHour:d,isAllowedMinute:f,isAllowedSecond:k,findNextAllowed:x}}const qe=Q({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,...Ve()},"VTimePickerControls"),he=p()({name:"VTimePickerControls",props:qe(),emits:{"update:period":e=>!0,"update:viewMode":e=>!0,"update:hour":e=>!0,"update:minute":e=>!0,"update:second":e=>!0},setup(e,d){let{emit:f}=d;const{t:k}=ge(),{isAllowedHour:x,isAllowedMinute:v,isAllowedSecond:u,findNextAllowed:o}=_e(e),i=V(()=>e.hour!==null?e.ampm?J(Number(e.hour),e.period??"am"):Number(e.hour):null),_=V(()=>e.minute!==null?Number(e.minute):null),N=V(()=>{var t;return e.hour===null?!0:((t=x.value)==null?void 0:t.call(x,Number(i.value)))??!0}),S=V(()=>{var t;return e.minute===null?!0:((t=v.value)==null?void 0:t.call(v,i.value,Number(e.minute)))??!0}),h=V(()=>{var t;return e.second===null?!0:((t=u.value)==null?void 0:t.call(u,i.value,_.value,Number(e.second)))??!0}),a={in:t=>{if(t==null||isNaN(Number(t)))return null;const l=Number(t);return e.ampm?H(ye(l)):H(l)},out:t=>{if(isNaN(Number(t))||t==null||t==="")return null;const l=typeof t=="string"?G(t):Number(t);return l===null?null:e.ampm?J(l,e.period??"am"):ve(l,0,23)}},b=X(e,"hour",void 0,a.in,a.out),g={in:t=>t!=null&&!isNaN(Number(t))?H(`${t}`):null,out:t=>{if(isNaN(Number(t))||t==null||t==="")return null;const l=typeof t=="string"?G(t):Number(t);return l!==null?ve(l,0,59):null}},s=X(e,"minute",void 0,g.in,g.out),T=X(e,"second",void 0,g.in,g.out);function I(t){if(!["ArrowUp","ArrowDown"].includes(t.key))return;t.preventDefault(),t.stopPropagation();const l=e.period==="am",C=e.ampm?J(Number(b.value??0),l?"am":"pm"):Number(b.value??0),m=o("hour",C,t.key==="ArrowUp"),P=l&&m>=12||!l&&m<12;e.ampm&&P?(f("update:period",e.period==="am"?"pm":"am"),Ie(()=>b.value=H(m))):b.value=H(m)}function q(t){if(!["ArrowUp","ArrowDown"].includes(t.key))return;t.preventDefault(),t.stopPropagation();const l=Number(s.value??0),C=o("minute",l,t.key==="ArrowUp",i.value);s.value=H(C)}function j(t){if(!["ArrowUp","ArrowDown"].includes(t.key))return;t.preventDefault(),t.stopPropagation();const l=Number(T.value??0),C=o("second",l,t.key==="ArrowUp",i.value,_.value);T.value=H(C)}function D(t,l,C){return m=>{if(!m.data)return;const P=m.target,{value:F,selectionStart:O,selectionEnd:n}=P??{};if(G(m.data)===null){m.preventDefault();return}const c=F?F.slice(0,O)+m.data+F.slice(n):m.data;if(c.length>2){if(O===n&&n===0&&m.data.trim().startsWith("0")){m.preventDefault(),P.value=c.trim().substring(0,2),C(P.value),m.data.trim().length===1&&P.setSelectionRange(1,1);return}if(O===n&&n===1&&F.startsWith("0")){m.preventDefault(),P.value=c.trim().substring(0,2),C(P.value);return}const W=e.viewMode==="hour"?e.ampm?12:23:59;if(G(c)>W){m.preventDefault(),P.value=H(String(G(m.data)).substring(0,2)),C(P.value);return}}const w=t(c);l(w)&&m.preventDefault()}}function B(t){f("update:period",t)}const E=y(),K=y(),U=y();L(()=>e.viewMode,(t,l)=>{switch(l){case"hour":E.value.blur();break;case"minute":K.value.blur();break;case"second":U.value.blur();break}});const r=D(a.out,t=>a.in(t)===b.value,t=>b.value=t),M=D(g.out,t=>g.in(t)===s.value,t=>s.value=t),R=D(g.out,t=>g.in(t)===T.value,t=>T.value=t);return ee(()=>A("div",{class:"v-time-picker-controls"},[A("div",{class:z({"v-time-picker-controls__time":!0,"v-time-picker-controls__time--with-ampm":e.ampm,"v-time-picker-controls__time--with-seconds":e.useSeconds})},[$(ue,{ref:E,active:e.viewMode==="hour",color:e.color,disabled:e.disabled,label:k("$vuetify.timePicker.hour"),showHint:e.inputHints,error:N.value?void 0:k("$vuetify.timePicker.notAllowed"),modelValue:b.value,"onUpdate:modelValue":t=>b.value=t,onKeydown:I,onBeforeinput:r,onFocus:()=>f("update:viewMode","hour")},null),A("span",{class:"v-time-picker-controls__time__separator"},[fe(":")]),$(ue,{ref:K,active:e.viewMode==="minute",color:e.color,disabled:e.disabled,label:k("$vuetify.timePicker.minute"),showHint:e.inputHints,error:S.value?void 0:k("$vuetify.timePicker.notAllowed"),modelValue:s.value,"onUpdate:modelValue":t=>s.value=t,onKeydown:q,onBeforeinput:M,onFocus:()=>f("update:viewMode","minute")},null),e.useSeconds&&A("span",{key:"secondsDivider",class:"v-time-picker-controls__time__separator"},[fe(":")]),e.useSeconds&&A(Be,null,[$(ue,{key:"secondsVal",ref:U,active:e.viewMode==="second",color:e.color,disabled:e.disabled,label:k("$vuetify.timePicker.second"),showHint:e.inputHints,error:h.value?void 0:k("$vuetify.timePicker.notAllowed"),modelValue:T.value,"onUpdate:modelValue":t=>T.value=t,onKeydown:j,onBeforeinput:R,onFocus:()=>f("update:viewMode","second")},null)]),e.ampm&&A("div",{class:"v-time-picker-controls__ampm"},[$(me,{active:e.period==="am",color:e.period==="am"?e.color:void 0,class:z({"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:k("$vuetify.timePicker.am"),variant:e.disabled&&e.period==="am"?"elevated":"tonal",onClick:()=>e.period!=="am"?B("am"):null},null),$(me,{active:e.period==="pm",color:e.period==="pm"?e.color:void 0,class:z({"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:k("$vuetify.timePicker.pm"),variant:e.disabled&&e.period==="pm"?"elevated":"tonal",onClick:()=>e.period!=="pm"?B("pm"):null},null)])])])),{}}}),Oe=Q({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"},...Ve(),...le(Re({title:"$vuetify.timePicker.title"}),["landscape"]),...He()},"VTimePicker"),Je=p()({name:"VTimePicker",props:Oe(),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,d){let{emit:f,slots:k}=d;const{t:x}=ge(),{densityClasses:v}=Ce(e),u=y(null),o=y(null),i=y(null),_=y(null),N=y(null),S=y(null),h=X(e,"period","am"),a=X(e,"viewMode","hour"),b=y(null),g=y(null),s=V(()=>e.format==="ampm"),{isAllowedHour:T,isAllowedMinute:I,isAllowedSecond:q}=_e(e),j=$e(()=>e.modelValue!==null&&u.value===null&&o.value===null&&(!e.useSeconds||i.value===null));function D(){const r=B();r!==null&&r!==e.modelValue&&f("update:modelValue",r),j.value&&f("update:modelValue",null)}L(u,D),L(o,D),L(i,D),L(h,(r,M)=>{u.value==null||r===M||(r==="pm"&&u.value<12?u.value=u.value+12:r==="am"&&u.value>=12&&(u.value=u.value-12))}),L(()=>e.modelValue,r=>E(r)),L(()=>e.useSeconds,(r,M)=>{M&&!r&&a.value==="second"&&(a.value="minute"),!r&&i.value!==null&&(i.value=null)}),Fe(()=>{E(e.modelValue)});function B(){return u.value!=null&&o.value!=null&&(!e.useSeconds||i.value!=null)?`${H(u.value)}:${H(o.value)}`+(e.useSeconds?`:${H(i.value)}`:""):null}function E(r){if(r==null||r==="")u.value=null,o.value=null,i.value=null;else if(r instanceof Date)u.value=r.getHours(),o.value=r.getMinutes(),i.value=r.getSeconds();else{const[M,,R,,t,l]=r.trim().toLowerCase().match(/^(\d+):(\d+)(:(\d+))?([ap]m)?$/)||new Array(6);u.value=l?J(parseInt(M,10),l):parseInt(M,10),o.value=parseInt(R,10),i.value=parseInt(t||0,10)}h.value=u.value==null||u.value<12?"am":"pm"}function K(r){a.value==="hour"?u.value=s.value?J(r,h.value):r:a.value==="minute"?o.value=r:i.value=r}function U(r){switch(a.value||"hour"){case"hour":f("update:hour",r);break;case"minute":f("update:minute",r);break;case"second":f("update:second",r);break}const M=u.value!==null&&o.value!==null&&(e.useSeconds?i.value!==null:!0);a.value==="hour"?a.value="minute":e.useSeconds&&a.value==="minute"&&(a.value="second"),!(u.value===_.value&&o.value===N.value&&(!e.useSeconds||i.value===S.value)||B()===null)&&(_.value=u.value,N.value=o.value,e.useSeconds&&(S.value=i.value),M&&D())}ee(()=>{const r=le(ke.filterProps(e),["hideHeader"]),M=he.filterProps(e),R=we.filterProps(le(e,["format","modelValue","min","max"])),t=a.value==="hour"?T.value:a.value==="minute"?l=>I.value(u.value,l):l=>q.value(u.value,o.value,l);return $(ke,ne(r,{color:void 0,class:["v-time-picker",`v-time-picker--variant-${e.variant}`,e.class,v.value],hideHeader:e.hideHeader&&e.variant!=="input",style:e.style}),{title:()=>{var l;return((l=k.title)==null?void 0:l.call(k))??A("div",{class:"v-time-picker__title"},[x(e.title)])},header:()=>$(he,ne(M,{ampm:s.value,hour:u.value,minute:o.value,period:h.value,second:i.value,viewMode:a.value,inputHints:e.variant==="input","onUpdate:hour":l=>u.value=l,"onUpdate:minute":l=>o.value=l,"onUpdate:second":l=>i.value=l,"onUpdate:period":l=>h.value=l,"onUpdate:viewMode":l=>a.value=l,ref:b}),null),default:()=>$(we,ne(R,{allowedValues:t,double:a.value==="hour"&&!s.value,format:a.value==="hour"?s.value?ye:l=>l:l=>H(l,2),max:a.value==="hour"?s.value&&h.value==="am"?11:23:59,min:a.value==="hour"&&s.value&&h.value==="pm"?12:0,size:20,step:a.value==="hour"?1:5,modelValue:a.value==="hour"?u.value:a.value==="minute"?o.value:i.value,onChange:U,onInput:K,ref:g}),null),actions:k.actions})})}});export{Je as V}; diff --git a/assets/VTooltip-2IUjfpCS.js b/assets/VTooltip-CWhmSQeX.js similarity index 87% rename from assets/VTooltip-2IUjfpCS.js rename to assets/VTooltip-CWhmSQeX.js index bb8de2b..3264c4a 100644 --- a/assets/VTooltip-2IUjfpCS.js +++ b/assets/VTooltip-CWhmSQeX.js @@ -1 +1 @@ -import{j as m,k as C,R as I,V as R,m as g,E as O,e as P,t as h,b as w}from"./vendor-vue-BiQC5iF7.js";import{I as A,N as D,H as F,O as L,P as $,f as E,b as H,a as M,Q as U,m as W,R as X,T as Y,L as j,D as B,E as G,U as Q}from"./index-DGIAsv4W.js";import{f as N,an as _,t as q,u as T,ar as z,p as x,I as J,m as K,k as Z,n as p,a5 as ee}from"./vendor-vuetify-DsKlzgKp.js";const te=x({bordered:Boolean,color:String,content:[Number,String],dot:Boolean,floating:Boolean,icon:J,inline:Boolean,label:{type:String,default:"$vuetify.badge"},max:[Number,String],modelValue:{type:Boolean,default:!0},offsetX:[Number,String],offsetY:[Number,String],textColor:String,...Z(),...Y({location:"top end"}),...X(),...W(),...K(),...U({transition:"scale-rotate-transition"}),...M()},"VBadge"),le=N()({name:"VBadge",inheritAttrs:!1,props:te(),setup(e,o){const{backgroundColorClasses:n,backgroundColorStyles:l}=A(()=>e.color),{roundedClasses:v}=D(e),{t:f}=_(),{textColorClasses:r,textColorStyles:u}=F(()=>e.textColor),{themeClasses:b}=q(),{locationStyles:V}=L(e,!0,t=>(e.floating?e.dot?2:4:e.dot?8:12)+(["top","bottom"].includes(t)?Number(e.offsetY??0):["left","right"].includes(t)?Number(e.offsetX??0):0)),{dimensionStyles:y}=H(e);return T(()=>{const t=Number(e.content),c=!e.max||isNaN(t)?e.content:t<=Number(e.max)?t:`${e.max}+`,[i,d]=z(o.attrs,["aria-atomic","aria-label","aria-live","role","title"]);return m(e.tag,g({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]},d,{style:e.style}),{default:()=>{var a,s;return[C("div",{class:"v-badge__wrapper"},[(s=(a=o.slots).default)==null?void 0:s.call(a),m($,{transition:e.transition},{default:()=>{var S,k;return[I(C("span",g({class:["v-badge__badge",b.value,n.value,v.value,r.value],style:[l.value,u.value,y.value,e.inline?{}:V.value],"aria-atomic":"true","aria-label":f(e.label,t),"aria-live":"polite",role:"status"},i),[e.dot?void 0:o.slots.badge?(k=(S=o.slots).badge)==null?void 0:k.call(S):e.icon?m(E,{icon:e.icon},null):c]),[[R,e.modelValue]])]}})])]}})}),{}}}),ae=x({id:String,interactive:Boolean,text:String,...ee(Q({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"),se=N()({name:"VTooltip",props:ae(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:n}=o;const l=p(e,"modelValue"),{scopeId:v}=j(),f=O(),r=h(()=>e.id||`v-tooltip-${f}`),u=w(),b=P(()=>e.location.split(" ").length>1?e.location:e.location+" center"),V=P(()=>e.origin==="auto"||e.origin==="overlap"||e.origin.split(" ").length>1||e.location.split(" ").length>1?e.origin:e.origin+" center"),y=h(()=>e.transition!=null?e.transition:l.value?"scale-transition":"fade-transition"),t=P(()=>g({"aria-describedby":r.value},e.activatorProps));return T(()=>{const c=B.filterProps(e);return m(B,g({ref:u,class:["v-tooltip",{"v-tooltip--interactive":e.interactive},e.class],style:e.style,id:r.value},c,{modelValue:l.value,"onUpdate:modelValue":i=>l.value=i,transition:y.value,absolute:!0,location:b.value,origin:V.value,role:"tooltip",activatorProps:t.value,_disableGlobalStack:!0},v),{activator:n.activator,default:function(){var s;for(var i=arguments.length,d=new Array(i),a=0;ae.color),{roundedClasses:v}=D(e),{t:f}=_(),{textColorClasses:r,textColorStyles:u}=F(()=>e.textColor),{themeClasses:b}=q(),{locationStyles:V}=L(e,!0,t=>(e.floating?e.dot?2:4:e.dot?8:12)+(["top","bottom"].includes(t)?Number(e.offsetY??0):["left","right"].includes(t)?Number(e.offsetX??0):0)),{dimensionStyles:y}=H(e);return T(()=>{const t=Number(e.content),c=!e.max||isNaN(t)?e.content:t<=Number(e.max)?t:`${e.max}+`,[i,d]=z(o.attrs,["aria-atomic","aria-label","aria-live","role","title"]);return m(e.tag,g({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]},d,{style:e.style}),{default:()=>{var a,s;return[C("div",{class:"v-badge__wrapper"},[(s=(a=o.slots).default)==null?void 0:s.call(a),m($,{transition:e.transition},{default:()=>{var S,k;return[I(C("span",g({class:["v-badge__badge",b.value,n.value,v.value,r.value],style:[l.value,u.value,y.value,e.inline?{}:V.value],"aria-atomic":"true","aria-label":f(e.label,t),"aria-live":"polite",role:"status"},i),[e.dot?void 0:o.slots.badge?(k=(S=o.slots).badge)==null?void 0:k.call(S):e.icon?m(G,{icon:e.icon},null):c]),[[R,e.modelValue]])]}})])]}})}),{}}}),ae=x({id:String,interactive:Boolean,text:String,...ee(Q({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"),se=N()({name:"VTooltip",props:ae(),emits:{"update:modelValue":e=>!0},setup(e,o){let{slots:n}=o;const l=p(e,"modelValue"),{scopeId:v}=j(),f=O(),r=h(()=>e.id||`v-tooltip-${f}`),u=w(),b=P(()=>e.location.split(" ").length>1?e.location:e.location+" center"),V=P(()=>e.origin==="auto"||e.origin==="overlap"||e.origin.split(" ").length>1||e.location.split(" ").length>1?e.origin:e.origin+" center"),y=h(()=>e.transition!=null?e.transition:l.value?"scale-transition":"fade-transition"),t=P(()=>g({"aria-describedby":r.value},e.activatorProps));return T(()=>{const c=B.filterProps(e);return m(B,g({ref:u,class:["v-tooltip",{"v-tooltip--interactive":e.interactive},e.class],style:e.style,id:r.value},c,{modelValue:l.value,"onUpdate:modelValue":i=>l.value=i,transition:y.value,absolute:!0,location:b.value,origin:V.value,role:"tooltip",activatorProps:t.value,_disableGlobalStack:!0},v),{activator:n.activator,default:function(){var s;for(var i=arguments.length,d=new Array(i),a=0;a[i(_,{elevation:"1"},{prepend:o(()=>[i(n,{icon:"mdi-arrow-left",variant:"text",onClick:t[0]||(t[0]=C=>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/_id_-DMpTK4Oz.js b/assets/_id_-DMpTK4Oz.js deleted file mode 100644 index b2eb406..0000000 --- a/assets/_id_-DMpTK4Oz.js +++ /dev/null @@ -1 +0,0 @@ -import f from"./ExamConfigEditor-BVwEXehR.js";import{_ as u,g as v,h as n}from"./index-DGIAsv4W.js";import{a as _,V as g}from"./VAppBarTitle-DheyIZnb.js";import{V as p}from"./VContainer-DZyPrcqa.js";import{X as m,Y as d,Z as o,j as i,a1 as l,$ as x}from"./vendor-vue-BiQC5iF7.js";import"./dataProvider-GWPC-0Vt.js";import"./vendor-utils-DwALrQNc.js";import"./serverRotation-BtcwvdZJ.js";import"./VAlert-BZ4-f-hy.js";import"./vendor-vuetify-DsKlzgKp.js";import"./VSkeletonLoader-DwE_iqTb.js";import"./VTooltip-2IUjfpCS.js";import"./VChip-mRzIPuM0.js";import"./VRow-Cjhiymuu.js";import"./VTextField-BurlcggD.js";import"./VTextarea-vGWmTJww.js";import"./VSwitch-k6hfPfa2.js";import"./VAutocomplete-N0zTUlyj.js";import"./VSelect-oxA0t9CG.js";import"./VSheet-BBnSA_kJ.js";import"./VCheckboxBtn-BKcSogH0.js";import"./VDatePicker-CuGF0KeL.js";import"./VPicker-SM18M-iq.js";import"./VTimePicker-BApLLZ8X.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,h,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]=C=>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 L=u(E,[["render",V]]);export{L as default}; diff --git a/assets/_id_-DjPmieQy.js b/assets/_id_-Dw-jkNll.js similarity index 93% rename from assets/_id_-DjPmieQy.js rename to assets/_id_-Dw-jkNll.js index e9b4788..fdbdc6a 100644 --- a/assets/_id_-DjPmieQy.js +++ b/assets/_id_-Dw-jkNll.js @@ -1 +1 @@ -import{d as h}from"./dataProvider-GWPC-0Vt.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,ae as U,F as y,a2 as J,aa as O,$ as b}from"./vendor-vue-BiQC5iF7.js";import{m as F,_ as z,h as r,f as I,e as c,c as D,g as k,G as M,d as V,p as R,q as C,t as v,l as N,k as A,r as S}from"./index-DGIAsv4W.js";import{V as E,a as P}from"./VAppBarTitle-DheyIZnb.js";import{V as x}from"./VTextField-BurlcggD.js";import{f as K,u as j,p as q,k as G}from"./vendor-vuetify-DsKlzgKp.js";import{V as W}from"./VCheckboxBtn-BKcSogH0.js";import{V as X}from"./VChip-mRzIPuM0.js";import{V as Y}from"./VTextarea-vGWmTJww.js";import{V as Z}from"./VSwitch-k6hfPfa2.js";import{V as H}from"./VContainer-DZyPrcqa.js";import"./vendor-utils-DwALrQNc.js";import"./serverRotation-BtcwvdZJ.js";const Q=q({start:Boolean,end:Boolean,...G(),...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(W,{"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(X,{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(Y,{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(Z,{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 Ce=z(ee,[["render",de]]);export{Ce as default}; +import{d as h}from"./dataProvider-D5waPBEc.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,ae as U,F as y,a2 as J,aa as O,$ as b}from"./vendor-vue-BiQC5iF7.js";import{m as F,_ as z,h as r,f as I,e as c,c as D,g as k,F as M,d as V,p as R,q as C,t as v,l as N,k as A,r as S}from"./index-Ceq_468-.js";import{V as E,a as P}from"./VAppBarTitle-q97S07ao.js";import{V as x}from"./VTextField-DpXLMPq7.js";import{f as K,u as j,p as q,k as W}from"./vendor-vuetify-rtu3DHX4.js";import{V as X}from"./VCheckboxBtn-snLiE5D5.js";import{V as Y}from"./VChip-BdtDOEwz.js";import{V as Z}from"./VTextarea-UKN-Avq_.js";import{V as G}from"./VSwitch-d4Yvphn0.js";import{V as H}from"./VContainer-BisEDTd3.js";import"./vendor-utils-2lvrqI0-.js";import"./serverRotation-Bs3NH0Jb.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 Ce=z(ee,[["render",de]]);export{Ce as default}; diff --git a/assets/authorize-CZL9tEmI.js b/assets/authorize-LEIDOvih.js similarity index 88% rename from assets/authorize-CZL9tEmI.js rename to assets/authorize-LEIDOvih.js index 41154d0..c08d75b 100644 --- a/assets/authorize-CZL9tEmI.js +++ b/assets/authorize-LEIDOvih.js @@ -1 +1 @@ -import{ab as V,ac 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-BiQC5iF7.js";import{s as p,n as y,e as C,c as h,d as x,j as S,l as T,g as B,h as N}from"./index-DGIAsv4W.js";import{V as b,a as j}from"./VRow-Cjhiymuu.js";import{V as R}from"./VContainer-DZyPrcqa.js";import"./vendor-vuetify-DsKlzgKp.js";const H={__name:"authorize",setup(w){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(R,{class:"fill-height",fluid:""},{default:e(()=>[a(b,{align:"center",justify:"center"},{default:e(()=>[a(j,{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}; +import{ab as V,ac 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-BiQC5iF7.js";import{s as p,n as y,e as C,c as h,d as x,j as S,l as T,g as B,h as N}from"./index-Ceq_468-.js";import{V as b,a as j}from"./VRow-BiiRXDj9.js";import{V as R}from"./VContainer-BisEDTd3.js";import"./vendor-vuetify-rtu3DHX4.js";const H={__name:"authorize",setup(w){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(R,{class:"fill-height",fluid:""},{default:e(()=>[a(b,{align:"center",justify:"center"},{default:e(()=>[a(j,{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/browser-BcesygxY.js b/assets/browser-BcesygxY.js new file mode 100644 index 0000000..f3e4db0 --- /dev/null +++ b/assets/browser-BcesygxY.js @@ -0,0 +1,108 @@ +var Fy=Object.defineProperty;var xy=(t,e,r)=>e in t?Fy(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Oc=(t,e,r)=>xy(t,typeof e!="symbol"?e+"":e,r);var Ty=Object.create,vf=Object.defineProperty,Oy=Object.getOwnPropertyDescriptor,qp=Object.getOwnPropertyNames,Py=Object.getPrototypeOf,Ey=Object.prototype.hasOwnProperty,hr=(t,e)=>function(){return e||(0,t[qp(t)[0]])((e={exports:{}}).exports,e),e.exports},Iy=(t,e)=>{for(var r in e)vf(t,r,{get:e[r],enumerable:!0})},Dy=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of qp(e))!Ey.call(t,i)&&i!==r&&vf(t,i,{get:()=>e[i],enumerable:!(n=Oy(e,i))||n.enumerable});return t},is=(t,e,r)=>(r=t!=null?Ty(Py(t)):{},Dy(!t||!t.__esModule?vf(r,"default",{value:t,enumerable:!0}):r,t)),mi=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/utils/common.js"(t){var e=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";function r(a,o){return Object.prototype.hasOwnProperty.call(a,o)}t.assign=function(a){for(var o=Array.prototype.slice.call(arguments,1);o.length;){var s=o.shift();if(s){if(typeof s!="object")throw new TypeError(s+"must be non-object");for(var c in s)r(s,c)&&(a[c]=s[c])}}return a},t.shrinkBuf=function(a,o){return a.length===o?a:a.subarray?a.subarray(0,o):(a.length=o,a)};var n={arraySet:function(a,o,s,c,u){if(o.subarray&&a.subarray){a.set(o.subarray(s,s+c),u);return}for(var f=0;f=0;)F[te]=0}var s=0,c=1,u=2,f=3,h=258,d=29,v=256,p=v+1+d,y=30,w=19,S=2*p+1,E=15,k=16,I=7,D=256,R=16,L=17,j=18,U=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],V=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],G=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],K=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],q=512,ee=new Array((p+2)*2);o(ee);var H=new Array(y*2);o(H);var _=new Array(q);o(_);var ue=new Array(h-f+1);o(ue);var ae=new Array(d);o(ae);var Ae=new Array(y);o(Ae);function de(F,te,ne,ve,M){this.static_tree=F,this.extra_bits=te,this.extra_base=ne,this.elems=ve,this.max_length=M,this.has_stree=F&&F.length}var Ce,Le,at;function We(F,te){this.dyn_tree=F,this.max_code=0,this.stat_desc=te}function $e(F){return F<256?_[F]:_[256+(F>>>7)]}function Ue(F,te){F.pending_buf[F.pending++]=te&255,F.pending_buf[F.pending++]=te>>>8&255}function Ie(F,te,ne){F.bi_valid>k-ne?(F.bi_buf|=te<>k-F.bi_valid,F.bi_valid+=ne-k):(F.bi_buf|=te<>>=1,ne<<=1;while(--te>0);return ne>>>1}function we(F){F.bi_valid===16?(Ue(F,F.bi_buf),F.bi_buf=0,F.bi_valid=0):F.bi_valid>=8&&(F.pending_buf[F.pending++]=F.bi_buf&255,F.bi_buf>>=8,F.bi_valid-=8)}function Re(F,te){var ne=te.dyn_tree,ve=te.max_code,M=te.stat_desc.static_tree,Y=te.stat_desc.has_stree,A=te.stat_desc.extra_bits,re=te.stat_desc.extra_base,Ge=te.stat_desc.max_length,g,Z,X,C,B,W,Oe=0;for(C=0;C<=E;C++)F.bl_count[C]=0;for(ne[F.heap[F.heap_max]*2+1]=0,g=F.heap_max+1;gGe&&(C=Ge,Oe++),ne[Z*2+1]=C,!(Z>ve)&&(F.bl_count[C]++,B=0,Z>=re&&(B=A[Z-re]),W=ne[Z*2],F.opt_len+=W*(C+B),Y&&(F.static_len+=W*(M[Z*2+1]+B)));if(Oe!==0){do{for(C=Ge-1;F.bl_count[C]===0;)C--;F.bl_count[C]--,F.bl_count[C+1]+=2,F.bl_count[Ge]--,Oe-=2}while(Oe>0);for(C=Ge;C!==0;C--)for(Z=F.bl_count[C];Z!==0;)X=F.heap[--g],!(X>ve)&&(ne[X*2+1]!==C&&(F.opt_len+=(C-ne[X*2+1])*ne[X*2],ne[X*2+1]=C),Z--)}}function De(F,te,ne){var ve=new Array(E+1),M=0,Y,A;for(Y=1;Y<=E;Y++)ve[Y]=M=M+ne[Y-1]<<1;for(A=0;A<=te;A++){var re=F[A*2+1];re!==0&&(F[A*2]=ge(ve[re]++,re))}}function me(){var F,te,ne,ve,M,Y=new Array(E+1);for(ne=0,ve=0;ve>=7;ve8?Ue(F,F.bi_buf):F.bi_valid>0&&(F.pending_buf[F.pending++]=F.bi_buf),F.bi_buf=0,F.bi_valid=0}function m(F,te,ne,ve){T(F),Ue(F,ne),Ue(F,~ne),e.arraySet(F.pending_buf,F.window,te,ne,F.pending),F.pending+=ne}function b(F,te,ne,ve){var M=te*2,Y=ne*2;return F[M]>1;A>=1;A--)O(F,ne,A);g=Y;do A=F.heap[1],F.heap[1]=F.heap[F.heap_len--],O(F,ne,1),re=F.heap[1],F.heap[--F.heap_max]=A,F.heap[--F.heap_max]=re,ne[g*2]=ne[A*2]+ne[re*2],F.depth[g]=(F.depth[A]>=F.depth[re]?F.depth[A]:F.depth[re])+1,ne[A*2+1]=ne[re*2+1]=g,F.heap[1]=g++,O(F,ne,1);while(F.heap_len>=2);F.heap[--F.heap_max]=F.heap[1],Re(F,te),De(ne,Ge,F.bl_count)}function Q(F,te,ne){var ve,M=-1,Y,A=te[0*2+1],re=0,Ge=7,g=4;for(A===0&&(Ge=138,g=3),te[(ne+1)*2+1]=65535,ve=0;ve<=ne;ve++)Y=A,A=te[(ve+1)*2+1],!(++re=3&&F.bl_tree[K[te]*2+1]===0;te--);return F.opt_len+=3*(te+1)+5+5+4,te}function nt(F,te,ne,ve){var M;for(Ie(F,te-257,5),Ie(F,ne-1,5),Ie(F,ve-4,4),M=0;M>>=1)if(te&1&&F.dyn_ltree[ne*2]!==0)return n;if(F.dyn_ltree[9*2]!==0||F.dyn_ltree[10*2]!==0||F.dyn_ltree[13*2]!==0)return i;for(ne=32;ne0?(F.strm.data_type===a&&(F.strm.data_type=ft(F)),$(F,F.l_desc),$(F,F.d_desc),A=Ne(F),M=F.opt_len+3+7>>>3,Y=F.static_len+3+7>>>3,Y<=M&&(M=Y)):M=Y=ne+5,ne+4<=M&&te!==-1?jt(F,te,ne,ve):F.strategy===r||Y===M?(Ie(F,(c<<1)+(ve?1:0),3),N(F,ee,H)):(Ie(F,(u<<1)+(ve?1:0),3),nt(F,F.l_desc.max_code+1,F.d_desc.max_code+1,A+1),N(F,F.dyn_ltree,F.dyn_dtree)),lt(F),ve&&T(F)}function dr(F,te,ne){return F.pending_buf[F.d_buf+F.last_lit*2]=te>>>8&255,F.pending_buf[F.d_buf+F.last_lit*2+1]=te&255,F.pending_buf[F.l_buf+F.last_lit]=ne&255,F.last_lit++,te===0?F.dyn_ltree[ne*2]++:(F.matches++,te--,F.dyn_ltree[(ue[ne]+v+1)*2]++,F.dyn_dtree[$e(te)*2]++),F.last_lit===F.lit_bufsize-1}t._tr_init=Ut,t._tr_stored_block=jt,t._tr_flush_block=Kt,t._tr_tally=dr,t._tr_align=kt}}),Wp=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/adler32.js"(t,e){function r(n,i,a,o){for(var s=n&65535|0,c=n>>>16&65535|0,u=0;a!==0;){u=a>2e3?2e3:a,a-=u;do s=s+i[o++]|0,c=c+s|0;while(--u);s%=65521,c%=65521}return s|c<<16|0}e.exports=r}}),Gp=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/crc32.js"(t,e){function r(){for(var a,o=[],s=0;s<256;s++){a=s;for(var c=0;c<8;c++)a=a&1?3988292384^a>>>1:a>>>1;o[s]=a}return o}var n=r();function i(a,o,s,c){var u=n,f=c+s;a^=-1;for(var h=c;h>>8^u[(a^o[h])&255];return a^-1}e.exports=i}}),pf=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/messages.js"(t,e){e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}}}),Ry=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/deflate.js"(t){var e=mi(),r=By(),n=Wp(),i=Gp(),a=pf(),o=0,s=1,c=3,u=4,f=5,h=0,d=1,v=-2,p=-3,y=-5,w=-1,S=1,E=2,k=3,I=4,D=0,R=2,L=8,j=9,U=15,V=8,G=29,K=256,q=K+1+G,ee=30,H=19,_=2*q+1,ue=15,ae=3,Ae=258,de=Ae+ae+1,Ce=32,Le=42,at=69,We=73,$e=91,Ue=103,Ie=113,be=666,ge=1,we=2,Re=3,De=4,me=3;function lt(g,Z){return g.msg=a[Z],Z}function T(g){return(g<<1)-(g>4?9:0)}function m(g){for(var Z=g.length;--Z>=0;)g[Z]=0}function b(g){var Z=g.state,X=Z.pending;X>g.avail_out&&(X=g.avail_out),X!==0&&(e.arraySet(g.output,Z.pending_buf,Z.pending_out,X,g.next_out),g.next_out+=X,Z.pending_out+=X,g.total_out+=X,g.avail_out-=X,Z.pending-=X,Z.pending===0&&(Z.pending_out=0))}function O(g,Z){r._tr_flush_block(g,g.block_start>=0?g.block_start:-1,g.strstart-g.block_start,Z),g.block_start=g.strstart,b(g.strm)}function N(g,Z){g.pending_buf[g.pending++]=Z}function $(g,Z){g.pending_buf[g.pending++]=Z>>>8&255,g.pending_buf[g.pending++]=Z&255}function Q(g,Z,X,C){var B=g.avail_in;return B>C&&(B=C),B===0?0:(g.avail_in-=B,e.arraySet(Z,g.input,g.next_in,B,X),g.state.wrap===1?g.adler=n(g.adler,Z,B,X):g.state.wrap===2&&(g.adler=i(g.adler,Z,B,X)),g.next_in+=B,g.total_in+=B,B)}function Fe(g,Z){var X=g.max_chain_length,C=g.strstart,B,W,Oe=g.prev_length,pe=g.nice_match,Se=g.strstart>g.w_size-de?g.strstart-(g.w_size-de):0,bt=g.window,Sn=g.w_mask,Nt=g.prev,Ct=g.strstart+Ae,Xt=bt[C+Oe-1],cr=bt[C+Oe];g.prev_length>=g.good_match&&(X>>=2),pe>g.lookahead&&(pe=g.lookahead);do if(B=Z,!(bt[B+Oe]!==cr||bt[B+Oe-1]!==Xt||bt[B]!==bt[C]||bt[++B]!==bt[C+1])){C+=2,B++;do;while(bt[++C]===bt[++B]&&bt[++C]===bt[++B]&&bt[++C]===bt[++B]&&bt[++C]===bt[++B]&&bt[++C]===bt[++B]&&bt[++C]===bt[++B]&&bt[++C]===bt[++B]&&bt[++C]===bt[++B]&&COe){if(g.match_start=Z,Oe=W,W>=pe)break;Xt=bt[C+Oe-1],cr=bt[C+Oe]}}while((Z=Nt[Z&Sn])>Se&&--X!==0);return Oe<=g.lookahead?Oe:g.lookahead}function Ne(g){var Z=g.w_size,X,C,B,W,Oe;do{if(W=g.window_size-g.lookahead-g.strstart,g.strstart>=Z+(Z-de)){e.arraySet(g.window,g.window,Z,Z,0),g.match_start-=Z,g.strstart-=Z,g.block_start-=Z,C=g.hash_size,X=C;do B=g.head[--X],g.head[X]=B>=Z?B-Z:0;while(--C);C=Z,X=C;do B=g.prev[--X],g.prev[X]=B>=Z?B-Z:0;while(--C);W+=Z}if(g.strm.avail_in===0)break;if(C=Q(g.strm,g.window,g.strstart+g.lookahead,W),g.lookahead+=C,g.lookahead+g.insert>=ae)for(Oe=g.strstart-g.insert,g.ins_h=g.window[Oe],g.ins_h=(g.ins_h<g.pending_buf_size-5&&(X=g.pending_buf_size-5);;){if(g.lookahead<=1){if(Ne(g),g.lookahead===0&&Z===o)return ge;if(g.lookahead===0)break}g.strstart+=g.lookahead,g.lookahead=0;var C=g.block_start+X;if((g.strstart===0||g.strstart>=C)&&(g.lookahead=g.strstart-C,g.strstart=C,O(g,!1),g.strm.avail_out===0)||g.strstart-g.block_start>=g.w_size-de&&(O(g,!1),g.strm.avail_out===0))return ge}return g.insert=0,Z===u?(O(g,!0),g.strm.avail_out===0?Re:De):(g.strstart>g.block_start&&(O(g,!1),g.strm.avail_out===0),ge)}function ft(g,Z){for(var X,C;;){if(g.lookahead=ae&&(g.ins_h=(g.ins_h<=ae)if(C=r._tr_tally(g,g.strstart-g.match_start,g.match_length-ae),g.lookahead-=g.match_length,g.match_length<=g.max_lazy_match&&g.lookahead>=ae){g.match_length--;do g.strstart++,g.ins_h=(g.ins_h<=ae&&(g.ins_h=(g.ins_h<4096)&&(g.match_length=ae-1)),g.prev_length>=ae&&g.match_length<=g.prev_length){B=g.strstart+g.lookahead-ae,C=r._tr_tally(g,g.strstart-1-g.prev_match,g.prev_length-ae),g.lookahead-=g.prev_length-1,g.prev_length-=2;do++g.strstart<=B&&(g.ins_h=(g.ins_h<=ae&&g.strstart>0&&(B=g.strstart-1,C=Oe[B],C===Oe[++B]&&C===Oe[++B]&&C===Oe[++B])){W=g.strstart+Ae;do;while(C===Oe[++B]&&C===Oe[++B]&&C===Oe[++B]&&C===Oe[++B]&&C===Oe[++B]&&C===Oe[++B]&&C===Oe[++B]&&C===Oe[++B]&&Bg.lookahead&&(g.match_length=g.lookahead)}if(g.match_length>=ae?(X=r._tr_tally(g,1,g.match_length-ae),g.lookahead-=g.match_length,g.strstart+=g.match_length,g.match_length=0):(X=r._tr_tally(g,0,g.window[g.strstart]),g.lookahead--,g.strstart++),X&&(O(g,!1),g.strm.avail_out===0))return ge}return g.insert=0,Z===u?(O(g,!0),g.strm.avail_out===0?Re:De):g.last_lit&&(O(g,!1),g.strm.avail_out===0)?ge:we}function jt(g,Z){for(var X;;){if(g.lookahead===0&&(Ne(g),g.lookahead===0)){if(Z===o)return ge;break}if(g.match_length=0,X=r._tr_tally(g,0,g.window[g.strstart]),g.lookahead--,g.strstart++,X&&(O(g,!1),g.strm.avail_out===0))return ge}return g.insert=0,Z===u?(O(g,!0),g.strm.avail_out===0?Re:De):g.last_lit&&(O(g,!1),g.strm.avail_out===0)?ge:we}function kt(g,Z,X,C,B){this.good_length=g,this.max_lazy=Z,this.nice_length=X,this.max_chain=C,this.func=B}var Kt;Kt=[new kt(0,0,0,0,nt),new kt(4,4,8,4,ft),new kt(4,5,16,8,ft),new kt(4,6,32,32,ft),new kt(4,4,16,16,Je),new kt(8,16,32,32,Je),new kt(8,16,128,128,Je),new kt(8,32,128,256,Je),new kt(32,128,258,1024,Je),new kt(32,258,258,4096,Je)];function dr(g){g.window_size=2*g.w_size,m(g.head),g.max_lazy_match=Kt[g.level].max_lazy,g.good_match=Kt[g.level].good_length,g.nice_match=Kt[g.level].nice_length,g.max_chain_length=Kt[g.level].max_chain,g.strstart=0,g.block_start=0,g.lookahead=0,g.insert=0,g.match_length=g.prev_length=ae-1,g.match_available=0,g.ins_h=0}function F(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=L,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new e.Buf16(_*2),this.dyn_dtree=new e.Buf16((2*ee+1)*2),this.bl_tree=new e.Buf16((2*H+1)*2),m(this.dyn_ltree),m(this.dyn_dtree),m(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new e.Buf16(ue+1),this.heap=new e.Buf16(2*q+1),m(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new e.Buf16(2*q+1),m(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function te(g){var Z;return!g||!g.state?lt(g,v):(g.total_in=g.total_out=0,g.data_type=R,Z=g.state,Z.pending=0,Z.pending_out=0,Z.wrap<0&&(Z.wrap=-Z.wrap),Z.status=Z.wrap?Le:Ie,g.adler=Z.wrap===2?0:1,Z.last_flush=o,r._tr_init(Z),h)}function ne(g){var Z=te(g);return Z===h&&dr(g.state),Z}function ve(g,Z){return!g||!g.state||g.state.wrap!==2?v:(g.state.gzhead=Z,h)}function M(g,Z,X,C,B,W){if(!g)return v;var Oe=1;if(Z===w&&(Z=6),C<0?(Oe=0,C=-C):C>15&&(Oe=2,C-=16),B<1||B>j||X!==L||C<8||C>15||Z<0||Z>9||W<0||W>I)return lt(g,v);C===8&&(C=9);var pe=new F;return g.state=pe,pe.strm=g,pe.wrap=Oe,pe.gzhead=null,pe.w_bits=C,pe.w_size=1<f||Z<0)return g?lt(g,v):v;if(C=g.state,!g.output||!g.input&&g.avail_in!==0||C.status===be&&Z!==u)return lt(g,g.avail_out===0?y:v);if(C.strm=g,X=C.last_flush,C.last_flush=Z,C.status===Le)if(C.wrap===2)g.adler=0,N(C,31),N(C,139),N(C,8),C.gzhead?(N(C,(C.gzhead.text?1:0)+(C.gzhead.hcrc?2:0)+(C.gzhead.extra?4:0)+(C.gzhead.name?8:0)+(C.gzhead.comment?16:0)),N(C,C.gzhead.time&255),N(C,C.gzhead.time>>8&255),N(C,C.gzhead.time>>16&255),N(C,C.gzhead.time>>24&255),N(C,C.level===9?2:C.strategy>=E||C.level<2?4:0),N(C,C.gzhead.os&255),C.gzhead.extra&&C.gzhead.extra.length&&(N(C,C.gzhead.extra.length&255),N(C,C.gzhead.extra.length>>8&255)),C.gzhead.hcrc&&(g.adler=i(g.adler,C.pending_buf,C.pending,0)),C.gzindex=0,C.status=at):(N(C,0),N(C,0),N(C,0),N(C,0),N(C,0),N(C,C.level===9?2:C.strategy>=E||C.level<2?4:0),N(C,me),C.status=Ie);else{var Oe=L+(C.w_bits-8<<4)<<8,pe=-1;C.strategy>=E||C.level<2?pe=0:C.level<6?pe=1:C.level===6?pe=2:pe=3,Oe|=pe<<6,C.strstart!==0&&(Oe|=Ce),Oe+=31-Oe%31,C.status=Ie,$(C,Oe),C.strstart!==0&&($(C,g.adler>>>16),$(C,g.adler&65535)),g.adler=1}if(C.status===at)if(C.gzhead.extra){for(B=C.pending;C.gzindex<(C.gzhead.extra.length&65535)&&!(C.pending===C.pending_buf_size&&(C.gzhead.hcrc&&C.pending>B&&(g.adler=i(g.adler,C.pending_buf,C.pending-B,B)),b(g),B=C.pending,C.pending===C.pending_buf_size));)N(C,C.gzhead.extra[C.gzindex]&255),C.gzindex++;C.gzhead.hcrc&&C.pending>B&&(g.adler=i(g.adler,C.pending_buf,C.pending-B,B)),C.gzindex===C.gzhead.extra.length&&(C.gzindex=0,C.status=We)}else C.status=We;if(C.status===We)if(C.gzhead.name){B=C.pending;do{if(C.pending===C.pending_buf_size&&(C.gzhead.hcrc&&C.pending>B&&(g.adler=i(g.adler,C.pending_buf,C.pending-B,B)),b(g),B=C.pending,C.pending===C.pending_buf_size)){W=1;break}C.gzindexB&&(g.adler=i(g.adler,C.pending_buf,C.pending-B,B)),W===0&&(C.gzindex=0,C.status=$e)}else C.status=$e;if(C.status===$e)if(C.gzhead.comment){B=C.pending;do{if(C.pending===C.pending_buf_size&&(C.gzhead.hcrc&&C.pending>B&&(g.adler=i(g.adler,C.pending_buf,C.pending-B,B)),b(g),B=C.pending,C.pending===C.pending_buf_size)){W=1;break}C.gzindexB&&(g.adler=i(g.adler,C.pending_buf,C.pending-B,B)),W===0&&(C.status=Ue)}else C.status=Ue;if(C.status===Ue&&(C.gzhead.hcrc?(C.pending+2>C.pending_buf_size&&b(g),C.pending+2<=C.pending_buf_size&&(N(C,g.adler&255),N(C,g.adler>>8&255),g.adler=0,C.status=Ie)):C.status=Ie),C.pending!==0){if(b(g),g.avail_out===0)return C.last_flush=-1,h}else if(g.avail_in===0&&T(Z)<=T(X)&&Z!==u)return lt(g,y);if(C.status===be&&g.avail_in!==0)return lt(g,y);if(g.avail_in!==0||C.lookahead!==0||Z!==o&&C.status!==be){var Se=C.strategy===E?jt(C,Z):C.strategy===k?Ut(C,Z):Kt[C.level].func(C,Z);if((Se===Re||Se===De)&&(C.status=be),Se===ge||Se===Re)return g.avail_out===0&&(C.last_flush=-1),h;if(Se===we&&(Z===s?r._tr_align(C):Z!==f&&(r._tr_stored_block(C,0,0,!1),Z===c&&(m(C.head),C.lookahead===0&&(C.strstart=0,C.block_start=0,C.insert=0))),b(g),g.avail_out===0))return C.last_flush=-1,h}return Z!==u?h:C.wrap<=0?d:(C.wrap===2?(N(C,g.adler&255),N(C,g.adler>>8&255),N(C,g.adler>>16&255),N(C,g.adler>>24&255),N(C,g.total_in&255),N(C,g.total_in>>8&255),N(C,g.total_in>>16&255),N(C,g.total_in>>24&255)):($(C,g.adler>>>16),$(C,g.adler&65535)),b(g),C.wrap>0&&(C.wrap=-C.wrap),C.pending!==0?h:d)}function re(g){var Z;return!g||!g.state?v:(Z=g.state.status,Z!==Le&&Z!==at&&Z!==We&&Z!==$e&&Z!==Ue&&Z!==Ie&&Z!==be?lt(g,v):(g.state=null,Z===Ie?lt(g,p):h))}function Ge(g,Z){var X=Z.length,C,B,W,Oe,pe,Se,bt,Sn;if(!g||!g.state||(C=g.state,Oe=C.wrap,Oe===2||Oe===1&&C.status!==Le||C.lookahead))return v;for(Oe===1&&(g.adler=n(g.adler,Z,X,0)),C.wrap=0,X>=C.w_size&&(Oe===0&&(m(C.head),C.strstart=0,C.block_start=0,C.insert=0),Sn=new e.Buf8(C.w_size),e.arraySet(Sn,Z,X-C.w_size,C.w_size,0),Z=Sn,X=C.w_size),pe=g.avail_in,Se=g.next_in,bt=g.input,g.avail_in=X,g.next_in=0,g.input=Z,Ne(C);C.lookahead>=ae;){B=C.strstart,W=C.lookahead-(ae-1);do C.ins_h=(C.ins_h<=252?6:a>=248?5:a>=240?4:a>=224?3:a>=192?2:1;var a;i[254]=i[254]=1,t.string2buf=function(s){var c,u,f,h,d,v=s.length,p=0;for(h=0;h>>6,c[d++]=128|u&63):u<65536?(c[d++]=224|u>>>12,c[d++]=128|u>>>6&63,c[d++]=128|u&63):(c[d++]=240|u>>>18,c[d++]=128|u>>>12&63,c[d++]=128|u>>>6&63,c[d++]=128|u&63);return c};function o(s,c){if(c<65534&&(s.subarray&&n||!s.subarray&&r))return String.fromCharCode.apply(null,e.shrinkBuf(s,c));for(var u="",f=0;f4){p[f++]=65533,u+=d-1;continue}for(h&=d===2?31:d===3?15:7;d>1&&u1){p[f++]=65533;continue}h<65536?p[f++]=h:(h-=65536,p[f++]=55296|h>>10&1023,p[f++]=56320|h&1023)}return o(p,f)},t.utf8border=function(s,c){var u;for(c=c||s.length,c>s.length&&(c=s.length),u=c-1;u>=0&&(s[u]&192)===128;)u--;return u<0||u===0?c:u+i[s[u]]>c?u:c}}}),Zp=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/zstream.js"(t,e){function r(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}e.exports=r}}),Ny=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/deflate.js"(t){var e=Ry(),r=mi(),n=Hp(),i=pf(),a=Zp(),o=Object.prototype.toString,s=0,c=4,u=0,f=1,h=2,d=-1,v=0,p=8;function y(k){if(!(this instanceof y))return new y(k);this.options=r.assign({level:d,method:p,chunkSize:16384,windowBits:15,memLevel:8,strategy:v,to:""},k||{});var I=this.options;I.raw&&I.windowBits>0?I.windowBits=-I.windowBits:I.gzip&&I.windowBits>0&&I.windowBits<16&&(I.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new a,this.strm.avail_out=0;var D=e.deflateInit2(this.strm,I.level,I.method,I.windowBits,I.memLevel,I.strategy);if(D!==u)throw new Error(i[D]);if(I.header&&e.deflateSetHeader(this.strm,I.header),I.dictionary){var R;if(typeof I.dictionary=="string"?R=n.string2buf(I.dictionary):o.call(I.dictionary)==="[object ArrayBuffer]"?R=new Uint8Array(I.dictionary):R=I.dictionary,D=e.deflateSetDictionary(this.strm,R),D!==u)throw new Error(i[D]);this._dict_set=!0}}y.prototype.push=function(k,I){var D=this.strm,R=this.options.chunkSize,L,j;if(this.ended)return!1;j=I===~~I?I:I===!0?c:s,typeof k=="string"?D.input=n.string2buf(k):o.call(k)==="[object ArrayBuffer]"?D.input=new Uint8Array(k):D.input=k,D.next_in=0,D.avail_in=D.input.length;do{if(D.avail_out===0&&(D.output=new r.Buf8(R),D.next_out=0,D.avail_out=R),L=e.deflate(D,j),L!==f&&L!==u)return this.onEnd(L),this.ended=!0,!1;(D.avail_out===0||D.avail_in===0&&(j===c||j===h))&&(this.options.to==="string"?this.onData(n.buf2binstring(r.shrinkBuf(D.output,D.next_out))):this.onData(r.shrinkBuf(D.output,D.next_out)))}while((D.avail_in>0||D.avail_out===0)&&L!==f);return j===c?(L=e.deflateEnd(this.strm),this.onEnd(L),this.ended=!0,L===u):(j===h&&(this.onEnd(u),D.avail_out=0),!0)},y.prototype.onData=function(k){this.chunks.push(k)},y.prototype.onEnd=function(k){k===u&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=k,this.msg=this.strm.msg};function w(k,I){var D=new y(I);if(D.push(k,!0),D.err)throw D.msg||i[D.err];return D.result}function S(k,I){return I=I||{},I.raw=!0,w(k,I)}function E(k,I){return I=I||{},I.gzip=!0,w(k,I)}t.Deflate=y,t.deflate=w,t.deflateRaw=S,t.gzip=E}}),My=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inffast.js"(t,e){var r=30,n=12;e.exports=function(a,o){var s,c,u,f,h,d,v,p,y,w,S,E,k,I,D,R,L,j,U,V,G,K,q,ee,H;s=a.state,c=a.next_in,ee=a.input,u=c+(a.avail_in-5),f=a.next_out,H=a.output,h=f-(o-a.avail_out),d=f+(a.avail_out-257),v=s.dmax,p=s.wsize,y=s.whave,w=s.wnext,S=s.window,E=s.hold,k=s.bits,I=s.lencode,D=s.distcode,R=(1<>>24,E>>>=U,k-=U,U=j>>>16&255,U===0)H[f++]=j&65535;else if(U&16){V=j&65535,U&=15,U&&(k>>=U,k-=U),k<15&&(E+=ee[c++]<>>24,E>>>=U,k-=U,U=j>>>16&255,U&16){if(G=j&65535,U&=15,kv){a.msg="invalid distance too far back",s.mode=r;break e}if(E>>>=U,k-=U,U=f-h,G>U){if(U=G-U,U>y&&s.sane){a.msg="invalid distance too far back",s.mode=r;break e}if(K=0,q=S,w===0){if(K+=p-U,U2;)H[f++]=q[K++],H[f++]=q[K++],H[f++]=q[K++],V-=3;V&&(H[f++]=q[K++],V>1&&(H[f++]=q[K++]))}else{K=f-G;do H[f++]=H[K++],H[f++]=H[K++],H[f++]=H[K++],V-=3;while(V>2);V&&(H[f++]=H[K++],V>1&&(H[f++]=H[K++]))}}else if(U&64){a.msg="invalid distance code",s.mode=r;break e}else{j=D[(j&65535)+(E&(1<>3,c-=V,k-=V<<3,E&=(1<=1&&$e[V]===0;V--);if(G>V&&(G=V),V===0)return E[k++]=1<<24|64<<16|0,E[k++]=1<<24|64<<16|0,D.bits=1,0;for(U=1;U0&&(p===o||V!==1))return-1;for(Ue[1]=0,L=1;Li||p===c&&H>a)return 1;for(;;){ge=L-q,I[j]We?(we=Ie[be+I[j]],Re=Le[at+I[j]]):(we=96,Re=0),ue=1<>q)+ae]=ge<<24|we<<16|Re|0;while(ae!==0);for(ue=1<>=1;if(ue!==0?(_&=ue-1,_+=ue):_=0,j++,--$e[L]===0){if(L===V)break;L=y[w+I[j]]}if(L>G&&(_&de)!==Ae){for(q===0&&(q=G),Ce+=U,K=L-q,ee=1<i||p===c&&H>a)return 1;Ae=_&de,E[Ae]=G<<24|K<<16|Ce-k|0}}return _!==0&&(E[Ce+_]=L-q<<24|64<<16|0),D.bits=G,0}}}),Uy=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/lib/zlib/inflate.js"(t){var e=mi(),r=Wp(),n=Gp(),i=My(),a=Ly(),o=0,s=1,c=2,u=4,f=5,h=6,d=0,v=1,p=2,y=-2,w=-3,S=-4,E=-5,k=8,I=1,D=2,R=3,L=4,j=5,U=6,V=7,G=8,K=9,q=10,ee=11,H=12,_=13,ue=14,ae=15,Ae=16,de=17,Ce=18,Le=19,at=20,We=21,$e=22,Ue=23,Ie=24,be=25,ge=26,we=27,Re=28,De=29,me=30,lt=31,T=32,m=852,b=592,O=15,N=O;function $(M){return(M>>>24&255)+(M>>>8&65280)+((M&65280)<<8)+((M&255)<<24)}function Q(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new e.Buf16(320),this.work=new e.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function Fe(M){var Y;return!M||!M.state?y:(Y=M.state,M.total_in=M.total_out=Y.total=0,M.msg="",Y.wrap&&(M.adler=Y.wrap&1),Y.mode=I,Y.last=0,Y.havedict=0,Y.dmax=32768,Y.head=null,Y.hold=0,Y.bits=0,Y.lencode=Y.lendyn=new e.Buf32(m),Y.distcode=Y.distdyn=new e.Buf32(b),Y.sane=1,Y.back=-1,d)}function Ne(M){var Y;return!M||!M.state?y:(Y=M.state,Y.wsize=0,Y.whave=0,Y.wnext=0,Fe(M))}function nt(M,Y){var A,re;return!M||!M.state||(re=M.state,Y<0?(A=0,Y=-Y):(A=(Y>>4)+1,Y<48&&(Y&=15)),Y&&(Y<8||Y>15))?y:(re.window!==null&&re.wbits!==Y&&(re.window=null),re.wrap=A,re.wbits=Y,Ne(M))}function ft(M,Y){var A,re;return M?(re=new Q,M.state=re,re.window=null,A=nt(M,Y),A!==d&&(M.state=null),A):y}function Je(M){return ft(M,N)}var Ut=!0,jt,kt;function Kt(M){if(Ut){var Y;for(jt=new e.Buf32(512),kt=new e.Buf32(32),Y=0;Y<144;)M.lens[Y++]=8;for(;Y<256;)M.lens[Y++]=9;for(;Y<280;)M.lens[Y++]=7;for(;Y<288;)M.lens[Y++]=8;for(a(s,M.lens,0,288,jt,0,M.work,{bits:9}),Y=0;Y<32;)M.lens[Y++]=5;a(c,M.lens,0,32,kt,0,M.work,{bits:5}),Ut=!1}M.lencode=jt,M.lenbits=9,M.distcode=kt,M.distbits=5}function dr(M,Y,A,re){var Ge,g=M.state;return g.window===null&&(g.wsize=1<=g.wsize?(e.arraySet(g.window,Y,A-g.wsize,g.wsize,0),g.wnext=0,g.whave=g.wsize):(Ge=g.wsize-g.wnext,Ge>re&&(Ge=re),e.arraySet(g.window,Y,A-re,Ge,g.wnext),re-=Ge,re?(e.arraySet(g.window,Y,A-re,re,0),g.wnext=re,g.whave=g.wsize):(g.wnext+=Ge,g.wnext===g.wsize&&(g.wnext=0),g.whave>>8&255,A.check=n(A.check,nr,2,0),B=0,W=0,A.mode=D;break}if(A.flags=0,A.head&&(A.head.done=!1),!(A.wrap&1)||(((B&255)<<8)+(B>>8))%31){M.msg="incorrect header check",A.mode=me;break}if((B&15)!==k){M.msg="unknown compression method",A.mode=me;break}if(B>>>=4,W-=4,Vt=(B&15)+8,A.wbits===0)A.wbits=Vt;else if(Vt>A.wbits){M.msg="invalid window size",A.mode=me;break}A.dmax=1<>8&1),A.flags&512&&(nr[0]=B&255,nr[1]=B>>>8&255,A.check=n(A.check,nr,2,0)),B=0,W=0,A.mode=R;case R:for(;W<32;){if(X===0)break e;X--,B+=re[g++]<>>8&255,nr[2]=B>>>16&255,nr[3]=B>>>24&255,A.check=n(A.check,nr,4,0)),B=0,W=0,A.mode=L;case L:for(;W<16;){if(X===0)break e;X--,B+=re[g++]<>8),A.flags&512&&(nr[0]=B&255,nr[1]=B>>>8&255,A.check=n(A.check,nr,2,0)),B=0,W=0,A.mode=j;case j:if(A.flags&1024){for(;W<16;){if(X===0)break e;X--,B+=re[g++]<>>8&255,A.check=n(A.check,nr,2,0)),B=0,W=0}else A.head&&(A.head.extra=null);A.mode=U;case U:if(A.flags&1024&&(Se=A.length,Se>X&&(Se=X),Se&&(A.head&&(Vt=A.head.extra_len-A.length,A.head.extra||(A.head.extra=new Array(A.head.extra_len)),e.arraySet(A.head.extra,re,g,Se,Vt)),A.flags&512&&(A.check=n(A.check,re,Se,g)),X-=Se,g+=Se,A.length-=Se),A.length))break e;A.length=0,A.mode=V;case V:if(A.flags&2048){if(X===0)break e;Se=0;do Vt=re[g+Se++],A.head&&Vt&&A.length<65536&&(A.head.name+=String.fromCharCode(Vt));while(Vt&&Se>9&1,A.head.done=!0),M.adler=A.check=0,A.mode=H;break;case q:for(;W<32;){if(X===0)break e;X--,B+=re[g++]<>>=W&7,W-=W&7,A.mode=we;break}for(;W<3;){if(X===0)break e;X--,B+=re[g++]<>>=1,W-=1,B&3){case 0:A.mode=ue;break;case 1:if(Kt(A),A.mode=at,Y===h){B>>>=2,W-=2;break e}break;case 2:A.mode=de;break;case 3:M.msg="invalid block type",A.mode=me}B>>>=2,W-=2;break;case ue:for(B>>>=W&7,W-=W&7;W<32;){if(X===0)break e;X--,B+=re[g++]<>>16^65535)){M.msg="invalid stored block lengths",A.mode=me;break}if(A.length=B&65535,B=0,W=0,A.mode=ae,Y===h)break e;case ae:A.mode=Ae;case Ae:if(Se=A.length,Se){if(Se>X&&(Se=X),Se>C&&(Se=C),Se===0)break e;e.arraySet(Ge,re,g,Se,Z),X-=Se,g+=Se,C-=Se,Z+=Se,A.length-=Se;break}A.mode=H;break;case de:for(;W<14;){if(X===0)break e;X--,B+=re[g++]<>>=5,W-=5,A.ndist=(B&31)+1,B>>>=5,W-=5,A.ncode=(B&15)+4,B>>>=4,W-=4,A.nlen>286||A.ndist>30){M.msg="too many length or distance symbols",A.mode=me;break}A.have=0,A.mode=Ce;case Ce:for(;A.have>>=3,W-=3}for(;A.have<19;)A.lens[Eh[A.have++]]=0;if(A.lencode=A.lendyn,A.lenbits=7,An={bits:A.lenbits},Ir=a(o,A.lens,0,19,A.lencode,0,A.work,An),A.lenbits=An.bits,Ir){M.msg="invalid code lengths set",A.mode=me;break}A.have=0,A.mode=Le;case Le:for(;A.have>>24,Xt=Nt>>>16&255,cr=Nt&65535,!(Ct<=W);){if(X===0)break e;X--,B+=re[g++]<>>=Ct,W-=Ct,A.lens[A.have++]=cr;else{if(cr===16){for(en=Ct+2;W>>=Ct,W-=Ct,A.have===0){M.msg="invalid bit length repeat",A.mode=me;break}Vt=A.lens[A.have-1],Se=3+(B&3),B>>>=2,W-=2}else if(cr===17){for(en=Ct+3;W>>=Ct,W-=Ct,Vt=0,Se=3+(B&7),B>>>=3,W-=3}else{for(en=Ct+7;W>>=Ct,W-=Ct,Vt=0,Se=11+(B&127),B>>>=7,W-=7}if(A.have+Se>A.nlen+A.ndist){M.msg="invalid bit length repeat",A.mode=me;break}for(;Se--;)A.lens[A.have++]=Vt}}if(A.mode===me)break;if(A.lens[256]===0){M.msg="invalid code -- missing end-of-block",A.mode=me;break}if(A.lenbits=9,An={bits:A.lenbits},Ir=a(s,A.lens,0,A.nlen,A.lencode,0,A.work,An),A.lenbits=An.bits,Ir){M.msg="invalid literal/lengths set",A.mode=me;break}if(A.distbits=6,A.distcode=A.distdyn,An={bits:A.distbits},Ir=a(c,A.lens,A.nlen,A.ndist,A.distcode,0,A.work,An),A.distbits=An.bits,Ir){M.msg="invalid distances set",A.mode=me;break}if(A.mode=at,Y===h)break e;case at:A.mode=We;case We:if(X>=6&&C>=258){M.next_out=Z,M.avail_out=C,M.next_in=g,M.avail_in=X,A.hold=B,A.bits=W,i(M,pe),Z=M.next_out,Ge=M.output,C=M.avail_out,g=M.next_in,re=M.input,X=M.avail_in,B=A.hold,W=A.bits,A.mode===H&&(A.back=-1);break}for(A.back=0;Nt=A.lencode[B&(1<>>24,Xt=Nt>>>16&255,cr=Nt&65535,!(Ct<=W);){if(X===0)break e;X--,B+=re[g++]<>mr)],Ct=Nt>>>24,Xt=Nt>>>16&255,cr=Nt&65535,!(mr+Ct<=W);){if(X===0)break e;X--,B+=re[g++]<>>=mr,W-=mr,A.back+=mr}if(B>>>=Ct,W-=Ct,A.back+=Ct,A.length=cr,Xt===0){A.mode=ge;break}if(Xt&32){A.back=-1,A.mode=H;break}if(Xt&64){M.msg="invalid literal/length code",A.mode=me;break}A.extra=Xt&15,A.mode=$e;case $e:if(A.extra){for(en=A.extra;W>>=A.extra,W-=A.extra,A.back+=A.extra}A.was=A.length,A.mode=Ue;case Ue:for(;Nt=A.distcode[B&(1<>>24,Xt=Nt>>>16&255,cr=Nt&65535,!(Ct<=W);){if(X===0)break e;X--,B+=re[g++]<>mr)],Ct=Nt>>>24,Xt=Nt>>>16&255,cr=Nt&65535,!(mr+Ct<=W);){if(X===0)break e;X--,B+=re[g++]<>>=mr,W-=mr,A.back+=mr}if(B>>>=Ct,W-=Ct,A.back+=Ct,Xt&64){M.msg="invalid distance code",A.mode=me;break}A.offset=cr,A.extra=Xt&15,A.mode=Ie;case Ie:if(A.extra){for(en=A.extra;W>>=A.extra,W-=A.extra,A.back+=A.extra}if(A.offset>A.dmax){M.msg="invalid distance too far back",A.mode=me;break}A.mode=be;case be:if(C===0)break e;if(Se=pe-C,A.offset>Se){if(Se=A.offset-Se,Se>A.whave&&A.sane){M.msg="invalid distance too far back",A.mode=me;break}Se>A.wnext?(Se-=A.wnext,bt=A.wsize-Se):bt=A.wnext-Se,Se>A.length&&(Se=A.length),Sn=A.window}else Sn=Ge,bt=Z-A.offset,Se=A.length;Se>C&&(Se=C),C-=Se,A.length-=Se;do Ge[Z++]=Sn[bt++];while(--Se);A.length===0&&(A.mode=We);break;case ge:if(C===0)break e;Ge[Z++]=A.length,C--,A.mode=We;break;case we:if(A.wrap){for(;W<32;){if(X===0)break e;X--,B|=re[g++]<=0&&v.windowBits<16&&(v.windowBits=-v.windowBits,v.windowBits===0&&(v.windowBits=-15)),v.windowBits>=0&&v.windowBits<16&&!(d&&d.windowBits)&&(v.windowBits+=32),v.windowBits>15&&v.windowBits<48&&(v.windowBits&15||(v.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new o,this.strm.avail_out=0;var p=e.inflateInit2(this.strm,v.windowBits);if(p!==i.Z_OK)throw new Error(a[p]);if(this.header=new s,e.inflateGetHeader(this.strm,this.header),v.dictionary&&(typeof v.dictionary=="string"?v.dictionary=n.string2buf(v.dictionary):c.call(v.dictionary)==="[object ArrayBuffer]"&&(v.dictionary=new Uint8Array(v.dictionary)),v.raw&&(p=e.inflateSetDictionary(this.strm,v.dictionary),p!==i.Z_OK)))throw new Error(a[p])}u.prototype.push=function(d,v){var p=this.strm,y=this.options.chunkSize,w=this.options.dictionary,S,E,k,I,D,R=!1;if(this.ended)return!1;E=v===~~v?v:v===!0?i.Z_FINISH:i.Z_NO_FLUSH,typeof d=="string"?p.input=n.binstring2buf(d):c.call(d)==="[object ArrayBuffer]"?p.input=new Uint8Array(d):p.input=d,p.next_in=0,p.avail_in=p.input.length;do{if(p.avail_out===0&&(p.output=new r.Buf8(y),p.next_out=0,p.avail_out=y),S=e.inflate(p,i.Z_NO_FLUSH),S===i.Z_NEED_DICT&&w&&(S=e.inflateSetDictionary(this.strm,w)),S===i.Z_BUF_ERROR&&R===!0&&(S=i.Z_OK,R=!1),S!==i.Z_STREAM_END&&S!==i.Z_OK)return this.onEnd(S),this.ended=!0,!1;p.next_out&&(p.avail_out===0||S===i.Z_STREAM_END||p.avail_in===0&&(E===i.Z_FINISH||E===i.Z_SYNC_FLUSH))&&(this.options.to==="string"?(k=n.utf8border(p.output,p.next_out),I=p.next_out-k,D=n.buf2string(p.output,k),p.next_out=I,p.avail_out=y-I,I&&r.arraySet(p.output,p.output,k,I,0),this.onData(D)):this.onData(r.shrinkBuf(p.output,p.next_out))),p.avail_in===0&&p.avail_out===0&&(R=!0)}while((p.avail_in>0||p.avail_out===0)&&S!==i.Z_STREAM_END);return S===i.Z_STREAM_END&&(E=i.Z_FINISH),E===i.Z_FINISH?(S=e.inflateEnd(this.strm),this.onEnd(S),this.ended=!0,S===i.Z_OK):(E===i.Z_SYNC_FLUSH&&(this.onEnd(i.Z_OK),p.avail_out=0),!0)},u.prototype.onData=function(d){this.chunks.push(d)},u.prototype.onEnd=function(d){d===i.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=d,this.msg=this.strm.msg};function f(d,v){var p=new u(v);if(p.push(d,!0),p.err)throw p.msg||a[p.err];return p.result}function h(d,v){return v=v||{},v.raw=!0,f(d,v)}t.Inflate=u,t.inflate=f,t.inflateRaw=h,t.ungzip=f}}),as=hr({"../../node_modules/.pnpm/pako@1.0.11/node_modules/pako/index.js"(t,e){var r=mi().assign,n=Ny(),i=jy(),a=Kp(),o={};r(o,n,i,a),e.exports=o}}),Jn={};Iy(Jn,{BRAND:()=>hm,DIRTY:()=>ga,EMPTY_PATH:()=>Gy,INVALID:()=>Ve,NEVER:()=>Ym,OK:()=>yr,ParseStatus:()=>Cr,Schema:()=>st,ZodAny:()=>Ea,ZodArray:()=>Hi,ZodBigInt:()=>Io,ZodBoolean:()=>Do,ZodBranded:()=>gf,ZodCatch:()=>qo,ZodDate:()=>Bo,ZodDefault:()=>Vo,ZodDiscriminatedUnion:()=>t0,ZodEffects:()=>$r,ZodEnum:()=>os,ZodError:()=>_r,ZodFirstPartyTypeKind:()=>Ze,ZodFunction:()=>a0,ZodIntersection:()=>Lo,ZodIssueCode:()=>oe,ZodLazy:()=>Uo,ZodLiteral:()=>zo,ZodMap:()=>du,ZodNaN:()=>pu,ZodNativeEnum:()=>jo,ZodNever:()=>Nn,ZodNull:()=>No,ZodNullable:()=>fi,ZodNumber:()=>Eo,ZodObject:()=>qr,ZodOptional:()=>dn,ZodParsedType:()=>ye,ZodPipeline:()=>yf,ZodPromise:()=>Ia,ZodReadonly:()=>Wo,ZodRecord:()=>i0,ZodSchema:()=>st,ZodSet:()=>vu,ZodString:()=>Pa,ZodSymbol:()=>fu,ZodTransformer:()=>$r,ZodTuple:()=>li,ZodType:()=>st,ZodUndefined:()=>Ro,ZodUnion:()=>Mo,ZodUnknown:()=>ji,ZodVoid:()=>hu,addIssueToContext:()=>fe,any:()=>Sm,array:()=>Fm,bigint:()=>gm,boolean:()=>f0,coerce:()=>Xm,custom:()=>u0,date:()=>ym,datetimeRegex:()=>$p,defaultErrorMap:()=>Oa,discriminatedUnion:()=>Pm,effect:()=>Bh,enum:()=>Um,function:()=>Nm,getErrorMap:()=>cu,getParsedType:()=>On,instanceof:()=>vm,intersection:()=>Em,isAborted:()=>Cl,isAsync:()=>Po,isDirty:()=>kl,isValid:()=>Gi,late:()=>dm,lazy:()=>Mm,literal:()=>Lm,makeIssue:()=>lu,map:()=>Bm,nan:()=>pm,nativeEnum:()=>zm,never:()=>Cm,null:()=>wm,nullable:()=>qm,number:()=>l0,object:()=>xm,objectUtil:()=>Al,oboolean:()=>Km,onumber:()=>Zm,optional:()=>Vm,ostring:()=>Hm,pipeline:()=>Gm,preprocess:()=>Wm,promise:()=>jm,quotelessJson:()=>Vy,record:()=>Dm,set:()=>Rm,setErrorMap:()=>Wy,strictObject:()=>Tm,string:()=>c0,symbol:()=>mm,transformer:()=>Bh,tuple:()=>Im,undefined:()=>bm,union:()=>Om,unknown:()=>Am,util:()=>St,void:()=>km});var St;(function(t){t.assertEqual=i=>{};function e(i){}t.assertIs=e;function r(i){throw new Error}t.assertNever=r,t.arrayToEnum=i=>{const a={};for(const o of i)a[o]=o;return a},t.getValidEnumValues=i=>{const a=t.objectKeys(i).filter(s=>typeof i[i[s]]!="number"),o={};for(const s of a)o[s]=i[s];return t.objectValues(o)},t.objectValues=i=>t.objectKeys(i).map(function(a){return i[a]}),t.objectKeys=typeof Object.keys=="function"?i=>Object.keys(i):i=>{const a=[];for(const o in i)Object.prototype.hasOwnProperty.call(i,o)&&a.push(o);return a},t.find=(i,a)=>{for(const o of i)if(a(o))return o},t.isInteger=typeof Number.isInteger=="function"?i=>Number.isInteger(i):i=>typeof i=="number"&&Number.isFinite(i)&&Math.floor(i)===i;function n(i,a=" | "){return i.map(o=>typeof o=="string"?`'${o}'`:o).join(a)}t.joinValues=n,t.jsonStringifyReplacer=(i,a)=>typeof a=="bigint"?a.toString():a})(St||(St={}));var Al;(function(t){t.mergeShapes=(e,r)=>({...e,...r})})(Al||(Al={}));var ye=St.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),On=t=>{switch(typeof t){case"undefined":return ye.undefined;case"string":return ye.string;case"number":return Number.isNaN(t)?ye.nan:ye.number;case"boolean":return ye.boolean;case"function":return ye.function;case"bigint":return ye.bigint;case"symbol":return ye.symbol;case"object":return Array.isArray(t)?ye.array:t===null?ye.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?ye.promise:typeof Map<"u"&&t instanceof Map?ye.map:typeof Set<"u"&&t instanceof Set?ye.set:typeof Date<"u"&&t instanceof Date?ye.date:ye.object;default:return ye.unknown}},oe=St.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Vy=t=>JSON.stringify(t,null,2).replace(/"([^"]+)":/g,"$1:"),_r=class Xp extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=n=>{this.issues=[...this.issues,n]},this.addIssues=(n=[])=>{this.issues=[...this.issues,...n]};const r=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,r):this.__proto__=r,this.name="ZodError",this.issues=e}format(e){const r=e||function(a){return a.message},n={_errors:[]},i=a=>{for(const o of a.issues)if(o.code==="invalid_union")o.unionErrors.map(i);else if(o.code==="invalid_return_type")i(o.returnTypeError);else if(o.code==="invalid_arguments")i(o.argumentsError);else if(o.path.length===0)n._errors.push(r(o));else{let s=n,c=0;for(;cr.message){const r={},n=[];for(const i of this.issues)if(i.path.length>0){const a=i.path[0];r[a]=r[a]||[],r[a].push(e(i))}else n.push(e(i));return{formErrors:n,fieldErrors:r}}get formErrors(){return this.flatten()}};_r.create=t=>new _r(t);var qy=(t,e)=>{let r;switch(t.code){case oe.invalid_type:t.received===ye.undefined?r="Required":r=`Expected ${t.expected}, received ${t.received}`;break;case oe.invalid_literal:r=`Invalid literal value, expected ${JSON.stringify(t.expected,St.jsonStringifyReplacer)}`;break;case oe.unrecognized_keys:r=`Unrecognized key(s) in object: ${St.joinValues(t.keys,", ")}`;break;case oe.invalid_union:r="Invalid input";break;case oe.invalid_union_discriminator:r=`Invalid discriminator value. Expected ${St.joinValues(t.options)}`;break;case oe.invalid_enum_value:r=`Invalid enum value. Expected ${St.joinValues(t.options)}, received '${t.received}'`;break;case oe.invalid_arguments:r="Invalid function arguments";break;case oe.invalid_return_type:r="Invalid function return type";break;case oe.invalid_date:r="Invalid date";break;case oe.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(r=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(r=`${r} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?r=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?r=`Invalid input: must end with "${t.validation.endsWith}"`:St.assertNever(t.validation):t.validation!=="regex"?r=`Invalid ${t.validation}`:r="Invalid";break;case oe.too_small:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?r=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:r="Invalid input";break;case oe.too_big:t.type==="array"?r=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?r=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?r=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?r=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?r=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:r="Invalid input";break;case oe.custom:r="Invalid input";break;case oe.invalid_intersection_types:r="Intersection results could not be merged";break;case oe.not_multiple_of:r=`Number must be a multiple of ${t.multipleOf}`;break;case oe.not_finite:r="Number must be finite";break;default:r=e.defaultError,St.assertNever(t)}return{message:r}},Oa=qy,Yp=Oa;function Wy(t){Yp=t}function cu(){return Yp}var lu=t=>{const{data:e,path:r,errorMaps:n,issueData:i}=t,a=[...r,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s="";const c=n.filter(u=>!!u).slice().reverse();for(const u of c)s=u(o,{data:e,defaultError:s}).message;return{...i,path:a,message:s}},Gy=[];function fe(t,e){const r=cu(),n=lu({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,r,r===Oa?void 0:Oa].filter(i=>!!i)});t.common.issues.push(n)}var Cr=class Jp{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,r){const n=[];for(const i of r){if(i.status==="aborted")return Ve;i.status==="dirty"&&e.dirty(),n.push(i.value)}return{status:e.value,value:n}}static async mergeObjectAsync(e,r){const n=[];for(const i of r){const a=await i.key,o=await i.value;n.push({key:a,value:o})}return Jp.mergeObjectSync(e,n)}static mergeObjectSync(e,r){const n={};for(const i of r){const{key:a,value:o}=i;if(a.status==="aborted"||o.status==="aborted")return Ve;a.status==="dirty"&&e.dirty(),o.status==="dirty"&&e.dirty(),a.value!=="__proto__"&&(typeof o.value<"u"||i.alwaysSet)&&(n[a.value]=o.value)}return{status:e.value,value:n}}},Ve=Object.freeze({status:"aborted"}),ga=t=>({status:"dirty",value:t}),yr=t=>({status:"valid",value:t}),Cl=t=>t.status==="aborted",kl=t=>t.status==="dirty",Gi=t=>t.status==="valid",Po=t=>typeof Promise<"u"&&t instanceof Promise,Te;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e==null?void 0:e.message})(Te||(Te={}));var pn=class{constructor(t,e,r,n){this._cachedPath=[],this.parent=t,this.data=e,this._path=r,this._key=n}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}},Ih=(t,e)=>{if(Gi(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const r=new _r(t.common.issues);return this._error=r,this._error}}};function it(t){if(!t)return{};const{errorMap:e,invalid_type_error:r,required_error:n,description:i}=t;if(e&&(r||n))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:i}:{errorMap:(o,s)=>{const{message:c}=t;return o.code==="invalid_enum_value"?{message:c??s.defaultError}:typeof s.data>"u"?{message:c??n??s.defaultError}:o.code!=="invalid_type"?{message:s.defaultError}:{message:c??r??s.defaultError}},description:i}}var st=class{get description(){return this._def.description}_getType(t){return On(t.data)}_getOrReturnCtx(t,e){return e||{common:t.parent.common,data:t.data,parsedType:On(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}_processInputParams(t){return{status:new Cr,ctx:{common:t.parent.common,data:t.data,parsedType:On(t.data),schemaErrorMap:this._def.errorMap,path:t.path,parent:t.parent}}}_parseSync(t){const e=this._parse(t);if(Po(e))throw new Error("Synchronous parse encountered promise.");return e}_parseAsync(t){const e=this._parse(t);return Promise.resolve(e)}parse(t,e){const r=this.safeParse(t,e);if(r.success)return r.data;throw r.error}safeParse(t,e){const r={common:{issues:[],async:(e==null?void 0:e.async)??!1,contextualErrorMap:e==null?void 0:e.errorMap},path:(e==null?void 0:e.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:On(t)},n=this._parseSync({data:t,path:r.path,parent:r});return Ih(r,n)}"~validate"(t){var r,n;const e={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:On(t)};if(!this["~standard"].async)try{const i=this._parseSync({data:t,path:[],parent:e});return Gi(i)?{value:i.value}:{issues:e.common.issues}}catch(i){(n=(r=i==null?void 0:i.message)==null?void 0:r.toLowerCase())!=null&&n.includes("encountered")&&(this["~standard"].async=!0),e.common={issues:[],async:!0}}return this._parseAsync({data:t,path:[],parent:e}).then(i=>Gi(i)?{value:i.value}:{issues:e.common.issues})}async parseAsync(t,e){const r=await this.safeParseAsync(t,e);if(r.success)return r.data;throw r.error}async safeParseAsync(t,e){const r={common:{issues:[],contextualErrorMap:e==null?void 0:e.errorMap,async:!0},path:(e==null?void 0:e.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:On(t)},n=this._parse({data:t,path:r.path,parent:r}),i=await(Po(n)?n:Promise.resolve(n));return Ih(r,i)}refine(t,e){const r=n=>typeof e=="string"||typeof e>"u"?{message:e}:typeof e=="function"?e(n):e;return this._refinement((n,i)=>{const a=t(n),o=()=>i.addIssue({code:oe.custom,...r(n)});return typeof Promise<"u"&&a instanceof Promise?a.then(s=>s?!0:(o(),!1)):a?!0:(o(),!1)})}refinement(t,e){return this._refinement((r,n)=>t(r)?!0:(n.addIssue(typeof e=="function"?e(r,n):e),!1))}_refinement(t){return new $r({schema:this,typeName:Ze.ZodEffects,effect:{type:"refinement",refinement:t}})}superRefine(t){return this._refinement(t)}constructor(t){this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:e=>this["~validate"](e)}}optional(){return dn.create(this,this._def)}nullable(){return fi.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return Hi.create(this)}promise(){return Ia.create(this,this._def)}or(t){return Mo.create([this,t],this._def)}and(t){return Lo.create(this,t,this._def)}transform(t){return new $r({...it(this._def),schema:this,typeName:Ze.ZodEffects,effect:{type:"transform",transform:t}})}default(t){const e=typeof t=="function"?t:()=>t;return new Vo({...it(this._def),innerType:this,defaultValue:e,typeName:Ze.ZodDefault})}brand(){return new gf({typeName:Ze.ZodBranded,type:this,...it(this._def)})}catch(t){const e=typeof t=="function"?t:()=>t;return new qo({...it(this._def),innerType:this,catchValue:e,typeName:Ze.ZodCatch})}describe(t){const e=this.constructor;return new e({...this._def,description:t})}pipe(t){return yf.create(this,t)}readonly(){return Wo.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}},Hy=/^c[^\s-]{8,}$/i,Zy=/^[0-9a-z]+$/,Ky=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Xy=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Yy=/^[a-z0-9_-]{21}$/i,Jy=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Qy=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,_y=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,$y="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Pc,em=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,tm=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,rm=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,nm=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,im=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,am=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Qp="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",om=new RegExp(`^${Qp}$`);function _p(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);const r=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${r}`}function sm(t){return new RegExp(`^${_p(t)}$`)}function $p(t){let e=`${Qp}T${_p(t)}`;const r=[];return r.push(t.local?"Z?":"Z"),t.offset&&r.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${r.join("|")})`,new RegExp(`^${e}$`)}function um(t,e){return!!((e==="v4"||!e)&&em.test(t)||(e==="v6"||!e)&&rm.test(t))}function cm(t,e){if(!Jy.test(t))return!1;try{const[r]=t.split(".");if(!r)return!1;const n=r.replace(/-/g,"+").replace(/_/g,"/").padEnd(r.length+(4-r.length%4)%4,"="),i=JSON.parse(atob(n));return!(typeof i!="object"||i===null||"typ"in i&&(i==null?void 0:i.typ)!=="JWT"||!i.alg||e&&i.alg!==e)}catch{return!1}}function lm(t,e){return!!((e==="v4"||!e)&&tm.test(t)||(e==="v6"||!e)&&nm.test(t))}var Pa=class lo extends st{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==ye.string){const a=this._getOrReturnCtx(e);return fe(a,{code:oe.invalid_type,expected:ye.string,received:a.parsedType}),Ve}const n=new Cr;let i;for(const a of this._def.checks)if(a.kind==="min")e.data.lengtha.value&&(i=this._getOrReturnCtx(e,i),fe(i,{code:oe.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),n.dirty());else if(a.kind==="length"){const o=e.data.length>a.value,s=e.data.lengthe.test(i),{validation:r,code:oe.invalid_string,...Te.errToObj(n)})}_addCheck(e){return new lo({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...Te.errToObj(e)})}url(e){return this._addCheck({kind:"url",...Te.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...Te.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...Te.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...Te.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...Te.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...Te.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...Te.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...Te.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...Te.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...Te.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...Te.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...Te.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,offset:(e==null?void 0:e.offset)??!1,local:(e==null?void 0:e.local)??!1,...Te.errToObj(e==null?void 0:e.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,...Te.errToObj(e==null?void 0:e.message)})}duration(e){return this._addCheck({kind:"duration",...Te.errToObj(e)})}regex(e,r){return this._addCheck({kind:"regex",regex:e,...Te.errToObj(r)})}includes(e,r){return this._addCheck({kind:"includes",value:e,position:r==null?void 0:r.position,...Te.errToObj(r==null?void 0:r.message)})}startsWith(e,r){return this._addCheck({kind:"startsWith",value:e,...Te.errToObj(r)})}endsWith(e,r){return this._addCheck({kind:"endsWith",value:e,...Te.errToObj(r)})}min(e,r){return this._addCheck({kind:"min",value:e,...Te.errToObj(r)})}max(e,r){return this._addCheck({kind:"max",value:e,...Te.errToObj(r)})}length(e,r){return this._addCheck({kind:"length",value:e,...Te.errToObj(r)})}nonempty(e){return this.min(1,Te.errToObj(e))}trim(){return new lo({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new lo({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new lo({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxLength(){let e=null;for(const r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Pa({checks:[],typeName:Ze.ZodString,coerce:(t==null?void 0:t.coerce)??!1,...it(t)});function fm(t,e){const r=(t.toString().split(".")[1]||"").length,n=(e.toString().split(".")[1]||"").length,i=r>n?r:n,a=Number.parseInt(t.toFixed(i).replace(".","")),o=Number.parseInt(e.toFixed(i).replace(".",""));return a%o/10**i}var Eo=class Fl extends st{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==ye.number){const a=this._getOrReturnCtx(e);return fe(a,{code:oe.invalid_type,expected:ye.number,received:a.parsedType}),Ve}let n;const i=new Cr;for(const a of this._def.checks)a.kind==="int"?St.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),fe(n,{code:oe.invalid_type,expected:"integer",received:"float",message:a.message}),i.dirty()):a.kind==="min"?(a.inclusive?e.dataa.value:e.data>=a.value)&&(n=this._getOrReturnCtx(e,n),fe(n,{code:oe.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),i.dirty()):a.kind==="multipleOf"?fm(e.data,a.value)!==0&&(n=this._getOrReturnCtx(e,n),fe(n,{code:oe.not_multiple_of,multipleOf:a.value,message:a.message}),i.dirty()):a.kind==="finite"?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),fe(n,{code:oe.not_finite,message:a.message}),i.dirty()):St.assertNever(a);return{status:i.value,value:e.data}}gte(e,r){return this.setLimit("min",e,!0,Te.toString(r))}gt(e,r){return this.setLimit("min",e,!1,Te.toString(r))}lte(e,r){return this.setLimit("max",e,!0,Te.toString(r))}lt(e,r){return this.setLimit("max",e,!1,Te.toString(r))}setLimit(e,r,n,i){return new Fl({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:Te.toString(i)}]})}_addCheck(e){return new Fl({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:Te.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:Te.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:Te.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:Te.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:Te.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:Te.toString(r)})}finite(e){return this._addCheck({kind:"finite",message:Te.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:Te.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:Te.toString(e)})}get minValue(){let e=null;for(const r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(const r of this._def.checks)r.kind==="max"&&(e===null||r.valuee.kind==="int"||e.kind==="multipleOf"&&St.isInteger(e.value))}get isFinite(){let e=null,r=null;for(const n of this._def.checks){if(n.kind==="finite"||n.kind==="int"||n.kind==="multipleOf")return!0;n.kind==="min"?(r===null||n.value>r)&&(r=n.value):n.kind==="max"&&(e===null||n.valuenew Eo({checks:[],typeName:Ze.ZodNumber,coerce:(t==null?void 0:t.coerce)||!1,...it(t)});var Io=class xl extends st{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==ye.bigint)return this._getInvalidInput(e);let n;const i=new Cr;for(const a of this._def.checks)a.kind==="min"?(a.inclusive?e.dataa.value:e.data>=a.value)&&(n=this._getOrReturnCtx(e,n),fe(n,{code:oe.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),i.dirty()):a.kind==="multipleOf"?e.data%a.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),fe(n,{code:oe.not_multiple_of,multipleOf:a.value,message:a.message}),i.dirty()):St.assertNever(a);return{status:i.value,value:e.data}}_getInvalidInput(e){const r=this._getOrReturnCtx(e);return fe(r,{code:oe.invalid_type,expected:ye.bigint,received:r.parsedType}),Ve}gte(e,r){return this.setLimit("min",e,!0,Te.toString(r))}gt(e,r){return this.setLimit("min",e,!1,Te.toString(r))}lte(e,r){return this.setLimit("max",e,!0,Te.toString(r))}lt(e,r){return this.setLimit("max",e,!1,Te.toString(r))}setLimit(e,r,n,i){return new xl({...this._def,checks:[...this._def.checks,{kind:e,value:r,inclusive:n,message:Te.toString(i)}]})}_addCheck(e){return new xl({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:Te.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:Te.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:Te.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:Te.toString(e)})}multipleOf(e,r){return this._addCheck({kind:"multipleOf",value:e,message:Te.toString(r)})}get minValue(){let e=null;for(const r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e}get maxValue(){let e=null;for(const r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Io({checks:[],typeName:Ze.ZodBigInt,coerce:(t==null?void 0:t.coerce)??!1,...it(t)});var Do=class extends st{_parse(t){if(this._def.coerce&&(t.data=!!t.data),this._getType(t)!==ye.boolean){const r=this._getOrReturnCtx(t);return fe(r,{code:oe.invalid_type,expected:ye.boolean,received:r.parsedType}),Ve}return yr(t.data)}};Do.create=t=>new Do({typeName:Ze.ZodBoolean,coerce:(t==null?void 0:t.coerce)||!1,...it(t)});var Bo=class e0 extends st{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==ye.date){const a=this._getOrReturnCtx(e);return fe(a,{code:oe.invalid_type,expected:ye.date,received:a.parsedType}),Ve}if(Number.isNaN(e.data.getTime())){const a=this._getOrReturnCtx(e);return fe(a,{code:oe.invalid_date}),Ve}const n=new Cr;let i;for(const a of this._def.checks)a.kind==="min"?e.data.getTime()a.value&&(i=this._getOrReturnCtx(e,i),fe(i,{code:oe.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),n.dirty()):St.assertNever(a);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(e){return new e0({...this._def,checks:[...this._def.checks,e]})}min(e,r){return this._addCheck({kind:"min",value:e.getTime(),message:Te.toString(r)})}max(e,r){return this._addCheck({kind:"max",value:e.getTime(),message:Te.toString(r)})}get minDate(){let e=null;for(const r of this._def.checks)r.kind==="min"&&(e===null||r.value>e)&&(e=r.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const r of this._def.checks)r.kind==="max"&&(e===null||r.valuenew Bo({checks:[],coerce:(t==null?void 0:t.coerce)||!1,typeName:Ze.ZodDate,...it(t)});var fu=class extends st{_parse(t){if(this._getType(t)!==ye.symbol){const r=this._getOrReturnCtx(t);return fe(r,{code:oe.invalid_type,expected:ye.symbol,received:r.parsedType}),Ve}return yr(t.data)}};fu.create=t=>new fu({typeName:Ze.ZodSymbol,...it(t)});var Ro=class extends st{_parse(t){if(this._getType(t)!==ye.undefined){const r=this._getOrReturnCtx(t);return fe(r,{code:oe.invalid_type,expected:ye.undefined,received:r.parsedType}),Ve}return yr(t.data)}};Ro.create=t=>new Ro({typeName:Ze.ZodUndefined,...it(t)});var No=class extends st{_parse(t){if(this._getType(t)!==ye.null){const r=this._getOrReturnCtx(t);return fe(r,{code:oe.invalid_type,expected:ye.null,received:r.parsedType}),Ve}return yr(t.data)}};No.create=t=>new No({typeName:Ze.ZodNull,...it(t)});var Ea=class extends st{constructor(){super(...arguments),this._any=!0}_parse(t){return yr(t.data)}};Ea.create=t=>new Ea({typeName:Ze.ZodAny,...it(t)});var ji=class extends st{constructor(){super(...arguments),this._unknown=!0}_parse(t){return yr(t.data)}};ji.create=t=>new ji({typeName:Ze.ZodUnknown,...it(t)});var Nn=class extends st{_parse(t){const e=this._getOrReturnCtx(t);return fe(e,{code:oe.invalid_type,expected:ye.never,received:e.parsedType}),Ve}};Nn.create=t=>new Nn({typeName:Ze.ZodNever,...it(t)});var hu=class extends st{_parse(t){if(this._getType(t)!==ye.undefined){const r=this._getOrReturnCtx(t);return fe(r,{code:oe.invalid_type,expected:ye.void,received:r.parsedType}),Ve}return yr(t.data)}};hu.create=t=>new hu({typeName:Ze.ZodVoid,...it(t)});var Hi=class Ks extends st{_parse(e){const{ctx:r,status:n}=this._processInputParams(e),i=this._def;if(r.parsedType!==ye.array)return fe(r,{code:oe.invalid_type,expected:ye.array,received:r.parsedType}),Ve;if(i.exactLength!==null){const o=r.data.length>i.exactLength.value,s=r.data.lengthi.maxLength.value&&(fe(r,{code:oe.too_big,maximum:i.maxLength.value,type:"array",inclusive:!0,exact:!1,message:i.maxLength.message}),n.dirty()),r.common.async)return Promise.all([...r.data].map((o,s)=>i.type._parseAsync(new pn(r,o,r.path,s)))).then(o=>Cr.mergeArray(n,o));const a=[...r.data].map((o,s)=>i.type._parseSync(new pn(r,o,r.path,s)));return Cr.mergeArray(n,a)}get element(){return this._def.type}min(e,r){return new Ks({...this._def,minLength:{value:e,message:Te.toString(r)}})}max(e,r){return new Ks({...this._def,maxLength:{value:e,message:Te.toString(r)}})}length(e,r){return new Ks({...this._def,exactLength:{value:e,message:Te.toString(r)}})}nonempty(e){return this.min(1,e)}};Hi.create=(t,e)=>new Hi({type:t,minLength:null,maxLength:null,exactLength:null,typeName:Ze.ZodArray,...it(e)});function ha(t){if(t instanceof qr){const e={};for(const r in t.shape){const n=t.shape[r];e[r]=dn.create(ha(n))}return new qr({...t._def,shape:()=>e})}else return t instanceof Hi?new Hi({...t._def,type:ha(t.element)}):t instanceof dn?dn.create(ha(t.unwrap())):t instanceof fi?fi.create(ha(t.unwrap())):t instanceof li?li.create(t.items.map(e=>ha(e))):t}var qr=class Kr extends st{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),r=St.objectKeys(e);return this._cached={shape:e,keys:r},this._cached}_parse(e){if(this._getType(e)!==ye.object){const u=this._getOrReturnCtx(e);return fe(u,{code:oe.invalid_type,expected:ye.object,received:u.parsedType}),Ve}const{status:n,ctx:i}=this._processInputParams(e),{shape:a,keys:o}=this._getCached(),s=[];if(!(this._def.catchall instanceof Nn&&this._def.unknownKeys==="strip"))for(const u in i.data)o.includes(u)||s.push(u);const c=[];for(const u of o){const f=a[u],h=i.data[u];c.push({key:{status:"valid",value:u},value:f._parse(new pn(i,h,i.path,u)),alwaysSet:u in i.data})}if(this._def.catchall instanceof Nn){const u=this._def.unknownKeys;if(u==="passthrough")for(const f of s)c.push({key:{status:"valid",value:f},value:{status:"valid",value:i.data[f]}});else if(u==="strict")s.length>0&&(fe(i,{code:oe.unrecognized_keys,keys:s}),n.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const u=this._def.catchall;for(const f of s){const h=i.data[f];c.push({key:{status:"valid",value:f},value:u._parse(new pn(i,h,i.path,f)),alwaysSet:f in i.data})}}return i.common.async?Promise.resolve().then(async()=>{const u=[];for(const f of c){const h=await f.key,d=await f.value;u.push({key:h,value:d,alwaysSet:f.alwaysSet})}return u}).then(u=>Cr.mergeObjectSync(n,u)):Cr.mergeObjectSync(n,c)}get shape(){return this._def.shape()}strict(e){return Te.errToObj,new Kr({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(r,n)=>{var a,o;const i=((o=(a=this._def).errorMap)==null?void 0:o.call(a,r,n).message)??n.defaultError;return r.code==="unrecognized_keys"?{message:Te.errToObj(e).message??i}:{message:i}}}:{}})}strip(){return new Kr({...this._def,unknownKeys:"strip"})}passthrough(){return new Kr({...this._def,unknownKeys:"passthrough"})}extend(e){return new Kr({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new Kr({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:Ze.ZodObject})}setKey(e,r){return this.augment({[e]:r})}catchall(e){return new Kr({...this._def,catchall:e})}pick(e){const r={};for(const n of St.objectKeys(e))e[n]&&this.shape[n]&&(r[n]=this.shape[n]);return new Kr({...this._def,shape:()=>r})}omit(e){const r={};for(const n of St.objectKeys(this.shape))e[n]||(r[n]=this.shape[n]);return new Kr({...this._def,shape:()=>r})}deepPartial(){return ha(this)}partial(e){const r={};for(const n of St.objectKeys(this.shape)){const i=this.shape[n];e&&!e[n]?r[n]=i:r[n]=i.optional()}return new Kr({...this._def,shape:()=>r})}required(e){const r={};for(const n of St.objectKeys(this.shape))if(e&&!e[n])r[n]=this.shape[n];else{let a=this.shape[n];for(;a instanceof dn;)a=a._def.innerType;r[n]=a}return new Kr({...this._def,shape:()=>r})}keyof(){return o0(St.objectKeys(this.shape))}};qr.create=(t,e)=>new qr({shape:()=>t,unknownKeys:"strip",catchall:Nn.create(),typeName:Ze.ZodObject,...it(e)});qr.strictCreate=(t,e)=>new qr({shape:()=>t,unknownKeys:"strict",catchall:Nn.create(),typeName:Ze.ZodObject,...it(e)});qr.lazycreate=(t,e)=>new qr({shape:t,unknownKeys:"strip",catchall:Nn.create(),typeName:Ze.ZodObject,...it(e)});var Mo=class extends st{_parse(t){const{ctx:e}=this._processInputParams(t),r=this._def.options;function n(i){for(const o of i)if(o.result.status==="valid")return o.result;for(const o of i)if(o.result.status==="dirty")return e.common.issues.push(...o.ctx.common.issues),o.result;const a=i.map(o=>new _r(o.ctx.common.issues));return fe(e,{code:oe.invalid_union,unionErrors:a}),Ve}if(e.common.async)return Promise.all(r.map(async i=>{const a={...e,common:{...e.common,issues:[]},parent:null};return{result:await i._parseAsync({data:e.data,path:e.path,parent:a}),ctx:a}})).then(n);{let i;const a=[];for(const s of r){const c={...e,common:{...e.common,issues:[]},parent:null},u=s._parseSync({data:e.data,path:e.path,parent:c});if(u.status==="valid")return u;u.status==="dirty"&&!i&&(i={result:u,ctx:c}),c.common.issues.length&&a.push(c.common.issues)}if(i)return e.common.issues.push(...i.ctx.common.issues),i.result;const o=a.map(s=>new _r(s));return fe(e,{code:oe.invalid_union,unionErrors:o}),Ve}}get options(){return this._def.options}};Mo.create=(t,e)=>new Mo({options:t,typeName:Ze.ZodUnion,...it(e)});var kn=t=>t instanceof Uo?kn(t.schema):t instanceof $r?kn(t.innerType()):t instanceof zo?[t.value]:t instanceof os?t.options:t instanceof jo?St.objectValues(t.enum):t instanceof Vo?kn(t._def.innerType):t instanceof Ro?[void 0]:t instanceof No?[null]:t instanceof dn?[void 0,...kn(t.unwrap())]:t instanceof fi?[null,...kn(t.unwrap())]:t instanceof gf||t instanceof Wo?kn(t.unwrap()):t instanceof qo?kn(t._def.innerType):[],t0=class r0 extends st{_parse(e){const{ctx:r}=this._processInputParams(e);if(r.parsedType!==ye.object)return fe(r,{code:oe.invalid_type,expected:ye.object,received:r.parsedType}),Ve;const n=this.discriminator,i=r.data[n],a=this.optionsMap.get(i);return a?r.common.async?a._parseAsync({data:r.data,path:r.path,parent:r}):a._parseSync({data:r.data,path:r.path,parent:r}):(fe(r,{code:oe.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),Ve)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(e,r,n){const i=new Map;for(const a of r){const o=kn(a.shape[e]);if(!o.length)throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`);for(const s of o){if(i.has(s))throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(s)}`);i.set(s,a)}}return new r0({typeName:Ze.ZodDiscriminatedUnion,discriminator:e,options:r,optionsMap:i,...it(n)})}};function Tl(t,e){const r=On(t),n=On(e);if(t===e)return{valid:!0,data:t};if(r===ye.object&&n===ye.object){const i=St.objectKeys(e),a=St.objectKeys(t).filter(s=>i.indexOf(s)!==-1),o={...t,...e};for(const s of a){const c=Tl(t[s],e[s]);if(!c.valid)return{valid:!1};o[s]=c.data}return{valid:!0,data:o}}else if(r===ye.array&&n===ye.array){if(t.length!==e.length)return{valid:!1};const i=[];for(let a=0;a{if(Cl(i)||Cl(a))return Ve;const o=Tl(i.value,a.value);return o.valid?((kl(i)||kl(a))&&e.dirty(),{status:e.value,value:o.data}):(fe(r,{code:oe.invalid_intersection_types}),Ve)};return r.common.async?Promise.all([this._def.left._parseAsync({data:r.data,path:r.path,parent:r}),this._def.right._parseAsync({data:r.data,path:r.path,parent:r})]).then(([i,a])=>n(i,a)):n(this._def.left._parseSync({data:r.data,path:r.path,parent:r}),this._def.right._parseSync({data:r.data,path:r.path,parent:r}))}};Lo.create=(t,e,r)=>new Lo({left:t,right:e,typeName:Ze.ZodIntersection,...it(r)});var li=class n0 extends st{_parse(e){const{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ye.array)return fe(n,{code:oe.invalid_type,expected:ye.array,received:n.parsedType}),Ve;if(n.data.lengththis._def.items.length&&(fe(n,{code:oe.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());const a=[...n.data].map((o,s)=>{const c=this._def.items[s]||this._def.rest;return c?c._parse(new pn(n,o,n.path,s)):null}).filter(o=>!!o);return n.common.async?Promise.all(a).then(o=>Cr.mergeArray(r,o)):Cr.mergeArray(r,a)}get items(){return this._def.items}rest(e){return new n0({...this._def,rest:e})}};li.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new li({items:t,typeName:Ze.ZodTuple,rest:null,...it(e)})};var i0=class Ol extends st{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ye.object)return fe(n,{code:oe.invalid_type,expected:ye.object,received:n.parsedType}),Ve;const i=[],a=this._def.keyType,o=this._def.valueType;for(const s in n.data)i.push({key:a._parse(new pn(n,s,n.path,s)),value:o._parse(new pn(n,n.data[s],n.path,s)),alwaysSet:s in n.data});return n.common.async?Cr.mergeObjectAsync(r,i):Cr.mergeObjectSync(r,i)}get element(){return this._def.valueType}static create(e,r,n){return r instanceof st?new Ol({keyType:e,valueType:r,typeName:Ze.ZodRecord,...it(n)}):new Ol({keyType:Pa.create(),valueType:e,typeName:Ze.ZodRecord,...it(r)})}},du=class extends st{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(t){const{status:e,ctx:r}=this._processInputParams(t);if(r.parsedType!==ye.map)return fe(r,{code:oe.invalid_type,expected:ye.map,received:r.parsedType}),Ve;const n=this._def.keyType,i=this._def.valueType,a=[...r.data.entries()].map(([o,s],c)=>({key:n._parse(new pn(r,o,r.path,[c,"key"])),value:i._parse(new pn(r,s,r.path,[c,"value"]))}));if(r.common.async){const o=new Map;return Promise.resolve().then(async()=>{for(const s of a){const c=await s.key,u=await s.value;if(c.status==="aborted"||u.status==="aborted")return Ve;(c.status==="dirty"||u.status==="dirty")&&e.dirty(),o.set(c.value,u.value)}return{status:e.value,value:o}})}else{const o=new Map;for(const s of a){const c=s.key,u=s.value;if(c.status==="aborted"||u.status==="aborted")return Ve;(c.status==="dirty"||u.status==="dirty")&&e.dirty(),o.set(c.value,u.value)}return{status:e.value,value:o}}}};du.create=(t,e,r)=>new du({valueType:e,keyType:t,typeName:Ze.ZodMap,...it(r)});var vu=class Pl extends st{_parse(e){const{status:r,ctx:n}=this._processInputParams(e);if(n.parsedType!==ye.set)return fe(n,{code:oe.invalid_type,expected:ye.set,received:n.parsedType}),Ve;const i=this._def;i.minSize!==null&&n.data.sizei.maxSize.value&&(fe(n,{code:oe.too_big,maximum:i.maxSize.value,type:"set",inclusive:!0,exact:!1,message:i.maxSize.message}),r.dirty());const a=this._def.valueType;function o(c){const u=new Set;for(const f of c){if(f.status==="aborted")return Ve;f.status==="dirty"&&r.dirty(),u.add(f.value)}return{status:r.value,value:u}}const s=[...n.data.values()].map((c,u)=>a._parse(new pn(n,c,n.path,u)));return n.common.async?Promise.all(s).then(c=>o(c)):o(s)}min(e,r){return new Pl({...this._def,minSize:{value:e,message:Te.toString(r)}})}max(e,r){return new Pl({...this._def,maxSize:{value:e,message:Te.toString(r)}})}size(e,r){return this.min(e,r).max(e,r)}nonempty(e){return this.min(1,e)}};vu.create=(t,e)=>new vu({valueType:t,minSize:null,maxSize:null,typeName:Ze.ZodSet,...it(e)});var a0=class Xs extends st{constructor(){super(...arguments),this.validate=this.implement}_parse(e){const{ctx:r}=this._processInputParams(e);if(r.parsedType!==ye.function)return fe(r,{code:oe.invalid_type,expected:ye.function,received:r.parsedType}),Ve;function n(s,c){return lu({data:s,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,cu(),Oa].filter(u=>!!u),issueData:{code:oe.invalid_arguments,argumentsError:c}})}function i(s,c){return lu({data:s,path:r.path,errorMaps:[r.common.contextualErrorMap,r.schemaErrorMap,cu(),Oa].filter(u=>!!u),issueData:{code:oe.invalid_return_type,returnTypeError:c}})}const a={errorMap:r.common.contextualErrorMap},o=r.data;if(this._def.returns instanceof Ia){const s=this;return yr(async function(...c){const u=new _r([]),f=await s._def.args.parseAsync(c,a).catch(v=>{throw u.addIssue(n(c,v)),u}),h=await Reflect.apply(o,this,f);return await s._def.returns._def.type.parseAsync(h,a).catch(v=>{throw u.addIssue(i(h,v)),u})})}else{const s=this;return yr(function(...c){const u=s._def.args.safeParse(c,a);if(!u.success)throw new _r([n(c,u.error)]);const f=Reflect.apply(o,this,u.data),h=s._def.returns.safeParse(f,a);if(!h.success)throw new _r([i(f,h.error)]);return h.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...e){return new Xs({...this._def,args:li.create(e).rest(ji.create())})}returns(e){return new Xs({...this._def,returns:e})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(e,r,n){return new Xs({args:e||li.create([]).rest(ji.create()),returns:r||ji.create(),typeName:Ze.ZodFunction,...it(n)})}},Uo=class extends st{get schema(){return this._def.getter()}_parse(t){const{ctx:e}=this._processInputParams(t);return this._def.getter()._parse({data:e.data,path:e.path,parent:e})}};Uo.create=(t,e)=>new Uo({getter:t,typeName:Ze.ZodLazy,...it(e)});var zo=class extends st{_parse(t){if(t.data!==this._def.value){const e=this._getOrReturnCtx(t);return fe(e,{received:e.data,code:oe.invalid_literal,expected:this._def.value}),Ve}return{status:"valid",value:t.data}}get value(){return this._def.value}};zo.create=(t,e)=>new zo({value:t,typeName:Ze.ZodLiteral,...it(e)});function o0(t,e){return new os({values:t,typeName:Ze.ZodEnum,...it(e)})}var os=class El extends st{_parse(e){if(typeof e.data!="string"){const r=this._getOrReturnCtx(e),n=this._def.values;return fe(r,{expected:St.joinValues(n),received:r.parsedType,code:oe.invalid_type}),Ve}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const r=this._getOrReturnCtx(e),n=this._def.values;return fe(r,{received:r.data,code:oe.invalid_enum_value,options:n}),Ve}return yr(e.data)}get options(){return this._def.values}get enum(){const e={};for(const r of this._def.values)e[r]=r;return e}get Values(){const e={};for(const r of this._def.values)e[r]=r;return e}get Enum(){const e={};for(const r of this._def.values)e[r]=r;return e}extract(e,r=this._def){return El.create(e,{...this._def,...r})}exclude(e,r=this._def){return El.create(this.options.filter(n=>!e.includes(n)),{...this._def,...r})}};os.create=o0;var jo=class extends st{_parse(t){const e=St.getValidEnumValues(this._def.values),r=this._getOrReturnCtx(t);if(r.parsedType!==ye.string&&r.parsedType!==ye.number){const n=St.objectValues(e);return fe(r,{expected:St.joinValues(n),received:r.parsedType,code:oe.invalid_type}),Ve}if(this._cache||(this._cache=new Set(St.getValidEnumValues(this._def.values))),!this._cache.has(t.data)){const n=St.objectValues(e);return fe(r,{received:r.data,code:oe.invalid_enum_value,options:n}),Ve}return yr(t.data)}get enum(){return this._def.values}};jo.create=(t,e)=>new jo({values:t,typeName:Ze.ZodNativeEnum,...it(e)});var Ia=class extends st{unwrap(){return this._def.type}_parse(t){const{ctx:e}=this._processInputParams(t);if(e.parsedType!==ye.promise&&e.common.async===!1)return fe(e,{code:oe.invalid_type,expected:ye.promise,received:e.parsedType}),Ve;const r=e.parsedType===ye.promise?e.data:Promise.resolve(e.data);return yr(r.then(n=>this._def.type.parseAsync(n,{path:e.path,errorMap:e.common.contextualErrorMap})))}};Ia.create=(t,e)=>new Ia({type:t,typeName:Ze.ZodPromise,...it(e)});var $r=class extends st{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===Ze.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(t){const{status:e,ctx:r}=this._processInputParams(t),n=this._def.effect||null,i={addIssue:a=>{fe(r,a),a.fatal?e.abort():e.dirty()},get path(){return r.path}};if(i.addIssue=i.addIssue.bind(i),n.type==="preprocess"){const a=n.transform(r.data,i);if(r.common.async)return Promise.resolve(a).then(async o=>{if(e.value==="aborted")return Ve;const s=await this._def.schema._parseAsync({data:o,path:r.path,parent:r});return s.status==="aborted"?Ve:s.status==="dirty"||e.value==="dirty"?ga(s.value):s});{if(e.value==="aborted")return Ve;const o=this._def.schema._parseSync({data:a,path:r.path,parent:r});return o.status==="aborted"?Ve:o.status==="dirty"||e.value==="dirty"?ga(o.value):o}}if(n.type==="refinement"){const a=o=>{const s=n.refinement(o,i);if(r.common.async)return Promise.resolve(s);if(s instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return o};if(r.common.async===!1){const o=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return o.status==="aborted"?Ve:(o.status==="dirty"&&e.dirty(),a(o.value),{status:e.value,value:o.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(o=>o.status==="aborted"?Ve:(o.status==="dirty"&&e.dirty(),a(o.value).then(()=>({status:e.value,value:o.value}))))}if(n.type==="transform")if(r.common.async===!1){const a=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!Gi(a))return Ve;const o=n.transform(a.value,i);if(o instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:e.value,value:o}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(a=>Gi(a)?Promise.resolve(n.transform(a.value,i)).then(o=>({status:e.value,value:o})):Ve);St.assertNever(n)}};$r.create=(t,e,r)=>new $r({schema:t,typeName:Ze.ZodEffects,effect:e,...it(r)});$r.createWithPreprocess=(t,e,r)=>new $r({schema:e,effect:{type:"preprocess",transform:t},typeName:Ze.ZodEffects,...it(r)});var dn=class extends st{_parse(t){return this._getType(t)===ye.undefined?yr(void 0):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};dn.create=(t,e)=>new dn({innerType:t,typeName:Ze.ZodOptional,...it(e)});var fi=class extends st{_parse(t){return this._getType(t)===ye.null?yr(null):this._def.innerType._parse(t)}unwrap(){return this._def.innerType}};fi.create=(t,e)=>new fi({innerType:t,typeName:Ze.ZodNullable,...it(e)});var Vo=class extends st{_parse(t){const{ctx:e}=this._processInputParams(t);let r=e.data;return e.parsedType===ye.undefined&&(r=this._def.defaultValue()),this._def.innerType._parse({data:r,path:e.path,parent:e})}removeDefault(){return this._def.innerType}};Vo.create=(t,e)=>new Vo({innerType:t,typeName:Ze.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...it(e)});var qo=class extends st{_parse(t){const{ctx:e}=this._processInputParams(t),r={...e,common:{...e.common,issues:[]}},n=this._def.innerType._parse({data:r.data,path:r.path,parent:{...r}});return Po(n)?n.then(i=>({status:"valid",value:i.status==="valid"?i.value:this._def.catchValue({get error(){return new _r(r.common.issues)},input:r.data})})):{status:"valid",value:n.status==="valid"?n.value:this._def.catchValue({get error(){return new _r(r.common.issues)},input:r.data})}}removeCatch(){return this._def.innerType}};qo.create=(t,e)=>new qo({innerType:t,typeName:Ze.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...it(e)});var pu=class extends st{_parse(t){if(this._getType(t)!==ye.nan){const r=this._getOrReturnCtx(t);return fe(r,{code:oe.invalid_type,expected:ye.nan,received:r.parsedType}),Ve}return{status:"valid",value:t.data}}};pu.create=t=>new pu({typeName:Ze.ZodNaN,...it(t)});var hm=Symbol("zod_brand"),gf=class extends st{_parse(t){const{ctx:e}=this._processInputParams(t),r=e.data;return this._def.type._parse({data:r,path:e.path,parent:e})}unwrap(){return this._def.type}},yf=class s0 extends st{_parse(e){const{status:r,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{const a=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return a.status==="aborted"?Ve:a.status==="dirty"?(r.dirty(),ga(a.value)):this._def.out._parseAsync({data:a.value,path:n.path,parent:n})})();{const i=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return i.status==="aborted"?Ve:i.status==="dirty"?(r.dirty(),{status:"dirty",value:i.value}):this._def.out._parseSync({data:i.value,path:n.path,parent:n})}}static create(e,r){return new s0({in:e,out:r,typeName:Ze.ZodPipeline})}},Wo=class extends st{_parse(t){const e=this._def.innerType._parse(t),r=n=>(Gi(n)&&(n.value=Object.freeze(n.value)),n);return Po(e)?e.then(n=>r(n)):r(e)}unwrap(){return this._def.innerType}};Wo.create=(t,e)=>new Wo({innerType:t,typeName:Ze.ZodReadonly,...it(e)});function Dh(t,e){const r=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof r=="string"?{message:r}:r}function u0(t,e={},r){return t?Ea.create().superRefine((n,i)=>{const a=t(n);if(a instanceof Promise)return a.then(o=>{if(!o){const s=Dh(e,n),c=s.fatal??r??!0;i.addIssue({code:"custom",...s,fatal:c})}});if(!a){const o=Dh(e,n),s=o.fatal??r??!0;i.addIssue({code:"custom",...o,fatal:s})}}):Ea.create()}var dm={object:qr.lazycreate},Ze;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(Ze||(Ze={}));var vm=(t,e={message:`Input not instance of ${t.name}`})=>u0(r=>r instanceof t,e),c0=Pa.create,l0=Eo.create,pm=pu.create,gm=Io.create,f0=Do.create,ym=Bo.create,mm=fu.create,bm=Ro.create,wm=No.create,Sm=Ea.create,Am=ji.create,Cm=Nn.create,km=hu.create,Fm=Hi.create,xm=qr.create,Tm=qr.strictCreate,Om=Mo.create,Pm=t0.create,Em=Lo.create,Im=li.create,Dm=i0.create,Bm=du.create,Rm=vu.create,Nm=a0.create,Mm=Uo.create,Lm=zo.create,Um=os.create,zm=jo.create,jm=Ia.create,Bh=$r.create,Vm=dn.create,qm=fi.create,Wm=$r.createWithPreprocess,Gm=yf.create,Hm=()=>c0().optional(),Zm=()=>l0().optional(),Km=()=>f0().optional(),Xm={string:t=>Pa.create({...t,coerce:!0}),number:t=>Eo.create({...t,coerce:!0}),boolean:t=>Do.create({...t,coerce:!0}),bigint:t=>Io.create({...t,coerce:!0}),date:t=>Bo.create({...t,coerce:!0})},Ym=Ve,h0="uaf_payload.csv",Il="subject,date,content,tags",Rh=["subject","date","content","tags"],qn={subjectMax:200,contentMax:2e3,tagMax:50,tagCountMax:20},Dl=(t=>(t.InvalidCsv="INVALID_CSV",t.InvalidPayload="INVALID_PAYLOAD",t.NoPayload="NO_PAYLOAD",t.CorruptPdf="CORRUPT_PDF",t))(Dl||{}),ei=class extends Error{constructor(e,r,n){super(r);Oc(this,"code");Oc(this,"cause");this.code=e,this.cause=n,this.name="UafError"}};function Jm(t){const e=Date.parse(t);return!Number.isNaN(e)}var d0=Jn.object({subject:Jn.string().min(1,"subject must not be empty").max(qn.subjectMax,`subject must be at most ${qn.subjectMax} characters`),date:Jn.string().min(1,"date must not be empty").refine(Jm,"date must be valid ISO 8601"),content:Jn.string().min(1,"content must not be empty").max(qn.contentMax,`content must be at most ${qn.contentMax} characters`),tags:Jn.array(Jn.string().min(1,"tag must not be empty").max(qn.tagMax,`each tag must be at most ${qn.tagMax} characters`).refine(t=>!t.includes(";"),'tag must not contain ";"')).max(qn.tagCountMax,`at most ${qn.tagCountMax} tags allowed`)}),Qm=Jn.array(d0).min(1,"document must contain at least one assignment");function Cs(t){return/[",\n\r]/.test(t)?`"${t.replace(/"/g,'""')}"`:t}function Nh(t){const e=[];let r="",n=!1,i=0;for(;i0&&e.push(r),r="";continue}r+=a}return r.trim().length>0&&e.push(r),e}function $m(t){return t.trim()?t.split(";").map(e=>e.trim()).filter(e=>e.length>0):[]}function eb(t){return t.join(";")}function tb(t){const r=p0(t).map(n=>[Cs(n.subject),Cs(n.date),Cs(n.content),Cs(eb(n.tags))].join(","));return`${Il} +${r.join(` +`)} +`}function v0(t){const e=t.replace(/^\uFEFF/,"").trim(),r=_m(e);if(r.length<2)throw new ei("INVALID_CSV","CSV must contain a header and at least one data row");const n=Nh(r[0]);if(n.join(",")!==Il)throw new ei("INVALID_CSV",`Invalid header: expected "${Il}", got "${n.join(",")}"`);return r.slice(1).map((a,o)=>{const s=Nh(a);if(s.length!==Rh.length)throw new ei("INVALID_CSV",`Row ${o+2}: expected ${Rh.length} columns, got ${s.length}`);const[c,u,f,h]=s,d=d0.safeParse({subject:c,date:u,content:f,tags:$m(h)});if(!d.success)throw new ei("INVALID_PAYLOAD",`Row ${o+2}: ${d.error.errors.map(v=>`${v.path.join(".")}: ${v.message}`).join("; ")}`);return d.data})}function p0(t){const e=Qm.safeParse(t);if(!e.success)throw new ei("INVALID_PAYLOAD",e.error.errors.map(r=>`${r.path.join(".")}: ${r.message}`).join("; "));return e.data}var bi=is(as()),rr=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Dt(t,e){return e={exports:{}},t(e,e.exports),e.exports}function wi(t){return t&&t.default||t}var rb=ob,nb=ub,ib=fb,cn=[],Br=[],ab=typeof Uint8Array<"u"?Uint8Array:Array,Ec="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(Jt=0,vi=Ec.length;Jt0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function ob(t){var e=g0(t),r=e[0],n=e[1];return(r+n)*3/4-n}function sb(t,e,r){return(e+r)*3/4-r}function ub(t){var e,r=g0(t),n=r[0],i=r[1],a=new ab(sb(t,n,i)),o=0,s=i>0?n-4:n,c;for(c=0;c>16&255,a[o++]=e>>8&255,a[o++]=e&255;return i===2&&(e=Br[t.charCodeAt(c)]<<2|Br[t.charCodeAt(c+1)]>>4,a[o++]=e&255),i===1&&(e=Br[t.charCodeAt(c)]<<10|Br[t.charCodeAt(c+1)]<<4|Br[t.charCodeAt(c+2)]>>2,a[o++]=e>>8&255,a[o++]=e&255),a}function cb(t){return cn[t>>18&63]+cn[t>>12&63]+cn[t>>6&63]+cn[t&63]}function lb(t,e,r){for(var n,i=[],a=e;as?s:o+a));return n===1?(e=t[r-1],i.push(cn[e>>2]+cn[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],i.push(cn[e>>10]+cn[e>>4&63]+cn[e<<2&63]+"=")),i.join("")}var Ic={byteLength:rb,toByteArray:nb,fromByteArray:ib},hb=function(e,r,n,i,a){var o,s,c=a*8-i-1,u=(1<>1,h=-7,d=n?a-1:0,v=n?-1:1,p=e[r+d];for(d+=v,o=p&(1<<-h)-1,p>>=-h,h+=c;h>0;o=o*256+e[r+d],d+=v,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=i;h>0;s=s*256+e[r+d],d+=v,h-=8);if(o===0)o=1-f;else{if(o===u)return s?NaN:(p?-1:1)*(1/0);s=s+Math.pow(2,i),o=o-f}return(p?-1:1)*s*Math.pow(2,o-i)},db=function(e,r,n,i,a,o){var s,c,u,f=o*8-a-1,h=(1<>1,v=a===23?Math.pow(2,-24)-Math.pow(2,-77):0,p=i?0:o-1,y=i?1:-1,w=r<0||r===0&&1/r<0?1:0;for(r=Math.abs(r),isNaN(r)||r===1/0?(c=isNaN(r)?1:0,s=h):(s=Math.floor(Math.log(r)/Math.LN2),r*(u=Math.pow(2,-s))<1&&(s--,u*=2),s+d>=1?r+=v/u:r+=v*Math.pow(2,1-d),r*u>=2&&(s++,u/=2),s+d>=h?(c=0,s=h):s+d>=1?(c=(r*u-1)*Math.pow(2,a),s=s+d):(c=r*Math.pow(2,d-1)*Math.pow(2,a),s=0));a>=8;e[n+p]=c&255,p+=y,c/=256,a-=8);for(s=s<0;e[n+p]=s&255,p+=y,s/=256,f-=8);e[n+p-y]|=w*128},na={read:hb,write:db},Or=Dt(function(t,e){var r=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=o,e.SlowBuffer=w,e.INSPECT_MAX_BYTES=50;var n=2147483647;e.kMaxLength=n,o.TYPED_ARRAY_SUPPORT=i(),!o.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function i(){try{var T=new Uint8Array(1),m={foo:function(){return 42}};return Object.setPrototypeOf(m,Uint8Array.prototype),Object.setPrototypeOf(T,m),T.foo()===42}catch{return!1}}Object.defineProperty(o.prototype,"parent",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.buffer}}),Object.defineProperty(o.prototype,"offset",{enumerable:!0,get:function(){if(o.isBuffer(this))return this.byteOffset}});function a(T){if(T>n)throw new RangeError('The value "'+T+'" is invalid for option "size"');var m=new Uint8Array(T);return Object.setPrototypeOf(m,o.prototype),m}function o(T,m,b){if(typeof T=="number"){if(typeof m=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return f(T)}return s(T,m,b)}o.poolSize=8192;function s(T,m,b){if(typeof T=="string")return h(T,m);if(ArrayBuffer.isView(T))return d(T);if(T==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof T);if(De(T,ArrayBuffer)||T&&De(T.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(De(T,SharedArrayBuffer)||T&&De(T.buffer,SharedArrayBuffer)))return v(T,m,b);if(typeof T=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');var O=T.valueOf&&T.valueOf();if(O!=null&&O!==T)return o.from(O,m,b);var N=p(T);if(N)return N;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof T[Symbol.toPrimitive]=="function")return o.from(T[Symbol.toPrimitive]("string"),m,b);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof T)}o.from=function(T,m,b){return s(T,m,b)},Object.setPrototypeOf(o.prototype,Uint8Array.prototype),Object.setPrototypeOf(o,Uint8Array);function c(T){if(typeof T!="number")throw new TypeError('"size" argument must be of type number');if(T<0)throw new RangeError('The value "'+T+'" is invalid for option "size"')}function u(T,m,b){return c(T),T<=0?a(T):m!==void 0?typeof b=="string"?a(T).fill(m,b):a(T).fill(m):a(T)}o.alloc=function(T,m,b){return u(T,m,b)};function f(T){return c(T),a(T<0?0:y(T)|0)}o.allocUnsafe=function(T){return f(T)},o.allocUnsafeSlow=function(T){return f(T)};function h(T,m){if((typeof m!="string"||m==="")&&(m="utf8"),!o.isEncoding(m))throw new TypeError("Unknown encoding: "+m);var b=S(T,m)|0,O=a(b),N=O.write(T,m);return N!==b&&(O=O.slice(0,N)),O}function d(T){for(var m=T.length<0?0:y(T.length)|0,b=a(m),O=0;O=n)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+n.toString(16)+" bytes");return T|0}function w(T){return+T!=T&&(T=0),o.alloc(+T)}o.isBuffer=function(m){return m!=null&&m._isBuffer===!0&&m!==o.prototype},o.compare=function(m,b){if(De(m,Uint8Array)&&(m=o.from(m,m.offset,m.byteLength)),De(b,Uint8Array)&&(b=o.from(b,b.offset,b.byteLength)),!o.isBuffer(m)||!o.isBuffer(b))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(m===b)return 0;for(var O=m.length,N=b.length,$=0,Q=Math.min(O,N);$2&&arguments[2]===!0;if(!O&&b===0)return 0;for(var N=!1;;)switch(m){case"ascii":case"latin1":case"binary":return b;case"utf8":case"utf-8":return Ie(T).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b*2;case"hex":return b>>>1;case"base64":return we(T).length;default:if(N)return O?-1:Ie(T).length;m=(""+m).toLowerCase(),N=!0}}o.byteLength=S;function E(T,m,b){var O=!1;if((m===void 0||m<0)&&(m=0),m>this.length||((b===void 0||b>this.length)&&(b=this.length),b<=0)||(b>>>=0,m>>>=0,b<=m))return"";for(T||(T="utf8");;)switch(T){case"hex":return ae(this,m,b);case"utf8":case"utf-8":return q(this,m,b);case"ascii":return _(this,m,b);case"latin1":case"binary":return ue(this,m,b);case"base64":return K(this,m,b);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ae(this,m,b);default:if(O)throw new TypeError("Unknown encoding: "+T);T=(T+"").toLowerCase(),O=!0}}o.prototype._isBuffer=!0;function k(T,m,b){var O=T[m];T[m]=T[b],T[b]=O}o.prototype.swap16=function(){var m=this.length;if(m%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var b=0;bb&&(m+=" ... "),""},r&&(o.prototype[r]=o.prototype.inspect),o.prototype.compare=function(m,b,O,N,$){if(De(m,Uint8Array)&&(m=o.from(m,m.offset,m.byteLength)),!o.isBuffer(m))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof m);if(b===void 0&&(b=0),O===void 0&&(O=m?m.length:0),N===void 0&&(N=0),$===void 0&&($=this.length),b<0||O>m.length||N<0||$>this.length)throw new RangeError("out of range index");if(N>=$&&b>=O)return 0;if(N>=$)return-1;if(b>=O)return 1;if(b>>>=0,O>>>=0,N>>>=0,$>>>=0,this===m)return 0;for(var Q=$-N,Fe=O-b,Ne=Math.min(Q,Fe),nt=this.slice(N,$),ft=m.slice(b,O),Je=0;Je2147483647?b=2147483647:b<-2147483648&&(b=-2147483648),b=+b,me(b)&&(b=N?0:T.length-1),b<0&&(b=T.length+b),b>=T.length){if(N)return-1;b=T.length-1}else if(b<0)if(N)b=0;else return-1;if(typeof m=="string"&&(m=o.from(m,O)),o.isBuffer(m))return m.length===0?-1:D(T,m,b,O,N);if(typeof m=="number")return m=m&255,typeof Uint8Array.prototype.indexOf=="function"?N?Uint8Array.prototype.indexOf.call(T,m,b):Uint8Array.prototype.lastIndexOf.call(T,m,b):D(T,[m],b,O,N);throw new TypeError("val must be string, number or Buffer")}function D(T,m,b,O,N){var $=1,Q=T.length,Fe=m.length;if(O!==void 0&&(O=String(O).toLowerCase(),O==="ucs2"||O==="ucs-2"||O==="utf16le"||O==="utf-16le")){if(T.length<2||m.length<2)return-1;$=2,Q/=2,Fe/=2,b/=2}function Ne(jt,kt){return $===1?jt[kt]:jt.readUInt16BE(kt*$)}var nt;if(N){var ft=-1;for(nt=b;ntQ&&(b=Q-Fe),nt=b;nt>=0;nt--){for(var Je=!0,Ut=0;UtN&&(O=N)):O=N;var $=m.length;O>$/2&&(O=$/2);for(var Q=0;Q>>0,isFinite(O)?(O=O>>>0,N===void 0&&(N="utf8")):(N=O,O=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var $=this.length-b;if((O===void 0||O>$)&&(O=$),m.length>0&&(O<0||b<0)||b>this.length)throw new RangeError("Attempt to write outside buffer bounds");N||(N="utf8");for(var Q=!1;;)switch(N){case"hex":return R(this,m,b,O);case"utf8":case"utf-8":return L(this,m,b,O);case"ascii":return j(this,m,b,O);case"latin1":case"binary":return U(this,m,b,O);case"base64":return V(this,m,b,O);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return G(this,m,b,O);default:if(Q)throw new TypeError("Unknown encoding: "+N);N=(""+N).toLowerCase(),Q=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function K(T,m,b){return m===0&&b===T.length?Ic.fromByteArray(T):Ic.fromByteArray(T.slice(m,b))}function q(T,m,b){b=Math.min(T.length,b);for(var O=[],N=m;N239?4:$>223?3:$>191?2:1;if(N+Fe<=b){var Ne,nt,ft,Je;switch(Fe){case 1:$<128&&(Q=$);break;case 2:Ne=T[N+1],(Ne&192)===128&&(Je=($&31)<<6|Ne&63,Je>127&&(Q=Je));break;case 3:Ne=T[N+1],nt=T[N+2],(Ne&192)===128&&(nt&192)===128&&(Je=($&15)<<12|(Ne&63)<<6|nt&63,Je>2047&&(Je<55296||Je>57343)&&(Q=Je));break;case 4:Ne=T[N+1],nt=T[N+2],ft=T[N+3],(Ne&192)===128&&(nt&192)===128&&(ft&192)===128&&(Je=($&15)<<18|(Ne&63)<<12|(nt&63)<<6|ft&63,Je>65535&&Je<1114112&&(Q=Je))}}Q===null?(Q=65533,Fe=1):Q>65535&&(Q-=65536,O.push(Q>>>10&1023|55296),Q=56320|Q&1023),O.push(Q),N+=Fe}return H(O)}var ee=4096;function H(T){var m=T.length;if(m<=ee)return String.fromCharCode.apply(String,T);for(var b="",O=0;OO)&&(b=O);for(var N="",$=m;$O&&(m=O),b<0?(b+=O,b<0&&(b=0)):b>O&&(b=O),bb)throw new RangeError("Trying to access beyond buffer length")}o.prototype.readUIntLE=function(m,b,O){m=m>>>0,b=b>>>0,O||de(m,b,this.length);for(var N=this[m],$=1,Q=0;++Q>>0,b=b>>>0,O||de(m,b,this.length);for(var N=this[m+--b],$=1;b>0&&($*=256);)N+=this[m+--b]*$;return N},o.prototype.readUInt8=function(m,b){return m=m>>>0,b||de(m,1,this.length),this[m]},o.prototype.readUInt16LE=function(m,b){return m=m>>>0,b||de(m,2,this.length),this[m]|this[m+1]<<8},o.prototype.readUInt16BE=function(m,b){return m=m>>>0,b||de(m,2,this.length),this[m]<<8|this[m+1]},o.prototype.readUInt32LE=function(m,b){return m=m>>>0,b||de(m,4,this.length),(this[m]|this[m+1]<<8|this[m+2]<<16)+this[m+3]*16777216},o.prototype.readUInt32BE=function(m,b){return m=m>>>0,b||de(m,4,this.length),this[m]*16777216+(this[m+1]<<16|this[m+2]<<8|this[m+3])},o.prototype.readIntLE=function(m,b,O){m=m>>>0,b=b>>>0,O||de(m,b,this.length);for(var N=this[m],$=1,Q=0;++Q=$&&(N-=Math.pow(2,8*b)),N},o.prototype.readIntBE=function(m,b,O){m=m>>>0,b=b>>>0,O||de(m,b,this.length);for(var N=b,$=1,Q=this[m+--N];N>0&&($*=256);)Q+=this[m+--N]*$;return $*=128,Q>=$&&(Q-=Math.pow(2,8*b)),Q},o.prototype.readInt8=function(m,b){return m=m>>>0,b||de(m,1,this.length),this[m]&128?(255-this[m]+1)*-1:this[m]},o.prototype.readInt16LE=function(m,b){m=m>>>0,b||de(m,2,this.length);var O=this[m]|this[m+1]<<8;return O&32768?O|4294901760:O},o.prototype.readInt16BE=function(m,b){m=m>>>0,b||de(m,2,this.length);var O=this[m+1]|this[m]<<8;return O&32768?O|4294901760:O},o.prototype.readInt32LE=function(m,b){return m=m>>>0,b||de(m,4,this.length),this[m]|this[m+1]<<8|this[m+2]<<16|this[m+3]<<24},o.prototype.readInt32BE=function(m,b){return m=m>>>0,b||de(m,4,this.length),this[m]<<24|this[m+1]<<16|this[m+2]<<8|this[m+3]},o.prototype.readFloatLE=function(m,b){return m=m>>>0,b||de(m,4,this.length),na.read(this,m,!0,23,4)},o.prototype.readFloatBE=function(m,b){return m=m>>>0,b||de(m,4,this.length),na.read(this,m,!1,23,4)},o.prototype.readDoubleLE=function(m,b){return m=m>>>0,b||de(m,8,this.length),na.read(this,m,!0,52,8)},o.prototype.readDoubleBE=function(m,b){return m=m>>>0,b||de(m,8,this.length),na.read(this,m,!1,52,8)};function Ce(T,m,b,O,N,$){if(!o.isBuffer(T))throw new TypeError('"buffer" argument must be a Buffer instance');if(m>N||m<$)throw new RangeError('"value" argument is out of bounds');if(b+O>T.length)throw new RangeError("Index out of range")}o.prototype.writeUIntLE=function(m,b,O,N){if(m=+m,b=b>>>0,O=O>>>0,!N){var $=Math.pow(2,8*O)-1;Ce(this,m,b,O,$,0)}var Q=1,Fe=0;for(this[b]=m&255;++Fe>>0,O=O>>>0,!N){var $=Math.pow(2,8*O)-1;Ce(this,m,b,O,$,0)}var Q=O-1,Fe=1;for(this[b+Q]=m&255;--Q>=0&&(Fe*=256);)this[b+Q]=m/Fe&255;return b+O},o.prototype.writeUInt8=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,1,255,0),this[b]=m&255,b+1},o.prototype.writeUInt16LE=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,2,65535,0),this[b]=m&255,this[b+1]=m>>>8,b+2},o.prototype.writeUInt16BE=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,2,65535,0),this[b]=m>>>8,this[b+1]=m&255,b+2},o.prototype.writeUInt32LE=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,4,4294967295,0),this[b+3]=m>>>24,this[b+2]=m>>>16,this[b+1]=m>>>8,this[b]=m&255,b+4},o.prototype.writeUInt32BE=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,4,4294967295,0),this[b]=m>>>24,this[b+1]=m>>>16,this[b+2]=m>>>8,this[b+3]=m&255,b+4},o.prototype.writeIntLE=function(m,b,O,N){if(m=+m,b=b>>>0,!N){var $=Math.pow(2,8*O-1);Ce(this,m,b,O,$-1,-$)}var Q=0,Fe=1,Ne=0;for(this[b]=m&255;++Q>0)-Ne&255;return b+O},o.prototype.writeIntBE=function(m,b,O,N){if(m=+m,b=b>>>0,!N){var $=Math.pow(2,8*O-1);Ce(this,m,b,O,$-1,-$)}var Q=O-1,Fe=1,Ne=0;for(this[b+Q]=m&255;--Q>=0&&(Fe*=256);)m<0&&Ne===0&&this[b+Q+1]!==0&&(Ne=1),this[b+Q]=(m/Fe>>0)-Ne&255;return b+O},o.prototype.writeInt8=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,1,127,-128),m<0&&(m=255+m+1),this[b]=m&255,b+1},o.prototype.writeInt16LE=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,2,32767,-32768),this[b]=m&255,this[b+1]=m>>>8,b+2},o.prototype.writeInt16BE=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,2,32767,-32768),this[b]=m>>>8,this[b+1]=m&255,b+2},o.prototype.writeInt32LE=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,4,2147483647,-2147483648),this[b]=m&255,this[b+1]=m>>>8,this[b+2]=m>>>16,this[b+3]=m>>>24,b+4},o.prototype.writeInt32BE=function(m,b,O){return m=+m,b=b>>>0,O||Ce(this,m,b,4,2147483647,-2147483648),m<0&&(m=4294967295+m+1),this[b]=m>>>24,this[b+1]=m>>>16,this[b+2]=m>>>8,this[b+3]=m&255,b+4};function Le(T,m,b,O,N,$){if(b+O>T.length)throw new RangeError("Index out of range");if(b<0)throw new RangeError("Index out of range")}function at(T,m,b,O,N){return m=+m,b=b>>>0,N||Le(T,m,b,4),na.write(T,m,b,O,23,4),b+4}o.prototype.writeFloatLE=function(m,b,O){return at(this,m,b,!0,O)},o.prototype.writeFloatBE=function(m,b,O){return at(this,m,b,!1,O)};function We(T,m,b,O,N){return m=+m,b=b>>>0,N||Le(T,m,b,8),na.write(T,m,b,O,52,8),b+8}o.prototype.writeDoubleLE=function(m,b,O){return We(this,m,b,!0,O)},o.prototype.writeDoubleBE=function(m,b,O){return We(this,m,b,!1,O)},o.prototype.copy=function(m,b,O,N){if(!o.isBuffer(m))throw new TypeError("argument should be a Buffer");if(O||(O=0),!N&&N!==0&&(N=this.length),b>=m.length&&(b=m.length),b||(b=0),N>0&&N=this.length)throw new RangeError("Index out of range");if(N<0)throw new RangeError("sourceEnd out of bounds");N>this.length&&(N=this.length),m.length-b=0;--Q)m[Q+b]=this[Q+O];else Uint8Array.prototype.set.call(m,this.subarray(O,N),b);return $},o.prototype.fill=function(m,b,O,N){if(typeof m=="string"){if(typeof b=="string"?(N=b,b=0,O=this.length):typeof O=="string"&&(N=O,O=this.length),N!==void 0&&typeof N!="string")throw new TypeError("encoding must be a string");if(typeof N=="string"&&!o.isEncoding(N))throw new TypeError("Unknown encoding: "+N);if(m.length===1){var $=m.charCodeAt(0);(N==="utf8"&&$<128||N==="latin1")&&(m=$)}}else typeof m=="number"?m=m&255:typeof m=="boolean"&&(m=Number(m));if(b<0||this.length>>0,O=O===void 0?this.length:O>>>0,m||(m=0);var Q;if(typeof m=="number")for(Q=b;Q55295&&b<57344){if(!N){if(b>56319){(m-=3)>-1&&$.push(239,191,189);continue}else if(Q+1===O){(m-=3)>-1&&$.push(239,191,189);continue}N=b;continue}if(b<56320){(m-=3)>-1&&$.push(239,191,189),N=b;continue}b=(N-55296<<10|b-56320)+65536}else N&&(m-=3)>-1&&$.push(239,191,189);if(N=null,b<128){if((m-=1)<0)break;$.push(b)}else if(b<2048){if((m-=2)<0)break;$.push(b>>6|192,b&63|128)}else if(b<65536){if((m-=3)<0)break;$.push(b>>12|224,b>>6&63|128,b&63|128)}else if(b<1114112){if((m-=4)<0)break;$.push(b>>18|240,b>>12&63|128,b>>6&63|128,b&63|128)}else throw new Error("Invalid code point")}return $}function be(T){for(var m=[],b=0;b>8,N=b%256,$.push(N),$.push(O);return $}function we(T){return Ic.toByteArray(Ue(T))}function Re(T,m,b,O){for(var N=0;N=m.length||N>=T.length);++N)m[N+b]=T[N];return N}function De(T,m){return T instanceof m||T!=null&&T.constructor!=null&&T.constructor.name!=null&&T.constructor.name===m.name}function me(T){return T!==T}var lt=function(){for(var T="0123456789abcdef",m=new Array(256),b=0;b<16;++b)for(var O=b*16,N=0;N<16;++N)m[O+N]=T[b]+T[N];return m}()}),Ot=Or.Buffer;Or.SlowBuffer;Or.INSPECT_MAX_BYTES;Or.kMaxLength;var vb;function ii(){}ii.prototype=Object.create(null);function At(){At.init.call(this)}At.EventEmitter=At;At.usingDomains=!1;At.prototype.domain=void 0;At.prototype._events=void 0;At.prototype._maxListeners=void 0;At.defaultMaxListeners=10;At.init=function(){this.domain=null,At.usingDomains&&vb.active,(!this._events||this._events===Object.getPrototypeOf(this)._events)&&(this._events=new ii,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};At.prototype.setMaxListeners=function(e){if(typeof e!="number"||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this};function y0(t){return t._maxListeners===void 0?At.defaultMaxListeners:t._maxListeners}At.prototype.getMaxListeners=function(){return y0(this)};function pb(t,e,r){if(e)t.call(r);else for(var n=t.length,i=ss(t,n),a=0;a0&&o.length>i)){o.warned=!0;var s=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+e+" listeners added. Use emitter.setMaxListeners() to increase limit");s.name="MaxListenersExceededWarning",s.emitter=t,s.type=e,s.count=o.length,wb(s)}return t}function wb(t){typeof console.warn=="function"?console.warn(t):console.log(t)}At.prototype.addListener=function(e,r){return m0(this,e,r,!1)};At.prototype.on=At.prototype.addListener;At.prototype.prependListener=function(e,r){return m0(this,e,r,!0)};function b0(t,e,r){var n=!1;function i(){t.removeListener(e,i),n||(n=!0,r.apply(t,arguments))}return i.listener=r,i}At.prototype.once=function(e,r){if(typeof r!="function")throw new TypeError('"listener" argument must be a function');return this.on(e,b0(this,e,r)),this};At.prototype.prependOnceListener=function(e,r){if(typeof r!="function")throw new TypeError('"listener" argument must be a function');return this.prependListener(e,b0(this,e,r)),this};At.prototype.removeListener=function(e,r){var n,i,a,o,s;if(typeof r!="function")throw new TypeError('"listener" argument must be a function');if(i=this._events,!i)return this;if(n=i[e],!n)return this;if(n===r||n.listener&&n.listener===r)--this._eventsCount===0?this._events=new ii:(delete i[e],i.removeListener&&this.emit("removeListener",e,n.listener||r));else if(typeof n!="function"){for(a=-1,o=n.length;o-- >0;)if(n[o]===r||n[o].listener&&n[o].listener===r){s=n[o].listener,a=o;break}if(a<0)return this;if(n.length===1){if(n[0]=void 0,--this._eventsCount===0)return this._events=new ii,this;delete i[e]}else Sb(n,a);i.removeListener&&this.emit("removeListener",e,s||r)}return this};At.prototype.removeAllListeners=function(e){var r,n;if(n=this._events,!n)return this;if(!n.removeListener)return arguments.length===0?(this._events=new ii,this._eventsCount=0):n[e]&&(--this._eventsCount===0?this._events=new ii:delete n[e]),this;if(arguments.length===0){for(var i=Object.keys(n),a=0,o;a0?Reflect.ownKeys(this._events):[]};function Sb(t,e){for(var r=e,n=r+1,i=t.length;n1)for(var r=1;r=i)return s;switch(s){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch{return"[Circular]"}default:return s}}),o=n[r];r=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),T0(e)?r.showHidden=e:e&&ow(r,e),ti(r.showHidden)&&(r.showHidden=!1),ti(r.depth)&&(r.depth=2),ti(r.colors)&&(r.colors=!1),ti(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=_b),gu(r,t,r.depth)}In.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]};In.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"};function _b(t,e){var r=In.styles[e];return r?"\x1B["+In.colors[r][0]+"m"+t+"\x1B["+In.colors[r][1]+"m":t}function $b(t,e){return t}function ew(t){var e={};return t.forEach(function(r,n){e[r]=!0}),e}function gu(t,e,r){if(t.customInspect&&e&&Mc(e.inspect)&&e.inspect!==In&&!(e.constructor&&e.constructor.prototype===e)){var n=e.inspect(r,t);return bf(n)||(n=gu(t,n,r)),n}var i=tw(t,e);if(i)return i;var a=Object.keys(e),o=ew(a);if(t.showHidden&&(a=Object.getOwnPropertyNames(e)),Nc(e)&&(a.indexOf("message")>=0||a.indexOf("description")>=0))return Bc(e);if(a.length===0){if(Mc(e)){var s=e.name?": "+e.name:"";return t.stylize("[Function"+s+"]","special")}if(Rc(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(Mh(e))return t.stylize(Date.prototype.toString.call(e),"date");if(Nc(e))return Bc(e)}var c="",u=!1,f=["{","}"];if(iw(e)&&(u=!0,f=["[","]"]),Mc(e)){var h=e.name?": "+e.name:"";c=" [Function"+h+"]"}if(Rc(e)&&(c=" "+RegExp.prototype.toString.call(e)),Mh(e)&&(c=" "+Date.prototype.toUTCString.call(e)),Nc(e)&&(c=" "+Bc(e)),a.length===0&&(!u||e.length==0))return f[0]+c+f[1];if(r<0)return Rc(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special");t.seen.push(e);var d;return u?d=rw(t,e,r,o,a):d=a.map(function(v){return Rl(t,e,r,o,v,u)}),t.seen.pop(),nw(d,c,f)}function tw(t,e){if(ti(e))return t.stylize("undefined","undefined");if(bf(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}if(aw(e))return t.stylize(""+e,"number");if(T0(e))return t.stylize(""+e,"boolean");if(mf(e))return t.stylize("null","null")}function Bc(t){return"["+Error.prototype.toString.call(t)+"]"}function rw(t,e,r,n,i){for(var a=[],o=0,s=e.length;o-1&&(a?s=s.split(` +`).map(function(u){return" "+u}).join(` +`).substr(2):s=` +`+s.split(` +`).map(function(u){return" "+u}).join(` +`))):s=t.stylize("[Circular]","special")),ti(o)){if(a&&i.match(/^\d+$/))return s;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=t.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=t.stylize(o,"string"))}return o+": "+s}function nw(t,e,r){var n=t.reduce(function(i,a){return a.indexOf(` +`)>=0,i+a.replace(/\u001b\[\d\d?m/g,"").length+1},0);return n>60?r[0]+(e===""?"":e+` + `)+" "+t.join(`, + `)+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function iw(t){return Array.isArray(t)}function T0(t){return typeof t=="boolean"}function mf(t){return t===null}function aw(t){return typeof t=="number"}function bf(t){return typeof t=="string"}function ti(t){return t===void 0}function Rc(t){return us(t)&&wf(t)==="[object RegExp]"}function us(t){return typeof t=="object"&&t!==null}function Mh(t){return us(t)&&wf(t)==="[object Date]"}function Nc(t){return us(t)&&(wf(t)==="[object Error]"||t instanceof Error)}function Mc(t){return typeof t=="function"}function wf(t){return Object.prototype.toString.call(t)}function ow(t,e){if(!e||!us(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}function O0(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var sw={inspect:In};function Ji(){this.head=null,this.tail=null,this.length=0}Ji.prototype.push=function(t){var e={data:t,next:null};this.length>0?this.tail.next=e:this.head=e,this.tail=e,++this.length};Ji.prototype.unshift=function(t){var e={data:t,next:this.head};this.length===0&&(this.tail=e),this.head=e,++this.length};Ji.prototype.shift=function(){if(this.length!==0){var t=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,t}};Ji.prototype.clear=function(){this.head=this.tail=null,this.length=0};Ji.prototype.join=function(t){if(this.length===0)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r};Ji.prototype.concat=function(t){if(this.length===0)return Ot.alloc(0);if(this.length===1)return this.head.data;for(var e=Ot.allocUnsafe(t>>>0),r=this.head,n=0;r;)r.data.copy(e,n),n+=r.data.length,r=r.next;return e};var P0=Dt(function(t,e){var r=Or.Buffer,n=r.isEncoding||function(u){switch(u&&u.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function i(u){if(u&&!n(u))throw new Error("Unknown encoding: "+u)}var a=e.StringDecoder=function(u){switch(this.encoding=(u||"utf8").toLowerCase().replace(/[-_]/,""),i(u),this.encoding){case"utf8":this.surrogateSize=3;break;case"ucs2":case"utf16le":this.surrogateSize=2,this.detectIncompleteChar=s;break;case"base64":this.surrogateSize=3,this.detectIncompleteChar=c;break;default:this.write=o;return}this.charBuffer=new r(6),this.charReceived=0,this.charLength=0};a.prototype.write=function(u){for(var f="";this.charLength;){var h=u.length>=this.charLength-this.charReceived?this.charLength-this.charReceived:u.length;if(u.copy(this.charBuffer,this.charReceived,0,h),this.charReceived+=h,this.charReceived=55296&&v<=56319){this.charLength+=this.surrogateSize,f="";continue}if(this.charReceived=this.charLength=0,u.length===0)return f;break}this.detectIncompleteChar(u);var d=u.length;this.charLength&&(u.copy(this.charBuffer,0,u.length-this.charReceived,d),d-=this.charReceived),f+=u.toString(this.encoding,0,d);var d=f.length-1,v=f.charCodeAt(d);if(v>=55296&&v<=56319){var p=this.surrogateSize;return this.charLength+=p,this.charReceived+=p,this.charBuffer.copy(this.charBuffer,p,0,p),u.copy(this.charBuffer,0,0,p),f.substring(0,d)}return f},a.prototype.detectIncompleteChar=function(u){for(var f=u.length>=3?3:u.length;f>0;f--){var h=u[u.length-f];if(f==1&&h>>5==6){this.charLength=2;break}if(f<=2&&h>>4==14){this.charLength=3;break}if(f<=3&&h>>3==30){this.charLength=4;break}}this.charReceived=f},a.prototype.end=function(u){var f="";if(u&&u.length&&(f=this.write(u)),this.charReceived){var h=this.charReceived,d=this.charBuffer,v=this.encoding;f+=d.slice(0,h).toString(v)}return f};function o(u){return u.toString(this.encoding)}function s(u){this.charReceived=u.length%2,this.charLength=this.charReceived?2:0}function c(u){this.charReceived=u.length%3,this.charLength=this.charReceived?3:0}}),E0=P0.StringDecoder;Lt.ReadableState=I0;var Pt=Qb("stream");Va(Lt,At);function uw(t,e,r){if(typeof t.prependListener=="function")return t.prependListener(e,r);!t._events||!t._events[e]?t.on(e,r):Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]}function cw(t,e){return t.listeners(e).length}function I0(t,e){t=t||{},this.objectMode=!!t.objectMode,e instanceof Wr&&(this.objectMode=this.objectMode||!!t.readableObjectMode);var r=t.highWaterMark,n=this.objectMode?16:16*1024;this.highWaterMark=r||r===0?r:n,this.highWaterMark=~~this.highWaterMark,this.buffer=new Ji,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.defaultEncoding=t.defaultEncoding||"utf8",this.ranOut=!1,this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,t.encoding&&(this.decoder=new E0(t.encoding),this.encoding=t.encoding)}function Lt(t){if(!(this instanceof Lt))return new Lt(t);this._readableState=new I0(t,this),this.readable=!0,t&&typeof t.read=="function"&&(this._read=t.read),At.call(this)}Lt.prototype.push=function(t,e){var r=this._readableState;return!r.objectMode&&typeof t=="string"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=Ot.from(t,e),e="")),D0(this,r,t,e,!1)};Lt.prototype.unshift=function(t){var e=this._readableState;return D0(this,e,t,"",!0)};Lt.prototype.isPaused=function(){return this._readableState.flowing===!1};function D0(t,e,r,n,i){var a=hw(e,r);if(a)t.emit("error",a);else if(r===null)e.reading=!1,dw(t,e);else if(e.objectMode||r&&r.length>0)if(e.ended&&!i){var o=new Error("stream.push() after EOF");t.emit("error",o)}else if(e.endEmitted&&i){var s=new Error("stream.unshift() after end event");t.emit("error",s)}else{var c;e.decoder&&!i&&!n&&(r=e.decoder.write(r),c=!e.objectMode&&r.length===0),i||(e.reading=!1),c||(e.flowing&&e.length===0&&!e.sync?(t.emit("data",r),t.read(0)):(e.length+=e.objectMode?1:r.length,i?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&Zu(t))),vw(t,e)}else i||(e.reading=!1);return lw(e)}function lw(t){return!t.ended&&(t.needReadable||t.length=Lh?t=Lh:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function Uh(t,e){return t<=0||e.length===0&&e.ended?0:e.objectMode?1:t!==t?e.flowing&&e.length?e.buffer.head.data.length:e.length:(t>e.highWaterMark&&(e.highWaterMark=fw(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}Lt.prototype.read=function(t){Pt("read",t),t=parseInt(t,10);var e=this._readableState,r=t;if(t!==0&&(e.emittedReadable=!1),t===0&&e.needReadable&&(e.length>=e.highWaterMark||e.ended))return Pt("read: emitReadable",e.length,e.ended),e.length===0&&e.ended?Lc(this):Zu(this),null;if(t=Uh(t,e),t===0&&e.ended)return e.length===0&&Lc(this),null;var n=e.needReadable;Pt("need readable",n),(e.length===0||e.length-t0?i=B0(t,e):i=null,i===null?(e.needReadable=!0,t=0):e.length-=t,e.length===0&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&Lc(this)),i!==null&&this.emit("data",i),i};function hw(t,e){var r=null;return!Ot.isBuffer(e)&&typeof e!="string"&&e!==null&&e!==void 0&&!t.objectMode&&(r=new TypeError("Invalid non-string/buffer chunk")),r}function dw(t,e){if(!e.ended){if(e.decoder){var r=e.decoder.end();r&&r.length&&(e.buffer.push(r),e.length+=e.objectMode?1:r.length)}e.ended=!0,Zu(t)}}function Zu(t){var e=t._readableState;e.needReadable=!1,e.emittedReadable||(Pt("emitReadable",e.flowing),e.emittedReadable=!0,e.sync?kr(zh,t):zh(t))}function zh(t){Pt("emit readable"),t.emit("readable"),Sf(t)}function vw(t,e){e.readingMore||(e.readingMore=!0,kr(pw,t,e))}function pw(t,e){for(var r=e.length;!e.reading&&!e.flowing&&!e.ended&&e.length1&&R0(n.pipes,t)!==-1)&&!u&&(Pt("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,h=!0),r.pause())}function v(S){Pt("onerror",S),w(),t.removeListener("error",v),cw(t,"error")===0&&t.emit("error",S)}uw(t,"error",v);function p(){t.removeListener("finish",y),w()}t.once("close",p);function y(){Pt("onfinish"),t.removeListener("close",p),w()}t.once("finish",y);function w(){Pt("unpipe"),r.unpipe(t)}return t.emit("pipe",r),n.flowing||(Pt("pipe resume"),r.resume()),t};function gw(t){return function(){var e=t._readableState;Pt("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,e.awaitDrain===0&&t.listeners("data").length&&(e.flowing=!0,Sf(t))}}Lt.prototype.unpipe=function(t){var e=this._readableState;if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this),this);if(!t){var r=e.pipes,n=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i=e.length?(e.decoder?r=e.buffer.join(""):e.buffer.length===1?r=e.buffer.head.data:r=e.buffer.concat(e.length),e.buffer.clear()):r=ww(t,e.buffer,e.decoder),r}function ww(t,e,r){var n;return ta.length?a.length:t;if(o===a.length?i+=a:i+=a.slice(0,t),t-=o,t===0){o===a.length?(++n,r.next?e.head=r.next:e.head=e.tail=null):(e.head=r,r.data=a.slice(o));break}++n}return e.length-=n,i}function Aw(t,e){var r=Ot.allocUnsafe(t),n=e.head,i=1;for(n.data.copy(r),t-=n.data.length;n=n.next;){var a=n.data,o=t>a.length?a.length:t;if(a.copy(r,r.length-t,0,o),t-=o,t===0){o===a.length?(++i,n.next?e.head=n.next:e.head=e.tail=null):(e.head=n,n.data=a.slice(o));break}++i}return e.length-=i,r}function Lc(t){var e=t._readableState;if(e.length>0)throw new Error('"endReadable()" called on non-empty stream');e.endEmitted||(e.ended=!0,kr(Cw,e,t))}function Cw(t,e){!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit("end"))}function kw(t,e){for(var r=0,n=t.length;r-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this};function Pw(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e=="string"&&(e=Ot.from(e,r)),e}function Ew(t,e,r,n,i){r=Pw(e,r,n),Ot.isBuffer(r)&&(n="buffer");var a=e.objectMode?1:r.length;e.length+=a;var o=e.length"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return Aa(t,e,r)});Ca.alloc||(Ca.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var n=Aa(t);return!e||e.length===0?n.fill(0):typeof r=="string"?n.fill(e,r):n.fill(e),n});if(!Nr.kStringMaxLength)try{Nr.kStringMaxLength=ai.binding("buffer").kStringMaxLength}catch{}Nr.constants||(Nr.constants={MAX_LENGTH:Nr.kMaxLength},Nr.kStringMaxLength&&(Nr.constants.MAX_STRING_LENGTH=Nr.kStringMaxLength));var qa=Nr,z0="\uFEFF",jw=Cf;function Cf(t,e){this.encoder=t,this.addBOM=!0}Cf.prototype.write=function(t){return this.addBOM&&(t=z0+t,this.addBOM=!1),this.encoder.write(t)};Cf.prototype.end=function(){return this.encoder.end()};var Vw=kf;function kf(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}kf.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e||(e[0]===z0&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};kf.prototype.end=function(){return this.decoder.end()};var Gh={PrependBOM:jw,StripBOM:Vw},cs=qa.Buffer,qw={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:Ff};function Ff(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,this.enc==="base64"?this.encoder=Tf:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=Of,cs.from("eda0bdedb2a9","hex").toString()!=="💩"&&(this.decoder=Pf,this.defaultCharUnicode=e.defaultCharUnicode))}Ff.prototype.encoder=xf;Ff.prototype.decoder=j0;var yu=P0.StringDecoder;yu.prototype.end||(yu.prototype.end=function(){});function j0(t,e){yu.call(this,e.enc)}j0.prototype=yu.prototype;function xf(t,e){this.enc=e.enc}xf.prototype.write=function(t){return cs.from(t,this.enc)};xf.prototype.end=function(){};function Tf(t,e){this.prevStr=""}Tf.prototype.write=function(t){t=this.prevStr+t;var e=t.length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),cs.from(t,"base64")};Tf.prototype.end=function(){return cs.from(this.prevStr,"base64")};function Of(t,e){}Of.prototype.write=function(t){for(var e=cs.alloc(t.length*3),r=0,n=0;n>>6),e[r++]=128+(i&63)):(e[r++]=224+(i>>>12),e[r++]=128+(i>>>6&63),e[r++]=128+(i&63))}return e.slice(0,r)};Of.prototype.end=function(){};function Pf(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}Pf.prototype.write=function(t){for(var e=this.acc,r=this.contBytes,n=this.accBytes,i="",a=0;a0&&(i+=this.defaultCharUnicode,r=0),o<128?i+=String.fromCharCode(o):o<224?(e=o&31,r=1,n=1):o<240?(e=o&15,r=2,n=1):i+=this.defaultCharUnicode):r>0?(e=e<<6|o&63,r--,n++,r===0&&(n===2&&e<128&&e>0?i+=this.defaultCharUnicode:n===3&&e<2048?i+=this.defaultCharUnicode:i+=String.fromCharCode(e))):i+=this.defaultCharUnicode}return this.acc=e,this.contBytes=r,this.accBytes=n,i};Pf.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t};var Ku=qa.Buffer,Ww=Xu;function Xu(){}Xu.prototype.encoder=Ef;Xu.prototype.decoder=If;Xu.prototype.bomAware=!0;function Ef(){}Ef.prototype.write=function(t){for(var e=Ku.from(t,"ucs2"),r=0;r=2)if(t[0]==254&&t[1]==255)r="utf-16be";else if(t[0]==255&&t[1]==254)r="utf-16le";else{for(var n=0,i=0,a=Math.min(t.length-t.length%2,64),o=0;on?r="utf-16be":i0&&(t=this.iconv.decode(yn.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t};var Qw=Ju;function Ju(t,e){this.iconv=e}Ju.prototype.encoder=Uf;Ju.prototype.decoder=zf;Ju.prototype.bomAware=!0;function Uf(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=yn.alloc(6),this.base64AccumIdx=0}Uf.prototype.write=function(t){for(var e=this.inBase64,r=this.base64Accum,n=this.base64AccumIdx,i=yn.alloc(t.length*5+10),a=0,o=0;o0&&(a+=i.write(r.slice(0,n).toString("base64").replace(/\//g,",").replace(/=+$/,""),a),n=0),i[a++]=Zi,e=!1),e||(i[a++]=s,s===Ml&&(i[a++]=Zi))):(e||(i[a++]=Ml,e=!0),e&&(r[n++]=s>>8,r[n++]=s&255,n==r.length&&(a+=i.write(r.toString("base64").replace(/\//g,","),a),n=0)))}return this.inBase64=e,this.base64AccumIdx=n,i.slice(0,a)};Uf.prototype.end=function(){var t=yn.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=Zi,this.inBase64=!1),t.slice(0,e)};function zf(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var q0=Lf.slice();q0[44]=!0;zf.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,i=this.base64Accum,a=0;a0&&(t=this.iconv.decode(yn.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t};var _w={utf7:Zw,unicode11utf7:Kw,utf7imap:Qw},mu=qa.Buffer,$w=jf;function jf(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||t.chars.length!==128&&t.chars.length!==256)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(t.chars.length===128){for(var r="",n=0;n<128;n++)r+=String.fromCharCode(n);t.chars=r+t.chars}this.decodeBuf=mu.from(t.chars,"ucs2");for(var i=mu.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),n=0;n?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖרÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖרÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈ƫȅ ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüݰ¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\uFEFF​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:`\0ÚỤỪỬỮ\x07\b +\v\f\rỨỰỲỶỸÝỴ\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ`},georgianacademy:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:`\0ẲẴẪ\x07\b +\v\f\rỶỸ\x1BỴ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ`},iso646cn:{type:"_sbcs",chars:`\0\x07\b +\v\f\r\x1B !"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������`},iso646jp:{type:"_sbcs",chars:`\0\x07\b +\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_\`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������`},hproman8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}},Da=qa.Buffer,n5=Un,wr=-1,W0=-2,Vr=-10,vn=-1e3,ka=new Array(256),Ho=-1;for(Ts=0;Ts<256;Ts++)ka[Ts]=wr;var Ts;function Un(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=t.table();this.decodeTables=[],this.decodeTables[0]=ka.slice(0),this.decodeTableSeq=[];for(var n=0;n0;t>>=8)e.push(t&255);e.length==0&&e.push(0);for(var r=this.decodeTables[0],n=e.length-1;n>0;n--){var i=r[e[n]];if(i==wr)r[e[n]]=vn-this.decodeTables.length,this.decodeTables.push(r=ka.slice(0));else if(i<=vn)r=this.decodeTables[vn-i];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16))}return r};Un.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),r=this._getDecodeTrieNode(e);e=e&255;for(var n=1;n255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)};Un.prototype._getEncodeBucket=function(t){var e=t>>8;return this.encodeTable[e]===void 0&&(this.encodeTable[e]=ka.slice(0)),this.encodeTable[e]};Un.prototype._setEncodeChar=function(t,e){var r=this._getEncodeBucket(t),n=t&255;r[n]<=Vr?this.encodeTableSeq[Vr-r[n]][Ho]=e:r[n]==wr&&(r[n]=e)};Un.prototype._setEncodeSequence=function(t,e){var r=t[0],n=this._getEncodeBucket(r),i=r&255,a;n[i]<=Vr?a=this.encodeTableSeq[Vr-n[i]]:(a={},n[i]!==wr&&(a[Ho]=n[i]),n[i]=Vr-this.encodeTableSeq.length,this.encodeTableSeq.push(a));for(var o=1;o=0?this._setEncodeChar(a,o):a<=vn?this._fillEncodeTable(vn-a,o<<8,r):a<=Vr&&this._setEncodeSequence(this.decodeTableSeq[Vr-a],o))}};function Qu(t,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}Qu.prototype.write=function(t){for(var e=Da.alloc(t.length*(this.gb18030?4:3)),r=this.leadSurrogate,n=this.seqObj,i=-1,a=0,o=0;;){if(i===-1){if(a==t.length)break;var s=t.charCodeAt(a++)}else{var s=i;i=-1}if(55296<=s&&s<57344)if(s<56320)if(r===-1){r=s;continue}else r=s,s=wr;else r!==-1?(s=65536+(r-55296)*1024+(s-56320),r=-1):s=wr;else r!==-1&&(i=s,s=wr,r=-1);var c=wr;if(n!==void 0&&s!=wr){var u=n[s];if(typeof u=="object"){n=u;continue}else typeof u=="number"?c=u:u==null&&(u=n[Ho],u!==void 0&&(c=u,i=s));n=void 0}else if(s>=0){var f=this.encodeTable[s>>8];if(f!==void 0&&(c=f[s&255]),c<=Vr){n=this.encodeTableSeq[Vr-c];continue}if(c==wr&&this.gb18030){var h=Gf(this.gb18030.uChars,s);if(h!=-1){var c=this.gb18030.gbChars[h]+(s-this.gb18030.uChars[h]);e[o++]=129+Math.floor(c/12600),c=c%12600,e[o++]=48+Math.floor(c/1260),c=c%1260,e[o++]=129+Math.floor(c/10),c=c%10,e[o++]=48+c;continue}}}c===wr&&(c=this.defaultCharSingleByte),c<256?e[o++]=c:c<65536?(e[o++]=c>>8,e[o++]=c&255):(e[o++]=c>>16,e[o++]=c>>8&255,e[o++]=c&255)}return this.seqObj=n,this.leadSurrogate=r,e.slice(0,o)};Qu.prototype.end=function(){if(!(this.leadSurrogate===-1&&this.seqObj===void 0)){var t=Da.alloc(10),e=0;if(this.seqObj){var r=this.seqObj[Ho];r!==void 0&&(r<256?t[e++]=r:(t[e++]=r>>8,t[e++]=r&255)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(t[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),t.slice(0,e)}};Qu.prototype.findIdx=Gf;function Wf(t,e){this.nodeIdx=0,this.prevBuf=Da.alloc(0),this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}Wf.prototype.write=function(t){var e=Da.alloc(t.length*2),r=this.nodeIdx,n=this.prevBuf,i=this.prevBuf.length,a=-this.prevBuf.length,o;i>0&&(n=Da.concat([n,t.slice(0,10)]));for(var s=0,c=0;s=0?t[s]:n[s+i],o=this.decodeTables[r][u];if(!(o>=0))if(o===wr)s=a,o=this.defaultCharUnicode.charCodeAt(0);else if(o===W0){var f=a>=0?t.slice(a,s+1):n.slice(a+i,s+1+i),h=(f[0]-129)*12600+(f[1]-48)*1260+(f[2]-129)*10+(f[3]-48),d=Gf(this.gb18030.gbChars,h);o=this.gb18030.uChars[d]+h-this.gb18030.gbChars[d]}else if(o<=vn){r=vn-o;continue}else if(o<=Vr){for(var v=this.decodeTableSeq[Vr-o],p=0;p>8;o=v[v.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+o+" at "+r+"/"+u);if(o>65535){o-=65536;var y=55296+Math.floor(o/1024);e[c++]=y&255,e[c++]=y>>8,o=56320+o%1024}e[c++]=o&255,e[c++]=o>>8,r=0,a=s+1}return this.nodeIdx=r,this.prevBuf=a>=0?t.slice(a):n.slice(a+i),e.slice(0,c).toString("ucs2")};Wf.prototype.end=function(){for(var t="";this.prevBuf.length>0;){t+=this.defaultCharUnicode;var e=this.prevBuf.slice(1);this.prevBuf=Da.alloc(0),this.nodeIdx=0,e.length>0&&(t+=this.write(e))}return this.nodeIdx=0,t};function Gf(t,e){if(t[0]>e)return-1;for(var r=0,n=t.length;r"u"&&(c=0),typeof u>"u"&&(u=this.length),e.decode(this.slice(c,u),s))},r.SlowBufferWrite=a.prototype.write,a.prototype.write=function(s,c,u,f){if(isFinite(c))isFinite(u)||(f=u,u=void 0);else{var h=f;f=c,c=u,u=h}c=+c||0;var d=this.length-c;if(u?(u=+u,u>d&&(u=d)):u=d,f=String(f||"utf8").toLowerCase(),Mt.isNativeEncoding(f))return r.SlowBufferWrite.call(this,s,c,u,f);if(s.length>0&&(u<0||c<0))throw new RangeError("attempt to write beyond buffer bounds");var v=e.encode(s,f);return v.length"u"&&(c=0),typeof u>"u"&&(u=this.length),e.decode(this.slice(c,u),s))},r.BufferWrite=Mt.prototype.write,Mt.prototype.write=function(s,c,u,f){var h=c,d=u,v=f;if(isFinite(c))isFinite(u)||(f=u,u=void 0);else{var p=f;f=c,c=u,u=p}if(f=String(f||"utf8").toLowerCase(),Mt.isNativeEncoding(f))return r.BufferWrite.call(this,s,h,d,v);c=+c||0;var y=this.length-c;if(u?(u=+u,u>y&&(u=y)):u=y,s.length>0&&(u<0||c<0))throw new RangeError("attempt to write beyond buffer bounds");var w=e.encode(s,f);return w.length0?e.concat([f,h]):f},r.decode=function(o,s,c){typeof o=="string"&&(r.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),r.skipDecodeWarning=!0),o=e.from(""+(o||""),"binary"));var u=r.getDecoder(s,c),f=u.write(o),h=u.end();return h?f+h:f},r.encodingExists=function(o){try{return r.getCodec(o),!0}catch{return!1}},r.toEncoding=r.encode,r.fromEncoding=r.decode,r._codecDataCache={},r.getCodec=function(o){r.encodings||(r.encodings=T5);for(var s=r._canonicalizeEncoding(o),c={};;){var u=r._codecDataCache[s];if(u)return u;var f=r.encodings[s];switch(typeof f){case"string":s=f;break;case"object":for(var h in f)c[h]=f[h];c.encodingName||(c.encodingName=s),s=f.type;break;case"function":return c.encodingName||(c.encodingName=s),u=new f(c,r),r._codecDataCache[c.encodingName]=u,u;default:throw new Error("Encoding not recognized: '"+o+"' (searched as: '"+s+"')")}}},r._canonicalizeEncoding=function(a){return(""+a).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")},r.getEncoder=function(o,s){var c=r.getCodec(o),u=new c.encoder(s,c);return c.bomAware&&s&&s.addBOM&&(u=new Gh.PrependBOM(u,s)),u},r.getDecoder=function(o,s){var c=r.getCodec(o),u=new c.decoder(s,c);return c.bomAware&&!(s&&s.stripBOM===!1)&&(u=new Gh.StripBOM(u,s)),u};var n=typeof ai<"u"&&ai.versions&&ai.versions.node;if(n){var i=n.split(".").map(Number);(i[0]>0||i[1]>=10)&&O5(r),P5(r)}}),Hf=Dt(function(t){(function(){var e,r;try{r=bo}catch{}e=function(){var n;function i(a){this.buffer=a,this.pos=0,this.length=this.buffer.length}i.TYPES={UInt8:1,UInt16:2,UInt24:3,UInt32:4,Int8:1,Int16:2,Int24:3,Int32:4,Float:4,Double:8};for(n in Ot.prototype)n.slice(0,4)==="read"&&function(a){var o;return o=i.TYPES[a.replace(/read|[BL]E/g,"")],i.prototype[a]=function(){var s;return s=this.buffer[a](this.pos),this.pos+=o,s}}(n);return i.prototype.readString=function(a,o){var s,c,u,f,h;switch(o==null&&(o="ascii"),o){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.buffer.toString(o,this.pos,this.pos+=a);case"utf16be":for(s=new Ot(this.readBuffer(a)),u=f=0,h=s.length-1;fthis.buffer.length)return this.flush()},u.prototype.flush=function(){if(this.bufferOffset>0)return this.push(new Ot(this.buffer.slice(0,this.bufferOffset))),this.bufferOffset=0},u.prototype.writeBuffer=function(f){return this.flush(),this.push(f),this.pos+=f.length},u.prototype.writeString=function(f,h){var d,v,p,y,w;switch(h==null&&(h="ascii"),h){case"utf16le":case"ucs2":case"utf8":case"ascii":return this.writeBuffer(new Ot(f,h));case"utf16be":for(d=new Ot(f,"utf16le"),p=y=0,w=d.length-1;y>>16&255,this.buffer[this.bufferOffset++]=f>>>8&255,this.buffer[this.bufferOffset++]=f&255,this.pos+=3},u.prototype.writeUInt24LE=function(f){return this.ensure(3),this.buffer[this.bufferOffset++]=f&255,this.buffer[this.bufferOffset++]=f>>>8&255,this.buffer[this.bufferOffset++]=f>>>16&255,this.pos+=3},u.prototype.writeInt24BE=function(f){return f>=0?this.writeUInt24BE(f):this.writeUInt24BE(f+16777215+1)},u.prototype.writeInt24LE=function(f){return f>=0?this.writeUInt24LE(f):this.writeUInt24LE(f+16777215+1)},u.prototype.fill=function(f,h){var d;return h>1),c.__super__.constructor.call(this,"Int"+u,f),this._point=1<=this.length))return this.items[f]==null&&(h=this.stream.pos,this.stream.pos=this.base+this.type.size(null,this.ctx)*f,this.items[f]=this.type.decode(this.stream,this.ctx),this.stream.pos=h),this.items[f]},u.prototype.toArray=function(){var f,h,d,v;for(v=[],f=h=0,d=this.length;h0?u[0]:"value";if(o.has(h))return o.get(h);var d=i.apply(this,u);return o.set(h,d),d}return Object.defineProperty(this,e,{value:s}),s}}}}var V5=new l.Struct({firstCode:l.uint16,entryCount:l.uint16,idDelta:l.int16,idRangeOffset:l.uint16}),jc=new l.Struct({startCharCode:l.uint32,endCharCode:l.uint32,glyphID:l.uint32}),q5=new l.Struct({startUnicodeValue:l.uint24,additionalCount:l.uint8}),W5=new l.Struct({unicodeValue:l.uint24,glyphID:l.uint16}),G5=new l.Array(q5,l.uint32),H5=new l.Array(W5,l.uint32),Z5=new l.Struct({varSelector:l.uint24,defaultUVS:new l.Pointer(l.uint32,G5,{type:"parent"}),nonDefaultUVS:new l.Pointer(l.uint32,H5,{type:"parent"})}),K5=new l.VersionedStruct(l.uint16,{0:{length:l.uint16,language:l.uint16,codeMap:new l.LazyArray(l.uint8,256)},2:{length:l.uint16,language:l.uint16,subHeaderKeys:new l.Array(l.uint16,256),subHeaderCount:function(e){return Math.max.apply(Math,e.subHeaderKeys)},subHeaders:new l.LazyArray(V5,"subHeaderCount"),glyphIndexArray:new l.LazyArray(l.uint16,"subHeaderCount")},4:{length:l.uint16,language:l.uint16,segCountX2:l.uint16,segCount:function(e){return e.segCountX2>>1},searchRange:l.uint16,entrySelector:l.uint16,rangeShift:l.uint16,endCode:new l.LazyArray(l.uint16,"segCount"),reservedPad:new l.Reserved(l.uint16),startCode:new l.LazyArray(l.uint16,"segCount"),idDelta:new l.LazyArray(l.int16,"segCount"),idRangeOffset:new l.LazyArray(l.uint16,"segCount"),glyphIndexArray:new l.LazyArray(l.uint16,function(t){return(t.length-t._currentOffset)/2})},6:{length:l.uint16,language:l.uint16,firstCode:l.uint16,entryCount:l.uint16,glyphIndices:new l.LazyArray(l.uint16,"entryCount")},8:{reserved:new l.Reserved(l.uint16),length:l.uint32,language:l.uint16,is32:new l.LazyArray(l.uint8,8192),nGroups:l.uint32,groups:new l.LazyArray(jc,"nGroups")},10:{reserved:new l.Reserved(l.uint16),length:l.uint32,language:l.uint32,firstCode:l.uint32,entryCount:l.uint32,glyphIndices:new l.LazyArray(l.uint16,"numChars")},12:{reserved:new l.Reserved(l.uint16),length:l.uint32,language:l.uint32,nGroups:l.uint32,groups:new l.LazyArray(jc,"nGroups")},13:{reserved:new l.Reserved(l.uint16),length:l.uint32,language:l.uint32,nGroups:l.uint32,groups:new l.LazyArray(jc,"nGroups")},14:{length:l.uint32,numRecords:l.uint32,varSelectors:new l.LazyArray(Z5,"numRecords")}}),X5=new l.Struct({platformID:l.uint16,encodingID:l.uint16,table:new l.Pointer(l.uint32,K5,{type:"parent",lazy:!0})}),Y5=new l.Struct({version:l.uint16,numSubtables:l.uint16,tables:new l.Array(X5,"numSubtables")}),J5=new l.Struct({version:l.int32,revision:l.int32,checkSumAdjustment:l.uint32,magicNumber:l.uint32,flags:l.uint16,unitsPerEm:l.uint16,created:new l.Array(l.int32,2),modified:new l.Array(l.int32,2),xMin:l.int16,yMin:l.int16,xMax:l.int16,yMax:l.int16,macStyle:new l.Bitfield(l.uint16,["bold","italic","underline","outline","shadow","condensed","extended"]),lowestRecPPEM:l.uint16,fontDirectionHint:l.int16,indexToLocFormat:l.int16,glyphDataFormat:l.int16}),Q5=new l.Struct({version:l.int32,ascent:l.int16,descent:l.int16,lineGap:l.int16,advanceWidthMax:l.uint16,minLeftSideBearing:l.int16,minRightSideBearing:l.int16,xMaxExtent:l.int16,caretSlopeRise:l.int16,caretSlopeRun:l.int16,caretOffset:l.int16,reserved:new l.Reserved(l.int16,4),metricDataFormat:l.int16,numberOfMetrics:l.uint16}),_5=new l.Struct({advance:l.uint16,bearing:l.int16}),$5=new l.Struct({metrics:new l.LazyArray(_5,function(t){return t.parent.hhea.numberOfMetrics}),bearings:new l.LazyArray(l.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.hhea.numberOfMetrics})}),e4=new l.Struct({version:l.int32,numGlyphs:l.uint16,maxPoints:l.uint16,maxContours:l.uint16,maxComponentPoints:l.uint16,maxComponentContours:l.uint16,maxZones:l.uint16,maxTwilightPoints:l.uint16,maxStorage:l.uint16,maxFunctionDefs:l.uint16,maxInstructionDefs:l.uint16,maxStackElements:l.uint16,maxSizeOfInstructions:l.uint16,maxComponentElements:l.uint16,maxComponentDepth:l.uint16});function J0(t,e,r){return r===void 0&&(r=0),t===1&&Kh[r]?Kh[r]:t4[t][e]}var t4=[["utf16be","utf16be","utf16be","utf16be","utf16be","utf16be"],["macroman","shift-jis","big5","euc-kr","iso-8859-6","iso-8859-8","macgreek","maccyrillic","symbol","Devanagari","Gurmukhi","Gujarati","Oriya","Bengali","Tamil","Telugu","Kannada","Malayalam","Sinhalese","Burmese","Khmer","macthai","Laotian","Georgian","Armenian","gb-2312-80","Tibetan","Mongolian","Geez","maccenteuro","Vietnamese","Sindhi"],["ascii"],["symbol","utf16be","shift-jis","gb18030","big5","wansung","johab",null,null,null,"utf16be"]],Kh={15:"maciceland",17:"macturkish",18:"maccroatian",24:"maccenteuro",25:"maccenteuro",26:"maccenteuro",27:"maccenteuro",28:"maccenteuro",30:"maciceland",37:"macromania",38:"maccenteuro",39:"maccenteuro",40:"maccenteuro",143:"macinuit",146:"macgaelic"},r4=[[],{0:"en",30:"fo",60:"ks",90:"rw",1:"fr",31:"fa",61:"ku",91:"rn",2:"de",32:"ru",62:"sd",92:"ny",3:"it",33:"zh",63:"bo",93:"mg",4:"nl",34:"nl-BE",64:"ne",94:"eo",5:"sv",35:"ga",65:"sa",128:"cy",6:"es",36:"sq",66:"mr",129:"eu",7:"da",37:"ro",67:"bn",130:"ca",8:"pt",38:"cz",68:"as",131:"la",9:"no",39:"sk",69:"gu",132:"qu",10:"he",40:"si",70:"pa",133:"gn",11:"ja",41:"yi",71:"or",134:"ay",12:"ar",42:"sr",72:"ml",135:"tt",13:"fi",43:"mk",73:"kn",136:"ug",14:"el",44:"bg",74:"ta",137:"dz",15:"is",45:"uk",75:"te",138:"jv",16:"mt",46:"be",76:"si",139:"su",17:"tr",47:"uz",77:"my",140:"gl",18:"hr",48:"kk",78:"km",141:"af",19:"zh-Hant",49:"az-Cyrl",79:"lo",142:"br",20:"ur",50:"az-Arab",80:"vi",143:"iu",21:"hi",51:"hy",81:"id",144:"gd",22:"th",52:"ka",82:"tl",145:"gv",23:"ko",53:"mo",83:"ms",146:"ga",24:"lt",54:"ky",84:"ms-Arab",147:"to",25:"pl",55:"tg",85:"am",148:"el-polyton",26:"hu",56:"tk",86:"ti",149:"kl",27:"es",57:"mn-CN",87:"om",150:"az",28:"lv",58:"mn",88:"so",151:"nn",29:"se",59:"ps",89:"sw"},[],{1078:"af",16393:"en-IN",1159:"rw",1074:"tn",1052:"sq",6153:"en-IE",1089:"sw",1115:"si",1156:"gsw",8201:"en-JM",1111:"kok",1051:"sk",1118:"am",17417:"en-MY",1042:"ko",1060:"sl",5121:"ar-DZ",5129:"en-NZ",1088:"ky",11274:"es-AR",15361:"ar-BH",13321:"en-PH",1108:"lo",16394:"es-BO",3073:"ar",18441:"en-SG",1062:"lv",13322:"es-CL",2049:"ar-IQ",7177:"en-ZA",1063:"lt",9226:"es-CO",11265:"ar-JO",11273:"en-TT",2094:"dsb",5130:"es-CR",13313:"ar-KW",2057:"en-GB",1134:"lb",7178:"es-DO",12289:"ar-LB",1033:"en",1071:"mk",12298:"es-EC",4097:"ar-LY",12297:"en-ZW",2110:"ms-BN",17418:"es-SV",6145:"ary",1061:"et",1086:"ms",4106:"es-GT",8193:"ar-OM",1080:"fo",1100:"ml",18442:"es-HN",16385:"ar-QA",1124:"fil",1082:"mt",2058:"es-MX",1025:"ar-SA",1035:"fi",1153:"mi",19466:"es-NI",10241:"ar-SY",2060:"fr-BE",1146:"arn",6154:"es-PA",7169:"aeb",3084:"fr-CA",1102:"mr",15370:"es-PY",14337:"ar-AE",1036:"fr",1148:"moh",10250:"es-PE",9217:"ar-YE",5132:"fr-LU",1104:"mn",20490:"es-PR",1067:"hy",6156:"fr-MC",2128:"mn-CN",3082:"es",1101:"as",4108:"fr-CH",1121:"ne",1034:"es",2092:"az-Cyrl",1122:"fy",1044:"nb",21514:"es-US",1068:"az",1110:"gl",2068:"nn",14346:"es-UY",1133:"ba",1079:"ka",1154:"oc",8202:"es-VE",1069:"eu",3079:"de-AT",1096:"or",2077:"sv-FI",1059:"be",1031:"de",1123:"ps",1053:"sv",2117:"bn",5127:"de-LI",1045:"pl",1114:"syr",1093:"bn-IN",4103:"de-LU",1046:"pt",1064:"tg",8218:"bs-Cyrl",2055:"de-CH",2070:"pt-PT",2143:"tzm",5146:"bs",1032:"el",1094:"pa",1097:"ta",1150:"br",1135:"kl",1131:"qu-BO",1092:"tt",1026:"bg",1095:"gu",2155:"qu-EC",1098:"te",1027:"ca",1128:"ha",3179:"qu",1054:"th",3076:"zh-HK",1037:"he",1048:"ro",1105:"bo",5124:"zh-MO",1081:"hi",1047:"rm",1055:"tr",2052:"zh",1038:"hu",1049:"ru",1090:"tk",4100:"zh-SG",1039:"is",9275:"smn",1152:"ug",1028:"zh-TW",1136:"ig",4155:"smj-NO",1058:"uk",1155:"co",1057:"id",5179:"smj",1070:"hsb",1050:"hr",1117:"iu",3131:"se-FI",1056:"ur",4122:"hr-BA",2141:"iu-Latn",1083:"se",2115:"uz-Cyrl",1029:"cs",2108:"ga",2107:"se-SE",1091:"uz",1030:"da",1076:"xh",8251:"sms",1066:"vi",1164:"prs",1077:"zu",6203:"sma-NO",1106:"cy",1125:"dv",1040:"it",7227:"sms",1160:"wo",2067:"nl-BE",2064:"it-CH",1103:"sa",1157:"sah",1043:"nl",1041:"ja",7194:"sr-Cyrl-BA",1144:"ii",3081:"en-AU",1099:"kn",3098:"sr",1130:"yo",10249:"en-BZ",1087:"kk",6170:"sr-Latn-BA",4105:"en-CA",1107:"km",2074:"sr-Latn",9225:"en-029",1158:"quc",1132:"nso"}];function n4(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=i4(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function i4(t,e){if(t){if(typeof t=="string")return Xh(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Xh(t,e)}}function Xh(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=32768&&(a=this.langTags[i.languageID-32768].tag),a==null&&(a=i.platformID+"-"+i.languageID);var o=i.nameID>=256?"fontFeatures":Ll[i.nameID]||i.nameID;e[o]==null&&(e[o]={});var s=e[o];i.nameID>=256&&(s=s[i.nameID]||(s[i.nameID]={})),(typeof i.string=="string"||typeof s[a]!="string")&&(s[a]=i.string)}this.records=e};bu.preEncode=function(){if(!Array.isArray(this.records)){this.version=0;var t=[];for(var e in this.records){var r=this.records[e];e!=="fontFeatures"&&(t.push({platformID:3,encodingID:1,languageID:1033,nameID:Ll.indexOf(e),length:Ot.byteLength(r.en,"utf16le"),string:r.en}),e==="postscriptName"&&t.push({platformID:1,encodingID:0,languageID:0,nameID:Ll.indexOf(e),length:r.en.length,string:r.en}))}this.records=t,this.count=t.length,this.stringOffset=bu.size(this,null,!1)}};var Q0=new l.VersionedStruct(l.uint16,{header:{xAvgCharWidth:l.int16,usWeightClass:l.uint16,usWidthClass:l.uint16,fsType:new l.Bitfield(l.uint16,[null,"noEmbedding","viewOnly","editable",null,null,null,null,"noSubsetting","bitmapOnly"]),ySubscriptXSize:l.int16,ySubscriptYSize:l.int16,ySubscriptXOffset:l.int16,ySubscriptYOffset:l.int16,ySuperscriptXSize:l.int16,ySuperscriptYSize:l.int16,ySuperscriptXOffset:l.int16,ySuperscriptYOffset:l.int16,yStrikeoutSize:l.int16,yStrikeoutPosition:l.int16,sFamilyClass:l.int16,panose:new l.Array(l.uint8,10),ulCharRange:new l.Array(l.uint32,4),vendorID:new l.String(4),fsSelection:new l.Bitfield(l.uint16,["italic","underscore","negative","outlined","strikeout","bold","regular","useTypoMetrics","wws","oblique"]),usFirstCharIndex:l.uint16,usLastCharIndex:l.uint16},0:{},1:{typoAscender:l.int16,typoDescender:l.int16,typoLineGap:l.int16,winAscent:l.uint16,winDescent:l.uint16,codePageRange:new l.Array(l.uint32,2)},2:{typoAscender:l.int16,typoDescender:l.int16,typoLineGap:l.int16,winAscent:l.uint16,winDescent:l.uint16,codePageRange:new l.Array(l.uint32,2),xHeight:l.int16,capHeight:l.int16,defaultChar:l.uint16,breakChar:l.uint16,maxContent:l.uint16},5:{typoAscender:l.int16,typoDescender:l.int16,typoLineGap:l.int16,winAscent:l.uint16,winDescent:l.uint16,codePageRange:new l.Array(l.uint32,2),xHeight:l.int16,capHeight:l.int16,defaultChar:l.uint16,breakChar:l.uint16,maxContent:l.uint16,usLowerOpticalPointSize:l.uint16,usUpperOpticalPointSize:l.uint16}}),Vc=Q0.versions;Vc[3]=Vc[4]=Vc[2];var o4=new l.VersionedStruct(l.fixed32,{header:{italicAngle:l.fixed32,underlinePosition:l.int16,underlineThickness:l.int16,isFixedPitch:l.uint32,minMemType42:l.uint32,maxMemType42:l.uint32,minMemType1:l.uint32,maxMemType1:l.uint32},1:{},2:{numberOfGlyphs:l.uint16,glyphNameIndex:new l.Array(l.uint16,"numberOfGlyphs"),names:new l.Array(new l.String(l.uint8))},2.5:{numberOfGlyphs:l.uint16,offsets:new l.Array(l.uint8,"numberOfGlyphs")},3:{},4:{map:new l.Array(l.uint32,function(t){return t.parent.maxp.numGlyphs})}}),s4=new l.Struct({controlValues:new l.Array(l.int16)}),u4=new l.Struct({instructions:new l.Array(l.uint8)}),Kf=new l.VersionedStruct("head.indexToLocFormat",{0:{offsets:new l.Array(l.uint16)},1:{offsets:new l.Array(l.uint32)}});Kf.process=function(){if(this.version===0)for(var t=0;t65535?1:0,this.version===0))for(var t=0;t>>=1};var c4=new l.Struct({controlValueProgram:new l.Array(l.uint8)}),l4=new l.Array(new l.Buffer);function Jh(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=f4(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function f4(t,e){if(t){if(typeof t=="string")return Qh(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Qh(t,e)}}function Qh(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=2?n.readUInt32BE():n.readUInt16BE();if(o===0)return[];var s=n.readUInt8(),c;if(s===1)c=l.uint8;else if(s===2)c=l.uint16;else if(s===3)c=l.uint24;else if(s===4)c=l.uint32;else throw new Error("Bad offset size in CFFIndex: "+s+" "+n.pos);for(var u=[],f=n.pos+(o+1)*s-1,h=c.decode(n),d=0;d=0&&_h.call(e.callee)==="[object Function]"),n},$0;Object.keys||(Xa=Object.prototype.hasOwnProperty,qc=Object.prototype.toString,$h=_0,Wc=Object.prototype.propertyIsEnumerable,ed=!Wc.call({toString:null},"toString"),td=Wc.call(function(){},"prototype"),Ya=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],Os=function(e){var r=e.constructor;return r&&r.prototype===e},rd={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},nd=function(){if(typeof window>"u")return!1;for(var t in window)try{if(!rd["$"+t]&&Xa.call(window,t)&&window[t]!==null&&typeof window[t]=="object")try{Os(window[t])}catch{return!0}}catch{return!0}return!1}(),id=function(e){if(typeof window>"u"||!nd)return Os(e);try{return Os(e)}catch{return!1}},$0=function(e){var r=e!==null&&typeof e=="object",n=qc.call(e)==="[object Function]",i=$h(e),a=r&&qc.call(e)==="[object String]",o=[];if(!r&&!n&&!i)throw new TypeError("Object.keys called on a non-object");var s=td&&n;if(a&&e.length>0&&!Xa.call(e,0))for(var c=0;c0)for(var u=0;u=0&&zl.call(e)!=="[object Array]"&&zl.call(e.callee)==="[object Function]"},p4=function(){return $u(arguments)}();$u.isLegacyArguments=e1;var sd=p4?$u:e1,g4=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",y4=Object.prototype.toString,m4=Array.prototype.concat,Xf=Object.defineProperty,b4=function(e){return typeof e=="function"&&y4.call(e)==="[object Function]"},w4=function(){var e={};try{Xf(e,"x",{enumerable:!1,value:e});for(var r in e)return!1;return e.x===e}catch{return!1}},t1=Xf&&w4(),S4=function(e,r,n,i){r in e&&(!b4(i)||!i())||(t1?Xf(e,r,{configurable:!0,enumerable:!1,value:n,writable:!0}):e[r]=n)},r1=function(e,r){var n=arguments.length>2?arguments[2]:{},i=Ul(r);g4&&(i=m4.call(i,Object.getOwnPropertySymbols(r)));for(var a=0;a"u"?xe:Ii(Uint8Array),Kc={"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?xe:ArrayBuffer,"%ArrayBufferPrototype%":typeof ArrayBuffer>"u"?xe:ArrayBuffer.prototype,"%ArrayIteratorPrototype%":Fi?Ii([][Symbol.iterator]()):xe,"%ArrayPrototype%":Array.prototype,"%ArrayProto_entries%":Array.prototype.entries,"%ArrayProto_forEach%":Array.prototype.forEach,"%ArrayProto_keys%":Array.prototype.keys,"%ArrayProto_values%":Array.prototype.values,"%AsyncFromSyncIteratorPrototype%":xe,"%AsyncFunction%":E4,"%AsyncFunctionPrototype%":xe,"%AsyncGenerator%":xe,"%AsyncGeneratorFunction%":I4,"%AsyncGeneratorPrototype%":xe,"%AsyncIteratorPrototype%":xe,"%Atomics%":typeof Atomics>"u"?xe:Atomics,"%Boolean%":Boolean,"%BooleanPrototype%":Boolean.prototype,"%DataView%":typeof DataView>"u"?xe:DataView,"%DataViewPrototype%":typeof DataView>"u"?xe:DataView.prototype,"%Date%":Date,"%DatePrototype%":Date.prototype,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%ErrorPrototype%":Error.prototype,"%eval%":eval,"%EvalError%":EvalError,"%EvalErrorPrototype%":EvalError.prototype,"%Float32Array%":typeof Float32Array>"u"?xe:Float32Array,"%Float32ArrayPrototype%":typeof Float32Array>"u"?xe:Float32Array.prototype,"%Float64Array%":typeof Float64Array>"u"?xe:Float64Array,"%Float64ArrayPrototype%":typeof Float64Array>"u"?xe:Float64Array.prototype,"%Function%":Function,"%FunctionPrototype%":Function.prototype,"%Generator%":xe,"%GeneratorFunction%":P4,"%GeneratorPrototype%":xe,"%Int8Array%":typeof Int8Array>"u"?xe:Int8Array,"%Int8ArrayPrototype%":typeof Int8Array>"u"?xe:Int8Array.prototype,"%Int16Array%":typeof Int16Array>"u"?xe:Int16Array,"%Int16ArrayPrototype%":typeof Int16Array>"u"?xe:Int8Array.prototype,"%Int32Array%":typeof Int32Array>"u"?xe:Int32Array,"%Int32ArrayPrototype%":typeof Int32Array>"u"?xe:Int32Array.prototype,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Fi?Ii(Ii([][Symbol.iterator]())):xe,"%JSON%":typeof JSON=="object"?JSON:xe,"%JSONParse%":typeof JSON=="object"?JSON.parse:xe,"%Map%":typeof Map>"u"?xe:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Fi?xe:Ii(new Map()[Symbol.iterator]()),"%MapPrototype%":typeof Map>"u"?xe:Map.prototype,"%Math%":Math,"%Number%":Number,"%NumberPrototype%":Number.prototype,"%Object%":Object,"%ObjectPrototype%":Object.prototype,"%ObjProto_toString%":Object.prototype.toString,"%ObjProto_valueOf%":Object.prototype.valueOf,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?xe:Promise,"%PromisePrototype%":typeof Promise>"u"?xe:Promise.prototype,"%PromiseProto_then%":typeof Promise>"u"?xe:Promise.prototype.then,"%Promise_all%":typeof Promise>"u"?xe:Promise.all,"%Promise_reject%":typeof Promise>"u"?xe:Promise.reject,"%Promise_resolve%":typeof Promise>"u"?xe:Promise.resolve,"%Proxy%":typeof Proxy>"u"?xe:Proxy,"%RangeError%":RangeError,"%RangeErrorPrototype%":RangeError.prototype,"%ReferenceError%":ReferenceError,"%ReferenceErrorPrototype%":ReferenceError.prototype,"%Reflect%":typeof Reflect>"u"?xe:Reflect,"%RegExp%":RegExp,"%RegExpPrototype%":RegExp.prototype,"%Set%":typeof Set>"u"?xe:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Fi?xe:Ii(new Set()[Symbol.iterator]()),"%SetPrototype%":typeof Set>"u"?xe:Set.prototype,"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?xe:SharedArrayBuffer,"%SharedArrayBufferPrototype%":typeof SharedArrayBuffer>"u"?xe:SharedArrayBuffer.prototype,"%String%":String,"%StringIteratorPrototype%":Fi?Ii(""[Symbol.iterator]()):xe,"%StringPrototype%":String.prototype,"%Symbol%":Fi?Symbol:xe,"%SymbolPrototype%":Fi?Symbol.prototype:xe,"%SyntaxError%":SyntaxError,"%SyntaxErrorPrototype%":SyntaxError.prototype,"%ThrowTypeError%":O4,"%TypedArray%":Zc,"%TypedArrayPrototype%":Zc?Zc.prototype:xe,"%TypeError%":Zo,"%TypeErrorPrototype%":Zo.prototype,"%Uint8Array%":typeof Uint8Array>"u"?xe:Uint8Array,"%Uint8ArrayPrototype%":typeof Uint8Array>"u"?xe:Uint8Array.prototype,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?xe:Uint8ClampedArray,"%Uint8ClampedArrayPrototype%":typeof Uint8ClampedArray>"u"?xe:Uint8ClampedArray.prototype,"%Uint16Array%":typeof Uint16Array>"u"?xe:Uint16Array,"%Uint16ArrayPrototype%":typeof Uint16Array>"u"?xe:Uint16Array.prototype,"%Uint32Array%":typeof Uint32Array>"u"?xe:Uint32Array,"%Uint32ArrayPrototype%":typeof Uint32Array>"u"?xe:Uint32Array.prototype,"%URIError%":URIError,"%URIErrorPrototype%":URIError.prototype,"%WeakMap%":typeof WeakMap>"u"?xe:WeakMap,"%WeakMapPrototype%":typeof WeakMap>"u"?xe:WeakMap.prototype,"%WeakSet%":typeof WeakSet>"u"?xe:WeakSet,"%WeakSetPrototype%":typeof WeakSet>"u"?xe:WeakSet.prototype},cd=ec.call(Function.call,String.prototype.replace),D4=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,B4=/\\(\\)?/g,R4=function(e){var r=[];return cd(e,D4,function(n,i,a,o){r[r.length]=a?cd(o,B4,"$1"):i||n}),r},N4=function(e,r){if(!(e in Kc))throw new SyntaxError("intrinsic "+e+" does not exist!");if(typeof Kc[e]>"u")throw new Zo("intrinsic "+e+" exists, but is not available. Please file an issue!");return Kc[e]},M4=function(e,r){if(e.length===0)throw new TypeError("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new TypeError('"allowMissing" argument must be a boolean');for(var n=R4(e),i=N4("%"+(n.length>0?n[0]:"")+"%"),a=1;a=n.length){var o=Vi(i,n[a]);if(!(n[a]in i))throw new Zo("base intrinsic for "+e+" exists, but the property is not available.");i=o?o.get||o.value:i[n[a]]}else i=i[n[a]];return i},n1=M4("%Function%"),L4=n1.apply,U4=n1.call,Yf=function(){return ec.apply(U4,arguments)},z4=function(){return ec.apply(L4,arguments)};Yf.apply=z4;var ld=function(e){return e!==e},i1=function(e,r){return e===0&&r===0?1/e===1/r:!!(e===r||ld(e)&&ld(r))},Jf=function(){return typeof Object.is=="function"?Object.is:i1},j4=function(){var e=Jf();return ls(Object,{is:e},{is:function(){return Object.is!==e}}),e},a1=Yf(Jf(),Object);ls(a1,{getPolyfill:Jf,implementation:i1,shim:j4});var fd=a1,V4=ec.call(Function.call,Object.prototype.hasOwnProperty),q4=RegExp.prototype.exec,W4=Object.getOwnPropertyDescriptor,G4=function(e){try{var r=e.lastIndex;return e.lastIndex=0,q4.call(e),!0}catch{return!1}finally{e.lastIndex=r}},H4=Object.prototype.toString,Z4="[object RegExp]",K4=typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol",hd=function(e){if(!e||typeof e!="object")return!1;if(!K4)return H4.call(e)===Z4;var r=W4(e,"lastIndex"),n=r&&V4(r,"value");return n?G4(e):!1},X4=Object,Y4=TypeError,Qf=function(){if(this!=null&&this!==X4(this))throw new Y4("RegExp.prototype.flags getter called on non-object");var e="";return this.global&&(e+="g"),this.ignoreCase&&(e+="i"),this.multiline&&(e+="m"),this.dotAll&&(e+="s"),this.unicode&&(e+="u"),this.sticky&&(e+="y"),e},J4=ls.supportsDescriptors,Q4=Object.getOwnPropertyDescriptor,_4=TypeError,o1=function(){if(!J4)throw new _4("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");if(/a/mig.flags==="gim"){var e=Q4(RegExp.prototype,"flags");if(e&&typeof e.get=="function"&&typeof/a/.dotAll=="boolean")return e.get}return Qf},$4=ls.supportsDescriptors,e6=Object.getOwnPropertyDescriptor,t6=Object.defineProperty,r6=TypeError,dd=Object.getPrototypeOf,n6=/a/,i6=function(){if(!$4||!dd)throw new r6("RegExp.prototype.flags requires a true ES5 environment that supports property descriptors");var e=o1(),r=dd(n6),n=e6(r,"flags");return(!n||n.get!==e)&&t6(r,"flags",{configurable:!0,enumerable:!1,get:e}),e},s1=Yf(Qf);ls(s1,{getPolyfill:o1,implementation:Qf,shim:i6});var vd=s1,a6=Date.prototype.getDay,o6=function(e){try{return a6.call(e),!0}catch{return!1}},s6=Object.prototype.toString,u6="[object Date]",c6=typeof Symbol=="function"&&typeof Symbol.toStringTag=="symbol",pd=function(e){return typeof e!="object"||e===null?!1:c6?o6(e):s6.call(e)===u6},gd=Date.prototype.getTime;function u1(t,e,r){var n=r||{};return(n.strict?fd(t,e):t===e)?!0:!t||!e||typeof t!="object"&&typeof e!="object"?n.strict?fd(t,e):t==e:l6(t,e,n)}function yd(t){return t==null}function md(t){return!(!t||typeof t!="object"||typeof t.length!="number"||typeof t.copy!="function"||typeof t.slice!="function"||t.length>0&&typeof t[0]!="number")}function l6(t,e,r){var n,i;if(typeof t!=typeof e||yd(t)||yd(e)||t.prototype!==e.prototype||sd(t)!==sd(e))return!1;var a=hd(t),o=hd(e);if(a!==o)return!1;if(a||o)return t.source===e.source&&vd(t)===vd(e);if(pd(t)&&pd(e))return gd.call(t)===gd.call(e);var s=md(t),c=md(e);if(s!==c)return!1;if(s||c){if(t.length!==e.length)return!1;for(n=0;n=0;n--)if(u[n]!=f[n])return!1;for(n=u.length-1;n>=0;n--)if(i=u[n],!u1(t[i],e[i],r))return!1;return!0}var bd=u1,Ja=15,wd=["0","1","2","3","4","5","6","7","8","9",".","E","E-",null,"-"],Sd={".":10,E:11,"E-":12,"-":14},Xc=function(){function t(){}return t.decode=function(r,n){if(32<=n&&n<=246)return n-139;if(247<=n&&n<=250)return(n-247)*256+r.readUInt8()+108;if(251<=n&&n<=254)return-(n-251)*256-r.readUInt8()-108;if(n===28)return r.readInt16BE();if(n===29)return r.readInt32BE();if(n===30){for(var i="";;){var a=r.readUInt8(),o=a>>4;if(o===Ja)break;i+=wd[o];var s=a&15;if(s===Ja)break;i+=wd[s]}return parseFloat(i)}return null},t.size=function(r){if(r.forceLarge&&(r=32768),(r|0)!==r){var n=""+r;return 1+Math.ceil((n.length+1)/2)}else return-107<=r&&r<=107?1:108<=r&&r<=1131||-1131<=r&&r<=-108?2:-32768<=r&&r<=32767?3:5},t.encode=function(r,n){var i=Number(n);if(n.forceLarge)return r.writeUInt8(29),r.writeInt32BE(i);if((i|0)!==i){r.writeUInt8(30);for(var a=""+i,o=0;o>8)+247),r.writeUInt8(i&255)):-1131<=i&&i<=-108?(i=-i-108,r.writeUInt8((i>>8)+251),r.writeUInt8(i&255)):-32768<=i&&i<=32767?(r.writeUInt8(28),r.writeInt16BE(i)):(r.writeUInt8(29),r.writeInt32BE(i))},t}();function Qa(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=f6(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function f6(t,e){if(t){if(typeof t=="string")return Ad(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ad(t,e)}}function Ad(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);ra;)i.pop()},t}(),jl=new tc([[6,"BlueValues","delta",null],[7,"OtherBlues","delta",null],[8,"FamilyBlues","delta",null],[9,"FamilyOtherBlues","delta",null],[[12,9],"BlueScale","number",.039625],[[12,10],"BlueShift","number",7],[[12,11],"BlueFuzz","number",1],[10,"StdHW","number",null],[11,"StdVW","number",null],[[12,12],"StemSnapH","delta",null],[[12,13],"StemSnapV","delta",null],[[12,14],"ForceBold","boolean",!1],[[12,17],"LanguageGroup","number",0],[[12,18],"ExpansionFactor","number",.06],[[12,19],"initialRandomSeed","number",0],[20,"defaultWidthX","number",0],[21,"nominalWidthX","number",0],[22,"vsindex","number",0],[23,"blend",d6,null],[19,"Subrs",new Qr(new ln,{type:"local"}),null]]),Qs=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003","Black","Bold","Book","Light","Medium","Regular","Roman","Semibold"],c1=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","","endash","dagger","daggerdbl","periodcentered","","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","","questiondown","","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","","ring","cedilla","","hungarumlaut","ogonek","caron","emdash","","","","","","","","","","","","","","","","","AE","","ordfeminine","","","","","Lslash","Oslash","OE","ordmasculine","","","","","","ae","","","","dotlessi","","","lslash","oslash","oe","germandbls"],v6=["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","space","exclamsmall","Hungarumlautsmall","","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","","asuperior","bsuperior","centsuperior","dsuperior","esuperior","","","isuperior","","","lsuperior","msuperior","nsuperior","osuperior","","","rsuperior","ssuperior","tsuperior","","ff","fi","fl","ffi","ffl","parenleftinferior","","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","exclamdownsmall","centoldstyle","Lslashsmall","","","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","","Dotaccentsmall","","","Macronsmall","","","figuredash","hypheninferior","","","Ogoneksmall","Ringsmall","Cedillasmall","","","","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","","","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],l1=[".notdef","space","exclam","quotedbl","numbersign","dollar","percent","ampersand","quoteright","parenleft","parenright","asterisk","plus","comma","hyphen","period","slash","zero","one","two","three","four","five","six","seven","eight","nine","colon","semicolon","less","equal","greater","question","at","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","bracketleft","backslash","bracketright","asciicircum","underscore","quoteleft","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","braceleft","bar","braceright","asciitilde","exclamdown","cent","sterling","fraction","yen","florin","section","currency","quotesingle","quotedblleft","guillemotleft","guilsinglleft","guilsinglright","fi","fl","endash","dagger","daggerdbl","periodcentered","paragraph","bullet","quotesinglbase","quotedblbase","quotedblright","guillemotright","ellipsis","perthousand","questiondown","grave","acute","circumflex","tilde","macron","breve","dotaccent","dieresis","ring","cedilla","hungarumlaut","ogonek","caron","emdash","AE","ordfeminine","Lslash","Oslash","OE","ordmasculine","ae","dotlessi","lslash","oslash","oe","germandbls","onesuperior","logicalnot","mu","trademark","Eth","onehalf","plusminus","Thorn","onequarter","divide","brokenbar","degree","thorn","threequarters","twosuperior","registered","minus","eth","multiply","threesuperior","copyright","Aacute","Acircumflex","Adieresis","Agrave","Aring","Atilde","Ccedilla","Eacute","Ecircumflex","Edieresis","Egrave","Iacute","Icircumflex","Idieresis","Igrave","Ntilde","Oacute","Ocircumflex","Odieresis","Ograve","Otilde","Scaron","Uacute","Ucircumflex","Udieresis","Ugrave","Yacute","Ydieresis","Zcaron","aacute","acircumflex","adieresis","agrave","aring","atilde","ccedilla","eacute","ecircumflex","edieresis","egrave","iacute","icircumflex","idieresis","igrave","ntilde","oacute","ocircumflex","odieresis","ograve","otilde","scaron","uacute","ucircumflex","udieresis","ugrave","yacute","ydieresis","zcaron"],p6=[".notdef","space","exclamsmall","Hungarumlautsmall","dollaroldstyle","dollarsuperior","ampersandsmall","Acutesmall","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","questionsmall","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","Circumflexsmall","hyphensuperior","Gravesmall","Asmall","Bsmall","Csmall","Dsmall","Esmall","Fsmall","Gsmall","Hsmall","Ismall","Jsmall","Ksmall","Lsmall","Msmall","Nsmall","Osmall","Psmall","Qsmall","Rsmall","Ssmall","Tsmall","Usmall","Vsmall","Wsmall","Xsmall","Ysmall","Zsmall","colonmonetary","onefitted","rupiah","Tildesmall","exclamdownsmall","centoldstyle","Lslashsmall","Scaronsmall","Zcaronsmall","Dieresissmall","Brevesmall","Caronsmall","Dotaccentsmall","Macronsmall","figuredash","hypheninferior","Ogoneksmall","Ringsmall","Cedillasmall","onequarter","onehalf","threequarters","questiondownsmall","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior","Agravesmall","Aacutesmall","Acircumflexsmall","Atildesmall","Adieresissmall","Aringsmall","AEsmall","Ccedillasmall","Egravesmall","Eacutesmall","Ecircumflexsmall","Edieresissmall","Igravesmall","Iacutesmall","Icircumflexsmall","Idieresissmall","Ethsmall","Ntildesmall","Ogravesmall","Oacutesmall","Ocircumflexsmall","Otildesmall","Odieresissmall","OEsmall","Oslashsmall","Ugravesmall","Uacutesmall","Ucircumflexsmall","Udieresissmall","Yacutesmall","Thornsmall","Ydieresissmall"],g6=[".notdef","space","dollaroldstyle","dollarsuperior","parenleftsuperior","parenrightsuperior","twodotenleader","onedotenleader","comma","hyphen","period","fraction","zerooldstyle","oneoldstyle","twooldstyle","threeoldstyle","fouroldstyle","fiveoldstyle","sixoldstyle","sevenoldstyle","eightoldstyle","nineoldstyle","colon","semicolon","commasuperior","threequartersemdash","periodsuperior","asuperior","bsuperior","centsuperior","dsuperior","esuperior","isuperior","lsuperior","msuperior","nsuperior","osuperior","rsuperior","ssuperior","tsuperior","ff","fi","fl","ffi","ffl","parenleftinferior","parenrightinferior","hyphensuperior","colonmonetary","onefitted","rupiah","centoldstyle","figuredash","hypheninferior","onequarter","onehalf","threequarters","oneeighth","threeeighths","fiveeighths","seveneighths","onethird","twothirds","zerosuperior","onesuperior","twosuperior","threesuperior","foursuperior","fivesuperior","sixsuperior","sevensuperior","eightsuperior","ninesuperior","zeroinferior","oneinferior","twoinferior","threeinferior","fourinferior","fiveinferior","sixinferior","seveninferior","eightinferior","nineinferior","centinferior","dollarinferior","periodinferior","commainferior"],f1=new l.Struct({reserved:new l.Reserved(l.uint16),reqFeatureIndex:l.uint16,featureCount:l.uint16,featureIndexes:new l.Array(l.uint16,"featureCount")}),y6=new l.Struct({tag:new l.String(4),langSys:new l.Pointer(l.uint16,f1,{type:"parent"})}),m6=new l.Struct({defaultLangSys:new l.Pointer(l.uint16,f1),count:l.uint16,langSysRecords:new l.Array(y6,"count")}),b6=new l.Struct({tag:new l.String(4),script:new l.Pointer(l.uint16,m6,{type:"parent"})}),h1=new l.Array(b6,l.uint16),d1=new l.Struct({featureParams:l.uint16,lookupCount:l.uint16,lookupListIndexes:new l.Array(l.uint16,"lookupCount")}),w6=new l.Struct({tag:new l.String(4),feature:new l.Pointer(l.uint16,d1,{type:"parent"})}),v1=new l.Array(w6,l.uint16),S6=new l.Struct({markAttachmentType:l.uint8,flags:new l.Bitfield(l.uint8,["rightToLeft","ignoreBaseGlyphs","ignoreLigatures","ignoreMarks","useMarkFilteringSet"])});function wu(t){var e=new l.Struct({lookupType:l.uint16,flags:S6,subTableCount:l.uint16,subTables:new l.Array(new l.Pointer(l.uint16,t),"subTableCount"),markFilteringSet:new l.Optional(l.uint16,function(r){return r.flags.flags.useMarkFilteringSet})});return new l.LazyArray(new l.Pointer(l.uint16,e),l.uint16)}var A6=new l.Struct({start:l.uint16,end:l.uint16,startCoverageIndex:l.uint16}),Tt=new l.VersionedStruct(l.uint16,{1:{glyphCount:l.uint16,glyphs:new l.Array(l.uint16,"glyphCount")},2:{rangeCount:l.uint16,rangeRecords:new l.Array(A6,"rangeCount")}}),C6=new l.Struct({start:l.uint16,end:l.uint16,class:l.uint16}),si=new l.VersionedStruct(l.uint16,{1:{startGlyph:l.uint16,glyphCount:l.uint16,classValueArray:new l.Array(l.uint16,"glyphCount")},2:{classRangeCount:l.uint16,classRangeRecord:new l.Array(C6,"classRangeCount")}}),ri=new l.Struct({a:l.uint16,b:l.uint16,deltaFormat:l.uint16}),fs=new l.Struct({sequenceIndex:l.uint16,lookupListIndex:l.uint16}),k6=new l.Struct({glyphCount:l.uint16,lookupCount:l.uint16,input:new l.Array(l.uint16,function(t){return t.glyphCount-1}),lookupRecords:new l.Array(fs,"lookupCount")}),F6=new l.Array(new l.Pointer(l.uint16,k6),l.uint16),x6=new l.Struct({glyphCount:l.uint16,lookupCount:l.uint16,classes:new l.Array(l.uint16,function(t){return t.glyphCount-1}),lookupRecords:new l.Array(fs,"lookupCount")}),T6=new l.Array(new l.Pointer(l.uint16,x6),l.uint16),p1=new l.VersionedStruct(l.uint16,{1:{coverage:new l.Pointer(l.uint16,Tt),ruleSetCount:l.uint16,ruleSets:new l.Array(new l.Pointer(l.uint16,F6),"ruleSetCount")},2:{coverage:new l.Pointer(l.uint16,Tt),classDef:new l.Pointer(l.uint16,si),classSetCnt:l.uint16,classSet:new l.Array(new l.Pointer(l.uint16,T6),"classSetCnt")},3:{glyphCount:l.uint16,lookupCount:l.uint16,coverages:new l.Array(new l.Pointer(l.uint16,Tt),"glyphCount"),lookupRecords:new l.Array(fs,"lookupCount")}}),O6=new l.Struct({backtrackGlyphCount:l.uint16,backtrack:new l.Array(l.uint16,"backtrackGlyphCount"),inputGlyphCount:l.uint16,input:new l.Array(l.uint16,function(t){return t.inputGlyphCount-1}),lookaheadGlyphCount:l.uint16,lookahead:new l.Array(l.uint16,"lookaheadGlyphCount"),lookupCount:l.uint16,lookupRecords:new l.Array(fs,"lookupCount")}),kd=new l.Array(new l.Pointer(l.uint16,O6),l.uint16),g1=new l.VersionedStruct(l.uint16,{1:{coverage:new l.Pointer(l.uint16,Tt),chainCount:l.uint16,chainRuleSets:new l.Array(new l.Pointer(l.uint16,kd),"chainCount")},2:{coverage:new l.Pointer(l.uint16,Tt),backtrackClassDef:new l.Pointer(l.uint16,si),inputClassDef:new l.Pointer(l.uint16,si),lookaheadClassDef:new l.Pointer(l.uint16,si),chainCount:l.uint16,chainClassSet:new l.Array(new l.Pointer(l.uint16,kd),"chainCount")},3:{backtrackGlyphCount:l.uint16,backtrackCoverage:new l.Array(new l.Pointer(l.uint16,Tt),"backtrackGlyphCount"),inputGlyphCount:l.uint16,inputCoverage:new l.Array(new l.Pointer(l.uint16,Tt),"inputGlyphCount"),lookaheadGlyphCount:l.uint16,lookaheadCoverage:new l.Array(new l.Pointer(l.uint16,Tt),"lookaheadGlyphCount"),lookupCount:l.uint16,lookupRecords:new l.Array(fs,"lookupCount")}}),_a,wo=new l.Fixed(16,"BE",14),P6=new l.Struct({startCoord:wo,peakCoord:wo,endCoord:wo}),E6=new l.Struct({axisCount:l.uint16,regionCount:l.uint16,variationRegions:new l.Array(new l.Array(P6,"axisCount"),"regionCount")}),I6=new l.Struct({shortDeltas:new l.Array(l.int16,function(t){return t.parent.shortDeltaCount}),regionDeltas:new l.Array(l.int8,function(t){return t.parent.regionIndexCount-t.parent.shortDeltaCount}),deltas:function(e){return e.shortDeltas.concat(e.regionDeltas)}}),D6=new l.Struct({itemCount:l.uint16,shortDeltaCount:l.uint16,regionIndexCount:l.uint16,regionIndexes:new l.Array(l.uint16,"regionIndexCount"),deltaSets:new l.Array(I6,"itemCount")}),rc=new l.Struct({format:l.uint16,variationRegionList:new l.Pointer(l.uint32,E6),variationDataCount:l.uint16,itemVariationData:new l.Array(new l.Pointer(l.uint32,D6),"variationDataCount")}),B6=new l.VersionedStruct(l.uint16,{1:(_a={axisIndex:l.uint16},_a.axisIndex=l.uint16,_a.filterRangeMinValue=wo,_a.filterRangeMaxValue=wo,_a)}),R6=new l.Struct({conditionCount:l.uint16,conditionTable:new l.Array(new l.Pointer(l.uint32,B6),"conditionCount")}),N6=new l.Struct({featureIndex:l.uint16,alternateFeatureTable:new l.Pointer(l.uint32,d1,{type:"parent"})}),M6=new l.Struct({version:l.fixed32,substitutionCount:l.uint16,substitutions:new l.Array(N6,"substitutionCount")}),L6=new l.Struct({conditionSet:new l.Pointer(l.uint32,R6,{type:"parent"}),featureTableSubstitution:new l.Pointer(l.uint32,M6,{type:"parent"})}),y1=new l.Struct({majorVersion:l.uint16,minorVersion:l.uint16,featureVariationRecordCount:l.uint32,featureVariationRecords:new l.Array(L6,"featureVariationRecordCount")});function m1(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var b1=function(){function t(r,n){this.predefinedOps=r,this.type=n}var e=t.prototype;return e.decode=function(n,i,a){return this.predefinedOps[a[0]]?this.predefinedOps[a[0]]:this.type.decode(n,i,a)},e.size=function(n,i){return this.type.size(n,i)},e.encode=function(n,i,a){var o=this.predefinedOps.indexOf(i);return o!==-1?o:this.type.encode(n,i,a)},t}(),U6=function(t){m1(e,t);function e(){return t.call(this,"UInt8")||this}var r=e.prototype;return r.decode=function(i){return l.uint8.decode(i)&127},e}(l.Number),w1=new l.Struct({first:l.uint16,nLeft:l.uint8}),z6=new l.Struct({first:l.uint16,nLeft:l.uint16}),j6=new l.VersionedStruct(new U6,{0:{nCodes:l.uint8,codes:new l.Array(l.uint8,"nCodes")},1:{nRanges:l.uint8,ranges:new l.Array(w1,"nRanges")}}),V6=new b1([c1,v6],new Qr(j6,{lazy:!0})),Fd=function(t){m1(e,t);function e(){return t.apply(this,arguments)||this}var r=e.prototype;return r.decode=function(i,a){for(var o=K0(this.length,i,a),s=0,c=[];s=2?null:n=2||this.isCIDFont)return null;var i=this.topDict.charset;if(Array.isArray(i))return i[n];if(n===0)return".notdef";switch(n-=1,i.version){case 0:return this.string(i.glyphs[n]);case 1:case 2:for(var a=0;a>1;if(ni[s+1].first)a=s+1;else return i[s].fd}default:throw new Error("Unknown FDSelect version: "+this.topDict.FDSelect.version)}},e.privateDictForGlyph=function(n){if(this.topDict.FDSelect){var i=this.fdForGlyph(n);return this.topDict.FDArray[i]?this.topDict.FDArray[i].Private:null}return this.version<2?this.topDict.Private:this.topDict.FDArray[0].Private},J6(t,[{key:"postscriptName",get:function(){return this.version<2?this.nameIndex[0]:null}},{key:"fullName",get:function(){return this.string(this.topDict.FullName)}},{key:"familyName",get:function(){return this.string(this.topDict.FamilyName)}}]),t}(),Q6=new l.Struct({glyphIndex:l.uint16,vertOriginY:l.int16}),_6=new l.Struct({majorVersion:l.uint16,minorVersion:l.uint16,defaultVertOriginY:l.int16,numVertOriginYMetrics:l.uint16,metrics:new l.Array(Q6,"numVertOriginYMetrics")}),ya=new l.Struct({height:l.uint8,width:l.uint8,horiBearingX:l.int8,horiBearingY:l.int8,horiAdvance:l.uint8,vertBearingX:l.int8,vertBearingY:l.int8,vertAdvance:l.uint8}),Ps=new l.Struct({height:l.uint8,width:l.uint8,bearingX:l.int8,bearingY:l.int8,advance:l.uint8}),xd=new l.Struct({glyph:l.uint16,xOffset:l.int8,yOffset:l.int8}),Td=function(){},Jc=function(){};new l.VersionedStruct("version",{1:{metrics:Ps,data:Td},2:{metrics:Ps,data:Jc},5:{data:Jc},6:{metrics:ya,data:Td},7:{metrics:ya,data:Jc},8:{metrics:Ps,pad:new l.Reserved(l.uint8),numComponents:l.uint16,components:new l.Array(xd,"numComponents")},9:{metrics:ya,pad:new l.Reserved(l.uint8),numComponents:l.uint16,components:new l.Array(xd,"numComponents")},17:{metrics:Ps,dataLen:l.uint32,data:new l.Buffer("dataLen")},18:{metrics:ya,dataLen:l.uint32,data:new l.Buffer("dataLen")},19:{dataLen:l.uint32,data:new l.Buffer("dataLen")}});var Od=new l.Struct({ascender:l.int8,descender:l.int8,widthMax:l.uint8,caretSlopeNumerator:l.int8,caretSlopeDenominator:l.int8,caretOffset:l.int8,minOriginSB:l.int8,minAdvanceSB:l.int8,maxBeforeBL:l.int8,minAfterBL:l.int8,pad:new l.Reserved(l.int8,2)}),$6=new l.Struct({glyphCode:l.uint16,offset:l.uint16}),e3=new l.VersionedStruct(l.uint16,{header:{imageFormat:l.uint16,imageDataOffset:l.uint32},1:{offsetArray:new l.Array(l.uint32,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},2:{imageSize:l.uint32,bigMetrics:ya},3:{offsetArray:new l.Array(l.uint16,function(t){return t.parent.lastGlyphIndex-t.parent.firstGlyphIndex+1})},4:{numGlyphs:l.uint32,glyphArray:new l.Array($6,function(t){return t.numGlyphs+1})},5:{imageSize:l.uint32,bigMetrics:ya,numGlyphs:l.uint32,glyphCodeArray:new l.Array(l.uint16,"numGlyphs")}}),t3=new l.Struct({firstGlyphIndex:l.uint16,lastGlyphIndex:l.uint16,subtable:new l.Pointer(l.uint32,e3)}),r3=new l.Struct({indexSubTableArray:new l.Pointer(l.uint32,new l.Array(t3,1),{type:"parent"}),indexTablesSize:l.uint32,numberOfIndexSubTables:l.uint32,colorRef:l.uint32,hori:Od,vert:Od,startGlyphIndex:l.uint16,endGlyphIndex:l.uint16,ppemX:l.uint8,ppemY:l.uint8,bitDepth:l.uint8,flags:new l.Bitfield(l.uint8,["horizontal","vertical"])}),n3=new l.Struct({version:l.uint32,numSizes:l.uint32,sizes:new l.Array(r3,"numSizes")}),i3=new l.Struct({ppem:l.uint16,resolution:l.uint16,imageOffsets:new l.Array(new l.Pointer(l.uint32,"void"),function(t){return t.parent.parent.maxp.numGlyphs+1})}),a3=new l.Struct({version:l.uint16,flags:new l.Bitfield(l.uint16,["renderOutlines"]),numImgTables:l.uint32,imageTables:new l.Array(new l.Pointer(l.uint32,i3),"numImgTables")}),o3=new l.Struct({gid:l.uint16,paletteIndex:l.uint16}),s3=new l.Struct({gid:l.uint16,firstLayerIndex:l.uint16,numLayers:l.uint16}),u3=new l.Struct({version:l.uint16,numBaseGlyphRecords:l.uint16,baseGlyphRecord:new l.Pointer(l.uint32,new l.Array(s3,"numBaseGlyphRecords")),layerRecords:new l.Pointer(l.uint32,new l.Array(o3,"numLayerRecords"),{lazy:!0}),numLayerRecords:l.uint16}),c3=new l.Struct({blue:l.uint8,green:l.uint8,red:l.uint8,alpha:l.uint8}),l3=new l.VersionedStruct(l.uint16,{header:{numPaletteEntries:l.uint16,numPalettes:l.uint16,numColorRecords:l.uint16,colorRecords:new l.Pointer(l.uint32,new l.Array(c3,"numColorRecords")),colorRecordIndices:new l.Array(l.uint16,"numPalettes")},0:{},1:{offsetPaletteTypeArray:new l.Pointer(l.uint32,new l.Array(l.uint32,"numPalettes")),offsetPaletteLabelArray:new l.Pointer(l.uint32,new l.Array(l.uint16,"numPalettes")),offsetPaletteEntryLabelArray:new l.Pointer(l.uint32,new l.Array(l.uint16,"numPaletteEntries"))}}),Ko=new l.VersionedStruct(l.uint16,{1:{coordinate:l.int16},2:{coordinate:l.int16,referenceGlyph:l.uint16,baseCoordPoint:l.uint16},3:{coordinate:l.int16,deviceTable:new l.Pointer(l.uint16,ri)}}),f3=new l.Struct({defaultIndex:l.uint16,baseCoordCount:l.uint16,baseCoords:new l.Array(new l.Pointer(l.uint16,Ko),"baseCoordCount")}),h3=new l.Struct({tag:new l.String(4),minCoord:new l.Pointer(l.uint16,Ko,{type:"parent"}),maxCoord:new l.Pointer(l.uint16,Ko,{type:"parent"})}),x1=new l.Struct({minCoord:new l.Pointer(l.uint16,Ko),maxCoord:new l.Pointer(l.uint16,Ko),featMinMaxCount:l.uint16,featMinMaxRecords:new l.Array(h3,"featMinMaxCount")}),d3=new l.Struct({tag:new l.String(4),minMax:new l.Pointer(l.uint16,x1,{type:"parent"})}),v3=new l.Struct({baseValues:new l.Pointer(l.uint16,f3),defaultMinMax:new l.Pointer(l.uint16,x1),baseLangSysCount:l.uint16,baseLangSysRecords:new l.Array(d3,"baseLangSysCount")}),p3=new l.Struct({tag:new l.String(4),script:new l.Pointer(l.uint16,v3,{type:"parent"})}),g3=new l.Array(p3,l.uint16),y3=new l.Array(new l.String(4),l.uint16),Pd=new l.Struct({baseTagList:new l.Pointer(l.uint16,y3),baseScriptList:new l.Pointer(l.uint16,g3)}),m3=new l.VersionedStruct(l.uint32,{header:{horizAxis:new l.Pointer(l.uint16,Pd),vertAxis:new l.Pointer(l.uint16,Pd)},65536:{},65537:{itemVariationStore:new l.Pointer(l.uint32,rc)}}),b3=new l.Array(l.uint16,l.uint16),w3=new l.Struct({coverage:new l.Pointer(l.uint16,Tt),glyphCount:l.uint16,attachPoints:new l.Array(new l.Pointer(l.uint16,b3),"glyphCount")}),S3=new l.VersionedStruct(l.uint16,{1:{coordinate:l.int16},2:{caretValuePoint:l.uint16},3:{coordinate:l.int16,deviceTable:new l.Pointer(l.uint16,ri)}}),A3=new l.Array(new l.Pointer(l.uint16,S3),l.uint16),C3=new l.Struct({coverage:new l.Pointer(l.uint16,Tt),ligGlyphCount:l.uint16,ligGlyphs:new l.Array(new l.Pointer(l.uint16,A3),"ligGlyphCount")}),Ed=new l.Struct({markSetTableFormat:l.uint16,markSetCount:l.uint16,coverage:new l.Array(new l.Pointer(l.uint32,Tt),"markSetCount")}),k3=new l.VersionedStruct(l.uint32,{header:{glyphClassDef:new l.Pointer(l.uint16,si),attachList:new l.Pointer(l.uint16,w3),ligCaretList:new l.Pointer(l.uint16,C3),markAttachClassDef:new l.Pointer(l.uint16,si)},65536:{},65538:{markGlyphSetsDef:new l.Pointer(l.uint16,Ed)},65539:{markGlyphSetsDef:new l.Pointer(l.uint16,Ed),itemVariationStore:new l.Pointer(l.uint32,rc)}}),ia=new l.Bitfield(l.uint16,["xPlacement","yPlacement","xAdvance","yAdvance","xPlaDevice","yPlaDevice","xAdvDevice","yAdvDevice"]),F3={xPlacement:l.int16,yPlacement:l.int16,xAdvance:l.int16,yAdvance:l.int16,xPlaDevice:new l.Pointer(l.uint16,ri,{type:"global",relativeTo:"rel"}),yPlaDevice:new l.Pointer(l.uint16,ri,{type:"global",relativeTo:"rel"}),xAdvDevice:new l.Pointer(l.uint16,ri,{type:"global",relativeTo:"rel"}),yAdvDevice:new l.Pointer(l.uint16,ri,{type:"global",relativeTo:"rel"})},Ba=function(){function t(r){r===void 0&&(r="valueFormat"),this.key=r}var e=t.prototype;return e.buildStruct=function(n){for(var i=n;!i[this.key]&&i.parent;)i=i.parent;if(i[this.key]){var a={};a.rel=function(){return i._startOffset};var o=i[this.key];for(var s in o)o[s]&&(a[s]=F3[s]);return new l.Struct(a)}},e.size=function(n,i){return this.buildStruct(i).size(n,i)},e.decode=function(n,i){var a=this.buildStruct(i).decode(n,i);return delete a.rel,a},t}(),x3=new l.Struct({secondGlyph:l.uint16,value1:new Ba("valueFormat1"),value2:new Ba("valueFormat2")}),T3=new l.Array(x3,l.uint16),O3=new l.Struct({value1:new Ba("valueFormat1"),value2:new Ba("valueFormat2")}),Xo=new l.VersionedStruct(l.uint16,{1:{xCoordinate:l.int16,yCoordinate:l.int16},2:{xCoordinate:l.int16,yCoordinate:l.int16,anchorPoint:l.uint16},3:{xCoordinate:l.int16,yCoordinate:l.int16,xDeviceTable:new l.Pointer(l.uint16,ri),yDeviceTable:new l.Pointer(l.uint16,ri)}}),P3=new l.Struct({entryAnchor:new l.Pointer(l.uint16,Xo,{type:"parent"}),exitAnchor:new l.Pointer(l.uint16,Xo,{type:"parent"})}),E3=new l.Struct({class:l.uint16,markAnchor:new l.Pointer(l.uint16,Xo,{type:"parent"})}),Qc=new l.Array(E3,l.uint16),I3=new l.Array(new l.Pointer(l.uint16,Xo),function(t){return t.parent.classCount}),Id=new l.Array(I3,l.uint16),D3=new l.Array(new l.Pointer(l.uint16,Xo),function(t){return t.parent.parent.classCount}),B3=new l.Array(D3,l.uint16),R3=new l.Array(new l.Pointer(l.uint16,B3),l.uint16),Ra=new l.VersionedStruct("lookupType",{1:new l.VersionedStruct(l.uint16,{1:{coverage:new l.Pointer(l.uint16,Tt),valueFormat:ia,value:new Ba},2:{coverage:new l.Pointer(l.uint16,Tt),valueFormat:ia,valueCount:l.uint16,values:new l.LazyArray(new Ba,"valueCount")}}),2:new l.VersionedStruct(l.uint16,{1:{coverage:new l.Pointer(l.uint16,Tt),valueFormat1:ia,valueFormat2:ia,pairSetCount:l.uint16,pairSets:new l.LazyArray(new l.Pointer(l.uint16,T3),"pairSetCount")},2:{coverage:new l.Pointer(l.uint16,Tt),valueFormat1:ia,valueFormat2:ia,classDef1:new l.Pointer(l.uint16,si),classDef2:new l.Pointer(l.uint16,si),class1Count:l.uint16,class2Count:l.uint16,classRecords:new l.LazyArray(new l.LazyArray(O3,"class2Count"),"class1Count")}}),3:{format:l.uint16,coverage:new l.Pointer(l.uint16,Tt),entryExitCount:l.uint16,entryExitRecords:new l.Array(P3,"entryExitCount")},4:{format:l.uint16,markCoverage:new l.Pointer(l.uint16,Tt),baseCoverage:new l.Pointer(l.uint16,Tt),classCount:l.uint16,markArray:new l.Pointer(l.uint16,Qc),baseArray:new l.Pointer(l.uint16,Id)},5:{format:l.uint16,markCoverage:new l.Pointer(l.uint16,Tt),ligatureCoverage:new l.Pointer(l.uint16,Tt),classCount:l.uint16,markArray:new l.Pointer(l.uint16,Qc),ligatureArray:new l.Pointer(l.uint16,R3)},6:{format:l.uint16,mark1Coverage:new l.Pointer(l.uint16,Tt),mark2Coverage:new l.Pointer(l.uint16,Tt),classCount:l.uint16,mark1Array:new l.Pointer(l.uint16,Qc),mark2Array:new l.Pointer(l.uint16,Id)},7:p1,8:g1,9:{posFormat:l.uint16,lookupType:l.uint16,extension:new l.Pointer(l.uint32,Ra)}});Ra.versions[9].extension.type=Ra;var N3=new l.VersionedStruct(l.uint32,{header:{scriptList:new l.Pointer(l.uint16,h1),featureList:new l.Pointer(l.uint16,v1),lookupList:new l.Pointer(l.uint16,new wu(Ra))},65536:{},65537:{featureVariations:new l.Pointer(l.uint32,y1)}}),T1=new l.Array(l.uint16,l.uint16),M3=T1,L3=new l.Struct({glyph:l.uint16,compCount:l.uint16,components:new l.Array(l.uint16,function(t){return t.compCount-1})}),U3=new l.Array(new l.Pointer(l.uint16,L3),l.uint16),Su=new l.VersionedStruct("lookupType",{1:new l.VersionedStruct(l.uint16,{1:{coverage:new l.Pointer(l.uint16,Tt),deltaGlyphID:l.int16},2:{coverage:new l.Pointer(l.uint16,Tt),glyphCount:l.uint16,substitute:new l.LazyArray(l.uint16,"glyphCount")}}),2:{substFormat:l.uint16,coverage:new l.Pointer(l.uint16,Tt),count:l.uint16,sequences:new l.LazyArray(new l.Pointer(l.uint16,T1),"count")},3:{substFormat:l.uint16,coverage:new l.Pointer(l.uint16,Tt),count:l.uint16,alternateSet:new l.LazyArray(new l.Pointer(l.uint16,M3),"count")},4:{substFormat:l.uint16,coverage:new l.Pointer(l.uint16,Tt),count:l.uint16,ligatureSets:new l.LazyArray(new l.Pointer(l.uint16,U3),"count")},5:p1,6:g1,7:{substFormat:l.uint16,lookupType:l.uint16,extension:new l.Pointer(l.uint32,Su)},8:{substFormat:l.uint16,coverage:new l.Pointer(l.uint16,Tt),backtrackCoverage:new l.Array(new l.Pointer(l.uint16,Tt),"backtrackGlyphCount"),lookaheadGlyphCount:l.uint16,lookaheadCoverage:new l.Array(new l.Pointer(l.uint16,Tt),"lookaheadGlyphCount"),glyphCount:l.uint16,substitutes:new l.Array(l.uint16,"glyphCount")}});Su.versions[7].extension.type=Su;var z3=new l.VersionedStruct(l.uint32,{header:{scriptList:new l.Pointer(l.uint16,h1),featureList:new l.Pointer(l.uint16,v1),lookupList:new l.Pointer(l.uint16,new wu(Su))},65536:{},65537:{featureVariations:new l.Pointer(l.uint32,y1)}}),Wn=new l.Array(l.uint16,l.uint16),j3=new l.Struct({shrinkageEnableGSUB:new l.Pointer(l.uint16,Wn),shrinkageDisableGSUB:new l.Pointer(l.uint16,Wn),shrinkageEnableGPOS:new l.Pointer(l.uint16,Wn),shrinkageDisableGPOS:new l.Pointer(l.uint16,Wn),shrinkageJstfMax:new l.Pointer(l.uint16,new wu(Ra)),extensionEnableGSUB:new l.Pointer(l.uint16,Wn),extensionDisableGSUB:new l.Pointer(l.uint16,Wn),extensionEnableGPOS:new l.Pointer(l.uint16,Wn),extensionDisableGPOS:new l.Pointer(l.uint16,Wn),extensionJstfMax:new l.Pointer(l.uint16,new wu(Ra))}),O1=new l.Array(new l.Pointer(l.uint16,j3),l.uint16),V3=new l.Struct({tag:new l.String(4),jstfLangSys:new l.Pointer(l.uint16,O1)}),q3=new l.Struct({extenderGlyphs:new l.Pointer(l.uint16,new l.Array(l.uint16,l.uint16)),defaultLangSys:new l.Pointer(l.uint16,O1),langSysCount:l.uint16,langSysRecords:new l.Array(V3,"langSysCount")}),W3=new l.Struct({tag:new l.String(4),script:new l.Pointer(l.uint16,q3,{type:"parent"})}),G3=new l.Struct({version:l.uint32,scriptCount:l.uint16,scriptList:new l.Array(W3,"scriptCount")}),H3=function(){function t(r){this._size=r}var e=t.prototype;return e.decode=function(n,i){switch(this.size(0,i)){case 1:return n.readUInt8();case 2:return n.readUInt16BE();case 3:return n.readUInt24BE();case 4:return n.readUInt32BE()}},e.size=function(n,i){return K0(this._size,null,i)},t}(),Z3=new l.Struct({entry:new H3(function(t){return((t.parent.entryFormat&48)>>4)+1}),outerIndex:function(e){return e.entry>>(e.parent.entryFormat&15)+1},innerIndex:function(e){return e.entry&(1<<(e.parent.entryFormat&15)+1)-1}}),_c=new l.Struct({entryFormat:l.uint16,mapCount:l.uint16,mapData:new l.Array(Z3,"mapCount")}),K3=new l.Struct({majorVersion:l.uint16,minorVersion:l.uint16,itemVariationStore:new l.Pointer(l.uint32,rc),advanceWidthMapping:new l.Pointer(l.uint32,_c),LSBMapping:new l.Pointer(l.uint32,_c),RSBMapping:new l.Pointer(l.uint32,_c)}),X3=new l.Struct({format:l.uint32,length:l.uint32,offset:l.uint32}),Y3=new l.Struct({reserved:new l.Reserved(l.uint16,2),cbSignature:l.uint32,signature:new l.Buffer("cbSignature")}),J3=new l.Struct({ulVersion:l.uint32,usNumSigs:l.uint16,usFlag:l.uint16,signatures:new l.Array(X3,"usNumSigs"),signatureBlocks:new l.Array(Y3,"usNumSigs")}),Q3=new l.Struct({rangeMaxPPEM:l.uint16,rangeGaspBehavior:new l.Bitfield(l.uint16,["grayscale","gridfit","symmetricSmoothing","symmetricGridfit"])}),_3=new l.Struct({version:l.uint16,numRanges:l.uint16,gaspRanges:new l.Array(Q3,"numRanges")}),$3=new l.Struct({pixelSize:l.uint8,maximumWidth:l.uint8,widths:new l.Array(l.uint8,function(t){return t.parent.parent.maxp.numGlyphs})}),e8=new l.Struct({version:l.uint16,numRecords:l.int16,sizeDeviceRecord:l.int32,records:new l.Array($3,"numRecords")}),t8=new l.Struct({left:l.uint16,right:l.uint16,value:l.int16}),Dd=new l.Struct({firstGlyph:l.uint16,nGlyphs:l.uint16,offsets:new l.Array(l.uint16,"nGlyphs"),max:function(e){return e.offsets.length&&Math.max.apply(Math,e.offsets)}}),r8=new l.Struct({off:function(e){return e._startOffset-e.parent.parent._startOffset},len:function(e){return((e.parent.leftTable.max-e.off)/e.parent.rowWidth+1)*(e.parent.rowWidth/2)},values:new l.LazyArray(l.int16,"len")}),Bd=new l.VersionedStruct("format",{0:{nPairs:l.uint16,searchRange:l.uint16,entrySelector:l.uint16,rangeShift:l.uint16,pairs:new l.Array(t8,"nPairs")},2:{rowWidth:l.uint16,leftTable:new l.Pointer(l.uint16,Dd,{type:"parent"}),rightTable:new l.Pointer(l.uint16,Dd,{type:"parent"}),array:new l.Pointer(l.uint16,r8,{type:"parent"})},3:{glyphCount:l.uint16,kernValueCount:l.uint8,leftClassCount:l.uint8,rightClassCount:l.uint8,flags:l.uint8,kernValue:new l.Array(l.int16,"kernValueCount"),leftClass:new l.Array(l.uint8,"glyphCount"),rightClass:new l.Array(l.uint8,"glyphCount"),kernIndex:new l.Array(l.uint8,function(t){return t.leftClassCount*t.rightClassCount})}}),Rd=new l.VersionedStruct("version",{0:{subVersion:l.uint16,length:l.uint16,format:l.uint8,coverage:new l.Bitfield(l.uint8,["horizontal","minimum","crossStream","override"]),subtable:Bd,padding:new l.Reserved(l.uint8,function(t){return t.length-t._currentOffset})},1:{length:l.uint32,coverage:new l.Bitfield(l.uint8,[null,null,null,null,null,"variation","crossStream","vertical"]),format:l.uint8,tupleIndex:l.uint16,subtable:Bd,padding:new l.Reserved(l.uint8,function(t){return t.length-t._currentOffset})}}),n8=new l.VersionedStruct(l.uint16,{0:{nTables:l.uint16,tables:new l.Array(Rd,"nTables")},1:{reserved:new l.Reserved(l.uint16),nTables:l.uint32,tables:new l.Array(Rd,"nTables")}}),i8=new l.Struct({version:l.uint16,numGlyphs:l.uint16,yPels:new l.Array(l.uint8,"numGlyphs")}),a8=new l.Struct({version:l.uint16,fontNumber:l.uint32,pitch:l.uint16,xHeight:l.uint16,style:l.uint16,typeFamily:l.uint16,capHeight:l.uint16,symbolSet:l.uint16,typeface:new l.String(16),characterComplement:new l.String(8),fileName:new l.String(6),strokeWeight:new l.String(1),widthType:new l.String(1),serifStyle:l.uint8,reserved:new l.Reserved(l.uint8)}),o8=new l.Struct({bCharSet:l.uint8,xRatio:l.uint8,yStartRatio:l.uint8,yEndRatio:l.uint8}),s8=new l.Struct({yPelHeight:l.uint16,yMax:l.int16,yMin:l.int16}),u8=new l.Struct({recs:l.uint16,startsz:l.uint8,endsz:l.uint8,entries:new l.Array(s8,"recs")}),c8=new l.Struct({version:l.uint16,numRecs:l.uint16,numRatios:l.uint16,ratioRanges:new l.Array(o8,"numRatios"),offsets:new l.Array(l.uint16,"numRatios"),groups:new l.Array(u8,"numRecs")}),l8=new l.Struct({version:l.uint16,ascent:l.int16,descent:l.int16,lineGap:l.int16,advanceHeightMax:l.int16,minTopSideBearing:l.int16,minBottomSideBearing:l.int16,yMaxExtent:l.int16,caretSlopeRise:l.int16,caretSlopeRun:l.int16,caretOffset:l.int16,reserved:new l.Reserved(l.int16,4),metricDataFormat:l.int16,numberOfMetrics:l.uint16}),f8=new l.Struct({advance:l.uint16,bearing:l.int16}),h8=new l.Struct({metrics:new l.LazyArray(f8,function(t){return t.parent.vhea.numberOfMetrics}),bearings:new l.LazyArray(l.int16,function(t){return t.parent.maxp.numGlyphs-t.parent.vhea.numberOfMetrics})}),Nd=new l.Fixed(16,"BE",14),d8=new l.Struct({fromCoord:Nd,toCoord:Nd}),v8=new l.Struct({pairCount:l.uint16,correspondence:new l.Array(d8,"pairCount")}),p8=new l.Struct({version:l.fixed32,axisCount:l.uint32,segment:new l.Array(v8,"axisCount")});function g8(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var y8=function(){function t(r,n,i){this.type=r,this.stream=n,this.parent=i,this.base=this.stream.pos,this._items=[]}var e=t.prototype;return e.getItem=function(n){if(this._items[n]==null){var i=this.stream.pos;this.stream.pos=this.base+this.type.size(null,this.parent)*n,this._items[n]=this.type.decode(this.stream,this.parent),this.stream.pos=i}return this._items[n]},e.inspect=function(){return"[UnboundedArray "+this.type.constructor.name+"]"},t}(),hn=function(t){g8(e,t);function e(n){return t.call(this,n,0)||this}var r=e.prototype;return r.decode=function(i,a){return new y8(this.type,i,a)},e}(l.Array),hi=function(e){e===void 0&&(e=l.uint16);var r=function(){function s(u){this.type=u}var c=s.prototype;return c.decode=function(f,h){return h=h.parent.parent,this.type.decode(f,h)},c.size=function(f,h){return h=h.parent.parent,this.type.size(f,h)},c.encode=function(f,h,d){return d=d.parent.parent,this.type.encode(f,h,d)},s}();e=new r(e);var n=new l.Struct({unitSize:l.uint16,nUnits:l.uint16,searchRange:l.uint16,entrySelector:l.uint16,rangeShift:l.uint16}),i=new l.Struct({lastGlyph:l.uint16,firstGlyph:l.uint16,value:e}),a=new l.Struct({lastGlyph:l.uint16,firstGlyph:l.uint16,values:new l.Pointer(l.uint16,new l.Array(e,function(s){return s.lastGlyph-s.firstGlyph+1}),{type:"parent"})}),o=new l.Struct({glyph:l.uint16,value:e});return new l.VersionedStruct(l.uint16,{0:{values:new hn(e)},2:{binarySearchHeader:n,segments:new l.Array(i,function(s){return s.binarySearchHeader.nUnits})},4:{binarySearchHeader:n,segments:new l.Array(a,function(s){return s.binarySearchHeader.nUnits})},6:{binarySearchHeader:n,segments:new l.Array(o,function(s){return s.binarySearchHeader.nUnits})},8:{firstGlyph:l.uint16,count:l.uint16,values:new l.Array(e,"count")}})};function Es(t,e){t===void 0&&(t={}),e===void 0&&(e=l.uint16);var r=Object.assign({newState:l.uint16,flags:l.uint16},t),n=new l.Struct(r),i=new hn(new l.Array(l.uint16,function(o){return o.nClasses})),a=new l.Struct({nClasses:l.uint32,classTable:new l.Pointer(l.uint32,new hi(e)),stateArray:new l.Pointer(l.uint32,i),entryTable:new l.Pointer(l.uint32,new hn(n))});return a}function m8(t,e){t===void 0&&(t={}),e===void 0&&(e=l.uint16);var r=new l.Struct({version:function(){return 8},firstGlyph:l.uint16,values:new l.Array(l.uint8,l.uint16)}),n=Object.assign({newStateOffset:l.uint16,newState:function(c){return(c.newStateOffset-(c.parent.stateArray.base-c.parent._startOffset))/c.parent.nClasses},flags:l.uint16},t),i=new l.Struct(n),a=new hn(new l.Array(l.uint8,function(s){return s.nClasses})),o=new l.Struct({nClasses:l.uint16,classTable:new l.Pointer(l.uint16,r),stateArray:new l.Pointer(l.uint16,a),entryTable:new l.Pointer(l.uint16,new hn(i))});return o}var b8=new l.VersionedStruct("format",{0:{deltas:new l.Array(l.int16,32)},1:{deltas:new l.Array(l.int16,32),mappingData:new hi(l.uint16)},2:{standardGlyph:l.uint16,controlPoints:new l.Array(l.uint16,32)},3:{standardGlyph:l.uint16,controlPoints:new l.Array(l.uint16,32),mappingData:new hi(l.uint16)}}),w8=new l.Struct({version:l.fixed32,format:l.uint16,defaultBaseline:l.uint16,subtable:b8}),S8=new l.Struct({setting:l.uint16,nameIndex:l.int16,name:function(e){return e.parent.parent.parent.name.records.fontFeatures[e.nameIndex]}}),A8=new l.Struct({feature:l.uint16,nSettings:l.uint16,settingTable:new l.Pointer(l.uint32,new l.Array(S8,"nSettings"),{type:"parent"}),featureFlags:new l.Bitfield(l.uint8,[null,null,null,null,null,null,"hasDefault","exclusive"]),defaultSetting:l.uint8,nameIndex:l.int16,name:function(e){return e.parent.parent.name.records.fontFeatures[e.nameIndex]}}),C8=new l.Struct({version:l.fixed32,featureNameCount:l.uint16,reserved1:new l.Reserved(l.uint16),reserved2:new l.Reserved(l.uint32),featureNames:new l.Array(A8,"featureNameCount")}),k8=new l.Struct({axisTag:new l.String(4),minValue:l.fixed32,defaultValue:l.fixed32,maxValue:l.fixed32,flags:l.uint16,nameID:l.uint16,name:function(e){return e.parent.parent.name.records.fontFeatures[e.nameID]}}),F8=new l.Struct({nameID:l.uint16,name:function(e){return e.parent.parent.name.records.fontFeatures[e.nameID]},flags:l.uint16,coord:new l.Array(l.fixed32,function(t){return t.parent.axisCount}),postscriptNameID:new l.Optional(l.uint16,function(t){return t.parent.instanceSize-t._currentOffset>0})}),x8=new l.Struct({version:l.fixed32,offsetToData:l.uint16,countSizePairs:l.uint16,axisCount:l.uint16,axisSize:l.uint16,instanceCount:l.uint16,instanceSize:l.uint16,axis:new l.Array(k8,"axisCount"),instance:new l.Array(F8,"instanceCount")}),T8=new l.Fixed(16,"BE",14),O8=function(){function t(){}return t.decode=function(r,n){return n.flags?r.readUInt32BE():r.readUInt16BE()*2},t}(),P8=new l.Struct({version:l.uint16,reserved:new l.Reserved(l.uint16),axisCount:l.uint16,globalCoordCount:l.uint16,globalCoords:new l.Pointer(l.uint32,new l.Array(new l.Array(T8,"axisCount"),"globalCoordCount")),glyphCount:l.uint16,flags:l.uint16,offsetToData:l.uint32,offsets:new l.Array(new l.Pointer(O8,"void",{relativeTo:"offsetToData",allowNull:!1}),function(t){return t.glyphCount+1})}),E8=new l.Struct({length:l.uint16,coverage:l.uint16,subFeatureFlags:l.uint32,stateTable:new m8}),I8=new l.Struct({justClass:l.uint32,beforeGrowLimit:l.fixed32,beforeShrinkLimit:l.fixed32,afterGrowLimit:l.fixed32,afterShrinkLimit:l.fixed32,growFlags:l.uint16,shrinkFlags:l.uint16}),D8=new l.Array(I8,l.uint32),B8=new l.VersionedStruct("actionType",{0:{lowerLimit:l.fixed32,upperLimit:l.fixed32,order:l.uint16,glyphs:new l.Array(l.uint16,l.uint16)},1:{addGlyph:l.uint16},2:{substThreshold:l.fixed32,addGlyph:l.uint16,substGlyph:l.uint16},3:{},4:{variationAxis:l.uint32,minimumLimit:l.fixed32,noStretchValue:l.fixed32,maximumLimit:l.fixed32},5:{flags:l.uint16,glyph:l.uint16}}),R8=new l.Struct({actionClass:l.uint16,actionType:l.uint16,actionLength:l.uint32,actionData:B8,padding:new l.Reserved(l.uint8,function(t){return t.actionLength-t._currentOffset})}),N8=new l.Array(R8,l.uint32),M8=new l.Struct({lookupTable:new hi(new l.Pointer(l.uint16,N8))}),Md=new l.Struct({classTable:new l.Pointer(l.uint16,E8,{type:"parent"}),wdcOffset:l.uint16,postCompensationTable:new l.Pointer(l.uint16,M8,{type:"parent"}),widthDeltaClusters:new hi(new l.Pointer(l.uint16,D8,{type:"parent",relativeTo:"wdcOffset"}))}),L8=new l.Struct({version:l.uint32,format:l.uint16,horizontal:new l.Pointer(l.uint16,Md),vertical:new l.Pointer(l.uint16,Md)}),U8={action:l.uint16},z8={markIndex:l.uint16,currentIndex:l.uint16},j8={currentInsertIndex:l.uint16,markedInsertIndex:l.uint16},V8=new l.Struct({items:new hn(new l.Pointer(l.uint32,new hi))}),q8=new l.VersionedStruct("type",{0:{stateTable:new Es},1:{stateTable:new Es(z8),substitutionTable:new l.Pointer(l.uint32,V8)},2:{stateTable:new Es(U8),ligatureActions:new l.Pointer(l.uint32,new hn(l.uint32)),components:new l.Pointer(l.uint32,new hn(l.uint16)),ligatureList:new l.Pointer(l.uint32,new hn(l.uint16))},4:{lookupTable:new hi},5:{stateTable:new Es(j8),insertionActions:new l.Pointer(l.uint32,new hn(l.uint16))}}),W8=new l.Struct({length:l.uint32,coverage:l.uint24,type:l.uint8,subFeatureFlags:l.uint32,table:q8,padding:new l.Reserved(l.uint8,function(t){return t.length-t._currentOffset})}),G8=new l.Struct({featureType:l.uint16,featureSetting:l.uint16,enableFlags:l.uint32,disableFlags:l.uint32}),H8=new l.Struct({defaultFlags:l.uint32,chainLength:l.uint32,nFeatureEntries:l.uint32,nSubtables:l.uint32,features:new l.Array(G8,"nFeatureEntries"),subtables:new l.Array(W8,"nSubtables")}),Z8=new l.Struct({version:l.uint16,unused:new l.Reserved(l.uint16),nChains:l.uint32,chains:new l.Array(H8,"nChains")}),K8=new l.Struct({left:l.int16,top:l.int16,right:l.int16,bottom:l.int16}),X8=new l.Struct({version:l.fixed32,format:l.uint16,lookupTable:new hi(K8)}),qe={};qe.cmap=Y5;qe.head=J5;qe.hhea=Q5;qe.hmtx=$5;qe.maxp=e4;qe.name=bu;qe["OS/2"]=Q0;qe.post=o4;qe.fpgm=u4;qe.loca=Kf;qe.prep=c4;qe["cvt "]=s4;qe.glyf=l4;qe["CFF "]=F1;qe.CFF2=F1;qe.VORG=_6;qe.EBLC=n3;qe.CBLC=qe.EBLC;qe.sbix=a3;qe.COLR=u3;qe.CPAL=l3;qe.BASE=m3;qe.GDEF=k3;qe.GPOS=N3;qe.GSUB=z3;qe.JSTF=G3;qe.HVAR=K3;qe.DSIG=J3;qe.gasp=_3;qe.hdmx=e8;qe.kern=n8;qe.LTSH=i8;qe.PCLT=a8;qe.VDMX=c8;qe.vhea=l8;qe.vmtx=h8;qe.avar=p8;qe.bsln=w8;qe.feat=C8;qe.fvar=x8;qe.gvar=P8;qe.just=L8;qe.morx=Z8;qe.opbd=X8;function Y8(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=J8(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function J8(t,e){if(t){if(typeof t=="string")return Ld(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ld(t,e)}}function Ld(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r>1,a=e(t[i]);if(a<0)n=i-1;else if(a>0)r=i+1;else return i}return-1}function va(t,e){for(var r=[];t"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=_8(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function _8(t,e){if(t){if(typeof t=="string")return Ud(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ud(t,e)}}function Ud(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r>1;if(nc.endCode.get(h))u=h+1;else{var d=c.idRangeOffset.get(h),v=void 0;if(d===0)v=n+c.idDelta.get(h);else{var p=d/2+(n-c.startCode.get(h))-(c.segCount-h);v=c.glyphIndexArray.get(p)||0,v!==0&&(v+=c.idDelta.get(h))}return v&65535}}return 0}case 8:throw new Error("TODO: cmap format 8");case 6:case 10:return c.glyphIndices.get(n-c.firstCode)||0;case 12:case 13:{for(var y=0,w=c.nGroups-1;y<=w;){var S=y+w>>1,E=c.groups.get(S);if(nE.endCharCode)y=S+1;else return c.version===12?E.glyphID+(n-E.startCharCode):E.glyphID}return 0}case 14:throw new Error("TODO: cmap format 14");default:throw new Error("Unknown cmap format "+c.version)}},e.getVariationSelector=function(n,i){if(!this.uvs)return 0;var a=this.uvs.varSelectors.toArray(),o=_s(a,function(c){return i-c.varSelector}),s=a[o];return o!==-1&&s.defaultUVS&&(o=_s(s.defaultUVS,function(c){return nc.startUnicodeValue+c.additionalCount?1:0})),o!==-1&&s.nonDefaultUVS&&(o=_s(s.nonDefaultUVS,function(c){return n-c.unicodeValue}),o!==-1)?s.nonDefaultUVS[o].glyphID:0},e.getCharacterSet=function(){var n=this.cmap;switch(n.version){case 0:return va(0,n.codeMap.length);case 4:{for(var i=[],a=n.endCode.toArray(),o=0;o=k.glyphID&&n<=k.glyphID+(k.endCharCode-k.startCharCode)&&w.push(k.startCharCode+(n-k.glyphID))}return w}case 13:{for(var I=[],D=aa(i.groups.toArray()),R;!(R=D()).done;){var L=R.value;n===L.glyphID&&I.push.apply(I,va(L.startCharCode,L.endCharCode+1))}return I}default:throw new Error("Unknown cmap format "+i.version)}},t}(),zd(Gn.prototype,"getCharacterSet",[or],Object.getOwnPropertyDescriptor(Gn.prototype,"getCharacterSet"),Gn.prototype),zd(Gn.prototype,"codePointsForGlyph",[or],Object.getOwnPropertyDescriptor(Gn.prototype,"codePointsForGlyph"),Gn.prototype),Gn);function eS(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=tS(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function tS(t,e){if(t){if(typeof t=="string")return jd(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return jd(t,e)}}function jd(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0&&(u=f.pairs[h].value);break;case 2:var d=0,v=0;n>=f.leftTable.firstGlyph&&n=f.rightTable.firstGlyph&&i=f.glyphCount||i>=f.glyphCount)return 0;u=f.kernValue[f.kernIndex[f.leftClass[n]*f.rightClassCount+f.rightClass[i]]];break;default:throw new Error("Unsupported kerning sub-table format "+c.format)}c.coverage.override?a=u:a+=u}}return a},t}(),_f=0,P1=-3;function Yo(){this.table=new Uint16Array(16),this.trans=new Uint16Array(288)}function nS(t,e){this.source=t,this.sourceIndex=0,this.tag=0,this.bitcount=0,this.dest=e,this.destLen=0,this.ltree=new Yo,this.dtree=new Yo}var E1=new Yo,I1=new Yo,$f=new Uint8Array(30),eh=new Uint16Array(30),D1=new Uint8Array(30),B1=new Uint16Array(30),iS=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Vd=new Yo,tn=new Uint8Array(320);function R1(t,e,r,n){var i,a;for(i=0;i>>=1,e}function on(t,e,r){if(!e)return r;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<>>16-e;return t.tag>>>=e,t.bitcount-=e,n+r}function Vl(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<>>=1,++i,r+=e.table[i],n-=e.table[i];while(n>=0);return t.tag=a,t.bitcount-=i,e.trans[r+n]}function sS(t,e,r){var n,i,a,o,s,c;for(n=on(t,5,257),i=on(t,5,1),a=on(t,4,4),o=0;o<19;++o)tn[o]=0;for(o=0;o8;)t.sourceIndex--,t.bitcount-=8;if(e=t.source[t.sourceIndex+1],e=256*e+t.source[t.sourceIndex],r=t.source[t.sourceIndex+3],r=256*r+t.source[t.sourceIndex+2],e!==(~r&65535))return P1;for(t.sourceIndex+=4,n=e;n;--n)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,_f}function cS(t,e){var r=new nS(t,e),n,i,a;do{switch(n=oS(r),i=on(r,2,0),i){case 0:a=uS(r);break;case 1:a=Wd(r,E1,I1);break;case 2:sS(r,r.ltree,r.dtree),a=Wd(r,r.ltree,r.dtree);break;default:a=P1}if(a!==_f)throw new Error("Data error")}while(!n);return r.destLen>h,i=1<>v,c=1024>>v,a=u+c,y=a,p=32,n=y+p,e=1<1114111?this.errorValue:S<55296||S>56319&&S<=65535?(E=(this.data[S>>v]<>v)]<>h)],E=this.data[E+(S>>v&o)],E=(E<>2],u+=r[(o[s]&3)<<4|o[s+1]>>4],u+=r[(o[s+1]&15)<<2|o[s+2]>>6],u+=r[o[s+2]&63];return c%3===2?u=u.substring(0,u.length-1)+"=":c%3===1&&(u=u.substring(0,u.length-2)+"=="),u},e.decode=function(a){var o=a.length*.75,s=a.length,c,u=0,f,h,d,v;a[a.length-1]==="="&&(o--,a[a.length-2]==="="&&o--);var p=new ArrayBuffer(o),y=new Uint8Array(p);for(c=0;c>4,y[u++]=(h&15)<<4|d>>2,y[u++]=(d&3)<<6|v&63;return p}})()});M1.encode;var Si=M1.decode,fS="eJxtVtty4zYM/Rc/70Ni97LbN1tJ49SXeGI3O93OjgayGBERRXoo0h5Np/9eAKTcpNOHECAFAgfAAZ2/JkcIqnEeVT/55c9JcZx8mnzradk5Wva83clW8bZjraZly8s68lnLZ2y3Nrzla2tedkhL8crGsmVtHXhhLxvLCzvd8N0t3/0my4mvccjCTb5/mhxdV6FF2xQG+j6h3LpQPivna+UVA5lX7qxGWT5joznOQhl34dMQ4KhVXX78fD0e7Z7OyhsYSHt0Acp9rPqjxxPb3rlYGXW1zNsxrBz/61eirNUrb4qiuL3J8jbLaZazLH/I8scsf8ry5yw/Z/klyWn2N83+ptnfNPubZn/T7G+W7WfZfjbaZ//T7H+a/c+yn1n2Mxv9MK5tbAOQfEEPHaQPn7PhlzHBmzGzmzGFaw4j2Nsx2u0I71ZwfezVtba5mlmswEL54vBIrMjYGVtqAFEmtS3x2XWdY6qtISDLhTu5zr0yIx+tVh6DMOjBK9UK504BmZDF4NEYUee+UxaBby9V5ZVwykMlH/dkB6wcNBAsLlErk0PlIedyawO2BrG+U2cyauiLpGYbMKw9RN/FVif1DTxhZT56HNjhATrkyTgoE5uY8rdQg3gmwtIfT9QerSY1QUFJmYEcsFIZxgCWQHEQmp0mZwS2iez9Pmh0p5Q71cW1istfENyaLLkfHhu0wLZPjZaQz9HKhQOlZFyT3EXrOO4iaqzTtwrshXGtdKc4/MbZxpkUf41dFcUMqctcPnUpZROl/ZFiql5li0OKu6Cy5dN9pNpmfQEBWqHJ6ag54JMpC42tFNsD9ZOtHgxw9NTmA75STo1O0HklYjepkSt2l9Q/pJ7YM9IXKe4CuihVH4wLWG6hkZ7uNDR9uQNhQPTQ6+CTrwF0uWaTZ/UGwtvf4DwiL1JenOILKub4RqmgsNzAILy00RiBYBX4csHqcEwVLIhNojyZunwMkEj74Kifx3y6U76Tze9MvfD+vE937wiHl8B7Defsr+/ACgPvTQV9DhaP0Ash6MyOPRRUcxmbk0fHfh67E00XmHLOL4WE3IHpBq+stBkqKq/KHKQiWameo0nLea2HOikbYiODLpdIWmOGk+7fHxeRspDHYqXBOyq5TBInuHcx6FKG9VqirfMfzmg6keiSoMzPqk/T8mjTM4KOOE8dpUv4vx+0oYIx+B5MUP7dCUc7RN9e672Mthm7RYTUHQo1MAHeO0+/Oo7qlp41DW2XhlwDUQZTc3ya/JV2b0LsTTQhfVzpWMOFxlXeM7BBZuCAXkd5s/dY14lnGydGB2iFtHPt+PQr+bZNWaC8PjuIpNpyCUz6IlqFr86z3X0zUPZEgY/9mFsIMtX/7ZOX54B+vOnRBi2uNVx0uaSXmRPdoDxUd/Fk3CC12WNjvzJR03dla1WusIU2Ir/vCi7yX4DQiCMzeOYR/f06+f73P0+ms+k=",hS="eJwBAyH83gARAAAAAAAAAAFQcF14dyCb+/v26XFKh3FoUbGOqloNVXufUqs2tWqEqtoj1A56qrVJq2rUiE1bhFoxUzOtFXsFQWpGhIaEIHn7/X3fX3ve97/nef54PvfnHtd13Rdh8XLDDTeX5f3t0GB0lJwsd6Dw5QmGYu6XYfvLYAjhIAHaxkRWuvikR+KJV9hj1X96p/s4QYbovx/lBrMApgvB2mwIA1NEjxbrTWOuMqbU1efdSoC9YD/suT9iE6T+rOf9uoP80LlN+9BacPahPwipjDz+0EmhWFmFBmMj21TFdcL5NLs07xpL3mdPFnO5ODibdse69jL33z3+K5Q92B6sjluwC7UvvoM6txCnGnAB1OcC4cUfCRX01oex5qQUD62G8cWD+r+GsY98ngsDLj0j7Vk7JBjuYcK4az4zgVk0kvB7PBCujwj+0FVDBLdeYakxlhPDdkXzH9H9WwXaNz+K5daeF119kJdWvyex05u7z3XKGIKzOJVaimVboeyDwPwasbz7WUeSp8B5BBPbshBEELpqoJYME863zOC55cxelqe8LrLq5sN94rbKudMNx/Ej/shKPpVMwEKjjrQhv8P6o0/Z+DIgI30bL6WTjpz4utnrYpAJyNTg0z81OQu60PsLCTesdMSd62sTODJrUwhiOL68ZNJ+iEPK4F7boxP1D3NLJwmUVeEjJY1EzR5jpWeYACbWFUMEG7aXMrnUcnABA10RP2VGvRqUHFAz+fxVicV9dQcCX/Kei2YY6Tk+Cj0ydkgaBJ9fylKEa8456c3rzdKVNF6eKT2LPeLTgCJ7ZvaA//dSG6/EA4CrYXkvJgJujvR7B7CO9B2HqUr1E5cXu0/q2JBQzc+oPeye54LYOP33mDR6IrKbv9txnGwTIJ223BZ2zXTZc6yfrh34pvjxS+W82q9DqjlHOkoM7skNMxyw2CCG9jbn0E79SN59gSyIaAccW+7ASeyLD5CnXa7pOzwizkIZEMbjWrygrg6lFH9XxyOh6CR6cm9K+NK3xORuLk/M1j2fni2ly/Duj/sq7ez+3ZdCVmbcI6Dn/F1Prp+yLr2kuEhrpGhyYGKe8wZc8eNiTVIxgWFqXbRvVPOQwDrcFFsFn9lal544Fl4FNc1Nyisqvk9hP6viSwdCMAZKXPZ4htqbTDleWkEnQIUUvd/1XFQKn4ZIf3uwmrVaZRe0C7+x9I8iDngk385C/CyC4LNZZpiN1+wV3TM45aHxNS+HLCRKr2ioPYsf7cIdXfxR2sPoDSOJpCAyZea/B4cBvyPaOCuGDpf8oYOG66uH339EEpZOzAEByaEcyIsbKt/RWWS67gIImd+QDJ7LOw7yWlSdi4Y3CH6LzejQzYAnH7n2wj5XgIVZlxX0cmN6aI5Hl3ZRsUcCAl3QvSGHU6jm/bEHz+MYVag08A4uQu3FwROdcIaarqxXS90aNV2EMEZ36VdxkmDJ6OdrOM6yJPTquaumZhmOCC62Qutl+T8zjJO+AyC/uZHpWQlI6UdzBrJnnibEwqH40kCY+4lyHV3FiQlyAaYnLPMQnagA6prvdB9ZqBlugdYRXnf+T2b7TXOgLXQHyADJcjRmCE5fJQftnrOo6rlZx2W/HpmGMvhPf3L+Z1I58zY+RfuLELQ8KguTJM175I/EanpgSa2K7IKf7/5n2PW9KB99sFDhozTDGL2NWPUk0f0qw7ONA7ldRaurdWK7OqnYshtO/eRHcEgO4cfsnV8tONRczg+TruFw0zQ6lYFwwLqj+T77IrS9iGZjB5yvQzT32SHc3n3LONHIW4/CFy0nj8VpBvDBqKYknlvL55XOV+Butf8O7zE55T2VoKlHkxBOkcg+MnFlMUyTXJTm3dcBGQ0DZBzfslYfWDKh8ivd+I68fyoPMdyJgR25qAmRYTdp7rBoy/bM2RfAXCZknEnproH2JCxjQsF0Opnf+/sdMiiRP6zetKM5xRMY4xp0KpX3nPQtfbgEPPcsqC5aQzGFro8V/Dw1fk1jiKwH5q/RYzBeUFmR9/dVWBRZ+ohAj9EVK5b5EiYoChS+Ptcwr+fej852S3Nhvgo41+sjfuYZyrd8ZCigvyFJe+lAGgH7IqstI1zeU3X/Zl5886qWw/OY1B9QoJHQoRRjCB/B38uHLssfVVYG/UA59OqT04t+n0HLXBBATKr08qA2VYU1+UioakUG2pita+oLpkDRb5RPL+OGpAKcVv/IS+EGZoe7S71QpYPqRlVNQX1kk3ZwlxqdDtyHA7NjQsHn9l9a5HLXR/EsJVIiDtZCoxwbl2HEAxdzmqvQNvCTVMyOGEXCk27aF1bdgr2xmtt30jd95B86hGetozcLTZOP/9rFqgOy2rij6zZET7CXl8Jj1M/jkicUrztUjLRi9+1s4I1pJxEC/ebrJ2wc7jS63R4ZivwNGg+mQ5RN6MWCSIT2Q3PzjFsqZENbDszg9SW/NdHx+8qJV8e//JXM9+Cb+bPJpU+9RpFFn+6wrzskPdJoC/iHHWk2drN7J8buAMlHKYKlF35HqxC55pyuYjiFHdeOxHykxa1WJVODLd8CJPrrLFMDB8Wt3lcIDXgX15hrvq/IPYSrd5Nd1HwzgYH3rB2A4aV64iiEGimL+aHNVxeDpCwHcsfAV9/sM8qM9NxATQLh7W70ZJj4Y1Vzql2gONEq5msJxL+AFnXreKioOZpGOtiOGVUaOI11hasBC1OCIvvK0uyV4SpObt1pqjtHCwObH6Rw71U2j2cMDxeb8ze0GsKebiSeKMVOfzvmi9xXgbdP34DE+EHR5sz2MUpTFykzF0pffBosTLI1tdQpkHg9QcC0ObxnTRIOEfSPUXUrmskKhZk/uD88JqkdNDrhJbXVGvenwqIp5mW90eiR6nXyB9cycYGtwPxPriDlv28d+OqB8AAor3wNg+Q0OhmAamz2j3v3uiZ4C3m+KAsc905Jeqi92MO9zN46rVpju7dnPBbUuQCzjPrj+TwYP6MhAJepeZHE25t67hFRBqhKDRD05qUkhP1J6TXhvW+fxFR/RwSs40kKK5z4wxXUYpUQCcGlMFXzUhDx0MNRl0iOqtGV1xU9QbG8sqDkVJ6DOp+sfnt2ruEX6sY6c+vLRpjwzx15Dkup9pG69kxDhI7eE/AFvP6pyNZsovps8lm3UJUwWDYbraD+JDWUg8iOsQZRm5wUxW58eHNlNmbsqlAGR6MGdVFfvO6W+KXk/hZnPxujqix4h6Jk2ZnS0/pHtEYL4wP7q75WrmVY7Evgx2C/9STbtZbf5Jt4PUqGOpvmowpGEYpAwr4tVL2JcE/c3OT6S7k7X64zcYZf/YufIfmapa88WT5P6pEvZMSAdBqiHFrt+sYju+ppx46AnnI98gLKVKAEETIrJbt0d7NoqPHhNGYW6dUPdlYfqIpnb/Mlvh7Pw2ActsP7+sGWve2RZ6iYTha93IfDF9QKcp9rF/cfxv5qdIsS6CyYNWJe+JGAohHnVRGWmfMeo7u2t7l4qUTDIEOK2AyvP9g5wkO2qQ5na1s1ynUW33KzBCB3oF6B8LU/yQzeLeNQ2/C3P2yD77XTN288Bj5wvU7VbJAg23NsKC32A+1Ab8kfFyNrRxS6rBUHjg5IKISp8dOwPK1Lno9f6bBKfBd7ptJuvQoAPHXMKE2LfgN8I5BuFWO9Nw+VqKx5K80El1nskBh/mF7u2MziOfKdNjZFoy08d5jxNfZxbTjMN0tfu2GhLxx7K9Dstd45izOdxXfpVZoJrkrPK8B8Xz5muzloJUYbA+tAwVMgdMGulbS+maM7yAnT3xkNST3I7M2DzbSfTK9seoGUkcvyTrBXYmDIay0Az+PXsUlql16lpS7E08PyiozCLQ13bBiUB19Wc5cDkRD4p8WWAMhwQ2bpHCpqqbj9KWStielihwyZKrK36XNqKJTK/OnLXR2B82bxM6YCM26zMl4HH2WkjYcsS9phTuqUs8rn2yon3/mvoGaMvA1IXvMH/Zjc+na4cg0IKY83pQAqqokv+sd0/pUkzg4aO9BOM6WiLo4JbDQhmKUdB4ia6UUczKZ2tKurG9l5Y3LWrUc+CjYf3KZuYDjeLfpSTq2x0cYqND/fQd8XzIkAFK946eu7XMqVX0qeNXZ8jWDCF54lxesIh1xmWcc4O3DJVm8P2t00yhcjsMzr+ptYyUgbGm7BXKWxLdgLiALer7H3cRmxNfhRUJMXLzQYwssHKn2ly2j3rfA69HcIyqXJsiJfhTA5keZLlYWG50ZjhtqA60tP1KLz3LonE8eX/nKrHl3fnzfynlsXCYIFfbQRXT4aOGwfVELNy9miyob3f13383R/YZE2kr8fw+66O5op6J5zO7i/SJHmFXpaXp5qV55FXCAGqK2R22e+0rPnUTP43FebAWq/Cmdrv7F/Da80vqJ8zTSUD93GXzNYKG9uAXxT58jPopzywbiFILbWnaLNytbmUD8N4Hmnrus0UZZymfLKDPFG91cYbrd04Arq2okt/R+3ZjPzgka/NdEGik1zWeppfUwEHwL3FZFpnp9J/a2jqguYsQW/NcItyXqfcsma391RegTSEoWsm5Xnx6R/ZAMMRQz72cH3yVSP7H1jJsI93us3UmxSxHGg/43cbUstlFzGI5G++qeExS2HBbk56uZ9jxTBX5XrefiBZsnXLGqleRmZFLqCQ7DEH2afOsECIY0CWbU3+oBF24Zsd93i1pjnudkk5nv0t3CdOr2sbIINsuP2HQTL8zWRuGzbkxrXAE9sbIvAyiA0VplxhvQ1ein82xyeAkNRsZFfI7bOivqpxtDM0acBhj3cNsNqI+zaoDOvH+jxiyZ/c0sW6E6bysE+/dZ4Y0RhIaxxbdrmmnFZzJBAFGiBP+jFobfyPPwa4P3b94VMkiGMyh1d7aI65km9LPbzUTLeqCrZ8wfLmeuZu9b+o9QesubuMcv4LgL6ZkyUct5R7QmTfojF4c/DPs9HfIhmtoeWb6vW8tqsMC68lH/6RfMSxvXrHunDi1WeccmJIlWB4fwLZQchDyqMzK91Vgc+1AnWum/7KZ8VsDWhZZ6UOfywteP85QvmaNXJL9CBDqeJA/099Pi30cJdDzljXfq0yvl4hWC9Es8EgMpk6oAdesEfcD3eSP6JcZGIb5vneQ+VJga1Vomm5PQ415gxPpznOHHu8YDBryFot86lBm/PvAdVROf/+yGSntfci3g6reznm3UH0xaubmwwvInsPfrVsCLE/QmT4CS5m0vuZhemRsqY1DASZShSHp9CBo+NwxAtNz1TOyaCfrT2aYTazcsm5laz9b3sDJq1ZtRXB5oUScF++XqNWFteRB/8Hx4p9BhyvVq1nMV9c1JMsAKcihK+4cUn+jPQ53b9tGv2OAQ+I1s+GzMbMKKotMHrwFC+dIxdVptpFOdGcr2z2DFh8y1AEdbO8LODyomnE6d2RVGesmPrDr+guyFqlymuCh2WrAEoCLceLUWyZdFp6Ld58AWvSWKtUwjwgegG0VoHNgKWKzvIvPyatpnfSVCF2sTjXv5qouBkDYmVgJpghFPqrGFCiI8Q5mrY7pC163h6vxBU7z69K9/27ffU1osig2ehmSfEWxSsGoPwf9nLHVvmub9mtcr1Tstw/Om3fw5Hz7+0aPKwLIeHNf4ux6C/1ukT41/kM4S+6XI6/XT6SDxsHqE9CKD/hyyK8oCq81tpikXmv2brN52S08dyaldZ7r969pfmLh4u3BiSgIrWay1uGIoQuIqrl448iBiR62ApyU/Pq9B3JSlhw2++Y5Tn9hWGy4DluVcG7sFCIz9HlMgcNwbXFBFaA9qyAoc1n9kPNej+3cG+3057y9BRtwU7KTSiBl2Rt1duxn/xE3kWqS4ZNoVfg1bQPXmQU3E2arRjpmHpyp3Dc7ogrIbUBuRQpe3ekpTBJPXscGGmjI44mWILPY04XEzTnt3PvZtaOPPhemX/hlzOA15SlJ9VC8cMAH2aVEdYkA4RHw+RJgiojRLQJoSPFfpg9FvEdKafH+ivL25ZfbOZfFt3M3V2fNDQbRnpPuEOUy36ZF/6vl2x7pfK++qGD1nlnNAlhVkyKHeZjebHkMUwdQN+PGlUeMompXoT3UOuvVYp5vtRaCBeEbKp4W5PQY9sfG8yLAj8mC9rLAVXngd3wARvPvjjjLQx7Gt1H0/wfoQtPix739/ZASRB7MDmWxaO1KrQwey6aGTdpA1yJuargtSGN6fxNlp51437+6nce1pgc356DpniwMu2gjlinBkxh7wh6O0xj18sowFXcYmCN4juR2XtFjEi6dTG5tIGy59awLtCksCzarejoeMZ2iTumxqWr/T0jOPQ8OwwOHJW477P4sTavZbkvdtbF6cQtOrDeqYzVQaqFfVgumm1lu8RxtisE9Miz3xyZFVXHccXPzPLKKin9OHqR6nwD4Z2za1+W06eI6Suj+qUIFQbG7KpY/1qSNTp+nqWQPlZrTeuWbPKvEkwZDjOsc0FxQktxDeXZlNMrNUGUIxI1FwBD7VgfyvyU3fVnNJJwcE+bJLv5hhlVhvrfeV/YGQakfVOqKCPb928FzybArT9XNc+6J0vhAnqmEn8h6biN+n9yowpG0bi4zl0KCkoKdn2HwV/WYvPyToJo8JJlWt5bvH5/rO4P5tGlqExS9DYaBJZ4krGro+3HFyZEeTe7LoTwryD2VfnZjs5Yi/zySAz8qNLBbC6jeSJCVODOqxgfFKPRsUWsaX0gOL2ynwBi3cwfCGt+FkFoa5rF5SzgM9YojS0okoAlkD7xLcYFQoaPBuWDpfG7WAIDvxksMtV10tekkdgz0Boj/U1Co5QSgWTFfVhLtvMAN2pNB7A3Nv3Lml6yakCO0jFVYr6u5FZu6XqAizxz5xg3gFnbJtCq63N/rKYvRc5QW4myEh8gFURgd7crWh475wiuyYTLd6RX90/IN1Qz3I1avBomt61fY+2hJVmJh3/UfKlubNeSmoEu7/Zp5OlthHyiiCFGaFORxvsI/WeeiPZA/ms6Rj18eRi2Nd4QTBU/eKbHUkPvolajZJLsvdFONxtl/3C40hwPUFQLOLdkXnT4pmdZYDPIfsDv7YG30nDcdOf6LeJQ7RDkgNbQp4hEhkGorhjupybZgJcUtwJX31OrjXRshV621tJDbui7oFT7x+/HPRuvvYkw7HcQbsSQNKMDQPk4BecMau0vDAB1OPxb7c/oIvTa1DfUixMf6hHLRAMXN1VCBUt4ZJnjkxbyvrQG7esZvpfUVk1rKsUc30cazkVU45oLJwMdVas6WZBfHQmR/7ueiRyazVr//e8hJiXbwLuNI2IH3LsK+Q9t9zXOmuHBkXpNehWyEC5V/psu1nXqRyrWavMeYmgrsHalPq9wJ0C3i6wqjC3IImaFMp8F08SdhI2ia1dURMI0oXLlIcwucL83bxeXATgBOFx8cVFujlh8mYZzFNOxZmSor/IbHOaJ9hDMjYaGTkFgWq1WFkw05finDIjsV0ngnJ+2b1KgKqtq/oKgYSfJPD37/dxfcZXNgpyl2u9UwBC2W5nWFU2UmhuCVV1NA4duR8d9dIbGzMyxY6Goy6daSYHpPlDuvJghyRm784QQl6ZuC+uzuqk0z7ntfdF47vYmlmlbnad94L9Ez/WmOW7fLL0gqEI+mPz/ZMWh/honFXDRWYvw8r+Us5hnJAm3RK4zZH08F9r2HKUWrO8Xg9J1Tc53UuRS8j80an+T0kvJjId2P7uTEKdGkkVmW43mhvz1B21GIAyxUSn8g2kKKahA7Ji+2cjH/6A5AIrmbhMVwdjvYiP8fIztqjKoVF9jzzsr58Nr1Eb5t/XFZwdEBU9XhwvvbyAhY2CQGzy08BoYzZgV5Sm0SZRdMi2FZabU/nv1UR+62j6wFXiskbcudOR2KRSiShFXeKJOsBrKPNdh62N5zwp893S4bfW7U2Qt4o2nM6YFKdwsgKO6T929bqocxftf6E0voPNrD1G1PnBcewBP5nC+Rw0mJJ2/K58ZRRUw7UWHDdDuWyk30DyX6gKat2qc3xagElUgMJ+xv6yCX32Eduhlz1aPlKZUk+4ixo1F0yawnmJWrMvkUyZvsHV52CZgAm0IIewj+RGguiw7yIjLXyolnCkqXnvMv+2Ugvj2eEuzX5IKWPtgpuINchpK7BzJuTZ+JcdwIBY9+Y6hyMxlB2X31NLSFG9JzhxPYIIss5YN9tBGm48PlvKpZy8+gfmudVFDYfOoUNWfhfaIe4d9m/wwRfPpzu1ClAH/djGoH52GY67243NHnjhzTC2EIGU7w8btYaPYv4BU/4f/4crI5Djlw543+GWmBPS9G//BzZMWriRfSadTMtq87aXo7119uV+u+Ygf/UMrtCdyS+KhxsILBeoSwVekJAdgChnz6CLlTqpytZb5VtFXzT0ZooeXRD04sATL+p8sSnhKTVx8B0ksGDIhXj5D1TcQ2KnWcas1izyrmZctUFZJ0MbmNPvs6Otth5dNXiVY2DUTJvBV10Qn2Hwp3+PyU6X0w5KSF1Q7xCZLKpxHo7SmY3nBTcXwOSiayTjPyPP1Cws5+Nf3+Nqo4j7skQGjGnI+vrCc5bmvNerifKkju9pu/L47fCvD00Huj4QG4Jhc+VG/sgb/es3oHrSg5Dt1pIwgNqlB8X3zYgJVoqr71RmtWMi37C+oUZ+EyCdXB4yW1XJk1POmINibv/TmPcNZxFDT9HUNQCC0I98TTs7T4oh9KPnWqkhcQ1N0lhWiYmxQcRLxmNXcEQ91N7DUoH1CVanrCckL08IYSIz97XZ0tYe3Qwtqt8F+zhqu4g8mbd9e2nK9q3rda1iB7EfsNLqcLtzyoLeX/oDKYrol2M67zEDXBMtzSrNb5qYa1WPUgB/BXqMbjQkBLWXPISD4xWiEK9JZwOpSQvxQZDvIe5GB6Piew42lRWv+ucjiqKZ+atwYlfdLINTJFpLPyWeYIwXsH6rtJArlOZcBGyx92ynvNWi2MHhd61PvYjXurpfHvnyuuoxacPgbv0yEoGRfiRx2egqwuPTzb/HxFQZDVKjyaNsKvp1sGk+fJmvhIT8gOlz+8qxmNh2pUbUELtGgIflWUAu7q/vb3wqfm4K05VBzPbEpQfYfxYRlxQXFlUL+L9zkg3FtLVZWBrGulTcOHoxtVcia7lPwPpolPnAjUTTLjyYnbyiu1C9gXMZKE0w7VNGXLPB3YSYo1GhPJQrR+4+xaeJYeJOsUH7IQ7l0JYelacK8m0pX/UxI87fHG8OIBvEtynZbu0UvWp/CDV7Vx41m0Xp9frUM/9joqenlZs2naPUe3F28d43E/yz35s8tMh5TzQZud2cU2xx3bc7vYynQPZJ2Igzs9v4qZVWBs84j3EZJBx7/PoWeu/0s23oHeunIQAcMOLSFTlqLiNZhlN9SkyVdRow82T7x2B1zTtNA/irtD3NQh44aH26S/8h1BrPDqCs00UN7xUvRRcNqwxej3ucq/zXj2BYZZiesg4zx2hOu+yAeb2zHXMEGFJBuQJLQu+Hvqu4Z84o16tRhqZVe/H6mRzt5fp776534RP/gItyHP53VWz6A82ZSJ225Djkn039GMCw2w1Q+SbZK5JRVBTHOB+hwToxzQ5h0HNhrpLDaFn2Tl2T6wkPfIvY/NqyVGY3HZwZnO/maBf530o1DX+qqa/C38IPgLusEOdCXVj4v8+8FhvO9Kw3ynWbvzXxJEdhsMGufPiO749Pap8vLlym8g0OTU1qyTMCDSbuluJxp+80povN3jQZxzKmyjAPit6QSxP+6VrdJSmnNcrmqh9wwsuTM/VUlPxUovi9qhh+2VqTkvP3WFj6le/kBbH0O1+itM8+WSrn+iDjbfBOyGz3q6rjvDjZ1TfisBUlPrauJPzLTWz09geNwdr+vUU/vG71A2K+PohiCsFJLDxrq41jPcYnPKU9vYYWY16yNhzP0PfkK2HF+5dzOwb3OEzlviVaS1X6vdI/7ICTOI73VzSca0Q8W09UKJc0Q84iB+95pm3sKxegNsIEYLhwyP//0vJp43Swwd+LZ6jhA9zJ8Zfx5e1W3viivGExt2Qu7ST6GBV633MJOhjoGNmKUeOLOrs/8aa6+tlpYeFYaPvD9PL4zKttb91zSSDcLHkeCAD/re/hIPgvFt2gVo6hDjwM3il07DepDdQNA6ZtewDeihojMhjUzF9AJ6CB7DOHtOxD2ebkdH2i+w1AHvQXkcWhj2fLkVtdHTz48eRqX2618iakwFHOuUQF/C+r1OOkCl1b1NN+s2vJ3XKc453UVloDLfL5vfhD7Z+K0Nk3qiaaucEy48FVt2iRJw/zOH4wQeK/kv+oYIaJ1K6RvXHYpQZnWw+Puo3Gx4Y7CQ6RqM7RzyheGy2ieb9HFxnR5PYuvP8OUf3fCJ+pwQ9uPJ8PlnQlxFeLZhkWaEPSQjvbpevnbcqiqzof+5HAI10DbzYevT1mTFs9yu8gMIH/wHLU7dY+CEHhNzBtIGIH1+qpBDmRQ6tA1PUyIMok2fwFgGCUbPDCAKJR7U8fkpVKio4ZIAn+ajspnBQgjsW3X+bSInnXn5x8e4TVt2/bzdh/qATUV7TinHmRh4N/hOmnq6CFUhOcnt7A8/P1CR+dE0BpViVHFoGr0Ajo3GiRbSro235Tec+oN/apx70nELjZZ1eyknYiTgaoK99pPtRs0/m83CLiN50zcMf67S0znjfmB5q7MpcaM+96K7b5HBOknw7OHvCrqiLRJTL0JzM+WGK9Tz9ZsSeNtqpMHtM2TjxtXsd1vQtODR+xuDaFvckm8+LtxbH+x3w485uj9IYqGAZy9T1IZ94G8t2ab8t8o0TpkfTdYz8Sz1rryfCYt3pxjemkMquwh0Y0LqsHsU5KDlBPdc2zvjZD/ZIp2mAdfaYG21AeCdfZ0oOmvjLLuEMRWLuKoIgFEc3Xl0ryJpCc2vRJ7gCieQE58H7ODGjfy+S1eSpwKK+kCtrouCNrFMDbZhNh28NYbZuaf8Gg2tb0l6B82LglbpRwUq+/RqvyDfcx78cpCrpj/PDLb9e59PhjsskL23rKCi74FC/f+JMquxMVpkPZEVrJC4tHc7fDKu/J+ZxVEqARp35RLJj+z4dXPljMiPwSihHKfY9zO2hzH0qch90aCIeCaPNGQT9mnIp/d+7rztjIV7fLidWh8h50l37NsOwh8B1CoMz7zo51lS35AAFJZPttlwUcbxPdPFVzl6bX8qQnTbTz9ghxOvEj/e66oM21wJqXY1VWwKZjprOh0IW4M9pbFxbeVerSHege/dz/AftD39M=",Ai=JSON.parse(String.fromCharCode.apply(String,bi.default.inflate(Si(fS)))),dS=bi.default.inflate(Si(hS)),hs=new ic(dS),vS=Math.log2||function(t){return Math.log(t)/Math.LN2},ac=function(e){return vS(e)+1|0},pS=ac(Ai.categories.length-1),L1=ac(Ai.combiningClasses.length-1),th=ac(Ai.scripts.length-1),oc=ac(Ai.eaw.length-1),ds=10,gS=L1+th+oc+ds,yS=th+oc+ds,mS=oc+ds,bS=ds,wS=(1<>gS&wS]},FS=function(e){var r=hs.get(e);return Ai.combiningClasses[r>>yS&SS]},xS=function(e){var r=hs.get(e);return Ai.scripts[r>>mS&AS]},TS=function(e){var r=hs.get(e);return Ai.eaw[r>>bS&CS]},OS=function(e){var r=hs.get(e),n=r&kS;if(n===0)return null;if(n<=50)return n-1;if(n<480){var i=(n>>4)-12,a=(n&15)+1;return i/a}else if(n<768){r=(n>>5)-14;for(var o=(n&31)+2;o>0;)r*=10,o--;return r}else{r=(n>>2)-191;for(var s=(n&3)+1;s>0;)r*=60,s--;return r}},PS=function(e){var r=wn(e);return r==="Lu"||r==="Ll"||r==="Lt"||r==="Lm"||r==="Lo"||r==="Nl"},ES=function(e){return wn(e)==="Nd"},IS=function(e){var r=wn(e);return r==="Pc"||r==="Pd"||r==="Pe"||r==="Pf"||r==="Pi"||r==="Po"||r==="Ps"},DS=function(e){return wn(e)==="Ll"},BS=function(e){return wn(e)==="Lu"},RS=function(e){return wn(e)==="Lt"},NS=function(e){var r=wn(e);return r==="Zs"||r==="Zl"||r==="Zp"},MS=function(e){var r=wn(e);return r==="Nd"||r==="No"||r==="Nl"||r==="Lu"||r==="Ll"||r==="Lt"||r==="Lm"||r==="Lo"||r==="Me"||r==="Mc"},LS=function(e){var r=wn(e);return r==="Mn"||r==="Me"||r==="Mc"},Mn={getCategory:wn,getCombiningClass:FS,getScript:xS,getEastAsianWidth:TS,getNumericValue:OS,isAlphabetic:PS,isDigit:ES,isPunctuation:IS,isLowerCase:DS,isUpperCase:BS,isTitleCase:RS,isWhiteSpace:NS,isBaseForm:MS,isMark:LS},US=function(){function t(r){this.font=r}var e=t.prototype;return e.positionGlyphs=function(n,i){for(var a=0,o=0,s=0;s1&&(c.minX+=(s.codePoints.length-1)*c.width/s.codePoints.length);for(var u=-i[a].xAdvance,f=0,h=this.font.unitsPerEm/16,d=a+1;d<=o;d++){var v=n[d],p=v.cbox,y=i[d],w=this.getCombiningClass(v.codePoints[0]);if(w!=="Not_Reordered"){switch(y.xOffset=y.yOffset=0,w){case"Double_Above":case"Double_Below":y.xOffset+=c.minX-p.width/2-p.minX;break;case"Attached_Below_Left":case"Below_Left":case"Above_Left":y.xOffset+=c.minX-p.minX;break;case"Attached_Above_Right":case"Below_Right":case"Above_Right":y.xOffset+=c.maxX-p.width-p.minX;break;default:y.xOffset+=c.minX+(c.width-p.width)/2-p.minX}switch(w){case"Double_Below":case"Below_Left":case"Below":case"Below_Right":case"Attached_Below_Left":case"Attached_Below":(w==="Attached_Below_Left"||w==="Attached_Below")&&(c.minY+=h),y.yOffset=-c.minY-p.maxY,c.minY+=p.height;break;case"Double_Above":case"Above_Left":case"Above":case"Above_Right":case"Attached_Above":case"Attached_Above_Right":(w==="Attached_Above"||w==="Attached_Above_Right")&&(c.maxY+=h),y.yOffset=c.maxY-p.minY,c.maxY+=p.height;break}y.xAdvance=y.yAdvance=0,y.xOffset+=u,y.yOffset+=f}else u-=y.xAdvance,f-=y.yAdvance}},e.getCombiningClass=function(n){var i=Mn.getCombiningClass(n);if((n&-256)===3584){if(i==="Not_Reordered")switch(n){case 3633:case 3636:case 3637:case 3638:case 3639:case 3655:case 3660:case 3645:case 3662:return"Above_Right";case 3761:case 3764:case 3765:case 3766:case 3767:case 3771:case 3788:case 3789:return"Above";case 3772:return"Below"}else if(n===3642)return"Below_Right"}switch(i){case"CCC10":case"CCC11":case"CCC12":case"CCC13":case"CCC14":case"CCC15":case"CCC16":case"CCC17":case"CCC18":case"CCC20":case"CCC22":return"Below";case"CCC23":return"Attached_Above";case"CCC24":return"Above_Right";case"CCC25":case"CCC19":return"Above_Left";case"CCC26":return"Above";case"CCC21":break;case"CCC27":case"CCC28":case"CCC30":case"CCC31":case"CCC33":case"CCC34":case"CCC35":case"CCC36":return"Above";case"CCC29":case"CCC32":return"Below";case"CCC103":return"Below_Right";case"CCC107":return"Above_Right";case"CCC118":return"Below";case"CCC122":return"Above";case"CCC129":case"CCC132":return"Below";case"CCC130":return"Above"}return i},t}();function zS(t,e){for(var r=0;rthis.maxX&&(this.maxX=n)),Math.abs(i)!==1/0&&(ithis.maxY&&(this.maxY=i))},e.copy=function(){return new t(this.minX,this.minY,this.maxX,this.maxY)},jS(t,[{key:"width",get:function(){return this.maxX-this.minX}},{key:"height",get:function(){return this.maxY-this.minY}}]),t}();function VS(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=qS(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function qS(t,e){if(t){if(typeof t=="string")return Gd(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Gd(t,e)}}function Gd(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=KS(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function KS(t,e){if(t){if(typeof t=="string")return Xd(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Xd(t,e)}}function Xd(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=e2(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function e2(t,e){if(t){if(typeof t=="string")return Qd(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Qd(t,e)}}function Qd(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r>1,s=this.table.segments[o];if(s.firstGlyph===65535)return null;if(ns.lastGlyph)i=o+1;else return this.table.version===2?s.value:s.values[n-s.firstGlyph]}return null}case 6:{for(var c=0,u=this.table.binarySearchHeader.nUnits-1;c<=u;){var o=c+u>>1,s=this.table.segments[o];if(s.glyph===65535)return null;if(ns.glyph)c=o+1;else return s.value}return null}case 8:return this.table.values[n-this.table.firstGlyph];default:throw new Error("Unknown lookup table format: "+this.table.version)}},e.glyphsForValue=function(n){var i=[];switch(this.table.version){case 2:case 4:{for(var a=Jd(this.table.segments),o;!(o=a()).done;){var s=o.value;if(this.table.version===2&&s.value===n)i.push.apply(i,va(s.firstGlyph,s.lastGlyph+1));else for(var c=0;c"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=n2(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function n2(t,e){if(t){if(typeof t=="string")return _d(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _d(t,e)}}function _d(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=-1;){var u=null,f=ev,h=!0;s===n.length||s===-1?f=$d:(u=n[s],u.id===65535?f=tv:(f=this.lookupTable.lookup(u.id),f==null&&(f=ev)));var d=this.stateTable.stateArray.getItem(o),v=d[f],p=this.stateTable.entryTable.getItem(v);f!==$d&&f!==tv&&(a(u,p,s),h=!(p.flags&a2)),o=p.newState,h&&(s+=c)}return n},e.traverse=function(n,i,a){if(i===void 0&&(i=0),a===void 0&&(a=new Set),!a.has(i)){a.add(i);for(var o=this.stateTable,s=o.nClasses,c=o.stateArray,u=o.entryTable,f=c.getItem(i),h=4;h"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=s2(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function s2(t,e){if(t){if(typeof t=="string")return rv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return rv(t,e)}}function rv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;)n[w].id===65535&&n.splice(w,1),w--;return n},e.processSubtable=function(n,i){if(this.subtable=n,this.glyphs=i,this.subtable.type===4){this.processNoncontextualSubstitutions(this.subtable,this.glyphs);return}this.ligatureStack=[],this.markedGlyph=null,this.firstGlyph=null,this.lastGlyph=null,this.markedIndex=null;var a=this.getStateMachine(n),o=this.getProcessor(),s=!!(this.subtable.coverage&iv);return a.process(this.glyphs,s,o)},e.getStateMachine=function(n){return new o2(n.table.stateTable)},e.getProcessor=function(){switch(this.subtable.type){case 0:return this.processIndicRearragement;case 1:return this.processContextualSubstitution;case 2:return this.processLigature;case 4:return this.processNoncontextualSubstitutions;case 5:return this.processGlyphInsertion;default:throw new Error("Invalid morx subtable type: "+this.subtable.type)}},e.processIndicRearragement=function(n,i,a){i.flags&c2&&(this.firstGlyph=a),i.flags&l2&&(this.lastGlyph=a),A2(this.glyphs,i.flags&f2,this.firstGlyph,this.lastGlyph)},e.processContextualSubstitution=function(n,i,a){var o=this.subtable.table.substitutionTable.items;if(i.markIndex!==65535){var s=o.getItem(i.markIndex),c=new $s(s);n=this.glyphs[this.markedGlyph];var u=c.lookup(n.id);u&&(this.glyphs[this.markedGlyph]=this.font.getGlyph(u,n.codePoints))}if(i.currentIndex!==65535){var f=o.getItem(i.currentIndex),h=new $s(f);n=this.glyphs[a];var u=h.lookup(n.id);u&&(this.glyphs[a]=this.font.getGlyph(u,n.codePoints))}i.flags&nv&&(this.markedGlyph=a)},e.processLigature=function(n,i,a){if(i.flags&h2&&this.ligatureStack.push(a),i.flags&d2){for(var o,s=this.subtable.table.ligatureActions,c=this.subtable.table.components,u=this.subtable.table.ligatureList,f=i.action,h=!1,d=0,v=[],p=[];!h;){var y,w=this.ligatureStack.pop();(y=v).unshift.apply(y,this.glyphs[w].codePoints);var S=s.getItem(f++);h=!!(S&v2);var E=!!(S&p2),k=(S&g2)<<2>>2;k+=this.glyphs[w].id;var I=c.getItem(k);if(d+=I,h||E){var D=u.getItem(d);this.glyphs[w]=this.font.getGlyph(D,v),p.push(w),d=0,v=[]}else this.glyphs[w]=this.font.getGlyph(65535)}(o=this.ligatureStack).push.apply(o,p)}},e.processNoncontextualSubstitutions=function(n,i,a){var o=new $s(n.table.lookupTable);for(a=0;a>>5,s=!!(i.flags&m2);this._insertGlyphs(this.markedIndex,i.markedInsertIndex,o,s)}if(i.currentInsertIndex!==65535){var c=(i.flags&b2)>>>5,u=!!(i.flags&y2);this._insertGlyphs(a,i.currentInsertIndex,c,u)}},e.getSupportedFeatures=function(){for(var n=[],i=xi(this.morx.chains),a;!(a=i()).done;)for(var o=a.value,s=xi(o.features),c;!(c=s()).done;){var u=c.value;n.push([u.featureType,u.featureSetting])}return n},e.generateInputs=function(n){return this.inputCache||this.generateInputCache(),this.inputCache[n]||[]},e.generateInputCache=function(){this.inputCache={};for(var n=xi(this.morx.chains),i;!(i=n()).done;)for(var a=i.value,o=a.defaultFlags,s=xi(a.subtables),c;!(c=s()).done;){var u=c.value;u.subFeatureFlags&o&&this.generateInputsForSubtable(u)}},e.generateInputsForSubtable=function(n){var i=this;if(n.type===2){var a=!!(n.coverage&iv);if(a)throw new Error("Reverse subtable, not supported.");this.subtable=n,this.ligatureStack=[];var o=this.getStateMachine(n),s=this.getProcessor(),c=[],u=[];this.glyphs=[],o.traverse({enter:function(h,d){var v=i.glyphs;u.push({glyphs:v.slice(),ligatureStack:i.ligatureStack.slice()});var p=i.font.getGlyph(h);c.push(p),v.push(c[c.length-1]),s(v[v.length-1],d,v.length-1);for(var y=0,w=0,S=0;S"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=C2(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function C2(t,e){if(t){if(typeof t=="string")return ov(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ov(t,e)}}function ov(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=F2(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function F2(t,e){if(t){if(typeof t=="string")return sv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return sv(t,e)}}function sv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&n.applyFeatures(c,i,a)}},t}();function T2(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var O2=["rvrn"],P2=["ccmp","locl","rlig","mark","mkmk"],E2=["frac","numr","dnom"],I2=["calt","clig","liga","rclt","curs","kern"],D2={ltr:["ltra","ltrm"],rtl:["rtla","rtlm"]},di=function(){function t(){}return t.plan=function(r,n,i){this.planPreprocessing(r),this.planFeatures(r),this.planPostprocessing(r,i),r.assignGlobalFeatures(n),this.assignFeatures(r,n)},t.planPreprocessing=function(r){r.add({global:[].concat(O2,D2[r.direction]),local:E2})},t.planFeatures=function(r){},t.planPostprocessing=function(r,n){r.add([].concat(P2,I2)),r.setFeatureOverrides(n)},t.assignFeatures=function(r,n){for(var i=0;i0&&Mn.isDigit(n[o-1].codePoints[0]);)n[o-1].features.numr=!0,n[o-1].features.frac=!0,o--;for(;sthis.index||this.index>=this.glyphs.length?null:this.glyphs[this.index]},e.next=function(){return this.move(1)},e.prev=function(){return this.move(-1)},e.peek=function(n){n===void 0&&(n=1);var i=this.index,a=this.increment(n);return this.index=i,a},e.peekIndex=function(n){n===void 0&&(n=1);var i=this.index;this.increment(n);var a=this.index;return this.index=i,a},e.increment=function(n){n===void 0&&(n=1);var i=n<0?-1:1;for(n=Math.abs(n);n--;)this.move(i);return this.glyphs[this.index]},V2(t,[{key:"cur",get:function(){return this.glyphs[this.index]||null}}]),t}();function ir(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=W2(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function W2(t,e){if(t){if(typeof t=="string")return cv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return cv(t,e)}}function cv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0})},e.getClassID=function(n,i){switch(i.version){case 1:var a=n-i.startGlyph;if(a>=0&&a0&&this.codePoints.every(Mn.isMark),this.isBase=!this.isMark,this.isLigature=this.codePoints.length>1,this.markAttachmentType=0}}]),t}();function K2(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}function X2(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var z1=function(t){K2(e,t);function e(){return t.apply(this,arguments)||this}return e.planFeatures=function(n){n.add(["ljmo","vjmo","tjmo"],!1)},e.assignFeatures=function(n,i){for(var a=0,o=0;oqi){var d=So(r,o,n.features);d.features.tjmo=!0,h.push(d)}return t.splice.apply(t,[e,1].concat(h)),e+h.length-1}function dA(t,e,r){var n=t[e],i=t[e].codePoints[0],a=Tu(i),o=t[e-1].codePoints[0],s=Tu(o),c,u,f,h;if(s===xu&&a===rh)c=o,h=n;else{a===Fu?(u=t[e-1],f=n):(u=t[e-2],f=t[e-1],h=n);var d=u.codePoints[0],v=f.codePoints[0];oA(d)&&sA(v)&&(c=La+((d-sc)*ku+(v-uc))*Jo)}var p=h&&h.codePoints[0]||qi;if(c!=null&&(p===qi||uA(p))){var y=c+(p-qi);if(r.hasGlyphForCodePoint(y)){var w=s===Fu?3:2;return t.splice(e-w+1,w,So(r,y,n.features)),e-w+1}}return u&&(u.features.ljmo=!0),f&&(f.features.vjmo=!0),h&&(h.features.tjmo=!0),s===xu?(q1(t,e-1,r),e+1):e}function vA(t){switch(Tu(t)){case xu:case V1:return 1;case Fu:return 2;case rh:return 3}}function pA(t,e,r){var n=t[e],i=t[e].codePoints[0];if(r.glyphForCodePoint(i).advanceWidth!==0){var a=t[e-1].codePoints[0],o=vA(a);return t.splice(e,1),t.splice(e-o,0,n)}}function gA(t,e,r){var n=t[e],i=t[e].codePoints[0];if(r.hasGlyphForCodePoint(lv)){var a=So(r,lv,n.features),o=r.glyphForCodePoint(i).advanceWidth===0?e:e+1;t.splice(o,0,a),e++}return e}function fv(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=yA(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function yA(t,e){if(t){if(typeof t=="string")return hv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return hv(t,e)}}function hv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=c)){p.next=13;break}return p.next=13,[c,u,a.tags[f]];case 13:s=a.stateTable[il][d],c=null;case 15:s!==al&&c==null&&(c=h),a.accepting[s]&&(u=h),s===al&&(s=il);case 18:h++,p.next=5;break;case 21:if(!(c!=null&&u!=null&&u>=c)){p.next=24;break}return p.next=24,[c,u,a.tags[s]];case 24:case"end":return p.stop()}},o)}),i},e.apply=function(n,i){for(var a=fv(this.match(n)),o;!(o=a()).done;)for(var s=o.value,c=s[0],u=s[1],f=s[2],h=fv(f),d;!(d=h()).done;){var v=d.value;typeof i[v]=="function"&&i[v](c,u,n.slice(c,u+1))}},t}(),W1=mA,ut={X:1,C:2,V:4,N:8,H:16,ZWNJ:32,ZWJ:64,M:128,Placeholder:2048,Dotted_Circle:4096,RS:8192,Coeng:16384,Repha:32768,Ra:65536,CM:1<<17},ze={Start:1,Ra_To_Become_Reph:2,Pre_M:4,Pre_C:8,Base_C:16,After_Main:32,Before_Sub:128,Below_C:256,After_Sub:512,Before_Post:1024,Post_C:2048,After_Post:4096,Final_C:8192,SMVD:16384,End:32768},bA=ut.C|ut.Ra|ut.CM|ut.V|ut.Placeholder|ut.Dotted_Circle,G1=ut.ZWJ|ut.ZWNJ,Ao=ut.H|ut.Coeng,dv={Default:{hasOldSpec:!1,virama:0,basePos:"Last",rephPos:ze.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Devanagari:{hasOldSpec:!0,virama:2381,basePos:"Last",rephPos:ze.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Bengali:{hasOldSpec:!0,virama:2509,basePos:"Last",rephPos:ze.After_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gurmukhi:{hasOldSpec:!0,virama:2637,basePos:"Last",rephPos:ze.Before_Sub,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Gujarati:{hasOldSpec:!0,virama:2765,basePos:"Last",rephPos:ze.Before_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Oriya:{hasOldSpec:!0,virama:2893,basePos:"Last",rephPos:ze.After_Main,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Tamil:{hasOldSpec:!0,virama:3021,basePos:"Last",rephPos:ze.After_Post,rephMode:"Implicit",blwfMode:"Pre_And_Post"},Telugu:{hasOldSpec:!0,virama:3149,basePos:"Last",rephPos:ze.After_Post,rephMode:"Explicit",blwfMode:"Post_Only"},Kannada:{hasOldSpec:!0,virama:3277,basePos:"Last",rephPos:ze.After_Post,rephMode:"Implicit",blwfMode:"Post_Only"},Malayalam:{hasOldSpec:!0,virama:3405,basePos:"Last",rephPos:ze.After_Main,rephMode:"Log_Repha",blwfMode:"Pre_And_Post"},Khmer:{hasOldSpec:!1,virama:6098,basePos:"First",rephPos:ze.Ra_To_Become_Reph,rephMode:"Vis_Repha",blwfMode:"Pre_And_Post"}},wA={6078:[6081,6078],6079:[6081,6079],6080:[6081,6080],6084:[6081,6084],6085:[6081,6085]},SA="eJzlXduO5DiO/Zd69oPutuc79q3RGGT35DYWk1O16KrZRWOx/z6k5IskUjblcGRWTUOhjCoHKVEUJZLHCsf/ffr67eXb63+8/PL2+ukvP/2kBkH5eQA6M9jBDX4IwzhMwwzXNbx0fJlB20G7QftBh0GPkQGLngY9Dwa49WDMYCxcMy5+ZPxgQvrXuHQR/zMNZh6sGqweLPSJHDZxWD/YxGFzDjuBVGMu1dK3TW9hobXz8oGDl4b3gtqZYSXZWoarMGaHr9T20rDB67luDogVR+v84MLgxsFNg5sZQeqm1eCXN53TKpY0YzJNQm8HD9PpBx8GPw5+wmtJ7AAvnf5lcqFlag52CO5Ez8HKzQpJtsYXmwq+y6agwzCEEV+V8GEiiglIMMYX/EH5x7YWR4v2PTp8VbIoIsrolw9GGOyInxTkI8qSaDLJx3mYFL7W5tU60nEm4mzLjYrTUM2kh8kMkx0mMFvPSUTta0rtTGNOe2aK09QkTFILlTjBcjnV4lSv41kPs8EXaX+mq3N2uAXNntmCFNmB5rA2NA4z9l2SzyhJosnE0QqrjnXtYWnexw+pLtssiuXQCpaNAvNUsC0rbDVwotEp02pc3qec+mx+tZqblGlPFypUx/Wvz3SqNdEQ7hfoh6CSXrR2RCwl29ASO2gQXZseoU4liwbr1UZRrnjB6Fi5bXAXJzoebUz8a2Odjv2TBgsOZHLyCUkmXrq+JI1npSHOD8lDrGTtEk32ujMkHqXEGlY/1oX8SA4NtiYm12CV2uKMg1YsehsrkieT7EiWzWkLKDPCgyWnYXtArx0Yr02dtrZhaxM0YiNxwaGT3VmyPzmsOta1m6WP9CGj+CYLz6FBt9ph1Aj7E8RDGiyIE46xBrdsUK4gP9Wra1MuwZBQrR6rlijWEy1BRKahN6ykI+3pHqX9svF4rNVepf3UvfGUg4dwI4VfGqTQMLnQYByvDnEvSkFYDNdGT/vAOY+b0Pmq0RCzcdExXs+ps33toPV8c1uLNGbLODRjJ5UWQ1jeR2mribwd7qiOaGeRk48BFRsCQvyqQQ8aBqdHEvBojFhHx/WCH/pY2ZiqMBqkDfHvGCsZSB3Margwc5ra+57KDnaBZl4gEipjJJmqIfNE5qA/6rXxJaTWEFhjXemPRNEgi5xegxQa5NZAqiEU1xCHi0Tay0nQPgUpZT7eo/h+MckZK0naNITl3SbJywM2qWNAL1CIhjCfX1X4SU6f2e5RB7kFL9oTB71Lx70xPrSuZxQJViEEylU3esZcUHE9gWzQB1Y2uN67iamLUSb+tbGSwdQ5jsGUQ7N769a5K3vYJfK8RCSFQvoQqz1f7BcTIbdUIYOBzAnrxnAkkoH0qoPBQHplNGIeoCTwyQaTHIlQezlJ5da8T0CaDVm3KY1O1mk01rG2G6Onfuvk5QHzN3omxKxGjGmvMWPK9nNDPuojN+fUjo5Bm8GdBWqdYNYhm9m2H4f/4UOehagYChdSYTZqTBlUpet7CkuEaqawK5d8KCEL39pjoct50SdjZGwOKwRwFRt0MsZqIpSESIWZy6aNZUVZs/UuYbCcJ9PYp46V5iwMMZI39sByF7yQ6iZ6LaY3QId1pT+Sx8AqktMbi6ERWKLFeAfmycrAg4OSI0Hi9C/KgrYNia6BPo0jqZwBgzPOU770YYiVTxl3uVJWblxCWadYacpIEngDJrNmp3wxbq462cSK+aoMIkBEWcfqR76jAhy4lui7pUo5DKTXWDeOQ/ODHLyDwYCJGMjGjUdFgQ0CvUyqvZyAFSuyISDNx3wAvIbFTgNWQ+wUEvtuO22IjqsybvwSnZjgm2CRqQCB3KCPe8kNO7bU6YZXLtar+on3qhk+Q71qC59Zufokg0VkQoh1hWnWFAqaCWMh3JakR65pqXPJpxY2JpU24/q+w0Eic2xgJGYEOcazG4NIlbft0ujaiDhjiXhbcOQh7iPBT7CdFQgSkObKCE1KE6ETfJ9SrSEUkhObDe6BZs0UP6Np6EKVWzTiCkymi1gQflZLlkNIjGRNCGnl6xjRZLLMuj2kyTSUfICVVCBSA9ViLJ8HBZgJnGJzE7iFqW7dZBgKA5r1CRQbPE9ysdcx1skLiJG8EYpW6NQFrCkxeDmDmeZYN4YjkczcxWAQc8J7vzPYe7y5KwTxDsoDy3gdcGNRoqDcosxANG5RtkC0la9PPgG4y0w62K5JgNEZuYmIFSz5eYqVYEoEGTBbNg+sNn7KZeJzvfnZJden+T7CY1Yxms5QNUa2Jqq28snHZPEe/Y4vNEdlVWv/O0CNKlytgfQxuFoLHaG2b1VsUDmoNW5nVb0DFlBin0ixQckOaNUYq1bE8TLUSC/ZAi8Bb4lByxmsmmPdGI5EsrqLwYIgFqS3SKphvrTvhQ/bjfcv5nXAraWJ2CC3NAtIkfbUhBQ3vi4J55h6H6LezLTjYDBwl5DflZ0oNjexCLqiJjXYiVFlD9ag0k3ZR8IYbfx7FHXnWOQOXurYpAy9tMYn2QwC+GMt20RlwxJTP9GN7bLsmqJgXtLeiv6Rho8YuiURwnlccXRXtHhQNh5hYRc/3exss/kClevH2BL9KKa3eE8sQpznJ3psXHlSegu6cIspWsnJBIuwokPqECuB2AhAYu2aaSMcYZunPxa6YihzA/ZAxNAyUEkONDLSNYHGla9jVKi1DGY5GJfjjEut1PzcVEBjE//kgMYWUsTMfoQVLCornrrOe7DODZxMK8LaK1Uc8Dn0iR37WLUTxiQtugq9vAJFJo7QwWFBPVg3jiOhrJt6GCzsh9bjoVewVA+ThqeiOiHVg9a7V/bK11ylwfKrNINZuVXagllXvj4JtRXcEmCmHszKeilCq7KznwfptQUrnFf6g6OlnqIa1odYEZQ8SeAtDNKC1BaEtgFPT+jimFqkCWcA3xmGuSKeEtpsGIHIvssdXAzxbMBvroTqcB1+PrbP79kwxarIUGlHbp+As5PGgpIHqDciG4rFNSxMvx0x8oZ1QM+r2RGWHA+E2gVSOwIpcjB0h08RqLBjA6io8VMLjScBYT7GmQg4KSoglnntSX58adFSlgcRGDFdXYFH2vQRR78wQiCRKwxka2H6bTznJnGbSC+5q30J2UsMVs5gQYNYN4YjkSxMTQeDBTXjwTK0ykkEn53DyLVI9+bnis3OLcyrnaD9CZb0rMjX92ZoZjZlTwmws+lM3WGqnUN7OxgY0+14Xk+ABlo8jYcCgjLsTE4kWdRNLWBUXsTo+s4kLT1m3+whgFi6ukJotOkjjn5hpJAYV7Sqzx6htuZYjZZln0412y9wrQsgVWKwcgYHmnMRqPHnUJtTpofBga4QOY4cDcMsORacSXQeM/WQsBMHM4q1QmgIcuK2k3144zUinjRCWIiKcc8M1IS4kVNUqBxsIkKxYFPOJR6KVvm3S1tjyb4bVsJTrfiIAlorCCbjuTItx1qeeC1nsBmj5QZstnL1SbZoTQgucUVbSulgL8Vq9rTjsF2nJUFAF+SDja6DOj2jdmsCqdj00cFe52BjcTABDhZE1Y/DmdNz2VMCl5xJYhymgjkOtWNXmA66aNkS7MqBiUQRweYdRBq1iIhK1yLG1rwe2uDKkS1lWqPITbq6Yj206SOOfmGkwA1XtKOe0+HiNQmEkbTrTCNeLq3uEpCSOHQHh8OtCXealeNIKGfmHgZnE7wRjdO2jLPkWeEQ2anK1IuJablDrNg6kpY7/BJ282t161eMwvn+dRWziDyRT87jbIh15zmcF1BaD4ezMIcWPRUeqIYdHL+9eSKZc/uJL744ZnEclF0al3AVh8/RgFpPoOjuWT5kBGLYO2gZgMN11ARwVsZuCTczO5sQRPNGfB9jJfAHwSScW9ceHgqMd6KYvHGhyk3F80eiEJlxnkqWAzqMZCygk/N1jAj2rVkwpHRXg8GAmtkzhY1WsEnIdG2KThQ+KV7hGUDFKbwFUK18vfIt+hOCOFzBI2U1pQO3hRXxEkm7zjfi0oKyD1bBVjdM5CTL8wlKcD7ESr/hVwMJbrtZBPme843HWixUhUhz61khs46fEoPIcBhGNhaHyfk6xhRUfoCpPaqwS1hiN82Ul8I9K0gkZLo2S+c6n3idZ9ASq/MGtLTy9Uq4aFCIvXDFkAeo4DzpWBHmkLTr6D0JhrIPDcFW11EJjkHdk28rNtt24MUduv4APdQPj3IBul6CwApqcfFO0tEBmhxt2eEZTGHdyKMNNT7jRpNkQzc8ukq20VPZiskXZt+s4bA3wx096k71CR4nZpHoqUYmYSU5pNv9NUas8YA4F+A7cujdTbqRhMd8mrkTVaThVDo2DS/45KPCL/xnZy0OxpXdRilz93ayQ/P9FSaQcl2bq1O9Y/DN6T3HFhi9t7CFja9TwkWHwuSbXQHM7Ww32VhtKy6p18vUzIwyyt5kGNtdt+6zXPvuJArTZi6JKtJtpqNmur0x9idRDgI+rJZPo5jZkEAsvRnwxufW2sGDQQHWjedQMgz1OjjcjBW/XwxrCOIqNzuRZC5G5w6DnHjXoprJeWKlu9XMFGtk6tZUi0+0HEQrXuFTvWBrU+SoglcWKpt1e3V+VCHPvPdcHbMXrxrZS52se4gRkoCwGypyVMFrRQXMizT34oqZue8o+PZjQPKpuzVEV2yA7rWBCjME3trjXbyyHw/W5/VY9pSSMa9jdn94czpP2/ZED6Ne33poRJ3peaOSgBAEepi5WkBjqYB5kcbsXLGanTx6QoSqFVcphKHehFjrYLcOQv2GZTv8D3//biHKxPGGi9oxBPfmOG4nQrFxe84lHorN70U2x5LdAysj/dZ9RZobrPmEjOfKtBxqGbcgTstZBkK13MpAVq4+yVqFHEW+N2RVbMDqIRjzsDw9rE9vyc0wjw9pXI47V4mMlxzdzHOZPf/BKNA3z2TX+Y+Hq1FEtMxsWKuIzlAR8yKNYrliyVMPU5cSvG5pQRi18b3XADb27WJ1rgFXEFkbW2lpNhfip8Rnlirn8Tj7mAdsPEeSeQiBejg8GiOexcb9NM6eRK50b6fnmOpeiryBjRr3SJNr/YinRyKPzy/BiMmbWEloRuIlv62MERQc4WImMluo8jmBnJELNWPU6JmsKQ82qWRssFnwdYwoZLdRDoa0wz5lfNq8I0JD2jUQFjJdm6IThWvFKrwInhmFt4Lnja9TvlYZS3TN49aNYSF+ncIzhzdJUOg33wApmo/IOxN+LlS5wkLruGcMjgPjCPOYmsrGxtQFn3xMofimdHtUYQ9kyzi8ec+Ahu5rwC9kujZLpzrHeJ/TeZ4mMDpvpQkbX6eErTKT+1Q3hZuKDTY9/qwEWiE+p8uXHXj8dYep7CGlED6kr2m2gfg81dhzEwyzfZAlJx4Gh5JBjO5HXUkGwW4tWbpuU3g2uqVWUR0Jzvz+OBOLJ8RaMK4nzw/xiDqw0W0MVMfysUHpehbfUunY+Lbg6xjVVADhR+PKXEkRFLchbRpIe8FZIRJKd8/Vqd4x+mb1ngXtjN5bQfvG1ylhq2jyxdXF/IXhM1cc8zBED5rG6uYGzlCH5VOz/SL47Q1k0/VW0Mhz+C0vFITjN0YvjdgFn6MEZjbhCTvyWHE/+fVnTqow1k/nz3nJQ9k9+I24ZPoFmPPo109TEg/me1ZEPPxxlkq8he9Wj6p4f4oPzsF4BETwYIi1P8WHumhX9pRiJ7880OQIF8yjrD0ui7hgdKCCwMxDqpMEBD+jVN1RwLHWAqYPzNnPHlX+mH9EP3rX+iH96frmkesOOIecsYhEKp1xC/ei7nt1+TKeWxU1moaitgCBKKoVHySWDpHu9VCK9U8Bn6INe1iALSsoT382LGw/YVHFLUEJcK88dNnDHXTUQbVwrzrcCWpOIuL3RDTBvQL+mkUtYl6krogriAdRytA6opNLDev39Beqqr2x9fh63OzrB9in65uLoJ1wHiJjEgpWeodmgk8dyuqGhEy3qwwa4lW2uS1GZQ2vtTB1CBbiI7YFv11Vebr2k8zRadXPMk/Xd1/H9MT6upxPLmHp65ppNHWPq1MVMj1Hf+hTef3trpjpqemKV75eCXtcQIgPoRX8ulC177UfxYv7ef0w3nR9dwNMT6wbyPnkEpZeoJ2yUc+xOhwp15M0GJ/Ly2lw91KcBlteauXrlbBVfPXAZMHvJNZb6gWrlo/g5+HTy6+/vv73t//6/Nunv/z0ny9vX1+Hb7//k/+TPj4hEvy50MJDnWbMdTvyIT02eL5fySBvEf6SDDd393Cfj87du+nwzmVxv246FfaBonR+TIV4VJT3HPFBX1dt5z1V9aS+LlvsYa9yXT9VcUdyXfr/nYr5QM2fq/d9JHpkgrtH997q6O70quk/Y12/gwKeY3LXRXnCxzfa6JVOHrMOiSFAevPt5bevkNn8BOnRp19+//L3189//fXtn1+/vf7+CS/9+uXz1y+fXz5/++vXP97eXn55e42X/+fL/76+lZcYZnopvWS03KWv314+/+3l7cvn1wvM8uFxPf/xj1++vEmY+cvdDB9xmZlWeklM+OxLl2edtUvx1SeYtdzS+ctL/108T718efUNj8wXs0gbS1e8mu9aWjf28INsJl3bzCP7wIMtfkc72oOe9WN3v+dslk/cpK588qPsv93jesSgHt4t2E3/unOQmpbILXwvcd/tDuQj/c6zPdLT49hbfM57uai7Hde9zudm93anP7prc/1Yt/SR3uwdHBpvK3d7me+d7hHE4tm78d1u630810cAH/0O5Dk+5OkZx4f7gQ/bsm7f299nexfuQ0/Y2vpafY4A79Tk97ZFv+POff8W+T3uy++ykV7fFn4IpOLydvjhS/6HafXxbez5O9DhGrt36fcs0ZvX8v1B0YclavT1YyyGd1pfH7aWnu/7/00c+zus9j+pw/53ck1/dvz1g/3Ld7WHfo/G80gP38ts37gHddxB4tr4+f//BVoTYdo=",H1="eJzNmVtv2zYUx7+LnvnA+6Vva4a0K5BsWLcWmBEEsqMG3mw5kJUOQ9HvvsOLLUp2owsVwGBCmj8d/nl0DkkzyLdsldfF465aF/vszSL7NUPZL7c/Q/0Rft+9hcr+Xt9AdfXuA9Sfbn5afnXtb/vatqHre1c3bzf/um5V2Mb33jt7//kqjD907Ty/2/n+tBMF0Rs//NqbXnt47UeUz5uNtQ86Hw8zhjF/fb794Bpbu8r6/slOc2tdsZUbeoeyh2K12z7t9ut6vSvh/b9lVGAFcYCGIcoNByP4rI9IEGOR1g5prRA1mDpkyBFppT2ikRUDxDCxA6HhiGEsPTIeiQZR3FgxYhHh3CLCKWJEWHlGpUNUMsSoFg4p4pDCEaIRkh7xBsmARIyOozl2o5nRCCrsEfPIRIgfrThxAwWXFgkObyUY9khHKFiZGDWmAjdcuABI5jyUkiD4bBPDlHSeKA2eKGmzwIxwVkZATIzgHqkISY+sJxySAUhqj0yDnGngEntuIkQa1DI1zUQOSePyAQ1G0kjhEfOIRkh6xCOkPBIRMh7pBhnGHTNMATRUBSoC1UeqMHcpti1BULt42Z6Mqfa2mjNHNbdUcxoojyk7UNmytZ4pgo0NsW0lgtrrQs8EqgL9jrJ9DUfQH/lyU8CzBUazlTu0oAj2C+JQBBBwBWlkEMGIEEQoIgzBHoOdRyQ8JgpB+u0TgyhGlCBKgxZlvvE1txW85yzOUnn0dqKAPXHa/VNBaqBi8APbB0ICSxTOFthdsNUVYnbRI+4tIY3wAM4ZDoGDyImgwOVRjBlP1EwhaPLV9A75ii0I7756O0v9irijeBLLsYKHJeXcowN8DCup/7XN4NceKHlm5WO/8HHfuo+mFi+EwEvPHoN0TaK7D8eX3rWUvjp7zqdXTRPAMTEdeKTO4zLXLXHbHSzOzciAkMM5NygiZ3T7yoRDq1eS/PjhNLmRqza2SNz904twFXnxlE5I9Vxupqp1v+/TvZtZru9lo7tIbMS6XnQuIANETzS7ZbxkfGdyE8gBrkZ3pd4AsGadzSd79o6HR1zxAlB9AfH6rxKRdF3+8mIYVAYsshkW7lw386S0MTEyvmekBW05D93hzgs2xXs+yv1z4n1lyjnUq9n9kkzXG7/eYqO5z56kLP34G7xzFZz1D5iUa+ZZ8bRycpNJEuP9Kevs3fm/LlIOh7MzJMTjGOE7lOWrVfFUr8vH7M3iS77ZF6iunidX6QqXVkGI6vzR/oNgAeHPltXun6K8X22e93VRZRaty4fiqYCqrFt8/992udu0UZ2XD3n10IJnJC8BXYof01H5vC2qfNNnNiZ/A1N6gfDrusq3+T10t+syr4tL8u014PQlAmxZVPd/79YlNMkBO5ni7vv/LbyJLg==",AA="eJwBdw+I8AARAAAAAAAAAADYYAFmD5nw7Z17jFxVHcfv7s7OzO7M7nQLRAhiUSDEUG1AIrYUFpBgColYTaRVUUQJiEFQg5A2CAhqLSAPQUws/CHlL4r+wUNjwbQSESwQUCFgFLCoNQSsUQKiIH7P3HPmnjlz3o97Z2V+ySf3cc4953d+v/O+d2eX1LLsYLAMHAFOBqeAT4DPgneD90Y4ng7OBl8C6xyeWw8uAxvANeC74GawGWwBd4J7NM9fAC4GPwe/AveDR8AT4GmwBPwF/A28DObBf0F9Mg+bxXFP8FZwIFgKDgMrwHHgRPAhsAacBs4CXwBfAV8F3wBXguvBJrAZbAF3gq3gPvAgeAw8Bf4IdoHd4BXwBpisZ9kM2AvsBw4ES8HhYCU4Fqyq57qvxnENOI1en4XjeeBCcBG4HFwBvkPDv4/jLeA2cAfYWs/LfR892vIgjf8Yjr8ET9Hrx+nxOvAMzh/intnlmIcNz3Bp7sb5K+AN0GhkWQe8BSwBB4Nl4IhGf3xynKf3HgYfwPnJ4BTwqUZurzNxPJfGuYDeuxjHb4KrG3l9mqfciOtNYDO4DdwBttJn7qPHHTj+hqb3VIPaCsc/N/RlfdEQztv4JcTdQe/dDV7Dda2ZZe1mEXcPnO9Lr08CBzQH0ztEci+Uw5p523N5ZkUCPVJzNHQ+XqL38+BaSfwTaVzWFlfjei34NIWPeyStb5/j7q/Q6ELq9he5uN+mxw1CvAubef/L67qOPve1plxvhi5sxIgRfjw8BDqMGDFixIgRI0aMWHgcOQQ6iDxH17rfcljfr1TcX6555lqkfz3YBDaDLeBOcA/YDh4Aj4InwbNgVzPfW9qN4z/Bf8DEVJa1wBzYB7x9Kt/PeSeOh4Ll4FhwBi3LZi7/Vbi/eqp6e48YMWLEmwmyb7kWfe/7asU+fVVUbYsRI0bE4QRuzkrec86D09DPnAXOE+Z6FzrO/U6ix3max1HgkqnifeoGnF8tpHnDVPFeh4e8l7kJYbcOwfzztUU5K+dgI/CTRWY2IN4Dirgv4P7+i7NsDbgGPLq4P/z3CG/ukWV7gzXgkuks2wayVpYdAy4hR3KPHnfSI8872ln2vbGc03H+g/ZgnJ24Nz5TXB+H80vBdjA2i3UBuHS2SCcW22mar+K4vJOfH9/pj7Ouk+v0086g3iNGjBgxohz+XXEfHHv8cWHFourzn6+9ubkc3I554F1Tg+tR8p3Pvbi/jZsn3o/zR6by+egOSXrs+7sn6PqanD89lX9TR9LbSdN6XpLfEprmPxD2Mvc82zd9fcpv/Uy+mSLfTBwl0XcSbaAJFk0Xc+O9p/Ow/XE8GCyb7s/viOliHj6P8xPAB6eL/Fi8j9J7n5zOv/s6A8fPgy9PD+q/frq4XkbTvow+v3Ha7Md5qrvMPsR+D0nCiF2uQ9o3gpvBLeA28CPwY3Av+AV4CPwW/A7sBLvAbvAKeAPUWkWabZzvCfYFB4BDwKFgOTi2NajDvdBhFe6vpmFrcTwVnCGJy+Kfg7DzW8X1RTj/OrgK/AzXN+B4Ew2/FcfbFWkRSPy7WoM2I5wqqW/dPBF/O3gQPAYeB39o5Xv/f8LxhVb+/O662WcvIe6rYAzrhTpogbl2Eb4PzvcDB4F3gfe0i7KZOLKtDiP6vb9d/npPrId82EkafY62KK8PZZdfxkc0fiqLWGUh3/JWlT9pb6QP/DhnTzJOfYarV2fi/Jx28b1sKjuua8rvn091Wc/peHRE+y9EdO9pY7DMs06WiakMbGy/DPVmo2O/PQzvOVzKfw3Kd0M7XZ/van/2ve2VivD13Nxvk6Qv57/DJ3Mu2byAhd9Nj+TvmjYjrS3U13fg+EOw1cH3L1r8fc0xCf6OYht0fGAIxjRbHoWuTxrmSs+2+8cV2zq1zHLuXiUqP/613R/+9xJ8+i9av1/n8iLvMGRrTQZpI5MzWTYD9gL7gYNm8rClM3bl5/+uibTXjeDwmbztP8e1I3Z+FZ2Dr0Sc42fyPvbEGXn7V9k3NUT3D8/03+P7ItIPreTKvpH2Y2S9+DHObpdzz5xO0zsbxytqg2mfi/vnW9h8mKjKP6lZ2/z/Lh/P65pxcUdJOgwrv644/0cU+yhlEloG3fizELhIGAdc7JNqrbyQ/L+QIXX3bbWxLp0sW3CQ/WX+3IaqdR5W3uxStf2j1U36exYLQtchhokp3BSvw4Wb4vnqWbWtFlo5bHw2TMj0XUj668qkkip18dW5Kv2HvU5UaZOy646tVK33QvV/jLSqsD+vt2v+KSRVGRdKWWab/dTGIzAWkUV28aYaOc0JlGNxfj7eKO670KwVz3ZtNE2hNuLjGnWjNpni0iO4rtO9bd3q92+mS4vCRHXt6sPusxr/snBeZGkQYf5tU/+2Jf5jMk7jMGnT+MS/Yn4yaTcG7w2USfBvL56lf1n9dmmv5MjnZevfgbKU7F8xrnhOhPiX2Z75lyHzT1vhX15I29WJqjzaZyz92+tXxwo/1+bcxgDX9st8qrwuyb+27VeE1W3WppiPZf4NHUuZTcS65No/a/MY48YQUJ8oINJYIP2zq38nLfrnSYv2K5NJRZ8Qu3/uZEW7DZnHsX67m7dF/6xry6qxkp2L92TxxHvK+5bzL1H4tizrv9nYPC60bULdsn3L/K+SFO9FZCLOp23m1F39DP6O2Z5d/UnaM/l9aBG+TfH3xeu6oT3zz+nqFG8X/hkX/+rEZ72knZsPgX9VcZmw/trGv/w1O7fxr9j3yqSnawT/djo5PiL6l9epLP9qsWy/BGZ3Nh6rIGLqj7s2VfiN0W7o2w5vk9D5lglTv+Y6n7adc8vsEgOrNCVrads+XtaGVfsjLIwd2V6JbL9FJa79Nb9/4iqxfeELW7fbIgp5nm+n443+fSpy5NcWhG77bxZxYqxrxDqpsnEK25vyDLF3dz9vLoeJzN7MF0REe9ezol/JHOytqqsp9qd5mhRlP2q7j+VQr/j62qE2FPMlJpmw8HGKOqbrJzOPOsXaIGuHZDwm9aSu0n3Onm75HeKngLUHHfzet2wd5VN3ZVJ1H9/Fcr6gqiuycZTUne5cnaw5Zvv7qh4kb5d9Da6f5/c6ZGUY6Cd1dXYsj9OayGFx2LPsPg+fljEvG+YGbSnLl9Ck+Xf1sLQfe1Z8r2Oq4zLpCOehyNKxST8LfD40/9Tl80m3DHhJnYdveKryiuKzbu4+J9yzWYPEyl8Gn79NuVPl7yox7E/EO/+yxmibfZQIewLM97r9FxF+rdHbg6Fjf/d8Jofdl6VB5gim/RgC2xvq2T9wHzW0Dyir/46Rf2z9CV37ltUGJO3YZY3Mr5OZsPvd9x6aNYNuj0NmT+s1ZkybeOz9uY53A/bz8BkvqvUEv1ekWmPI/CvC5r1K/R32AqR+Tli/ZWWPkr+qXrBwiR27a3/ZOnrWb39BtS9I2uHAHtVE/7N83Qnt/0Of59+9sDHPe/xNUIdE25n8Id5v1fTp+9rTZ6whdbCZFXtRMlzHQWu/pRzLJOOMzBekrfXtnYzZ25vMm6R5KvoG23pjGh9FGZg/KGyhq5O6/p7ft2xO6PN2Gaf76jinb+j8yTTepkybCP+dV0e4tmaxgOQesxcJ488Zqj42hn1t7WTa89XpY6tvZjjqngnxf4q0bfOzzcNLl0lQL65jjDU+evTKbbGGldLInP8G2Nd3vIT62/StsklCdI+hvy7tFOKqU60dt4zKepuYVPmE2lgnofWiLJv66lB1eGxb+NpIJ2XXx9T1I9Q+w1R/XfJIUTdcxUZf/v01v/6sS9bh/N/ppNx/kr0bUtkw1PdJ19k6TOv9cc2aWbaGHSu+t3apc9H+rjXhXoXLPh/52xj++zKV9Op/6H6cz/rVZk1L0bVbl/3I0uuzhOZEQa8cifsP3T6O6/vXDtdetHt4KrtEtrluz4zfy+p7P1HzH9dC2ovO36yftyp3QH3PMk39TN0+LOqpuP8oe/9hkpBvFDMP/w70S4G2GUhDsa9Cwlr0XY34fVxs36jeDYr32Xe67JhadPM5m7LKyiRLk31TGaKXaW7sEq4Tb9/zdrPtDwxtyjQekTKxbyR7+gfOR1zmwKFrHd85t4vurmWMrb/ufqaIW6aOvraWSRX5hpa3DH+HPG9T3tjlCLGlya4pwk32sbWTrfjWJ1N4SH0JTdtGf9fnbeyWqi7GyM8nDVmZq5TYNg3NvyydU/k+lq62EppeCru4pO8iMdqKSQ+db1PVH1UZq6i/Lv6JWY9D8gi1eYq8XHSqIv+qym/Kk6x7J4VvY8mR/50qXlg88Xfe+vbkNNepYFLn9qQHyj4bthaX2S9mG/bJyzZf3zSHqV2lLI+LzVwl1Ge+acfKIzT/FD7wLWtoOn2/hdXJGbp3rIb9bxl1w3skUazf2wT0tSbpfpfu81vOke1r+t1l8g6bf0ca2kY7wvkwtzutf0qo/6a2oPMd+9skIr5/l8LnayNl9hNinbSRKL+dntC/rr+BTt6f677LILC/BeHf8/T85VkveJvH6kt9+tRYvuqmlWB8IvWM+Ih9n6GyI/uOXKc/01Gmq6/+Ps/r2lrVbcgF9ndSxvFvQt3/hdZp39+v5OMN2D6y7/lwVVwibN3K/p+DCibi7/3zfRoTXV1T+aSTDfbxYt66b9/6/GMIN0mKeuszTrDvEBnMT6Z5kUv9Zr5iY47t7+2m7CNsbKUK77NXTW4zo/8D+4dUZWcihsvKHHONPFC/BJ+L+sXwvyt8+dl8yXetk/L7mRhrMaP+juOp7ZjaqhW/46bNv4R1eKzyh9LL0+KbLVO7drWfbv2XamyS9TMD+jvOhcreI2GiKxs/ZoxLfJRS+D7VROr6LRtj+n6XX/xmUbHu7N23+AbUpfwyGyjHLcfvmfvKOius/RTzsCrEZl4mjZewvujWEaY5W6htY+9n+ParLmOG63f2pm+GVXPE0PrEh/fOS6xHvIj1iZ3z6yUW1m2/ncJ+MeqPq/2ktku8N6lrf/y52M9p7RNLx9bg3Mimrcdax/hIjDxDdUmRv4s+vvaNNUaG+ju0PsS2dYx6GyutVPqVlb6NhKblqs8w+j6Gvqb4ZYtMJ/Gav+9jM5tnfdKOVTdcfWSrs204L6lsFCIp/BUqZdQl17xUcVNIqM1T2CQ0bRd7haYZ+lwMiVFHQ+0o0yfL+p/X1W1Tm5ClqdNNZXPVUZanTn+b9GTPm8pnW36dTXxtG6tu2OSTMn8XiZFOqP4pyh/DtmX4InW+of4N1Se0HFW1i9D8beq5az6muCn0NuWts5ePxPBnTP+Hyv8AKXRL6A==";function Z1(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=CA(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function CA(t,e){if(t){if(typeof t=="string")return vv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return vv(t,e)}}function vv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;o--)a(o)},e}(di);FA(Wt,"zeroMarkWidths","NONE");function Xl(t){return K1.get(t.codePoints[0])>>8}function X1(t){return 1<<(K1.get(t.codePoints[0])&255)}var eu=function(e,r,n,i){this.category=e,this.position=r,this.syllableType=n,this.syllable=i};function IA(t,e){for(var r=0,n=0,i=Z1(EA.match(e.map(Xl))),a;!(a=i()).done;){var o=a.value,s=o[0],c=o[1],u=o[2];if(s>n){++r;for(var f=n;fw);break}case"First":{y=u;for(var R=y+1;RK&&!(Di(e[q])||G&&e[q].shaperInfo.category===ut.H);q--);if(e[q].shaperInfo.category!==ut.H&&q>K){var ee=e[K];e.splice.apply(e,[K,0].concat(e.splice(K+1,q-K))),e[q]=ee}break}}for(var H=ze.Start,_=u;_u;ae--)if(e[ae-1].shaperInfo.position!==ze.Pre_M){ue.position=e[ae-1].shaperInfo.position;break}}}else ue.position!==ze.SMVD&&(H=ue.position)}for(var Ae=y,de=y+1;deu&&!Di(e[T]))}}}}function RA(t,e,r){for(var n=r.indicConfig,i=t._layoutEngine.engine.GSUBProcessor.features,a=0,o=Ou(e,0);a=ze.Base_C){if(s&&c+1ze.Base_C&&c--;break}if(c===o&&aa&&!(e[h].shaperInfo.category&(ut.M|Ao));)h--;Cn(e[h])&&e[h].shaperInfo.position!==ze.Pre_M?h+1a;d--)if(e[d-1].shaperInfo.position===ze.Pre_M){var v=d-1;va&&e[y].shaperInfo.position===ze.SMVD;)y--;if(Cn(e[y]))for(var E=c+1;Ea&&!(e[D-1].shaperInfo.category&(ut.M|Ao));)D--;if(D>a&&e[D-1].shaperInfo.category===ut.M){for(var R=I,L=c+1;La&&Cn(e[D-1])&&D=t.length)return e;for(var r=t[e].shaperInfo.syllable;++e"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=MA(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function MA(t,e){if(t){if(typeof t=="string")return pv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return pv(t,e)}}function pv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;o--)a(o)},e}(di);UA(ot,"zeroMarkWidths","BEFORE_GPOS");function yv(t){return VA.get(t.codePoints[0])}var WA=function(e,r,n){this.category=e,this.syllableType=r,this.syllable=n};function GA(t,e){for(var r=0,n=cc(qA.match(e.map(yv))),i;!(i=n()).done;){var a=i.value,o=a[0],s=a[1],c=a[2];++r;for(var u=o;u<=s;u++)e[u].shaperInfo=new WA(jA[yv(e[u])],c[0],r);for(var f=e[o].shaperInfo.category==="R"?1:Math.min(3,s-o),h=o;h1){for(a=n+1;a=t.length)return e;for(var r=t[e].shaperInfo.syllable;++e"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=YA(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function YA(t,e){if(t){if(typeof t=="string")return Sv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Sv(t,e)}}function Sv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=_A(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function _A(t,e){if(t){if(typeof t=="string")return Av(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Av(t,e)}}function Av(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;at--)this.glyphs.splice(D[at],1);return this.glyphs[this.glyphIterator.index]=G,!0}}return!1}case 5:return this.applyContext(a);case 6:return this.applyChainingContext(a);case 7:return this.applyLookup(a.lookupType,a.extension);default:throw new Error("GSUB lookupType "+i+" is not supported")}},e}(Cu);function tC(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=rC(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function rC(t,e){if(t){if(typeof t=="string")return Cv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Cv(t,e)}}function Cv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0&&(this.glyphs[V].isMark||this.glyphs[V].ligatureComponent>0););if(V<0)return!1;var G=this.coverageIndex(a.baseCoverage,this.glyphs[V].id);if(G===-1)return!1;var K=a.markArray[U],q=a.baseArray[G][K.class];return this.applyAnchor(K,q,V),!0}case 5:{var ee=this.coverageIndex(a.markCoverage);if(ee===-1)return!1;for(var H=this.glyphIterator.index;--H>=0&&this.glyphs[H].isMark;);if(H<0)return!1;var _=this.coverageIndex(a.ligatureCoverage,this.glyphs[H].id);if(_===-1)return!1;var ue=a.ligatureArray[_],ae=this.glyphIterator.cur,Ae=this.glyphs[H],de=Ae.ligatureID&&Ae.ligatureID===ae.ligatureID&&ae.ligatureComponent>0?Math.min(ae.ligatureComponent,Ae.codePoints.length)-1:Ae.codePoints.length-1,Ce=a.markArray[ee],Le=ue[de][Ce.class];return this.applyAnchor(Ce,Le,H),!0}case 6:{var at=this.coverageIndex(a.mark1Coverage);if(at===-1)return!1;var We=this.glyphIterator.peekIndex(-1),$e=this.glyphs[We];if(!$e||!$e.isMark)return!1;var Ue=this.glyphIterator.cur,Ie=!1;if(Ue.ligatureID===$e.ligatureID?Ue.ligatureID?Ue.ligatureComponent===$e.ligatureComponent&&(Ie=!0):Ie=!0:(Ue.ligatureID&&!Ue.ligatureComponent||$e.ligatureID&&!$e.ligatureComponent)&&(Ie=!0),!Ie)return!1;var be=this.coverageIndex(a.mark2Coverage,$e.id);if(be===-1)return!1;var ge=a.mark1Array[at],we=a.mark2Array[be][ge.class];return this.applyAnchor(ge,we,We),!0}case 7:return this.applyContext(a);case 8:return this.applyChainingContext(a);case 9:return this.applyLookup(a.lookupType,a.extension);default:throw new Error("Unsupported GPOS table: "+i)}},r.applyAnchor=function(i,a,o){var s=this.getAnchor(a),c=this.getAnchor(i.markAnchor);this.positions[o];var u=this.positions[this.glyphIterator.index];u.xOffset=s.x-c.x,u.yOffset=s.y-c.y,this.glyphIterator.cur.markAttachment=o},r.getAnchor=function(i){var a=i.xCoordinate,o=i.yCoordinate,s=this.font._variationProcessor,c=this.font.GDEF&&this.font.GDEF.itemVariationStore;return s&&c&&(i.xDeviceTable&&(a+=s.getDelta(c,i.xDeviceTable.a,i.xDeviceTable.b)),i.yDeviceTable&&(o+=s.getDelta(c,i.yDeviceTable.a,i.yDeviceTable.b))),{x:a,y:o}},r.applyFeatures=function(i,a,o){t.prototype.applyFeatures.call(this,i,a,o);for(var s=0;s"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=oC(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function oC(t,e){if(t){if(typeof t=="string")return kv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return kv(t,e)}}function kv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r>16;if(i===0)switch(n>>8){case 0:return n===173;case 3:return n===847;case 6:return n===1564;case 23:return 6068<=n&&n<=6069;case 24:return 6155<=n&&n<=6158;case 32:return 8203<=n&&n<=8207||8234<=n&&n<=8238||8288<=n&&n<=8303;case 254:return 65024<=n&&n<=65039||n===65279;case 255:return 65520<=n&&n<=65528;default:return!1}else switch(i){case 1:return 113824<=n&&n<=113827||119155<=n&&n<=119162;case 14:return 917504<=n&&n<=921599;default:return!1}},e.getAvailableFeatures=function(n,i){var a=[];return this.engine&&a.push.apply(a,this.engine.getAvailableFeatures(n,i)),this.font.kern&&a.indexOf("kern")===-1&&a.push("kern"),a},e.stringsForGlyph=function(n){for(var i=new Set,a=this.font._cmapProcessor.codePointsForGlyph(n),o=sl(a),s;!(s=o()).done;){var c=s.value;i.add(String.fromCodePoint(c))}if(this.engine&&this.engine.stringsForGlyph)for(var u=sl(this.engine.stringsForGlyph(n)),f;!(f=u()).done;){var h=f.value;i.add(h)}return Array.from(i)},t}();function ul(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=uC(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function uC(t,e){if(t){if(typeof t=="string")return Fv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Fv(t,e)}}function Fv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&this.codePoints.every(Mn.isMark),this.isLigature=this.codePoints.length>1}var e=t.prototype;return e._getPath=function(){return new lc},e._getCBox=function(){return this.path.cbox},e._getBBox=function(){return this.path.bbox},e._getTableMetrics=function(n){if(this.id"u"||n===null)&&(n=this.cbox),(f=this._font["OS/2"])&&f.version>0)var c=Math.abs(f.typoAscender-f.typoDescender),u=f.typoAscender-n.maxY;else var h=this._font.hhea,c=Math.abs(h.ascent-h.descent),u=h.ascent-n.maxY}return this._font._variationProcessor&&this._font.HVAR&&(a+=this._font._variationProcessor.getAdvanceAdjustment(this.id,this._font.HVAR)),this._metrics={advanceWidth:a,advanceHeight:c,leftBearing:o,topBearing:u}},e.getScaledPath=function(n){var i=1/this._font.unitsPerEm*n;return this.path.scale(i)},e._getName=function(){var n=this._font.post;if(!n)return null;switch(n.version){case 1:return no[this.id];case 2:var i=n.glyphNameIndex[this.id];return i"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=gC(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function gC(t,e){if(t){if(typeof t=="string")return xv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return xv(t,e)}}function xv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0?this._decodeSimple(c,o):c.numberOfContours<0&&this._decodeComposite(c,o,s),c},r._decodeSimple=function(i,a){i.points=[];var o=new l.Array(l.uint16,i.numberOfContours).decode(a);i.instructions=new l.Array(l.uint8,l.uint16).decode(a);for(var s=[],c=o[o.length-1]+1;s.length=0,0,0);i.points.push(v)}for(var p=0,d=0;d>1,u.length=0}function K(ee,H){S&&c.closePath(),c.moveTo(ee,H),S=!0}var q=function ee(){for(;i.pos1&&V(),p+=u.shift(),K(v,p);break;case 5:for(;u.length>=2;)v+=u.shift(),p+=u.shift(),c.lineTo(v,p);break;case 6:case 7:for(var _=H===6;u.length>=1;)_?v+=u.shift():p+=u.shift(),c.lineTo(v,p),_=!_;break;case 8:for(;u.length>0;){var ge=v+u.shift(),we=p+u.shift(),Re=ge+u.shift(),De=we+u.shift();v=Re+u.shift(),p=De+u.shift(),c.bezierCurveTo(ge,we,Re,De,v,p)}break;case 10:var ue=u.pop()+R,ae=D[ue];if(ae){w[ue]=!0;var Ae=i.pos,de=s;i.pos=ae.offset,s=ae.offset+ae.length,ee(),i.pos=Ae,s=de}break;case 11:if(a.version>=2)break;return;case 14:if(a.version>=2)break;u.length>0&&V(),S&&(c.closePath(),S=!1);break;case 15:{if(a.version<2)throw new Error("vsindex operator not supported in CFF v1");j=u.pop();break}case 16:{if(a.version<2)throw new Error("blend operator not supported in CFF v1");if(!U)throw new Error("blend operator in non-variation font");for(var Ce=U.getBlendVector(L,j),Le=u.pop(),at=Le*Ce.length,We=u.length-at,$e=We-Le,Ue=0;Ue>3;break;case 21:u.length>2&&V(),v+=u.shift(),p+=u.shift(),K(v,p);break;case 22:u.length>1&&V(),v+=u.shift(),K(v,p);break;case 24:for(;u.length>=8;){var ge=v+u.shift(),we=p+u.shift(),Re=ge+u.shift(),De=we+u.shift();v=Re+u.shift(),p=De+u.shift(),c.bezierCurveTo(ge,we,Re,De,v,p)}v+=u.shift(),p+=u.shift(),c.lineTo(v,p);break;case 25:for(;u.length>=8;)v+=u.shift(),p+=u.shift(),c.lineTo(v,p);var ge=v+u.shift(),we=p+u.shift(),Re=ge+u.shift(),De=we+u.shift();v=Re+u.shift(),p=De+u.shift(),c.bezierCurveTo(ge,we,Re,De,v,p);break;case 26:for(u.length%2&&(v+=u.shift());u.length>=4;)ge=v,we=p+u.shift(),Re=ge+u.shift(),De=we+u.shift(),v=Re,p=De+u.shift(),c.bezierCurveTo(ge,we,Re,De,v,p);break;case 27:for(u.length%2&&(p+=u.shift());u.length>=4;)ge=v+u.shift(),we=p,Re=ge+u.shift(),De=we+u.shift(),v=Re+u.shift(),p=De,c.bezierCurveTo(ge,we,Re,De,v,p);break;case 28:u.push(i.readInt16BE());break;case 29:if(ue=u.pop()+k,ae=E[ue],ae){y[ue]=!0;var Ae=i.pos,de=s;i.pos=ae.offset,s=ae.offset+ae.length,ee(),i.pos=Ae,s=de}break;case 30:case 31:for(_=H===31;u.length>=4;)_?(ge=v+u.shift(),we=p,Re=ge+u.shift(),De=we+u.shift(),p=De+u.shift(),v=Re+(u.length===1?u.shift():0)):(ge=v,we=p+u.shift(),Re=ge+u.shift(),De=we+u.shift(),v=Re+u.shift(),p=De+(u.length===1?u.shift():0)),c.bezierCurveTo(ge,we,Re,De,v,p),_=!_;break;case 12:switch(H=i.readUInt8(),H){case 3:var me=u.pop(),lt=u.pop();u.push(me&<?1:0);break;case 4:me=u.pop(),lt=u.pop(),u.push(me||lt?1:0);break;case 5:me=u.pop(),u.push(me?0:1);break;case 9:me=u.pop(),u.push(Math.abs(me));break;case 10:me=u.pop(),lt=u.pop(),u.push(me+lt);break;case 11:me=u.pop(),lt=u.pop(),u.push(me-lt);break;case 12:me=u.pop(),lt=u.pop(),u.push(me/lt);break;case 14:me=u.pop(),u.push(-me);break;case 15:me=u.pop(),lt=u.pop(),u.push(me===lt?1:0);break;case 18:u.pop();break;case 20:var T=u.pop(),m=u.pop();f[m]=T;break;case 21:m=u.pop(),u.push(f[m]||0);break;case 22:var b=u.pop(),O=u.pop(),N=u.pop(),$=u.pop();u.push(N<=$?b:O);break;case 23:u.push(Math.random());break;case 24:me=u.pop(),lt=u.pop(),u.push(me*lt);break;case 26:me=u.pop(),u.push(Math.sqrt(me));break;case 27:me=u.pop(),u.push(me,me);break;case 28:me=u.pop(),lt=u.pop(),u.push(lt,me);break;case 29:m=u.pop(),m<0?m=0:m>u.length-1&&(m=u.length-1),u.push(u[m]);break;case 30:var Q=u.pop(),Fe=u.pop();if(Fe>=0)for(;Fe>0;){for(var Ne=u[Q-1],nt=Q-2;nt>=0;nt--)u[nt+1]=u[nt];u[0]=Ne,Fe--}else for(;Fe<0;){for(var Ne=u[0],ft=0;ft<=Q;ft++)u[ft]=u[ft+1];u[Q-1]=Ne,Fe++}break;case 34:ge=v+u.shift(),we=p,Re=ge+u.shift(),De=we+u.shift();var Je=Re+u.shift(),Ut=De,jt=Je+u.shift(),kt=Ut,Kt=jt+u.shift(),dr=kt,F=Kt+u.shift(),te=dr;v=F,p=te,c.bezierCurveTo(ge,we,Re,De,Je,Ut),c.bezierCurveTo(jt,kt,Kt,dr,F,te);break;case 35:for(var ne=[],ve=0;ve<=5;ve++)v+=u.shift(),p+=u.shift(),ne.push(v,p);c.bezierCurveTo.apply(c,ne.slice(0,6)),c.bezierCurveTo.apply(c,ne.slice(6)),u.shift();break;case 36:ge=v+u.shift(),we=p+u.shift(),Re=ge+u.shift(),De=we+u.shift(),Je=Re+u.shift(),Ut=De,jt=Je+u.shift(),kt=Ut,Kt=jt+u.shift(),dr=kt+u.shift(),F=Kt+u.shift(),te=dr,v=F,p=te,c.bezierCurveTo(ge,we,Re,De,Je,Ut),c.bezierCurveTo(jt,kt,Kt,dr,F,te);break;case 37:var M=v,Y=p;ne=[];for(var A=0;A<=4;A++)v+=u.shift(),p+=u.shift(),ne.push(v,p);Math.abs(v-M)>Math.abs(p-Y)?(v+=u.shift(),p=Y):(v=M,p+=u.shift()),ne.push(v,p),c.bezierCurveTo.apply(c,ne.slice(0,6)),c.bezierCurveTo.apply(c,ne.slice(6));break;default:throw new Error("Unknown op: 12 "+H)}break;default:throw new Error("Unknown op: "+H)}else if(H<247)u.push(H-139);else if(H<251){var re=i.readUInt8();u.push((H-247)*256+re+108)}else if(H<255){var re=i.readUInt8();u.push(-(H-251)*256-re-108)}else u.push(i.readInt32BE()/65536)}};return q(),S&&c.closePath(),c},e}(Pu);function DC(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var BC=new l.Struct({originX:l.uint16,originY:l.uint16,type:new l.String(4),data:new l.Buffer(function(t){return t.parent.buflen-t._currentOffset})}),RC=function(t){DC(e,t);function e(){return t.apply(this,arguments)||this}var r=e.prototype;return r.getImageForSize=function(i){for(var a=0;a=i)break}var s=o.imageOffsets,c=s[this.id],u=s[this.id+1];return c===u?null:(this._font.stream.pos=c,BC.decode(this._font.stream,{buflen:u-c}))},r.render=function(i,a){var o=this.getImageForSize(a);if(o!=null){var s=a/this._font.unitsPerEm;i.image(o.data,{height:a,x:o.originX,y:(this.bbox.minY-o.originY)*s})}this._font.sbix.flags.renderOutlines&&t.prototype.render.call(this,i,a)},e}(fc);function NC(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=MC(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function MC(t,e){if(t){if(typeof t=="string")return Pv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Pv(t,e)}}function Pv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r>1,u=a.baseGlyphRecord[c];if(this.idu.gid)o=c+1;else{var f=u;break}}if(f==null){var h=this._font._getBaseGlyph(this.id),d={red:0,green:0,blue:0,alpha:255};return[new Ev(h,d)]}for(var v=[],p=f.firstLayerIndex;p=1&&i[a]=a.glyphCount)){var o=a.offsets[n];if(o!==a.offsets[n+1]){var s=this.font.stream;if(s.pos=o,!(s.pos>=s.length)){var c=s.readUInt16BE(),u=o+s.readUInt16BE();if(c&VC){var f=s.pos;s.pos=u;var h=this.decodePoints();u=s.pos,s.pos=f}var d=i.map(function(Ce){return Ce.copy()});c&=qC;for(var v=0;v=a.globalCoordCount)throw new Error("Invalid gvar table");var w=a.globalCoords[y&Dv]}if(y&Iv){for(var E=[],k=0;ko[f])return 0;s[f]Math.max(0,i[f]))return 0;u=(u*s[f]+Number.EPSILON)/(i[f]+Number.EPSILON)}}return u},e.interpolateMissingDeltas=function(n,i,a){if(n.length!==0)for(var o=0;oc)){var f=o,h=o;for(o++;o<=c;)a[o]&&(this.deltaInterpolate(h+1,o-1,h,o,i,n),h=o),o++;h===f?this.deltaShift(s,c,h,i,n):(this.deltaInterpolate(h+1,c,h,f,i,n),f>0&&this.deltaInterpolate(s,f-1,h,f,i,n)),o=c+1}}},e.deltaInterpolate=function(n,i,a,o,s,c){if(!(n>i))for(var u=["x","y"],f=0;fs[o][h]){var d=a;a=o,o=d}var v=s[a][h],p=s[o][h],y=c[a][h],w=c[o][h];if(v!==p||y===w)for(var S=v===p?0:(w-y)/(p-v),E=n;E<=i;E++){var k=s[E][h];k<=v?k+=y-v:k>=p?k+=w-p:k=y+(k-v)*S,c[E][h]=k}}},e.deltaShift=function(n,i,a,o,s){var c=s[a].x-o[a].x,u=s[a].y-o[a].y;if(!(c===0&&u===0))for(var f=n;f<=i;f++)f!==a&&(s[f].x+=c,s[f].y+=u)},e.getAdvanceAdjustment=function(n,i){var a,o;if(i.advanceWidthMapping){var s=n;s>=i.advanceWidthMapping.mapCount&&(s=i.advanceWidthMapping.mapCount-1),i.advanceWidthMapping.entryFormat;var c=i.advanceWidthMapping.mapData[s];a=c.outerIndex,o=c.innerIndex}else a=0,o=n;return this.getDelta(i.itemVariationStore,a,o)},e.getDelta=function(n,i,a){if(i>=n.itemVariationData.length)return 0;var o=n.itemVariationData[i];if(a>=o.deltaSets.length)return 0;for(var s=o.deltaSets[a],c=this.getBlendVector(n,i),u=0,f=0;fv.peakCoord||v.peakCoord>v.endCoord||v.startCoord<0&&v.endCoord>0&&v.peakCoord!==0||v.peakCoord===0?p=1:o[d]v.endCoord?p=0:o[d]===v.peakCoord?p=1:o[d]"u"&&(u=!0),typeof f>"u"&&(f=1/0);function y(w,S){if(w===null)return null;if(S==0)return w;var E,k;if(typeof w!="object")return w;if(r.__isArray(w))E=[];else if(r.__isRegExp(w))E=new RegExp(w.source,s(w)),w.lastIndex&&(E.lastIndex=w.lastIndex);else if(r.__isDate(w))E=new Date(w.getTime());else{if(p&&Ot.isBuffer(w))return Ot.allocUnsafe?E=Ot.allocUnsafe(w.length):E=new Ot(w.length),w.copy(E),E;typeof h>"u"?(k=Object.getPrototypeOf(w),E=Object.create(k)):(E=Object.create(h),k=h)}if(u){var I=d.indexOf(w);if(I!=-1)return v[I];d.push(w),v.push(E)}for(var D in w){var R;k&&(R=Object.getOwnPropertyDescriptor(k,D)),!(R&&R.set==null)&&(E[D]=y(w[D],S-1))}return E}return y(c,f)}r.clonePrototype=function(u){if(u===null)return null;var f=function(){};return f.prototype=u,new f};function n(c){return Object.prototype.toString.call(c)}r.__objToStr=n;function i(c){return typeof c=="object"&&n(c)==="[object Date]"}r.__isDate=i;function a(c){return typeof c=="object"&&n(c)==="[object Array]"}r.__isArray=a;function o(c){return typeof c=="object"&&n(c)==="[object RegExp]"}r.__isRegExp=o;function s(c){var u="";return c.global&&(u+="g"),c.ignoreCase&&(u+="i"),c.multiline&&(u+="m"),u}return r.__getRegExpFlags=s,r}();t.exports&&(t.exports=e)}),Y1=function(){function t(r){this.font=r,this.glyphs=[],this.mapping={},this.includeGlyph(0)}var e=t.prototype;return e.includeGlyph=function(n){return typeof n=="object"&&(n=n.id),this.mapping[n]==null&&(this.glyphs.push(n),this.mapping[n]=this.glyphs.length-1),this.mapping[n]},e.encodeStream=function(){var n=this,i=new l.EncodeStream;return kr(function(){return n.encode(i),i.end()}),i},t}(),YC=1,JC=2,QC=4,_C=8,$C=16,ek=32,Nv=function(){function t(){}return t.size=function(r){return r>=0&&r<=255?1:2},t.encode=function(r,n){n>=0&&n<=255?r.writeUInt8(n):r.writeInt16BE(n)},t}(),Mv=new l.Struct({numberOfContours:l.int16,xMin:l.int16,yMin:l.int16,xMax:l.int16,yMax:l.int16,endPtsOfContours:new l.Array(l.uint16,"numberOfContours"),instructions:new l.Array(l.uint8,l.uint16),flags:new l.Array(l.uint8,0),xPoints:new l.Array(Nv,0),yPoints:new l.Array(Nv,0)}),tk=function(){function t(){}var e=t.prototype;return e.encodeSimple=function(n,i){i===void 0&&(i=[]);for(var a=[],o=[],s=[],c=[],u=0,f=0,h=0,d=0,v=0,p=0;p0&&(c.push(u),u=0),c.push(k),d=k),f=S,h=E,v++}y.command==="closePath"&&a.push(v-1)}n.commands.length>1&&n.commands[n.commands.length-1].command!=="closePath"&&a.push(v-1);var L=n.bbox,j={numberOfContours:a.length,xMin:L.minX,yMin:L.minY,xMax:L.maxX,yMax:L.maxY,endPtsOfContours:a,instructions:i,flags:c,xPoints:o,yPoints:s},U=Mv.size(j),V=4-U%4,G=new l.EncodeStream(U+V);return Mv.encode(G,j),V!==0&&G.fill(0,V),G.buffer},e._encodePoint=function(n,i,a,o,s,c){var u=n-i;return n===i?o|=c:(-255<=u&&u<=255&&(o|=s,u<0?u=-u:o|=c),a.push(u)),o},t}();function rk(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=nk(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function nk(t,e){if(t){if(typeof t=="string")return Lv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Lv(t,e)}}function Lv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=ok(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function ok(t,e){if(t){if(typeof t=="string")return Uv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Uv(t,e)}}function Uv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r255?2:1,ranges:[{first:1,nLeft:this.charstrings.length-2}]},o=Object.assign({},this.cff.topDict);o.Private=null,o.charset=a,o.Encoding=null,o.CharStrings=this.charstrings;for(var s=0,c=["version","Notice","Copyright","FullName","FamilyName","Weight","PostScript","BaseFontName","FontName"];s"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=ck(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function ck(t,e){if(t){if(typeof t=="string")return jv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return jv(t,e)}}function jv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&Object.defineProperty(this,i,{get:this._getTable.bind(this,a)})}}var e=t.prototype;return e._getTable=function(n){if(!(n.tag in this._tables))try{this._tables[n.tag]=this._decodeTable(n)}catch(i){Qi.logErrors&&(console.error("Error decoding table "+n.tag),console.error(i.stack))}return this._tables[n.tag]},e._getTableStream=function(n){var i=this.directory.tables[n];return i?(this.stream.pos=i.offset,this.stream):null},e._decodeDirectory=function(){return this.directory=nc.decode(this.stream,{_startOffset:0})},e._decodeTable=function(n){var i=this.stream.pos,a=this._getTableStream(n.tag),o=qe[n.tag].decode(a,this,n.length);return this.stream.pos=i,o},e.getName=function(n,i){i===void 0&&(i="en");var a=this.name.records[n];return a?a[i]:null},e.hasGlyphForCodePoint=function(n){return!!this._cmapProcessor.lookup(n)},e.glyphForCodePoint=function(n){return this.getGlyph(this._cmapProcessor.lookup(n),[n])},e.glyphsForString=function(n){for(var i=[],a=n.length,o=0,s=-1,c=-1;o<=a;){var u=0,f=0;if(o"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=dk(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function dk(t,e){if(t){if(typeof t=="string")return Vv(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Vv(t,e)}}function Vv(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r>>=1,e}function sn(t,e,r){if(!e)return r;for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<>>16-e;return t.tag>>>=e,t.bitcount-=e,n+r}function Jl(t,e){for(;t.bitcount<24;)t.tag|=t.source[t.sourceIndex++]<>>=1,++i,r+=e.table[i],n-=e.table[i];while(n>=0);return t.tag=a,t.bitcount-=i,e.trans[r+n]}function bk(t,e,r){var n,i,a,o,s,c;for(n=sn(t,5,257),i=sn(t,5,1),a=sn(t,4,4),o=0;o<19;++o)rn[o]=0;for(o=0;o8;)t.sourceIndex--,t.bitcount-=8;if(e=t.source[t.sourceIndex+1],e=256*e+t.source[t.sourceIndex],r=t.source[t.sourceIndex+3],r=256*r+t.source[t.sourceIndex+2],e!==(~r&65535))return Q1;for(t.sourceIndex+=4,n=e;n;--n)t.dest[t.destLen++]=t.source[t.sourceIndex++];return t.bitcount=0,ih}function Sk(t,e){var r=new pk(t,e),n,i,a;do{switch(n=mk(r),i=sn(r,2,0),i){case 0:a=wk(r);break;case 1:a=Gv(r,_1,$1);break;case 2:bk(r,r.ltree,r.dtree),a=Gv(r,r.ltree,r.dtree);break;default:a=Q1}if(a!==ih)throw new Error("Data error")}while(!n);return r.destLenthis.buffer.length&&(r=this.buffer.length-this.pos);for(var n=0;nthis.buffer.length)throw new Error("Output buffer is not large enough");return this.buffer.set(t.subarray(0,e),this.pos),this.pos+=e,e};var xk=ig,ag={BrotliInput:Fk,BrotliOutput:xk},Ui=4096,Tk=2*Ui+32,og=2*Ui-1,Ok=new Uint32Array([0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535,131071,262143,524287,1048575,2097151,4194303,8388607,16777215]);function _i(t){this.buf_=new Uint8Array(Tk),this.input_=t,this.reset()}_i.READ_SIZE=Ui;_i.IBUF_MASK=og;_i.prototype.reset=function(){this.buf_ptr_=0,this.val_=0,this.pos_=0,this.bit_pos_=0,this.bit_end_pos_=0,this.eos_=0,this.readMoreInput();for(var t=0;t<4;t++)this.val_|=this.buf_[this.pos_]<<8*t,++this.pos_;return this.bit_end_pos_>0};_i.prototype.readMoreInput=function(){if(!(this.bit_end_pos_>256))if(this.eos_){if(this.bit_pos_>this.bit_end_pos_)throw new Error("Unexpected end of input "+this.bit_pos_+" "+this.bit_end_pos_)}else{var t=this.buf_ptr_,e=this.input_.read(this.buf_,t,Ui);if(e<0)throw new Error("Unexpected end of input");if(e=8;)this.val_>>>=8,this.val_|=this.buf_[this.pos_&og]<<24,++this.pos_,this.bit_pos_=this.bit_pos_-8>>>0,this.bit_end_pos_=this.bit_end_pos_-8>>>0};_i.prototype.readBits=function(t){32-this.bit_pos_>>this.bit_pos_&Ok[t];return this.bit_pos_+=t,e};var Fa=_i,Pk=Bk,Ek=Nk,Ik=Uk,fn=[],Rr=[],Dk=typeof Uint8Array<"u"?Uint8Array:Array,hl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(Oi=0,Hv=hl.length;Oi0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var n=r===e?0:4-r%4;return[r,n]}function Bk(t){var e=sg(t),r=e[0],n=e[1];return(r+n)*3/4-n}function Rk(t,e,r){return(e+r)*3/4-r}function Nk(t){for(var e,r=sg(t),n=r[0],i=r[1],a=new Dk(Rk(t,n,i)),o=0,s=i>0?n-4:n,c=0;c>16&255,a[o++]=e>>8&255,a[o++]=e&255;return i===2&&(e=Rr[t.charCodeAt(c)]<<2|Rr[t.charCodeAt(c+1)]>>4,a[o++]=e&255),i===1&&(e=Rr[t.charCodeAt(c)]<<10|Rr[t.charCodeAt(c+1)]<<4|Rr[t.charCodeAt(c+2)]>>2,a[o++]=e>>8&255,a[o++]=e&255),a}function Mk(t){return fn[t>>18&63]+fn[t>>12&63]+fn[t>>6&63]+fn[t&63]}function Lk(t,e,r){for(var n,i=[],a=e;as?s:o+a));return n===1?(e=t[r-1],i.push(fn[e>>2]+fn[e<<4&63]+"==")):n===2&&(e=(t[r-2]<<8)+t[r-1],i.push(fn[e>>10]+fn[e>>4&63]+fn[e<<2&63]+"=")),i.join("")}var zk={byteLength:Pk,toByteArray:Ek,fromByteArray:Ik},jk="W5/fcQLn5gKf2XUbAiQ1XULX+TZz6ADToDsgqk6qVfeC0e4m6OO2wcQ1J76ZBVRV1fRkEsdu//62zQsFEZWSTCnMhcsQKlS2qOhuVYYMGCkV0fXWEoMFbESXrKEZ9wdUEsyw9g4bJlEt1Y6oVMxMRTEVbCIwZzJzboK5j8m4YH02qgXYhv1V+PM435sLVxyHJihaJREEhZGqL03txGFQLm76caGO/ovxKvzCby/3vMTtX/459f0igi7WutnKiMQ6wODSoRh/8Lx1V3Q99MvKtwB6bHdERYRY0hStJoMjNeTsNX7bn+Y7e4EQ3bf8xBc7L0BsyfFPK43dGSXpL6clYC/I328h54/VYrQ5i0648FgbGtl837svJ35L3Mot/+nPlNpWgKx1gGXQYqX6n+bbZ7wuyCHKcUok12Xjqub7NXZGzqBx0SD+uziNf87t7ve42jxSKQoW3nyxVrWIGlFShhCKxjpZZ5MeGna0+lBkk+kaN8F9qFBAFgEogyMBdcX/T1W/WnMOi/7ycWUQloEBKGeC48MkiwqJkJO+12eQiOFHMmck6q/IjWW3RZlany23TBm+cNr/84/oi5GGmGBZWrZ6j+zykVozz5fT/QH/Da6WTbZYYPynVNO7kxzuNN2kxKKWche5WveitPKAecB8YcAHz/+zXLjcLzkdDSktNIDwZE9J9X+tto43oJy65wApM3mDzYtCwX9lM+N5VR3kXYo0Z3t0TtXfgBFg7gU8oN0Dgl7fZlUbhNll+0uuohRVKjrEd8egrSndy5/Tgd2gqjA4CAVuC7ESUmL3DZoGnfhQV8uwnpi8EGvAVVsowNRxPudck7+oqAUDkwZopWqFnW1riss0t1z6iCISVKreYGNvQcXv+1L9+jbP8cd/dPUiqBso2q+7ZyFBvENCkkVr44iyPbtOoOoCecWsiuqMSML5lv+vN5MzUr+Dnh73G7Q1YnRYJVYXHRJaNAOByiaK6CusgFdBPE40r0rvqXV7tksKO2DrHYXBTv8P5ysqxEx8VDXUDDqkPH6NNOV/a2WH8zlkXRELSa8P+heNyJBBP7PgsG1EtWtNef6/i+lcayzQwQCsduidpbKfhWUDgAEmyhGu/zVTacI6RS0zTABrOYueemnVa19u9fT23N/Ta6RvTpof5DWygqreCqrDAgM4LID1+1T/taU6yTFVLqXOv+/MuQOFnaF8vLMKD7tKWDoBdALgxF33zQccCcdHx8fKIVdW69O7qHtXpeGr9jbbpFA+qRMWr5hp0s67FPc7HAiLV0g0/peZlW7hJPYEhZyhpSwahnf93/tZgfqZWXFdmdXBzqxGHLrQKxoAY6fRoBhgCRPmmGueYZ5JexTVDKUIXzkG/fqp/0U3hAgQdJ9zumutK6nqWbaqvm1pgu03IYR+G+8s0jDBBz8cApZFSBeuWasyqo2OMDKAZCozS+GWSvL/HsE9rHxooe17U3s/lTE+VZAk4j3dp6uIGaC0JMiqR5CUsabPyM0dOYDR7Ea7ip4USZlya38YfPtvrX/tBlhHilj55nZ1nfN24AOAi9BVtz/Mbn8AEDJCqJgsVUa6nQnSxv2Fs7l/NlCzpfYEjmPrNyib/+t0ei2eEMjvNhLkHCZlci4WhBe7ePZTmzYqlY9+1pxtS4GB+5lM1BHT9tS270EWUDYFq1I0yY/fNiAk4bk9yBgmef/f2k6AlYQZHsNFnW8wBQxCd68iWv7/35bXfz3JZmfGligWAKRjIs3IpzxQ27vAglHSiOzCYzJ9L9A1CdiyFvyR66ucA4jKifu5ehwER26yV7HjKqn5Mfozo7Coxxt8LWWPT47BeMxX8p0Pjb7hZn+6bw7z3Lw+7653j5sI8CLu5kThpMlj1m4c2ch3jGcP1FsT13vuK3qjecKTZk2kHcOZY40UX+qdaxstZqsqQqgXz+QGF99ZJLqr3VYu4aecl1Ab5GmqS8k/GV5b95zxQ5d4EfXUJ6kTS/CXF/aiqKDOT1T7Jz5z0PwDUcwr9clLN1OJGCiKfqvah+h3XzrBOiLOW8wvn8gW6qE8vPxi+Efv+UH55T7PQFVMh6cZ1pZQlzJpKZ7P7uWvwPGJ6DTlR6wbyj3Iv2HyefnRo/dv7dNx+qaa0N38iBsR++Uil7Wd4afwDNsrzDAK4fXZwvEY/jdKuIKXlfrQd2C39dW7ntnRbIp9OtGy9pPBn/V2ASoi/2UJZfS+xuGLH8bnLuPlzdTNS6zdyk8Dt/h6sfOW5myxh1f+zf3zZ3MX/mO9cQPp5pOx967ZA6/pqHvclNfnUFF+rq+Vd7alKr6KWPcIDhpn6v2K6NlUu6LrKo8b/pYpU/Gazfvtwhn7tEOUuXht5rUJdSf6sLjYf0VTYDgwJ81yaqKTUYej/tbHckSRb/HZicwGJqh1mAHB/IuNs9dc9yuvF3D5Xocm3elWFdq5oEy70dYFit79yaLiNjPj5UUcVmZUVhQEhW5V2Z6Cm4HVH/R8qlamRYwBileuh07CbEce3TXa2JmXWBf+ozt319psboobeZhVnwhMZzOeQJzhpTDbP71Tv8HuZxxUI/+ma3XW6DFDDs4+qmpERwHGBd2edxwUKlODRdUWZ/g0GOezrbzOZauFMai4QU6GVHV6aPNBiBndHSsV4IzpvUiiYyg6OyyrL4Dj5q/Lw3N5kAwftEVl9rNd7Jk5PDij2hTH6wIXnsyXkKePxbmHYgC8A6an5Fob/KH5GtC0l4eFso+VpxedtJHdHpNm+Bvy4C79yVOkrZsLrQ3OHCeB0Ra+kBIRldUGlDCEmq2RwXnfyh6Dz+alk6eftI2n6sastRrGwbwszBeDRS/Fa/KwRJkCzTsLr/JCs5hOPE/MPLYdZ1F1fv7D+VmysX6NpOC8aU9F4Qs6HvDyUy9PvFGDKZ/P5101TYHFl8pjj6wm/qyS75etZhhfg0UEL4OYmHk6m6dO192AzoIyPSV9QedDA4Ml23rRbqxMPMxf7FJnDc5FTElVS/PyqgePzmwVZ26NWhRDQ+oaT7ly7ell4s3DypS1s0g+tOr7XHrrkZj9+x/mJBttrLx98lFIaRZzHz4aC7r52/JQ4VjHahY2/YVXZn/QC2ztQb/sY3uRlyc5vQS8nLPGT/n27495i8HPA152z7Fh5aFpyn1GPJKHuPL8Iw94DuW3KjkURAWZXn4EQy89xiKEHN1mk/tkM4gYDBxwNoYvRfE6LFqsxWJtPrDGbsnLMap3Ka3MUoytW0cvieozOmdERmhcqzG+3HmZv2yZeiIeQTKGdRT4HHNxekm1tY+/n06rGmFleqLscSERzctTKM6G9P0Pc1RmVvrascIxaO1CQCiYPE15bD7c3xSeW7gXxYjgxcrUlcbIvO0r+Yplhx0kTt3qafDOmFyMjgGxXu73rddMHpV1wMubyAGcf/v5dLr5P72Ta9lBF+fzMJrMycwv+9vnU3ANIl1cH9tfW7af8u0/HG0vV47jNFXzFTtaha1xvze/s8KMtCYucXc1nzfd/MQydUXn/b72RBt5wO/3jRcMH9BdhC/yctKBIveRYPrNpDWqBsO8VMmP+WvRaOcA4zRMR1PvSoO92rS7pYEv+fZfEfTMzEdM+6X5tLlyxExhqLRkms5EuLovLfx66de5fL2/yX02H52FPVwahrPqmN/E0oVXnsCKhbi/yRxX83nRbUKWhzYceXOntfuXn51NszJ6MO73pQf5Pl4in3ec4JU8hF7ppV34+mm9r1LY0ee/i1O1wpd8+zfLztE0cqBxggiBi5Bu95v9l3r9r/U5hweLn+TbfxowrWDqdJauKd8+q/dH8sbPkc9ttuyO94f7/XK/nHX46MPFLEb5qQlNPvhJ50/59t9ft3LXu7uVaWaO2bDrDCnRSzZyWvFKxO1+vT8MwwunR3bX0CkfPjqb4K9O19tn5X50PvmYpEwHtiW9WtzuV/s76B1zvLLNkViNd8ySxIl/3orfqP90TyTGaf7/rx8jQzeHJXdmh/N6YDvbvmTBwCdxfEQ1NcL6wNMdSIXNq7b1EUzRy1/Axsyk5p22GMG1b+GxFgbHErZh92wuvco0AuOLXct9hvw2nw/LqIcDRRmJmmZzcgUa7JpM/WV/S9IUfbF56TL2orzqwebdRD8nIYNJ41D/hz37Fo11p2Y21wzPcn713qVGhqtevStYfGH4n69OEJtPvbbLYWvscDqc3Hgnu166+tAyLnxrX0Y5zoYjV++1sI7t5kMr02KT/+uwtkc+rZLOf/qn/s3nYCf13Dg8/sB2diJgjGqjQ+TLhxbzyue2Ob7X6/9lUwW7a+lbznHzOYy8LKW1C/uRPbQY3KW/0gO9LXunHLvPL97afba9bFtc9hmz7GAttjVYlCvQAiOwAk/gC5+hkLEs6tr3AZKxLJtOEwk2dLxTYWsIB/j/ToWtIWzo906FrSG8iaqqqqqqiIiIiAgzMzMzNz+AyK+01/zi8n8S+Y1MjoRaQ80WU/G8MBlO+53VPXANrWm4wzGUVZUjjBJZVdhpcfkjsmcWaO+UEldXi1e+zq+HOsCpknYshuh8pOLISJun7TN0EIGW2xTnlOImeecnoGW4raxe2G1T3HEvfYUYMhG+gAFOAwh5nK8mZhwJMmN7r224QVsNFvZ87Z0qatvknklyPDK3Hy45PgVKXji52Wen4d4PlFVVYGnNap+fSpFbK90rYnhUc6n91Q3AY9E0tJOFrcfZtm/491XbcG/jsViUPPX76qmeuiz+qY1Hk7/1VPM405zWVuoheLUimpWYdVzCmUdKHebMdzgrYrb8mL2eeLSnRWHdonfZa8RsOU9F37w+591l5FLYHiOqWeHtE/lWrBHcRKp3uhtr8yXm8LU/5ms+NM6ZKsqu90cFZ4o58+k4rdrtB97NADFbwmEG7lXqvirhOTOqU14xuUF2myIjURcPHrPOQ4lmM3PeMg7bUuk0nnZi67bXsU6H8lhqIo8TaOrEafCO1ARK9PjC0QOoq2BxmMdgYB9G/lIb9++fqNJ2s7BHGFyBNmZAR8J3KCo012ikaSP8BCrf6VI0X5xdnbhHIO+B5rbOyB54zXkzfObyJ4ecwxfqBJMLFc7m59rNcw7hoHnFZ0b00zee+gTqvjm61Pb4xn0kcDX4jvHM0rBXZypG3DCKnD/Waa/ZtHmtFPgO5eETx+k7RrVg3aSwm2YoNXnCs3XPQDhNn+Fia6IlOOuIG6VJH7TP6ava26ehKHQa2T4N0tcZ9dPCGo3ZdnNltsHQbeYt5vPnJezV/cAeNypdml1vCHI8M81nSRP5Qi2+mI8v/sxiZru9187nRtp3f/42NemcONa+4eVC3PCZzc88aZh851CqSsshe70uPxeN/dmYwlwb3trwMrN1Gq8jbnApcVDx/yDPeYs5/7r62tsQ6lLg+DiFXTEhzR9dHqv0iT4tgj825W+H3XiRUNUZT2kR9Ri0+lp+UM3iQtS8uOE23Ly4KYtvqH13jghUntJRAewuzNLDXp8RxdcaA3cMY6TO2IeSFRXezeWIjCqyhsUdMYuCgYTZSKpBype1zRfq8FshvfBPc6BAQWl7/QxIDp3VGo1J3vn42OEs3qznws+YLRXbymyB19a9XBx6n/owcyxlEYyFWCi+kG9F+EyD/4yn80+agaZ9P7ay2Dny99aK2o91FkfEOY8hBwyfi5uwx2y5SaHmG+oq/zl1FX/8irOf8Y3vAcX/6uLP6A6nvMO24edSGPjQc827Rw2atX+z2bKq0CmW9mOtYnr5/AfDa1ZfPaXnKtlWborup7QYx+Or2uWb+N3N//2+yDcXMqIJdf55xl7/vsj4WoPPlxLxtVrkJ4w/tTe3mLdATOOYwxcq52w5Wxz5MbPdVs5O8/lhfE7dPj0bIiPQ3QV0iqm4m3YX8hRfc6jQ3fWepevMqUDJd86Z4vwM40CWHnn+WphsGHfieF02D3tmZvpWD+kBpNCFcLnZhcmmrhpGzzbdA+sQ1ar18OJD87IOKOFoRNznaHPNHUfUNhvY1iU+uhvEvpKHaUn3qK3exVVyX4joipp3um7FmYJWmA+WbIDshRpbVRx5/nqstCgy87FGbfVB8yDGCqS+2qCsnRwnSAN6zgzxfdB2nBT/vZ4/6uxb6oH8b4VBRxiIB93wLa47hG3w2SL/2Z27yOXJFwZpSJaBYyvajA7vRRYNKqljXKpt/CFD/tSMr18DKKbwB0xggBePatl1nki0yvqW5zchlyZmJ0OTxJ3D+fsYJs/mxYN5+Le5oagtcl+YsVvy8kSjI2YGvGjvmpkRS9W2dtXqWnVuxUhURm1lKtou/hdEq19VBp9OjGvHEQSmrpuf2R24mXGheil8KeiANY8fW1VERUfBImb64j12caBZmRViZHbeVMjCrPDg9A90IXrtnsYCuZtRQ0PyrKDjBNOsPfKsg1pA02gHlVr0OXiFhtp6nJqXVzcbfM0KnzC3ggOENPE9VBdmHKN6LYaijb4wXxJn5A0FSDF5j+h1ooZx885Jt3ZKzO5n7Z5WfNEOtyyPqQEnn7WLv5Fis3PdgMshjF1FRydbNyeBbyKI1oN1TRVrVK7kgsb/zjX4NDPIRMctVeaxVB38Vh1x5KbeJbU138AM5KzmZu3uny0ErygxiJF7GVXUrPzFxrlx1uFdAaZFDN9cvIb74qD9tzBMo7L7WIEYK+sla1DVMHpF0F7b3+Y6S+zjvLeDMCpapmJo1weBWuxKF3rOocih1gun4BoJh1kWnV/Jmiq6uOhK3VfKxEHEkafjLgK3oujaPzY6SXg8phhL4TNR1xvJd1Wa0aYFfPUMLrNBDCh4AuGRTbtKMc6Z1Udj8evY/ZpCuMAUefdo69DZUngoqE1P9A3PJfOf7WixCEj+Y6t7fYeHbbxUAoFV3M89cCKfma3fc1+jKRe7MFWEbQqEfyzO2x/wrO2VYH7iYdQ9BkPyI8/3kXBpLaCpU7eC0Yv/am/tEDu7HZpqg0EvHo0nf/R/gRzUWy33/HXMJQeu1GylKmOkXzlCfGFruAcPPhaGqZOtu19zsJ1SO2Jz4Ztth5cBX6mRQwWmDwryG9FUMlZzNckMdK+IoMJv1rOWnBamS2w2KHiaPMPLC15hCZm4KTpoZyj4E2TqC/P6r7/EhnDMhKicZZ1ZwxuC7DPzDGs53q8gXaI9kFTK+2LTq7bhwsTbrMV8Rsfua5lMS0FwbTitUVnVa1yTb5IX51mmYnUcP9wPr8Ji1tiYJeJV9GZTrQhF7vvdU2OTU42ogJ9FDwhmycI2LIg++03C6scYhUyUuMV5tkw6kGUoL+mjNC38+wMdWNljn6tGPpRES7veqrSn5TRuv+dh6JVL/iDHU1db4c9WK3++OrH3PqziF916UMUKn8G67nN60GfWiHrXYhUG3yVWmyYak59NHj8t1smG4UDiWz2rPHNrKnN4Zo1LBbr2/eF9YZ0n0blx2nG4X+EKFxvS3W28JESD+FWk61VCD3z/URGHiJl++7TdBwkCj6tGOH3qDb0QqcOF9Kzpj0HUb/KyFW3Yhj2VMKJqGZleFBH7vqvf7WqLC3XMuHV8q8a4sTFuxUtkD/6JIBvKaVjv96ndgruKZ1k/BHzqf2K9fLk7HGXANyLDd1vxkK/i055pnzl+zw6zLnwXlVYVtfmacJgEpRP1hbGgrYPVN6v2lG+idQNGmwcKXu/8xEj/P6qe/sB2WmwNp6pp8jaISMkwdleFXYK55NHWLTTbutSUqjBfDGWo/Yg918qQ+8BRZSAHZbfuNZz2O0sov1Ue4CWlVg3rFhM3Kljj9ksGd/NUhk4nH+a5UN2+1i8+NM3vRNp7uQ6sqexSCukEVlVZriHNqFi5rLm9TMWa4qm3idJqppQACol2l4VSuvWLfta4JcXy3bROPNbXOgdOhG47LC0CwW/dMlSx4Jf17aEU3yA1x9p+Yc0jupXgcMuYNku64iYOkGToVDuJvlbEKlJqsmiHbvNrIVZEH+yFdF8DbleZ6iNiWwMqvtMp/mSpwx5KxRrT9p3MAPTHGtMbfvdFhyj9vhaKcn3At8Lc16Ai+vBcSp1ztXi7rCJZx/ql7TXcclq6Q76UeKWDy9boS0WHIjUuWhPG8LBmW5y2rhuTpM5vsLt+HOLh1Yf0DqXa9tsfC+kaKt2htA0ai/L2i7RKoNjEwztkmRU0GfgW1TxUvPFhg0V7DdfWJk5gfrccpYv+MA9M0dkGTLECeYwUixRzjRFdmjG7zdZIl3XKB9YliNKI31lfa7i2JG5C8Ss+rHe0D7Z696/V3DEAOWHnQ9yNahMUl5kENWS6pHKKp2D1BaSrrHdE1w2qNxIztpXgUIrF0bm15YML4b6V1k+GpNysTahKMVrrS85lTVo9OGJ96I47eAy5rYWpRf/mIzeoYU1DKaQCTUVwrhHeyNoDqHel+lLxr9WKzhSYw7vrR6+V5q0pfi2k3L1zqkubY6rrd9ZLvSuWNf0uqnkY+FpTvFzSW9Fp0b9l8JA7THV9eCi/PY/SCZIUYx3BU2alj7Cm3VV6eYpios4b6WuNOJdYXUK3zTqj5CVG2FqYM4Z7CuIU0qO05XR0d71FHM0YhZmJmTRfLlXEumN82BGtzdX0S19t1e+bUieK8zRmqpa4Qc5TSjifmaQsY2ETLjhI36gMR1+7qpjdXXHiceUekfBaucHShAOiFXmv3sNmGQyU5iVgnoocuonQXEPTFwslHtS8R+A47StI9wj0iSrtbi5rMysczFiImsQ+bdFClnFjjpXXwMy6O7qfjOr8Fb0a7ODItisjnn3EQO16+ypd1cwyaAW5Yzxz5QknfMO7643fXW/I9y3U2xH27Oapqr56Z/tEzglj6IbT6HEHjopiXqeRbe5mQQvxtcbDOVverN0ZgMdzqRYRjaXtMRd56Q4cZSmdPvZJdSrhJ1D9zNXPqAEqPIavPdfubt5oke2kmv0dztIszSv2VYuoyf1UuopbsYb+uX9h6WpwjpgtZ6fNNawNJ4q8O3CFoSbioAaOSZMx2GYaPYB+rEb6qjQiNRFQ76TvwNFVKD+BhH9VhcKGsXzmMI7BptU/CNWolM7YzROvpFAntsiWJp6eR2d3GarcYShVYSUqhmYOWj5E96NK2WvmYNTeY7Zs4RUEdv9h9QT4EseKt6LzLrqEOs3hxAY1MaNWpSa6zZx8F3YOVeCYMS88W+CYHDuWe4yoc6YK+djDuEOrBR5lvh0r+Q9uM88lrjx9x9AtgpQVNE8r+3O6Gvw59D+kBF/UMXyhliYUtPjmvXGY6Dk3x+kEOW+GtdMVC4EZTqoS/jmR0P0LS75DOc/w2vnri97M4SdbZ8qeU7gg8DVbERkU5geaMQO3mYrSYyAngeUQqrN0C0/vsFmcgWNXNeidsTAj7/4MncJR0caaBUpbLK1yBCBNRjEv6KvuVSdpPnEMJdsRRtqJ+U8tN1gXA4ePHc6ZT0eviI73UOJF0fEZ8YaneAQqQdGphNvwM4nIqPnXxV0xA0fnCT+oAhJuyw/q8jO0y8CjSteZExwBpIN6SvNp6A5G/abi6egeND/1GTguhuNjaUbbnSbGd4L8937Ezm34Eyi6n1maeOBxh3PI0jzJDf5mh/BsLD7F2GOKvlA/5gtvxI3/eV4sLfKW5Wy+oio+es/u6T8UU+nsofy57Icb/JlZHPFtCgd/x+bwt3ZT+xXTtTtTrGAb4QehC6X9G+8YT+ozcLxDsdCjsuOqwPFnrdLYaFc92Ui0m4fr39lYmlCaqTit7G6O/3kWDkgtXjNH4BiEm/+jegQnihOtfffn33WxsFjhfMd48HT+f6o6X65j7XR8WLSHMFkxbvOYsrRsF1bowDuSQ18Mkxk4qz2zoGPL5fu9h2Hqmt1asl3Q3Yu3szOc+spiCmX4AETBM3pLoTYSp3sVxahyhL8eC4mPN9k2x3o0xkiixIzM3CZFzf5oR4mecQ5+ax2wCah3/crmnHoqR0+KMaOPxRif1oEFRFOO/kTPPmtww+NfMXxEK6gn6iU32U6fFruIz8Q4WgljtnaCVTBgWx7diUdshC9ZEa5yKpRBBeW12r/iNc/+EgNqmhswNB8SBoihHXeDF7rrWDLcmt3V8GYYN7pXRy4DZjj4DJuUBL5iC3DQAaoo4vkftqVTYRGLS3mHZ7gdmdTTqbgNN/PTdTCOTgXolc88MhXAEUMdX0iy1JMuk5wLsgeu0QUYlz2S4skTWwJz6pOm/8ihrmgGfFgri+ZWUK2gAPHgbWa8jaocdSuM4FJYoKicYX/ZSENkg9Q1ZzJfwScfVnR2DegOGwCvmogaWJCLQepv9WNlU6QgsmOwICquU28Mlk3d9W5E81lU/5Ez0LcX6lwKMWDNluNKfBDUy/phJgBcMnfkh9iRxrdOzgs08JdPB85Lwo+GUSb4t3nC+0byqMZtO2fQJ4U2zGIr49t/28qmmGv2RanDD7a3FEcdtutkW8twwwlUSpb8QalodddbBfNHKDQ828BdE7OBgFdiKYohLawFYqpybQoxATZrheLhdI7+0Zlu9Q1myRcd15r9UIm8K2LGJxqTegntqNVMKnf1a8zQiyUR1rxoqjiFxeHxqFcYUTHfDu7rhbWng6qOxOsI+5A1p9mRyEPdVkTlE24vY54W7bWc6jMgZvNXdfC9/9q7408KDsbdL7Utz7QFSDetz2picArzrdpL8OaCHC9V26RroemtDZ5yNM/KGkWMyTmfnInEvwtSD23UcFcjhaE3VKzkoaEMKGBft4XbIO6forTY1lmGQwVmKicBCiArDzE+1oIxE08fWeviIOD5TznqH+OoHadvoOP20drMPe5Irg3XBQziW2XDuHYzjqQQ4wySssjXUs5H+t3FWYMHppUnBHMx/nYIT5d7OmjDbgD9F6na3m4l7KdkeSO3kTEPXafiWinogag7b52taiZhL1TSvBFmEZafFq2H8khQaZXuitCewT5FBgVtPK0j4xUHPfUz3Q28eac1Z139DAP23dgki94EC8vbDPTQC97HPPSWjUNG5tWKMsaxAEMKC0665Xvo1Ntd07wCLNf8Q56mrEPVpCxlIMVlQlWRxM3oAfpgIc+8KC3rEXUog5g06vt7zgXY8grH7hhwVSaeuvC06YYRAwpbyk/Unzj9hLEZNs2oxPQB9yc+GnL6zTgq7rI++KDJwX2SP8Sd6YzTuw5lV/kU6eQxRD12omfQAW6caTR4LikYkBB1CMOrvgRr/VY75+NSB40Cni6bADAtaK+vyxVWpf9NeKJxN2KYQ8Q2xPB3K1s7fuhvWbr2XpgW044VD6DRs0qXoqKf1NFsaGvKJc47leUV3pppP/5VTKFhaGuol4Esfjf5zyCyUHmHthChcYh4hYLQF+AFWsuq4t0wJyWgdwQVOZiV0efRHPoK5+E1vjz9wTJmVkITC9oEstAsyZSgE/dbicwKr89YUxKZI+owD205Tm5lnnmDRuP/JnzxX3gMtlrcX0UesZdxyQqYQuEW4R51vmQ5xOZteUd8SJruMlTUzhtVw/Nq7eUBcqN2/HVotgfngif60yKEtoUx3WYOZlVJuJOh8u59fzSDPFYtQgqDUAGyGhQOAvKroXMcOYY0qjnStJR/G3aP+Jt1sLVlGV8POwr/6OGsqetnyF3TmTqZjENfnXh51oxe9qVUw2M78EzAJ+IM8lZ1MBPQ9ZWSVc4J3mWSrLKrMHReA5qdGoz0ODRsaA+vwxXA2cAM4qlfzBJA6581m4hzxItQw5dxrrBL3Y6kCbUcFxo1S8jyV44q//+7ASNNudZ6xeaNOSIUffqMn4A9lIjFctYn2gpEPAb3f7p3iIBN8H14FUGQ9ct2hPsL+cEsTgUrR47uJVN4n4wt/wgfwwHuOnLd4yobkofy8JvxSQTA7rMpDIc608SlZFJfZYcmbT0tAHpPE8MrtQ42siTUNWxqvWZOmvu9f0JPoQmg+6l7sZWwyfi6PXkxJnwBraUG0MYG4zYHQz3igy/XsFkx5tNQxw43qvI9dU3f0DdhOUlHKjmi1VAr2Kiy0HZwD8VeEbhh0OiDdMYspolQsYdSwjCcjeowIXNZVUPmL2wwIkYhmXKhGozdCJ4lRKbsf4NBh/XnQoS92NJEWOVOFs2YhN8c5QZFeK0pRdAG40hqvLbmoSA8xQmzOOEc7wLcme9JOsjPCEgpCwUs9E2DohMHRhUeyGIN6TFvrbny8nDuilsDpzrH5mS76APoIEJmItS67sQJ+nfwddzmjPxcBEBBCw0kWDwd0EZCkNeOD7NNQhtBm7KHL9mRxj6U1yWU2puzlIDtpYxdH4ZPeXBJkTGAJfUr/oTCz/iypY6uXaR2V1doPxJYlrw2ghH0D5gbrhFcIxzYwi4a/4hqVdf2DdxBp6vGYDjavxMAAoy+1+3aiO6S3W/QAKNVXagDtvsNtx7Ks+HKgo6U21B+QSZgIogV5Bt+BnXisdVfy9VyXV+2P5fMuvdpAjM1o/K9Z+XnE4EOCrue+kcdYHqAQ0/Y/OmNlQ6OI33jH/uD1RalPaHpJAm2av0/xtpqdXVKNDrc9F2izo23Wu7firgbURFDNX9eGGeYBhiypyXZft2j3hTvzE6PMWKsod//rEILDkzBXfi7xh0eFkfb3/1zzPK/PI5Nk3FbZyTl4mq5BfBoVoqiPHO4Q4QKZAlrQ3MdNfi3oxIjvsM3kAFv3fdufurqYR3PSwX/mpGy/GFI/B2MNPiNdOppWVbs/gjF3YH+QA9jMhlAbhvasAHstB0IJew09iAkmXHl1/TEj+jvHOpOGrPRQXbPADM+Ig2/OEcUcpgPTItMtW4DdqgfYVI/+4hAFWYjUGpOP/UwNuB7+BbKOcALbjobdgzeBQfjgNSp2GOpxzGLj70Vvq5cw2AoYENwKLUtJUX8sGRox4dVa/TN4xKwaKcl9XawQR/uNus700Hf17pyNnezrUgaY9e4MADhEDBpsJT6y1gDJs1q6wlwGhuUzGR7C8kgpjPyHWwsvrf3yn1zJEIRa5eSxoLAZOCR9xbuztxFRJW9ZmMYfCFJ0evm9F2fVnuje92Rc4Pl6A8bluN8MZyyJGZ0+sNSb//DvAFxC2BqlEsFwccWeAl6CyBcQV1bx4mQMBP1Jxqk1EUADNLeieS2dUFbQ/c/kvwItbZ7tx0st16viqd53WsRmPTKv2AD8CUnhtPWg5aUegNpsYgasaw2+EVooeNKmrW3MFtj76bYHJm5K9gpAXZXsE5U8DM8XmVOSJ1F1WnLy6nQup+jx52bAb+rCq6y9WXl2B2oZDhfDkW7H3oYfT/4xx5VncBuxMXP2lNfhUVQjSSzSRbuZFE4vFawlzveXxaYKVs8LpvAb8IRYF3ZHiRnm0ADeNPWocwxSzNseG7NrSEVZoHdKWqaGEBz1N8Pt7kFbqh3LYmAbm9i1IChIpLpM5AS6mr6OAPHMwwznVy61YpBYX8xZDN/a+lt7n+x5j4bNOVteZ8lj3hpAHSx1VR8vZHec4AHO9XFCdjZ9eRkSV65ljMmZVzaej2qFn/qt1lvWzNZEfHxK3qOJrHL6crr0CRzMox5f2e8ALBB4UGFZKA3tN6F6IXd32GTJXGQ7DTi9j/dNcLF9jCbDcWGKxoKTYblIwbLDReL00LRcDPMcQuXLMh5YzgtfjkFK1DP1iDzzYYVZz5M/kWYRlRpig1htVRjVCknm+h1M5LiEDXOyHREhvzCGpFZjHS0RsK27o2avgdilrJkalWqPW3D9gmwV37HKmfM3F8YZj2ar+vHFvf3B8CRoH4kDHIK9mrAg+owiEwNjjd9V+FsQKYR8czJrUkf7Qoi2YaW6EVDZp5zYlqiYtuXOTHk4fAcZ7qBbdLDiJq0WNV1l2+Hntk1mMWvxrYmc8kIx8G3rW36J6Ra4lLrTOCgiOihmow+YnzUT19jbV2B3RWqSHyxkhmgsBqMYWvOcUom1jDQ436+fcbu3xf2bbeqU/ca+C4DOKE+e3qvmeMqW3AxejfzBRFVcwVYPq4L0APSWWoJu+5UYX4qg5U6YTioqQGPG9XrnuZ/BkxuYpe6Li87+18EskyQW/uA+uk2rpHpr6hut2TlVbKgWkFpx+AZffweiw2+VittkEyf/ifinS/0ItRL2Jq3tQOcxPaWO2xrG68GdFoUpZgFXaP2wYVtRc6xYCfI1CaBqyWpg4bx8OHBQwsV4XWMibZZ0LYjWEy2IxQ1mZrf1/UNbYCJplWu3nZ4WpodIGVA05d+RWSS+ET9tH3RfGGmNI1cIY7evZZq7o+a0bjjygpmR3mVfalkT/SZGT27Q8QGalwGlDOS9VHCyFAIL0a1Q7JiW3saz9gqY8lqKynFrPCzxkU4SIfLc9VfCI5edgRhDXs0edO992nhTKHriREP1NJC6SROMgQ0xO5kNNZOhMOIT99AUElbxqeZF8A3xrfDJsWtDnUenAHdYWSwAbYjFqQZ+D5gi3hNK8CSxU9i6f6ClL9IGlj1OPMQAsr84YG6ijsJpCaGWj75c3yOZKBB9mNpQNPUKkK0D6wgLH8MGoyRxTX6Y05Q4AnYNXMZwXM4eij/9WpsM/9CoRnFQXGR6MEaY+FXvXEO3RO0JaStk6OXuHVATHJE+1W+TU3bSZ2ksMtqjO0zfSJCdBv7y2d8DMx6TfVme3q0ZpTKMMu4YL/t7ciTNtdDkwPogh3Cnjx7qk08SHwf+dksZ7M2vCOlfsF0hQ6J4ehPCaHTNrM/zBSOqD83dBEBCW/F/LEmeh0nOHd7oVl3/Qo/9GUDkkbj7yz+9cvvu+dDAtx8NzCDTP4iKdZvk9MWiizvtILLepysflSvTLFBZ37RLwiriqyRxYv/zrgFd/9XVHh/OmzBvDX4mitMR/lUavs2Vx6cR94lzAkplm3IRNy4TFfu47tuYs9EQPIPVta4P64tV+sZ7n3ued3cgEx2YK+QL5+xms6osk8qQbTyuKVGdaX9FQqk6qfDnT5ykxk0VK7KZ62b6DNDUfQlqGHxSMKv1P0XN5BqMeKG1P4Wp5QfZDUCEldppoX0U6ss2jIko2XpURKCIhfaOqLPfShdtS37ZrT+jFRSH2xYVV1rmT/MBtRQhxiO4MQ3iAGlaZi+9PWBEIXOVnu9jN1f921lWLZky9bqbM3J2MAAI9jmuAx3gyoEUa6P2ivs0EeNv/OR+AX6q5SW6l5HaoFuS6jr6yg9limu+P0KYKzfMXWcQSfTXzpOzKEKpwI3YGXZpSSy2LTlMgfmFA3CF6R5c9xWEtRuCg2ZPUQ2Nb6dRFTNd4TfGHrnEWSKHPuRyiJSDAZ+KX0VxmSHjGPbQTLVpqixia2uyhQ394gBMt7C3ZAmxn/DJS+l1fBsAo2Eir/C0jG9csd4+/tp12pPc/BVJGaK9mfvr7M/CeztrmCO5qY06Edi4xAGtiEhnWAbzLy2VEyazE1J5nPmgU4RpW4Sa0TnOT6w5lgt3/tMpROigHHmexBGAMY0mdcDbDxWIz41NgdD6oxgHsJRgr5RnT6wZAkTOcStU4NMOQNemSO7gxGahdEsC+NRVGxMUhQmmM0llWRbbmFGHzEqLM4Iw0H7577Kyo+Zf+2cUFIOw93gEY171vQaM0HLwpjpdRR6Jz7V0ckE7XzYJ0TmY9znLdzkva0vNrAGGT5SUZ5uaHDkcGvI0ySpwkasEgZPMseYcu85w8HPdSNi+4T6A83iAwDbxgeFcB1ZM2iGXzFcEOUlYVrEckaOyodfvaYSQ7GuB4ISE0nYJc15X/1ciDTPbPCgYJK55VkEor4LvzL9S2WDy4xj+6FOqVyTAC2ZNowheeeSI5hA/02l8UYkv4nk9iaVn+kCVEUstgk5Hyq+gJm6R9vG3rhuM904he/hFmNQaUIATB1y3vw+OmxP4X5Yi6A5I5jJufHCjF9+AGNwnEllZjUco6XhsO5T5+R3yxz5yLVOnAn0zuS+6zdj0nTJbEZCbXJdtpfYZfCeCOqJHoE2vPPFS6eRLjIJlG69X93nfR0mxSFXzp1Zc0lt/VafDaImhUMtbnqWVb9M4nGNQLN68BHP7AR8Il9dkcxzmBv8PCZlw9guY0lurbBsmNYlwJZsA/B15/HfkbjbwPddaVecls/elmDHNW2r4crAx43feNkfRwsaNq/yyJ0d/p5hZ6AZajz7DBfUok0ZU62gCzz7x8eVfJTKA8IWn45vINLSM1q+HF9CV9qF3zP6Ml21kPPL3CXzkuYUlnSqT+Ij4tI/od5KwIs+tDajDs64owN7tOAd6eucGz+KfO26iNcBFpbWA5732bBNWO4kHNpr9D955L61bvHCF/mwSrz6eQaDjfDEANqGMkFc+NGxpKZzCD2sj/JrHd+zlPQ8Iz7Q+2JVIiVCuCKoK/hlAEHzvk/Piq3mRL1rT/fEh9hoT5GJmeYswg1otiKydizJ/fS2SeKHVu6Z3JEHjiW8NaTQgP5xdBli8nC57XiN9hrquBu99hn9zqwo92+PM2JXtpeVZS0PdqR5mDyDreMMtEws+CpwaRyyzoYtfcvt9PJIW0fJVNNi/FFyRsea7peLvJrL+5b4GOXJ8tAr+ATk9f8KmiIsRhqRy0vFzwRV3Z5dZ3QqIU8JQ/uQpkJbjMUMFj2F9sCFeaBjI4+fL/oN3+LQgjI4zuAfQ+3IPIPFQBccf0clJpsfpnBxD84atwtupkGqKvrH7cGNl/QcWcSi6wcVDML6ljOgYbo+2BOAWNNjlUBPiyitUAwbnhFvLbnqw42kR3Yp2kv2dMeDdcGOX5kT4S6M44KHEB/SpCfl7xgsUvs+JNY9G3O2X/6FEt9FyAn57lrbiu+tl83sCymSvq9eZbe9mchL7MTf/Ta78e80zSf0hYY5eUU7+ff14jv7Xy8qjzfzzzvaJnrIdvFb5BLWKcWGy5/w7+vV2cvIfwHqdTB+RuJK5oj9mbt0Hy94AmjMjjwYNZlNS6uiyxNnwNyt3gdreLb64p/3+08nXkb92LTkkRgFOwk1oGEVllcOj5lv1hfAZywDows0944U8vUFw+A/nuVq/UCygsrmWIBnHyU01d0XJPwriEOvx/ISK6Pk4y2w0gmojZs7lU8TtakBAdne4v/aNxmMpK4VcGMp7si0yqsiolXRuOi1Z1P7SqD3Zmp0CWcyK4Ubmp2SXiXuI5nGLCieFHKHNRIlcY3Pys2dwMTYCaqlyWSITwr2oGXvyU3h1Pf8eQ3w1bnD7ilocVjYDkcXR3Oo1BXgMLTUjNw2xMVwjtp99NhSVc5aIWrDQT5DHPKtCtheBP4zHcw4dz2eRdTMamhlHhtfgqJJHI7NGDUw1XL8vsSeSHyKqDtqoAmrQqsYwvwi7HW3ojWyhIa5oz5xJTaq14NAzFLjVLR12rRNUQ6xohDnrWFb5bG9yf8aCD8d5phoackcNJp+Dw3Due3RM+5Rid7EuIgsnwgpX0rUWh/nqPtByMhMZZ69NpgvRTKZ62ViZ+Q7Dp5r4K0d7EfJuiy06KuIYauRh5Ecrhdt2QpTS1k1AscEHvapNbU3HL1F2TFyR33Wxb5MvH5iZsrn3SDcsxlnnshO8PLwmdGN+paWnQuORtZGX37uhFT64SeuPsx8UOokY6ON85WdQ1dki5zErsJGazcBOddWJEKqNPiJpsMD1GrVLrVY+AOdPWQneTyyP1hRX/lMM4ZogGGOhYuAdr7F/DOiAoc++cn5vlf0zkMUJ40Z1rlgv9BelPqVOpxKeOpzKdF8maK+1Vv23MO9k/8+qpLoxrIGH2EDQlnGmH8CD31G8QqlyQIcpmR5bwmSVw9/Ns6IHgulCRehvZ/+VrM60Cu/r3AontFfrljew74skYe2uyn7JKQtFQBQRJ9ryGic/zQOsbS4scUBctA8cPToQ3x6ZBQu6DPu5m1bnCtP8TllLYA0UTQNVqza5nfew3Mopy1GPUwG5jsl0OVXniPmAcmLqO5HG8Hv3nSLecE9oOjPDXcsTxoCBxYyzBdj4wmnyEV4kvFDunipS8SSkvdaMnTBN9brHUR8xdmmEAp/Pdqk9uextp1t+JrtXwpN/MG2w/qhRMpSNxQ1uhg/kKO30eQ/FyHUDkWHT8V6gGRU4DhDMxZu7xXij9Ui6jlpWmQCqJg3FkOTq3WKneCRYZxBXMNAVLQgHXSCGSqNdjebY94oyIpVjMYehAiFx/tqzBXFHZaL5PeeD74rW5OysFoUXY8sebUZleFTUa/+zBKVTFDopTReXNuZq47QjkWnxjirCommO4L/GrFtVV21EpMyw8wyThL5Y59d88xtlx1g1ttSICDwnof6lt/6zliPzgVUL8jWBjC0o2D6Kg+jNuThkAlaDJsq/AG2aKA//A76avw2KNqtv223P+Wq3StRDDNKFFgtsFukYt1GFDWooFVXitaNhb3RCyJi4cMeNjROiPEDb4k+G3+hD8tsg+5hhmSc/8t2JTSwYoCzAI75doq8QTHe+E/Tw0RQSUDlU+6uBeNN3h6jJGX/mH8oj0i3caCNsjvTnoh73BtyZpsflHLq6AfwJNCDX4S98h4+pCOhGKDhV3rtkKHMa3EG4J9y8zFWI4UsfNzC/Rl5midNn7gwoN9j23HGCQQ+OAZpTTPMdiVow740gIyuEtd0qVxMyNXhHcnuXRKdw5wDUSL358ktjMXmAkvIB73BLa1vfF9BAUZInPYJiwxqFWQQBVk7gQH4ojfUQ/KEjn+A/WR6EEe4CtbpoLe1mzHkajgTIoE0SLDHVauKhrq12zrAXBGbPPWKCt4DGedq3JyGRbmPFW32bE7T20+73BatV/qQhhBWfWBFHfhYWXjALts38FemnoT+9bn1jDBMcUMmYgSc0e7GQjv2MUBwLU8ionCpgV+Qrhg7iUIfUY6JFxR0Y+ZTCPM+rVuq0GNLyJXX6nrUTt8HzFBRY1E/FIm2EeVA9NcXrj7S6YYIChVQCWr/m2fYUjC4j0XLkzZ8GCSLfmkW3PB/xq+nlXsKVBOj7vTvqKCOMq7Ztqr3cQ+N8gBnPaAps+oGwWOkbuxnRYj/x/WjiDclVrs22xMK4qArE1Ztk1456kiJriw6abkNeRHogaPRBgbgF9Z8i/tbzWELN4CvbqtrqV9TtGSnmPS2F9kqOIBaazHYaJ9bi3AoDBvlZasMluxt0BDXfhp02Jn411aVt6S4TUB8ZgFDkI6TP6gwPY85w+oUQSsjIeXVminrwIdK2ZAawb8Se6XOJbOaliQxHSrnAeONDLuCnFejIbp4YDtBcQCwMsYiRZfHefuEJqJcwKTTJ8sx5hjHmJI1sPFHOr6W9AhZ2NAod38mnLQk1gOz2LCAohoQbgMbUK9RMEA3LkiF7Sr9tLZp6lkciIGhE2V546w3Mam53VtVkGbB9w0Yk2XiRnCmbpxmHr2k4eSC0RuNbjNsUfDIfc8DZvRvgUDe1IlKdZTzcT4ZGEb53dp8VtsoZlyXzLHOdAbsp1LPTVaHvLA0GYDFMbAW/WUBfUAdHwqLFAV+3uHvYWrCfhUOR2i89qvCBoOb48usAGdcF2M4aKn79k/43WzBZ+xR1L0uZfia70XP9soQReeuhZiUnXFDG1T8/OXNmssTSnYO+3kVLAgeiY719uDwL9FQycgLPessNihMZbAKG7qwPZyG11G1+ZA3jAX2yddpYfmaKBlmfcK/V0mwIRUDC0nJSOPUl2KB8h13F4dlVZiRhdGY5farwN+f9hEb1cRi41ZcGDn6Xe9MMSTOY81ULJyXIHSWFIQHstVYLiJEiUjktlHiGjntN5/btB8Fu+vp28zl2fZXN+dJDyN6EXhS+0yzqpl/LSJNEUVxmu7BsNdjAY0jVsAhkNuuY0E1G48ej25mSt+00yPbQ4SRCVkIwb6ISvYtmJRPz9Zt5dk76blf+lJwAPH5KDF+vHAmACLoCdG2Adii6dOHnNJnTmZtoOGO8Q1jy1veMw6gbLFToQmfJa7nT7Al89mRbRkZZQxJTKgK5Kc9INzmTJFp0tpAPzNmyL/F08bX3nhCumM/cR/2RPn9emZ3VljokttZD1zVWXlUIqEU7SLk5I0lFRU0AcENXBYazNaVzsVHA/sD3o9hm42wbHIRb/BBQTKzAi8s3+bMtpOOZgLdQzCYPfX3UUxKd1WYVkGH7lh/RBBgMZZwXzU9+GYxdBqlGs0LP+DZ5g2BWNh6FAcR944B+K/JTWI3t9YyVyRhlP4CCoUk/mmF7+r2pilVBjxXBHFaBfBtr9hbVn2zDuI0kEOG3kBx8CGdPOjX1ph1POOZJUO1JEGG0jzUy2tK4X0CgVNYhmkqqQysRNtKuPdCJqK3WW57kaV17vXgiyPrl4KEEWgiGF1euI4QkSFHFf0TDroQiLNKJiLbdhH0YBhriRNCHPxSqJmNNoketaioohqMglh6wLtEGWSM1EZbQg72h0UJAIPVFCAJOThpQGGdKfFovcwEeiBuZHN2Ob4uVM7+gwZLz1D9E7ta4RmMZ24OBBAg7Eh6dLXGofZ4U2TFOCQMKjwhVckjrydRS+YaqCw1kYt6UexuzbNEDyYLTZnrY1PzsHZJT4U+awO2xlqTSYu6n/U29O2wPXgGOEKDMSq+zTUtyc8+6iLp0ivav4FKx+xxVy4FxhIF/pucVDqpsVe2jFOfdZhTzLz2QjtzvsTCvDPU7bzDH2eXVKUV9TZ+qFtaSSxnYgYdXKwVreIgvWhT9eGDB2OvnWyPLfIIIfNnfIxU8nW7MbcH05nhlsYtaW9EZRsxWcKdEqInq1DiZPKCz7iGmAU9/ccnnQud2pNgIGFYOTAWjhIrd63aPDgfj8/sdlD4l+UTlcxTI9jbaMqqN0gQxSHs60IAcW3cH4p3V1aSciTKB29L1tz2eUQhRiTgTvmqc+sGtBNh4ky0mQJGsdycBREP+fAaSs1EREDVo5gvgi5+aCN7NECw30owbCc1mSpjiahyNVwJd1jiGgzSwfTpzf2c5XJvG/g1n0fH88KHNnf+u7ZiRMlXueSIsloJBUtW9ezvsx9grfsX/FNxnbxU1Lvg0hLxixypHKGFAaPu0xCD8oDTeFSyfRT6s8109GMUZL8m2xXp8X2dpPCWWdX84iga4BrTlOfqox4shqEgh/Ht4qRst52cA1xOIUuOxgfUivp6v5f8IVyaryEdpVk72ERAwdT4aoY1usBgmP+0m06Q216H/nubtNYxHaOIYjcach3A8Ez/zc0KcShhel0HCYjFsA0FjYqyJ5ZUH1aZw3+zWC0hLpM6GDfcAdn9fq2orPmZbW6XXrf+Krc9RtvII5jeD3dFoT1KwZJwxfUMvc5KLfn8rROW23Jw89sJ2a5dpB3qWDUBWF2iX8OCuKprHosJ2mflBR+Wqs86VvgI/XMnsqb97+VlKdPVysczPj8Jhzf+WCvGBHijAqYlavbF60soMWlHbvKT+ScvhprgeTln51xX0sF+Eadc/l2s2a5BgkVbHYyz0E85p0LstqH+gEGiR84nBRRFIn8hLSZrGwqjZ3E29cuGi+5Z5bp7EM8MWFa9ssS/vy4VrDfECSv7DSU84DaP0sXI3Ap4lWznQ65nQoTKRWU30gd7Nn8ZowUvGIx4aqyXGwmA/PB4qN8msJUODezUHEl0VP9uo+cZ8vPFodSIB4C7lQYjEFj8yu49C2KIV3qxMFYTevG8KqAr0TPlkbzHHnTpDpvpzziAiNFh8xiT7C/TiyH0EguUw4vxAgpnE27WIypV+uFN2zW7xniF/n75trs9IJ5amB1zXXZ1LFkJ6GbS/dFokzl4cc2mamVwhL4XU0Av5gDWAl+aEWhAP7t2VIwU+EpvfOPDcLASX7H7lZpXA2XQfbSlD4qU18NffNPoAKMNSccBfO9YVVgmlW4RydBqfHAV7+hrZ84WJGho6bNT0YMhxxLdOx/dwGj0oyak9aAkNJ8lRJzUuA8sR+fPyiyTgUHio5+Pp+YaKlHrhR41jY5NESPS3x+zTMe0S2HnLOKCOQPpdxKyviBvdHrCDRqO+l96HhhNBLXWv4yEMuEUYo8kXnYJM8oIgVM4XJ+xXOev4YbWeqsvgq0lmw4/PiYr9sYLt+W5EAuYSFnJEan8CwJwbtASBfLBBpJZiRPor/aCJBZsM+MhvS7ZepyHvU8m5WSmaZnxuLts8ojl6KkS8oSAHkq5GWlCB/NgJ5W3rO2Cj1MK7ahxsCrbTT3a0V/QQH+sErxV4XUWDHx0kkFy25bPmBMBQ6BU3HoHhhYcJB9JhP6NXUWKxnE0raXHB6U9KHpWdQCQI72qevp5fMzcm+AvC85rsynVQhruDA9fp9COe7N56cg1UKGSas89vrN+WlGLYTwi5W+0xYdKEGtGCeNJwXKDU0XqU5uQYnWsMwTENLGtbQMvoGjIFIEMzCRal4rnBAg7D/CSn8MsCvS+FDJJAzoiioJEhZJgAp9n2+1Yznr7H+6eT4YkJ9Mpj60ImcW4i4iHDLn9RydB8dx3QYm3rsX6n4VRrZDsYK6DCGwkwd5n3/INFEpk16fYpP6JtMQpqEMzcOfQGAHXBTEGzuLJ03GYQL9bmV2/7ExDlRf+Uvf1sM2frRtCWmal12pMgtonvSCtR4n1CLUZRdTHDHP1Otwqd+rcdlavnKjUB/OYXQHUJzpNyFoKpQK+2OgrEKpGyIgIBgn2y9QHnTJihZOpEvOKIoHAMGAXHmj21Lym39Mbiow4IF+77xNuewziNVBxr6KD5e+9HzZSBIlUa/AmsDFJFXeyrQakR3FwowTGcADJHcEfhGkXYNGSYo4dh4bxwLM+28xjiqkdn0/3R4UEkvcBrBfn/SzBc1XhKM2VPlJgKSorjDac96V2UnQYXl1/yZPT4DVelgO+soMjexXwYO58VLl5xInQUZI8jc3H2CPnCNb9X05nOxIy4MlecasTqGK6s2az4RjpF2cQP2G28R+7wDPsZDZC/kWtjdoHC7SpdPmqQrUAhMwKVuxCmYTiD9q/O7GHtZvPSN0CAUQN/rymXZNniYLlJDE70bsk6Xxsh4kDOdxe7A2wo7P9F5YvqqRDI6brf79yPCSp4I0jVoO4YnLYtX5nzspR5WB4AKOYtR1ujXbOQpPyYDvfRE3FN5zw0i7reehdi7yV0YDRKRllGCGRk5Yz+Uv1fYl2ZwrnGsqsjgAVo0xEUba8ohjaNMJNwTwZA/wBDWFSCpg1eUH8MYL2zdioxRTqgGQrDZxQyNzyBJPXZF0+oxITJAbj7oNC5JwgDMUJaM5GqlGCWc//KCIrI+aclEe4IA0uzv7cuj6GCdaJONpi13O544vbtIHBF+A+JeDFUQNy61Gki3rtyQ4aUywn6ru314/dkGiP8Iwjo0J/2Txs49ZkwEl4mx+iYUUO55I6pJzU4P+7RRs+DXZkyKUYZqVWrPF4I94m4Wx1tXeE74o9GuX977yvJ/jkdak8+AmoHVjI15V+WwBdARFV2IPirJgVMdsg1Pez2VNHqa7EHWdTkl3XTcyjG9BiueWFvQfXI8aWSkuuRmqi/HUuzqyvLJfNfs0txMqldYYflWB1BS31WkuPJGGwXUCpjiQSktkuBMWwHjSkQxeehqw1Kgz0Trzm7QbtgxiEPDVmWCNCAeCfROTphd1ZNOhzLy6XfJyG6Xgd5MCAZw4xie0Sj5AnY1/akDgNS9YFl3Y06vd6FAsg2gVQJtzG7LVq1OH2frbXNHWH/NY89NNZ4QUSJqL2yEcGADbT38X0bGdukqYlSoliKOcsSTuqhcaemUeYLLoI8+MZor2RxXTRThF1LrHfqf/5LcLAjdl4EERgUysYS2geE+yFdasU91UgUDsc2cSQ1ZoT9+uLOwdgAmifwQqF028INc2IQEDfTmUw3eZxvz7Ud1z3xc1PQfeCvfKsB9jOhRj7rFyb9XcDWLcYj0bByosychMezMLVkFiYcdBBQtvI6K0KRuOZQH2kBsYHJaXTkup8F0eIhO1/GcIwWKpr2mouB7g5TUDJNvORXPXa/mU8bh27TAZYBe2sKx4NSv5OjnHIWD2RuysCzBlUfeNXhDd2jxnHoUlheJ3jBApzURy0fwm2FwwsSU0caQGl0Kv8hopRQE211NnvtLRsmCNrhhpEDoNiZEzD2QdJWKbRRWnaFedXHAELSN0t0bfsCsMf0ktfBoXBoNA+nZN9+pSlmuzspFevmsqqcMllzzvkyXrzoA+Ryo1ePXpdGOoJvhyru+EBRsmOp7MXZ0vNUMUqHLUoKglg1p73sWeZmPc+KAw0pE2zIsFFE5H4192KwDvDxdxEYoDBDNZjbg2bmADTeUKK57IPD4fTYF4c6EnXx/teYMORBDtIhPJneiZny7Nv/zG+YmekIKCoxr6kauE2bZtBLufetNG0BtBY7f+/ImUypMBvdWu/Q7vTMRzw5aQGZWuc1V0HEsItFYMIBnoKGZ0xcarba/TYZq50kCaflFysYjA4EDKHqGdpYWdKYmm+a7TADmW35yfnOYpZYrkpVEtiqF0EujI00aeplNs2k+qyFZNeE3CDPL9P6b4PQ/kataHkVpLSEVGK7EX6rAa7IVNrvZtFvOA6okKvBgMtFDAGZOx88MeBcJ8AR3AgUUeIznAN6tjCUipGDZONm1FjWJp4A3QIzSaIOmZ7DvF/ysYYbM/fFDOV0jntAjRdapxJxL0eThpEhKOjCDDq2ks+3GrwxqIFKLe1WdOzII8XIOPGnwy6LKXVfpSDOTEfaRsGujhpS4hBIsMOqHbl16PJxc4EkaVu9wpEYlF/84NSv5Zum4drMfp9yXbzzAOJqqS4YkI4cBrFrC7bMPiCfgI3nNZAqkk3QOZqR+yyqx+nDQKBBBZ7QKrfGMCL+XpqFaBJU0wpkBdAhbR4hJsmT5aynlvkouoxm/NjD5oe6BzVIO9uktM+/5dEC5P7vZvarmuO/lKXz4sBabVPIATuKTrwbJP8XUkdM6uEctHKXICUJGjaZIWRbZp8czquQYfY6ynBUCfIU+gG6wqSIBmYIm9pZpXdaL121V7q0VjDjmQnXvMe7ysoEZnZL15B0SpxS1jjd83uNIOKZwu5MPzg2NhOx3xMOPYwEn2CUzbSrwAs5OAtrz3GAaUkJOU74XwjaYUmGJdZBS1NJVkGYrToINLKDjxcuIlyfVsKQSG/G4DyiO2SlQvJ0d0Ot1uOG5IFSAkq+PRVMgVMDvOIJMdqjeCFKUGRWBW9wigYvcbU7CQL/7meF2KZAaWl+4y9uhowAX7elogAvItAAxo2+SFxGRsHGEW9BnhlTuWigYxRcnVUBRQHV41LV+Fr5CJYV7sHfeywswx4XMtUx6EkBhR+q8AXXUA8uPJ73Pb49i9KG9fOljvXeyFj9ixgbo6CcbAJ7WHWqKHy/h+YjBwp6VcN7M89FGzQ04qbrQtgrOFybg3gQRTYG5xn73ArkfQWjCJROwy3J38Dx/D7jOa6BBNsitEw1wGq780EEioOeD+ZGp2J66ADiVGMayiHYucMk8nTK2zzT9CnEraAk95kQjy4k0GRElLL5YAKLQErJ5rp1eay9O4Fb6yJGm9U4FaMwPGxtKD6odIIHKoWnhKo1U8KIpFC+MVn59ZXmc7ZTBZfsg6FQ8W10YfTr4u0nYrpHZbZ1jXiLmooF0cOm0+mPnJBXQtepc7n0BqOipNCqI6yyloTeRShNKH04FIo0gcMk0H/xThyN4pPAWjDDkEp3lNNPRNVfpMI44CWRlRgViP64eK0JSRp0WUvCWYumlW/c58Vcz/yMwVcW5oYb9+26TEhwvbxiNg48hl1VI1UXTU//Eta+BMKnGUivctfL5wINDD0giQL1ipt6U7C9cd4+lgqY2lMUZ02Uv6Prs+ZEZer7ZfWBXVghlfOOrClwsoOFKzWEfz6RZu1eCs+K8fLvkts5+BX0gyrFYve0C3qHrn5U/Oh6D/CihmWIrY7HUZRhJaxde+tldu6adYJ+LeXupQw0XExC36RETdNFxcq9glMu4cNQSX9cqR/GQYp+IxUkIcNGWVU7ZtGa6P3XAyodRt0XeS3Tp01AnCh0ZbUh4VrSZeV9RWfSoWyxnY3hzcZ30G/InDq4wxRrEejreBxnhIQbkxenxkaxl+k7eLUQkUR6vKJ2iDFNGX3WmVA1yaOH+mvhBd+sE6vacQzFobwY5BqEAFmejwW5ne7HtVNolOUgJc8CsUxmc/LBi8N5mu9VsIA5HyErnS6zeCz7VLI9+n/hbT6hTokMXTVyXJRKSG2hd2labXTbtmK4fNH3IZBPreSA4FMeVouVN3zG5x9CiGpLw/3pceo4qGqp+rVp+z+7yQ98oEf+nyH4F3+J9IheDBa94Wi63zJbLBCIZm7P0asHGpIJt3PzE3m0S4YIWyXBCVXGikj8MudDPB/6Nm2v4IxJ5gU0ii0guy5SUHqGUYzTP0jIJU5E82RHUXtX4lDdrihBLdP1YaG1AGUC12rQKuIaGvCpMjZC9bWSCYnjDlvpWbkdXMTNeBHLKiuoozMGIvkczmP0aRJSJ8PYnLCVNhKHXBNckH79e8Z8Kc2wUej4sQZoH8qDRGkg86maW/ZQWGNnLcXmq3FlXM6ssR/3P6E/bHMvm6HLrv1yRixit25JsH3/IOr2UV4BWJhxXW5BJ6Xdr07n9kF3ZNAk6/Xpc5MSFmYJ2R7bdL8Kk7q1OU9Elg/tCxJ8giT27wSTySF0GOxg4PbYJdi/Nyia9Nn89CGDulfJemm1aiEr/eleGSN+5MRrVJ4K6lgyTTIW3i9cQ0dAi6FHt0YMbH3wDSAtGLSAccezzxHitt1QdhW36CQgPcA8vIIBh3/JNjf/Obmc2yzpk8edSlS4lVdwgW5vzbYEyFoF4GCBBby1keVNueHAH+evi+H7oOVfS3XuPQSNTXOONAbzJeSb5stwdQHl1ZjrGoE49I8+A9j3t+ahhQj74FCSWpZrj7wRSFJJnnwi1T9HL5qrCFW/JZq6P62XkMWTb+u4lGpKfmmwiJWx178GOG7KbrZGqyWwmuyKWPkNswkZ1q8uptUlviIi+AXh2bOOTOLsrtNkfqbQJeh24reebkINLkjut5r4d9GR/r8CBa9SU0UQhsnZp5cP+RqWCixRm7i4YRFbtZ4EAkhtNa6jHb6gPYQv7MKqkPLRmX3dFsK8XsRLVZ6IEVrCbmNDc8o5mqsogjAQfoC9Bc7R6gfw03m+lQpv6kTfhxscDIX6s0w+fBxtkhjXAXr10UouWCx3C/p/FYwJRS/AXRKkjOb5CLmK4XRe0+xeDDwVkJPZau52bzLEDHCqV0f44pPgKOkYKgTZJ33fmk3Tu8SdxJ02SHM8Fem5SMsWqRyi2F1ynfRJszcFKykdWlNqgDA/L9lKYBmc7Zu/q9ii1FPF47VJkqhirUob53zoiJtVVRVwMR34gV9iqcBaHbRu9kkvqk3yMpfRFG49pKKjIiq7h/VpRwPGTHoY4cg05X5028iHsLvUW/uz+kjPyIEhhcKUwCkJAwbR9pIEGOn8z6svAO8i89sJ3dL5qDWFYbS+HGPRMxYwJItFQN86YESeJQhn2urGiLRffQeLptDl8dAgb+Tp47UQPxWOw17OeChLN1WnzlkPL1T5O+O3Menpn4C3IY5LEepHpnPeZHbvuWfeVtPlkH4LZjPbBrkJT3NoRJzBt86CO0Xq59oQ+8dsm0ymRcmQyn8w71mhmcuEI5byuF+C88VPYly2sEzjlzAQ3vdn/1+Hzguw6qFNNbqenhZGbdiG6RwZaTG7jTA2X9RdXjDN9yj1uQpyO4Lx8KRAcZcbZMafp4wPOd5MdXoFY52V1A8M9hi3sso93+uprE0qYNMjkE22CvK4HuUxqN7oIz5pWuETq1lQAjqlSlqdD2Rnr/ggp/TVkQYjn9lMfYelk2sH5HPdopYo7MHwlV1or9Bxf+QCyLzm92vzG2wjiIjC/ZHEJzeroJl6bdFPTpZho5MV2U86fLQqxNlGIMqCGy+9WYhJ8ob1r0+Whxde9L2PdysETv97O+xVw+VNN1TZSQN5I6l9m5Ip6pLIqLm4a1B1ffH6gHyqT9p82NOjntRWGIofO3bJz5GhkvSWbsXueTAMaJDou99kGLqDlhwBZNEQ4mKPuDvVwSK4WmLluHyhA97pZiVe8g+JxmnJF8IkV/tCs4Jq/HgOoAEGR9tCDsDbDmi3OviUQpG5D8XmKcSAUaFLRXb2lmJTNYdhtYyfjBYZQmN5qT5CNuaD3BVnlkCk7bsMW3AtXkNMMTuW4HjUERSJnVQ0vsBGa1wo3Qh7115XGeTF3NTz8w0440AgU7c3bSXO/KMINaIWXd0oLpoq/0/QJxCQSJ9XnYy1W7TYLBJpHsVWD1ahsA7FjNvRd6mxCiHsm8g6Z0pnzqIpF1dHUtP2ITU5Z1hZHbu+L3BEEStBbL9XYvGfEakv1bmf+bOZGnoiuHEdlBnaChxYKNzB23b8sw8YyT7Ajxfk49eJIAvdbVkdFCe2J0gMefhQ0bIZxhx3fzMIysQNiN8PgOUKxOMur10LduigREDRMZyP4oGWrP1GFY4t6groASsZ421os48wAdnrbovNhLt7ScNULkwZ5AIZJTrbaKYTLjA1oJ3sIuN/aYocm/9uoQHEIlacF1s/TM1fLcPTL38O9fOsjMEIwoPKfvt7opuI9G2Hf/PR4aCLDQ7wNmIdEuXJ/QNL72k5q4NejAldPfe3UVVqzkys8YZ/jYOGOp6c+YzRCrCuq0M11y7TiN6qk7YXRMn/gukxrEimbMQjr3jwRM6dKVZ4RUfWQr8noPXLJq6yh5R3EH1IVOHESst/LItbG2D2vRsZRkAObzvQAAD3mb3/G4NzopI0FAiHfbpq0X72adg6SRj+8OHMShtFxxLZlf/nLgRLbClwl5WmaYSs+yEjkq48tY7Z2bE0N91mJwt+ua0NlRJIDh0HikF4UvSVorFj2YVu9YeS5tfvlVjPSoNu/Zu6dEUfBOT555hahBdN3Sa5Xuj2Rvau1lQNIaC944y0RWj9UiNDskAK1WoL+EfXcC6IbBXFRyVfX/WKXxPAwUyIAGW8ggZ08hcijKTt1YKnUO6QPvcrmDVAb0FCLIXn5id4fD/Jx4tw/gbXs7WF9b2RgXtPhLBG9vF5FEkdHAKrQHZAJC/HWvk7nvzzDzIXZlfFTJoC3JpGgLPBY7SQTjGlUvG577yNutZ1hTfs9/1nkSXK9zzKLRZ3VODeKUovJe0WCq1zVMYxCJMenmNzPIU2S8TA4E7wWmbNkxq9rI2dd6v0VpcAPVMxnDsvWTWFayyqvKZO7Z08a62i/oH2/jxf8rpmfO64in3FLiL1GX8IGtVE9M23yGsIqJbxDTy+LtaMWDaPqkymb5VrQdzOvqldeU0SUi6IirG8UZ3jcpRbwHa1C0Dww9G/SFX3gPvTJQE+kyz+g1BeMILKKO+olcHzctOWgzxYHnOD7dpCRtuZEXACjgqesZMasoPgnuDC4nUviAAxDc5pngjoAITIkvhKwg5d608pdrZcA+qn5TMT6Uo/QzBaOxBCLTJX3Mgk85rMfsnWx86oLxf7p2PX5ONqieTa/qM3tPw4ZXvlAp83NSD8F7+ZgctK1TpoYwtiU2h02HCGioH5tkVCqNVTMH5p00sRy2JU1qyDBP2CII/Dg4WDsIl+zgeX7589srx6YORRQMBfKbodbB743Tl4WLKOEnwWUVBsm94SOlCracU72MSyj068wdpYjyz1FwC2bjQnxnB6Mp/pZ+yyZXtguEaYB+kqhjQ6UUmwSFazOb+rhYjLaoiM+aN9/8KKn0zaCTFpN9eKwWy7/u4EHzO46TdFSNjMfn2iPSJwDPCFHc0I1+vjdAZw5ZjqR/uzi9Zn20oAa5JnLEk/EA3VRWE7J/XrupfFJPtCUuqHPpnlL7ISJtRpSVcB8qsZCm2QEkWoROtCKKxUh3yEcMbWYJwk6DlEBG0bZP6eg06FL3v6RPb7odGuwm7FN8fG4woqtB8e7M5klPpo97GoObNwt+ludTAmxyC5hmcFx+dIvEZKI6igFKHqLH01iY1o7903VzG9QGetyVx5RNmBYUU+zIuSva/yIcECUi4pRmE3VkF2avqulQEUY4yZ/wmNboBzPmAPey3+dSYtBZUjeWWT0pPwCz4Vozxp9xeClIU60qvEFMQCaPvPaA70WlOP9f/ey39macvpGCVa+zfa8gO44wbxpJUlC8GN/pRMTQtzY8Z8/hiNrU+Zq64ZfFGIkdj7m7abcK1EBtws1X4J/hnqvasPvvDSDYWN+QcQVGMqXalkDtTad5rYY0TIR1Eqox3czwPMjKPvF5sFv17Thujr1IZ1Ytl4VX1J0vjXKmLY4lmXipRAro0qVGEcXxEVMMEl54jQMd4J7RjgomU0j1ptjyxY+cLiSyXPfiEcIS2lWDK3ISAy6UZ3Hb5vnPncA94411jcy75ay6B6DSTzK6UTCZR9uDANtPBrvIDgjsfarMiwoax2OlLxaSoYn4iRgkpEGqEkwox5tyI8aKkLlfZ12lO11TxsqRMY89j5JaO55XfPJPDL1LGSnC88Re9Ai+Nu5bZjtwRrvFITUFHPR4ZmxGslQMecgbZO7nHk32qHxYkdvWpup07ojcMCaVrpFAyFZJJbNvBpZfdf39Hdo2kPtT7v0/f8R/B5Nz4f1t9/3zNM/7n6SUHfcWk5dfQFJvcJMgPolGCpOFb/WC0FGWU2asuQyT+rm88ZKZ78Cei/CAh939CH0JYbpZIPtxc2ufXqjS3pHH9lnWK4iJ7OjR/EESpCo2R3MYKyE7rHfhTvWho4cL1QdN4jFTyR6syMwFm124TVDDRXMNveI1Dp/ntwdz8k8kxw7iFSx6+Yx6O+1LzMVrN0BBzziZi9kneZSzgollBnVwBh6oSOPHXrglrOj+QmR/AESrhDpKrWT+8/AiMDxS/5wwRNuGQPLlJ9ovomhJWn8sMLVItQ8N/7IXvtD8kdOoHaw+vBSbFImQsv/OCAIui99E+YSIOMlMvBXkAt+NAZK8wB9Jf8CPtB+TOUOR+z71d/AFXpPBT6+A5FLjxMjLIEoJzrQfquvxEIi+WoUzGR1IzQFNvbYOnxb2PyQ0kGdyXKzW2axQL8lNAXPk6NEjqrRD1oZtKLlFoofrXw0dCNWASHzy+7PSzOUJ3XtaPZsxLDjr+o41fKuKWNmjiZtfkOzItvlV2MDGSheGF0ma04qE3TUEfqJMrXFm7DpK+27DSvCUVf7rbNoljPhha5W7KBqVq0ShUSTbRmuqPtQreVWH4JET5yMhuqMoSd4r/N8sDmeQiQQvi1tcZv7Moc7dT5X5AtCD6kNEGZOzVcNYlpX4AbTsLgSYYliiPyVoniuYYySxsBy5cgb3pD+EK0Gpb0wJg031dPgaL8JZt6sIvzNPEHfVPOjXmaXj4bd4voXzpZ5GApMhILgMbCEWZ2zwgdeQgjNHLbPIt+KqxRwWPLTN6HwZ0Ouijj4UF+Sg0Au8XuIKW0WxlexdrFrDcZJ8Shauat3X0XmHygqgL1nAu2hrJFb4wZXkcS+i36KMyU1yFvYv23bQUJi/3yQpqr/naUOoiEWOxckyq/gq43dFou1DVDaYMZK9tho7+IXXokBCs5GRfOcBK7g3A+jXQ39K4YA8PBRW4m5+yR0ZAxWJncjRVbITvIAPHYRt1EJ3YLiUbqIvoKHtzHKtUy1ddRUQ0AUO41vonZDUOW+mrszw+SW/6Q/IUgNpcXFjkM7F4CSSQ2ExZg85otsMs7kqsQD4OxYeBNDcSpifjMoLb7GEbGWTwasVObmB/bfPcUlq0wYhXCYEDWRW02TP5bBrYsKTGWjnWDDJ1F7zWai0zW/2XsCuvBQjPFcTYaQX3tSXRSm8hsAoDdjArK/OFp6vcWYOE7lizP0Yc+8p16i7/NiXIiiQTp7c7Xus925VEtlKAjUdFhyaiLT7VxDagprMFwix4wZ05u0qj7cDWFd0W9OYHIu3JbJKMXRJ1aYNovugg+QqRN7fNHSi26VSgBpn+JfMuPo3aeqPWik/wI5Rz3BWarPQX4i5+dM0npwVOsX+KsOhC7vDg+OJsz4Q5zlnIeflUWL6QYMbf9WDfLmosLF4Qev3mJiOuHjoor/dMeBpA9iKDkMjYBNbRo414HCxjsHrB4EXNbHzNMDHCLuNBG6Sf+J4MZ/ElVsDSLxjIiGsTPhw8BPjxbfQtskj+dyNMKOOcUYIRBEIqbazz3lmjlRQhplxq673VklMMY6597vu+d89ec/zq7Mi4gQvh87ehYbpOuZEXj5g/Q7S7BFDAAB9DzG35SC853xtWVcnZQoH54jeOqYLR9NDuwxsVthTV7V99n/B7HSbAytbEyVTz/5NhJ8gGIjG0E5j3griULUd5Rg7tQR+90hJgNQKQH2btbSfPcaTOfIexc1db1BxUOhM1vWCpLaYuKr3FdNTt/T3PWCpEUWDKEtzYrjpzlL/wri3MITKsFvtF8QVV/NhVo97aKIBgdliNc10dWdXVDpVtsNn+2UIolrgqdWA4EY8so0YvB4a+aLzMXiMAuOHQrXY0tr+CL10JbvZzgjJJuB1cRkdT7DUqTvnswVUp5kkUSFVtIIFYK05+tQxT6992HHNWVhWxUsD1PkceIrlXuUVRogwmfdhyrf6zzaL8+c0L7GXMZOteAhAVQVwdJh+7nrX7x4LaIIfz2F2v7Dg/uDfz2Fa+4gFm2zHAor8UqimJG3VTJtZEoFXhnDYXvxMJFc6ku2bhbCxzij2z5UNuK0jmp1mnvkVNUfR+SEmj1Lr94Lym75PO7Fs0MIr3GdsWXRXSfgLTVY0FLqba97u1In8NAcY7IC6TjWLigwKEIm43NxTdaVTv9mcKkzuzBkKd8x/xt1p/9BbP7Wyb4bpo1K1gnOpbLvKz58pWl3B55RJ/Z5mRDLPtNQg14jdOEs9+h/V5UVpwrAI8kGbX8KPVPDIMfIqKDjJD9UyDOPhjZ3vFAyecwyq4akUE9mDOtJEK1hpDyi6Ae87sWAClXGTiwPwN7PXWwjxaR79ArHRIPeYKTunVW24sPr/3HPz2IwH8oKH4OlWEmt4BLM6W5g4kMcYbLwj2usodD1088stZA7VOsUSpEVl4w7NMb1EUHMRxAxLF0CIV+0L3iZb+ekB1vSDSFjAZ3hfLJf7gFaXrOKn+mhR+rWw/eTXIcAgl4HvFuBg1LOmOAwJH3eoVEjjwheKA4icbrQCmvAtpQ0mXG0agYp5mj4Rb6mdQ+RV4QBPbxMqh9C7o8nP0Wko2ocnCHeRGhN1XVyT2b9ACsL+6ylUy+yC3QEnaKRIJK91YtaoSrcWZMMwxuM0E9J68Z+YyjA0g8p1PfHAAIROy6Sa04VXOuT6A351FOWhKfTGsFJ3RTJGWYPoLk5FVK4OaYR9hkJvezwF9vQN1126r6isMGXWTqFW+3HL3I/jurlIdDWIVvYY+s6yq7lrFSPAGRdnU7PVwY/SvWbZGpXzy3BQ2LmAJlrONUsZs4oGkly0V267xbD5KMY8woNNsmWG1VVgLCra8aQBBcI4DP2BlNwxhiCtHlaz6OWFoCW0vMR3ErrG7JyMjTSCnvRcsEHgmPnwA6iNpJ2DrFb4gLlhKJyZGaWkA97H6FFdwEcLT6DRQQL++fOkVC4cYGW1TG/3iK5dShRSuiBulmihqgjR45Vi03o2RbQbP3sxt90VxQ6vzdlGfkXmmKmjOi080JSHkLntjvsBJnv7gKscOaTOkEaRQqAnCA4HWtB4XnMtOhpRmH2FH8tTXrIjAGNWEmudQLCkcVlGTQ965Kh0H6ixXbgImQP6b42B49sO5C8pc7iRlgyvSYvcnH9FgQ3azLbQG2cUW96SDojTQStxkOJyOuDGTHAnnWkz29aEwN9FT8EJ4yhXOg+jLTrCPKeEoJ9a7lDXOjEr8AgX4BmnMQ668oW0zYPyQiVMPxKRHtpfnEEyaKhdzNVThlxxDQNdrHeZiUFb6NoY2KwvSb7BnRcpJy+/g/zAYx3fYSN5QEaVD2Y1VsNWxB0BSO12MRsRY8JLfAezRMz5lURuLUnG1ToKk6Q30FughqWN6gBNcFxP/nY/iv+iaUQOa+2Nuym46wtI/DvSfzSp1jEi4SdYBE7YhTiVV5cX9gwboVDMVgZp5YBQlHOQvaDNfcCoCJuYhf5kz5kwiIKPjzgpcRJHPbOhJajeoeRL53cuMahhV8Z7IRr6M4hW0JzT7mzaMUzQpm866zwM7Cs07fJYXuWvjAMkbe5O6V4bu71sOG6JQ4oL8zIeXHheFVavzxmlIyBkgc9IZlEDplMPr8xlcyss4pVUdwK1e7CK2kTsSdq7g5SHRAl3pYUB9Ko4fsh4qleOyJv1z3KFSTSvwEcRO/Ew8ozEDYZSqpfoVW9uhJfYrNAXR0Z3VmeoAD+rVWtwP/13sE/3ICX3HhDG3CMc476dEEC0K3umSAD4j+ZQLVdFOsWL2C1TH5+4KiSWH+lMibo+B55hR3Gq40G1n25sGcN0mEcoU2wN9FCVyQLBhYOu9aHVLWjEKx2JIUZi5ySoHUAI9b8hGzaLMxCZDMLhv8MkcpTqEwz9KFDpCpqQhVmsGQN8m24wyB82FAKNmjgfKRsXRmsSESovAwXjBIoMKSG51p6Um8b3i7GISs7kjTq/PZoioCfJzfKdJTN0Q45kQEQuh9H88M3yEs3DbtRTKALraM0YC8laiMiOOe6ADmTcCiREeAWZelBaEXRaSuj2lx0xHaRYqF65O0Lo5OCFU18A8cMDE4MLYm9w2QSr9NgQAIcRxZsNpA7UJR0e71JL+VU+ISWFk5I97lra8uGg7GlQYhGd4Gc6rxsLFRiIeGO4abP4S4ekQ1fiqDCy87GZHd52fn5aaDGuvOmIofrzpVwMvtbreZ/855OaXTRcNiNE0wzGZSxbjg26v8ko8L537v/XCCWP2MFaArJpvnkep0pA+O86MWjRAZPQRfznZiSIaTppy6m3p6HrNSsY7fDtz7Cl4V/DJAjQDoyiL2uwf1UHVd2AIrzBUSlJaTj4k6NL97a/GqhWKU9RUmjnYKpm2r+JYUcrkCuZKvcYvrg8pDoUKQywY9GDWg03DUFSirlUXBS5SWn/KAntnf0IdHGL/7mwXqDG+LZYjbEdQmqUqq4y54TNmWUP7IgcAw5816YBzwiNIJiE9M4lPCzeI/FGBeYy3p6IAmH4AjXXmvQ4Iy0Y82NTobcAggT2Cdqz6Mx4TdGoq9fn2etrWKUNFyatAHydQTVUQ2S5OWVUlugcNvoUrlA8cJJz9MqOa/W3iVno4zDHfE7zhoY5f5lRTVZDhrQbR8LS4eRLz8iPMyBL6o4PiLlp89FjdokQLaSBmKHUwWp0na5fE3v9zny2YcDXG/jfI9sctulHRbdkI5a4GOPJx4oAJQzVZ/yYAado8KNZUdEFs9ZPiBsausotXMNebEgr0dyopuqfScFJ3ODNPHgclACPdccwv0YJGQdsN2lhoV4HVGBxcEUeUX/alr4nqpcc1CCR3vR7g40zteQg/JvWmFlUE4mAiTpHlYGrB7w+U2KdSwQz2QJKBe/5eiixWipmfP15AFWrK8Sh1GBBYLgzki1wTMhGQmagXqJ2+FuqJ8f0XzXCVJFHQdMAw8xco11HhM347alrAu+wmX3pDFABOvkC+WPX0Uhg1Z5MVHKNROxaR84YV3s12UcM+70cJ460SzEaKLyh472vOMD3XnaK7zxZcXlWqenEvcjmgGNR2OKbI1s8U+iwiW+HotHalp3e1MGDy6BMVIvajnAzkFHbeVsgjmJUkrP9OAwnEHYXVBqYx3q7LvXjoVR0mY8h+ZaOnh053pdsGkmbqhyryN01eVHySr+CkDYkSMeZ1xjPNVM+gVLTDKu2VGsMUJqWO4TwPDP0VOg2/8ITbAUaMGb4LjL7L+Pi11lEVMXTYIlAZ/QHmTENjyx3kDkBdfcvvQt6tKk6jYFM4EG5UXDTaF5+1ZjRz6W7MdJPC+wTkbDUim4p5QQH3b9kGk2Bkilyeur8Bc20wm5uJSBO95GfYDI1EZipoRaH7uVveneqz43tlTZGRQ4a7CNmMHgXyOQQOL6WQkgMUTQDT8vh21aSdz7ERiZT1jK9F+v6wgFvuEmGngSvIUR2CJkc5tx1QygfZnAruONobB1idCLB1FCfO7N1ZdRocT8/Wye+EnDiO9pzqIpnLDl4bkaRKW+ekBVwHn46Shw1X0tclt/0ROijuUB4kIInrVJU4buWf4YITJtjOJ6iKdr1u+flgQeFH70GxKjhdgt/MrwfB4K/sXczQ+9zYcrD4dhY6qZhZ010rrxggWA8JaZyg2pYij8ieYEg1aZJkZK9O1Re7sB0iouf60rK0Gd+AYlp7soqCBCDGwfKeUQhCBn0E0o0GS6PdmjLi0TtCYZeqazqwN+yNINIA8Lk3iPDnWUiIPLGNcHmZDxfeK0iAdxm/T7LnN+gemRL61hHIc0NCAZaiYJR+OHnLWSe8sLrK905B5eEJHNlWq4RmEXIaFTmo49f8w61+NwfEUyuJAwVqZCLFcyHBKAcIVj3sNzfEOXzVKIndxHw+AR93owhbCxUZf6Gs8cz6/1VdrFEPrv330+9s6BtMVPJ3zl/Uf9rUi0Z/opexfdL3ykF76e999GPfVv8fJv/Y/+/5hEMon1tqNFyVRevV9y9/uIvsG3dbB8GRRrgaEXfhx+2xeOFt+cEn3RZanNxdEe2+B6MHpNbrRE53PlDifPvFcp4kO78ILR0T4xyW/WGPyBsqGdoA7zJJCu1TKbGfhnqgnRbxbB2B3UZoeQ2bz2sTVnUwokTcTU21RxN1PYPS3Sar7T0eRIsyCNowr9amwoMU/od9s2APtiKNL6ENOlyKADstAEWKA+sdKDhrJ6BOhRJmZ+QJbAaZ3/5Fq0/lumCgEzGEbu3yi0Y4I4EgVAjqxh4HbuQn0GrRhOWyAfsglQJAVL1y/6yezS2k8RE2MstJLh92NOB3GCYgFXznF4d25qiP4ZCyI4RYGesut6FXK6GwPpKK8WHEkhYui0AyEmr5Ml3uBFtPFdnioI8RiCooa7Z1G1WuyIi3nSNglutc+xY8BkeW3JJXPK6jd2VIMpaSxpVtFq+R+ySK9J6WG5Qvt+C+QH1hyYUOVK7857nFmyDBYgZ/o+AnibzNVqyYCJQvyDXDTK+iXdkA71bY7TL3bvuLxLBQ8kbTvTEY9aqkQ3+MiLWbEgjLzOH+lXgco1ERgzd80rDCymlpaRQbOYnKG/ODoFl46lzT0cjM5FYVvv0qLUbD5lyJtMUaC1pFlTkNONx6lliaX9o0i/1vws5bNKn5OuENQEKmLlcP4o2ZmJjD4zzd3Fk32uQ4uRWkPSUqb4LBe3EXHdORNB2BWsws5daRnMfNVX7isPSb1hMQdAJi1/qmDMfRUlCU74pmnzjbXfL8PVG8NsW6IQM2Ne23iCPIpryJjYbVnm5hCvKpMa7HLViNiNc+xTfDIaKm3jctViD8A1M9YPJNk003VVr4Zo2MuGW8vil8SLaGpPXqG7I4DLdtl8a4Rbx1Lt4w5Huqaa1XzZBtj208EJVGcmKYEuaeN27zT9EE6a09JerXdEbpaNgNqYJdhP1NdqiPKsbDRUi86XvvNC7rME5mrSQtrzAZVndtSjCMqd8BmaeGR4l4YFULGRBeXIV9Y4yxLFdyoUNpiy2IhePSWzBofYPP0eIa2q5JP4j9G8at/AqoSsLAUuRXtvgsqX/zYwsE+of6oSDbUOo4RMJw+DOUTJq+hnqwKim9Yy/napyZNTc2rCq6V9jHtJbxGPDwlzWj/Sk3zF/BHOlT/fSjSq7FqlPI1q6J+ru8Aku008SFINXZfOfnZNOvGPMtEmn2gLPt+H4QLA+/SYe4j398auzhKIp2Pok3mPC5q1IN1HgR+mnEfc4NeeHYwd2/kpszR3cBn7ni9NbIqhtSWFW8xbUJuUPVOeeXu3j0IGZmFNiwaNZ6rH4/zQ2ODz6tFxRLsUYZu1bfd1uIvfQDt4YD/efKYv8VF8bHGDgK22w2Wqwpi43vNCOXFJZCGMqWiPbL8mil6tsmOTXAWCyMCw73e2rADZj2IK6rqksM3EXF2cbLb4vjB14wa/yXK5vwU+05MzERJ5nXsXsW21o7M+gO0js2OyKciP5uF2iXyb2DiptwQeHeqygkrNsqVCSlldxBMpwHi1vfc8RKpP/4L3Lmpq6DZcvhDDfxTCE3splacTcOtXdK2g303dIWBVe2wD/Gvja1cClFQ67gw0t1ZUttsUgQ1Veky8oOpS6ksYEc4bqseCbZy766SvL3FodmnahlWJRgVCNjPxhL/fk2wyvlKhITH/VQCipOI0dNcRa5B1M5HmOBjTLeZQJy237e2mobwmDyJNHePhdDmiknvLKaDbShL+Is1XTCJuLQd2wmdJL7+mKvs294whXQD+vtd88KKk0DXP8B1Xu9J+xo69VOuFgexgTrcvI6SyltuLix9OPuE6/iRJYoBMEXxU4shQMf4Fjqwf1PtnJ/wWSZd29rhZjRmTGgiGTAUQqRz+nCdjeMfYhsBD5Lv60KILWEvNEHfmsDs2L0A252351eUoYxAysVaCJVLdH9QFWAmqJDCODUcdoo12+gd6bW2boY0pBVHWL6LQDK5bYWh1V8vFvi0cRpfwv7cJiMX3AZNJuTddHehTIdU0YQ/sQ1dLoF2xQPcCuHKiuCWOY30DHe1OwcClLAhqAKyqlnIbH/8u9ScJpcS4kgp6HKDUdiOgRaRGSiUCRBjzI5gSksMZKqy7Sd51aeg0tgJ+x0TH9YH2Mgsap9N7ENZdEB0bey2DMTrBA1hn56SErNHf3tKtqyL9b6yXEP97/rc+jgD2N1LNUH6RM9AzP3kSipr06RkKOolR7HO768jjWiH1X92jA7dkg7gcNcjqsZCgfqWw0tPXdLg20cF6vnQypg7gLtkazrHAodyYfENPQZsdfnjMZiNu4nJO97D1/sQE+3vNFzrSDOKw+keLECYf7RJwVHeP/j79833oZ0egonYB2FlFE5qj02B/LVOMJQlsB8uNg3Leg4qtZwntsOSNidR0abbZmAK4sCzvt8Yiuz2yrNCJoH5O8XvX/vLeR/BBYTWj0sOPYM/jyxRd5+/JziKAABaPcw/34UA3aj/gLZxZgRCWN6m4m3demanNgsx0P237/Q+Ew5VYnJPkyCY0cIVHoFn2Ay/e7U4P19APbPFXEHX94N6KhEMPG7iwB3+I+O1jd5n6VSgHegxgaSawO6iQCYFgDsPSMsNOcUj4q3sF6KzGaH/0u5PQoAj/8zq6Uc9MoNrGqhYeb2jQo0WlGlXjxtanZLS24/OIN5Gx/2g684BPDQpwlqnkFcxpmP/osnOXrFuu4PqifouQH0eF5qCkvITQbJw/Zvy5mAHWC9oU+cTiYhJmSfKsCyt1cGVxisKu+NymEQIAyaCgud/V09qT3nk/9s/SWsYtha7yNpzBIMM40rCSGaJ9u6lEkl00vXBiEt7p9P5IBCiavynEOv7FgLqPdeqxRiCwuFVMolSIUBcoyfUC2e2FJSAUgYdVGFf0b0Kn2EZlK97yyxrT2MVgvtRikfdaAW8RwEEfN+B7/eK8bBdp7URpbqn1xcrC6d2UjdsKbzCjBFqkKkoZt7Mrhg6YagE7spkqj0jOrWM+UGQ0MUlG2evP1uE1p2xSv4dMK0dna6ENcNUF+xkaJ7B764NdxLCpuvhblltVRAf7vK5qPttJ/9RYFUUSGcLdibnz6mf7WkPO3MkUUhR2mAOuGv8IWw5XG1ZvoVMnjSAZe6T7WYA99GENxoHkMiKxHlCuK5Gd0INrISImHQrQmv6F4mqU/TTQ8nHMDzCRivKySQ8dqkpQgnUMnwIkaAuc6/FGq1hw3b2Sba398BhUwUZSAIO8XZvnuLdY2n6hOXws+gq9BHUKcKFA6kz6FDnpxLPICa3qGhnc97bo1FT/XJk48LrkHJ2CAtBv0RtN97N21plfpXHvZ8gMJb7Zc4cfI6MbPwsW7AilCSXMFIEUEmir8XLEklA0ztYbGpTTGqttp5hpFTTIqUyaAIqvMT9A/x+Ji5ejA4Bhxb/cl1pUdOD6epd3yilIdO6j297xInoiBPuEDW2/UfslDyhGkQs7Wy253bVnlT+SWg89zYIK/9KXFl5fe+jow2rd5FXv8zDPrmfMXiUPt9QBO/iK4QGbX5j/7Rx1c1vzsY8ONbP3lVIaPrhL4+1QrECTN3nyKavGG0gBBtHvTKhGoBHgMXHStFowN+HKrPriYu+OZ05Frn8okQrPaaxoKP1ULCS/cmKFN3gcH7HQlVjraCeQmtjg1pSQxeuqXiSKgLpxc/1OiZsU4+n4lz4hpahGyWBURLi4642n1gn9qz9bIsaCeEPJ0uJmenMWp2tJmIwLQ6VSgDYErOeBCfSj9P4G/vI7oIF+l/n5fp956QgxGvur77ynawAu3G9MdFbJbu49NZnWnnFcQHjxRuhUYvg1U/e84N4JTecciDAKb/KYIFXzloyuE1eYXf54MmhjTq7B/yBToDzzpx3tJCTo3HCmVPYfmtBRe3mPYEE/6RlTIxbf4fSOcaKFGk4gbaUWe44hVk9SZzhW80yfW5QWBHxmtUzvMhfVQli4gZTktIOZd9mjJ5hsbmzttaHQB29Am3dZkmx3g/qvYocyhZ2PXAWsNQiIaf+Q8W/MWPIK7/TjvCx5q2XRp4lVWydMc2wIQkhadDB0xsnw/kSEyGjLKjI4coVIwtubTF3E7MJ6LS6UOsJKj82XVAVPJJcepfewbzE91ivXZvOvYfsmMevwtPpfMzGmC7WJlyW2j0jh7AF1JLmwEJSKYwIvu6DHc3YnyLH9ZdIBnQ+nOVDRiP+REpqv++typYHIvoJyICGA40d8bR7HR2k7do6UQTHF4oriYeIQbxKe4Th6+/l1BjUtS9hqORh3MbgvYrStXTfSwaBOmAVQZzpYNqsAmQyjY56MUqty3c/xH6GuhNvNaG9vGbG6cPtBM8UA3e8r51D0AR9kozKuGGSMgLz3nAHxDNnc7GTwpLj7/6HeWp1iksDeTjwCLpxejuMtpMnGJgsiku1sOACwQ9ukzESiDRN77YNESxR5LphOlcASXA5uIts1LnBIcn1J7BLWs49DMALSnuz95gdOrTZr0u1SeYHinno/pE58xYoXbVO/S+FEMMs5qyWkMnp8Q3ClyTlZP52Y9nq7b8fITPuVXUk9ohG5EFHw4gAEcjFxfKb3xuAsEjx2z1wxNbSZMcgS9GKyW3R6KwJONgtA64LTyxWm8Bvudp0M1FdJPEGopM4Fvg7G/hsptkhCfHFegv4ENwxPeXmYhxwZy7js+BeM27t9ODBMynVCLJ7RWcBMteZJtvjOYHb5lOnCLYWNEMKC59BA7covu1cANa2PXL05iGdufOzkgFqqHBOrgQVUmLEc+Mkz4Rq8O6WkNr7atNkH4M8d+SD1t/tSzt3oFql+neVs+AwEI5JaBJaxARtY2Z4mKoUqxds4UpZ0sv3zIbNoo0J4fihldQTX3XNcuNcZmcrB5LTWMdzeRuAtBk3cZHYQF6gTi3PNuDJ0nmR+4LPLoHvxQIxRgJ9iNNXqf2SYJhcvCtJiVWo85TsyFOuq7EyBPJrAdhEgE0cTq16FQXhYPJFqSfiVn0IQnPOy0LbU4BeG94QjdYNB0CiQ3QaxQqD2ebSMiNjaVaw8WaM4Z5WnzcVDsr4eGweSLa2DE3BWViaxhZFIcSTjgxNCAfelg+hznVOYoe5VqTYs1g7WtfTm3e4/WduC6p+qqAM8H4ZyrJCGpewThTDPe6H7CzX/zQ8Tm+r65HeZn+MsmxUciEWPlAVaK/VBaQBWfoG/aRL/jSZIQfep/89GjasWmbaWzeEZ2R1FOjvyJT37O9B8046SRSKVEnXWlBqbkb5XCS3qFeuE9xb9+frEknxWB5h1D/hruz2iVDEAS7+qkEz5Ot5agHJc7WCdY94Ws61sURcX5nG8UELGBAHZ3i+3VulAyT0nKNNz4K2LBHBWJcTBX1wzf+//u/j/9+//v87+9/l9Lbh/L/uyNYiTsWV2LwsjaA6MxTuzFMqmxW8Jw/+IppdX8t/Clgi1rI1SN0UC/r6tX/4lUc2VV1OQReSeCsjUpKZchw4XUcjHfw6ryCV3R8s6VXm67vp4n+lcPV9gJwmbKQEsmrJi9c2vkwrm8HFbVYNTaRGq8D91t9n5+U+aD/hNtN3HjC/nC/vUoGFSCkXP+NlRcmLUqLbiUBl4LYf1U/CCvwtd3ryCH8gUmGITAxiH1O5rnGTz7y1LuFjmnFGQ1UWuM7HwfXtWl2fPFKklYwNUpF2IL/TmaRETjQiM5SJacI+3Gv5MBU8lP5Io6gWkawpyzNEVGqOdx4YlO1dCvjbWFZWbCmeiFKPSlMKtKcMFLs/KQxtgAHi7NZNCQ32bBAW2mbHflVZ8wXKi1JKVHkW20bnYnl3dKWJeWJOiX3oKPBD6Zbi0ZvSIuWktUHB8qDR8DMMh1ZfkBL9FS9x5r0hBGLJ8pUCJv3NYH+Ae8p40mZWd5m5fhobFjQeQvqTT4VKWIYfRL0tfaXKiVl75hHReuTJEcqVlug+eOIIc4bdIydtn2K0iNZPsYWQvQio2qbO3OqAlPHDDOB7DfjGEfVF51FqqNacd6QmgFKJpMfLp5DHTv4wXlONKVXF9zTJpDV4m1sYZqJPhotcsliZM8yksKkCkzpiXt+EcRQvSQqmBS9WdWkxMTJXPSw94jqI3varCjQxTazjlMH8jTS8ilaW8014/vwA/LNa+YiFoyyx3s/KswP3O8QW1jtq45yTM/DX9a8M4voTVaO2ebvw1EooDw/yg6Y1faY+WwrdVs5Yt0hQ5EwRfYXSFxray1YvSM+kYmlpLG2/9mm1MfmbKHXr44Ih8nVKb1M537ZANUkCtdsPZ80JVKVKabVHCadaLXg+IV8i5GSwpZti0h6diTaKs9sdpUKEpd7jDUpYmHtiX33SKiO3tuydkaxA7pEc9XIQEOfWJlszj5YpL5bKeQyT7aZSBOamvSHl8xsWvgo26IP/bqk+0EJUz+gkkcvlUlyPp2kdKFtt7y5aCdks9ZJJcFp5ZWeaWKgtnXMN3ORwGLBE0PtkEIek5FY2aVssUZHtsWIvnljMVJtuVIjpZup/5VL1yPOHWWHkOMc6YySWMckczD5jUj2mlLVquFaMU8leGVaqeXis+aRRL8zm4WuBk6cyWfGMxgtr8useQEx7k/PvRoZyd9nde1GUCV84gMX8Ogu/BWezYPSR27llzQnA97oo0pYyxobYUJfsj+ysTm9zJ+S4pk0TGo9VTG0KjqYhTmALfoDZVKla2b5yhv241PxFaLJs3i05K0AAIdcGxCJZmT3ZdT7CliR7q+kur7WdQjygYtOWRL9B8E4s4LI8KpAj7bE0dg7DLOaX+MGeAi0hMMSSWZEz+RudXbZCsGYS0QqiXjH9XQbd8sCB+nIVTq7/T/FDS+zWY9q7Z2fdq1tdLb6v3hKKVDAw5gjj6o9r1wHFROdHc18MJp4SJ2Ucvu+iQ9EgkekW8VCM+psM6y+/2SBy8tNN4a3L1MzP+OLsyvESo5gS7IQOnIqMmviJBVc6zbVG1n8eXiA3j46kmvvtJlewwNDrxk4SbJOtP/TV/lIVK9ueShNbbMHfwnLTLLhbZuO79ec5XvfgRwLFK+w1r5ZWW15rVFZrE+wKqNRv5KqsLNfpGgnoUU6Y71NxEmN7MyqwqAQqoIULOw/LbuUB2+uE75gJt+kq1qY4LoxV+qR/zalupea3D5+WMeaRIn0sAI6DDWDh158fqUb4YhAxhREbUN0qyyJYkBU4V2KARXDT65gW3gRsiv7xSPYEKLwzgriWcWgPr0sbZnv7m1XHNFW6xPdGNZUdxFiUYlmXNjDVWuu7LCkX/nVkrXaJhiYktBISC2xgBXQnNEP+cptWl1eG62a7CPXrnrkTQ5BQASbEqUZWMDiZUisKyHDeLFOaJILUo5f6iDt4ZO8MlqaKLto0AmTHVVbkGuyPa1R/ywZsWRoRDoRdNMMHwYTsklMVnlAd2S0282bgMI8fiJpDh69OSL6K3qbo20KfpNMurnYGQSr/stFqZ7hYsxKlLnKAKhsmB8AIpEQ4bd/NrTLTXefsE6ChRmKWjXKVgpGoPs8GAicgKVw4K0qgDgy1A6hFq1WRat3fHF+FkU+b6H4NWpOU3KXTxrIb2qSHAb+qhm8hiSROi/9ofapjxhyKxxntPpge6KL5Z4+WBMYkAcE6+0Hd3Yh2zBsK2MV3iW0Y6cvOCroXlRb2MMJtdWx+3dkFzGh2Pe3DZ9QpSqpaR/rE1ImOrHqYYyccpiLC22amJIjRWVAherTfpQLmo6/K2pna85GrDuQPlH1Tsar8isAJbXLafSwOof4gg9RkAGm/oYpBQQiPUoyDk2BCQ1k+KILq48ErFo4WSRhHLq/y7mgw3+L85PpP6xWr6cgp9sOjYjKagOrxF148uhuaWtjet953fh1IQiEzgC+d2IgBCcUZqgTAICm2bR8oCjDLBsmg+ThyhfD+zBalsKBY1Ce54Y/t9cwfbLu9SFwEgphfopNA3yNxgyDafUM3mYTovZNgPGdd4ZFFOj1vtfFW3u7N+iHEN1HkeesDMXKPyoCDCGVMo4GCCD6PBhQ3dRZIHy0Y/3MaE5zU9mTCrwwnZojtE+qNpMSkJSpmGe0EzLyFelMJqhfFQ7a50uXxZ8pCc2wxtAKWgHoeamR2O7R+bq7IbPYItO0esdRgoTaY38hZLJ5y02oIVwoPokGIzxAMDuanQ1vn2WDQ00Rh6o5QOaCRu99fwDbQcN0XAuqkFpxT/cfz3slGRVokrNU0iqiMAJFEbKScZdmSkTUznC0U+MfwFOGdLgsewRyPKwBZYSmy6U325iUhBQNxbAC3FLKDV9VSOuQpOOukJ/GAmu/tyEbX9DgEp6dv1zoU0IqzpG6gssSjIYRVPGgU1QAQYRgIT8gEV0EXr1sqeh2I6rXjtmoCYyEDCe/PkFEi/Q48FuT29p557iN+LCwk5CK/CZ2WdAdfQZh2Z9QGrzPLSNRj5igUWzl9Vi0rCqH8G1Kp4QMLkuwMCAypdviDXyOIk0AHTM8HBYKh3b0/F+DxoNj4ZdoZfCpQVdnZarqoMaHWnMLNVcyevytGsrXQEoIbubqWYNo7NRHzdc0zvT21fWVirj7g36iy6pxogfvgHp1xH1Turbz8QyyHnXeBJicpYUctbzApwzZ1HT+FPEXMAgUZetgeGMwt4G+DHiDT2Lu+PT21fjJCAfV16a/Wu1PqOkUHSTKYhWW6PhhHUlNtWzFnA7MbY+r64vkwdpfNB2JfWgWXAvkzd42K4lN9x7Wrg4kIKgXCb4mcW595MCPJ/cTfPAMQMFWwnqwde4w8HZYJFpQwcSMhjVz4B8p6ncSCN1X4klxoIH4BN2J6taBMj6lHkAOs8JJAmXq5xsQtrPIPIIp/HG6i21xMGcFgqDXSRF0xQg14d2uy6HgKE13LSvQe52oShF5Jx1R6avyL4thhXQZHfC94oZzuPUBKFYf1VvDaxIrtV6dNGSx7DO0i1p6CzBkuAmEqyWceQY7F9+U0ObYDzoa1iKao/cOD/v6Q9gHrrr1uCeOk8fST9MG23Ul0KmM3r+Wn6Hi6WAcL7gEeaykicvgjzkjSwFsAXIR81Zx4QJ6oosVyJkCcT+4xAldCcihqvTf94HHUPXYp3REIaR4dhpQF6+FK1H0i9i7Pvh8owu3lO4PT1iuqu+DkL2Bj9+kdfGAg2TXw03iNHyobxofLE2ibjsYDPgeEQlRMR7afXbSGQcnPjI2D+sdtmuQ771dbASUsDndU7t58jrrNGRzISvwioAlHs5FA+cBE5Ccznkd8NMV6BR6ksnKLPZnMUawRDU1MZ/ib3xCdkTblHKu4blNiylH5n213yM0zubEie0o4JhzcfAy3H5qh2l17uLooBNLaO+gzonTH2uF8PQu9EyH+pjGsACTMy4cHzsPdymUSXYJOMP3yTkXqvO/lpvt0cX5ekDEu9PUfBeZODkFuAjXCaGdi6ew4qxJ8PmFfwmPpkgQjQlWqomFY6UkjmcnAtJG75EVR+NpzGpP1Ef5qUUbfowrC3zcSLX3BxgWEgEx/v9cP8H8u1Mvt9/rMDYf6sjwU1xSOPBgzFEeJLMRVFtKo5QHsUYT8ZRLCah27599EuqoC9PYjYO6aoAMHB8X1OHwEAYouHfHB3nyb2B+SnZxM/vw/bCtORjLMSy5aZoEpvgdGvlJfNPFUu/p7Z4VVK1hiI0/UTuB3ZPq4ohEbm7Mntgc1evEtknaosgZSwnDC2BdMmibpeg48X8Ixl+/8+xXdbshQXUPPvx8jT3fkELivHSmqbhblfNFShWAyQnJ3WBU6SMYSIpTDmHjdLVAdlADdz9gCplZw6mTiHqDwIsxbm9ErGusiVpg2w8Q3khKV/R9Oj8PFeF43hmW/nSd99nZzhyjCX3QOZkkB6BsH4H866WGyv9E0hVAzPYah2tkRfQZMmP2rinfOeQalge0ovhduBjJs9a1GBwReerceify49ctOh5/65ATYuMsAkVltmvTLBk4oHpdl6i+p8DoNj4Fb2vhdFYer2JSEilEwPd5n5zNoGBXEjreg/wh2NFnNRaIUHSOXa4eJRwygZoX6vnWnqVdCRT1ARxeFrNBJ+tsdooMwqnYhE7zIxnD8pZH+P0Nu1wWxCPTADfNWmqx626IBJJq6NeapcGeOmbtXvl0TeWG0Y7OGGV4+EHTtNBIT5Wd0Bujl7inXgZgfXTM5efD3qDTJ54O9v3Bkv+tdIRlq1kXcVD0BEMirmFxglNPt5pedb1AnxuCYMChUykwsTIWqT23XDpvTiKEru1cTcEMeniB+HQDehxPXNmkotFdwUPnilB/u4Nx5Xc6l8J9jH1EgKZUUt8t8cyoZleDBEt8oibDmJRAoMKJ5Oe9CSWS5ZMEJvacsGVdXDWjp/Ype5x0p9PXB2PAwt2LRD3d+ftNgpuyvxlP8pB84oB1i73vAVpwyrmXW72hfW6Dzn9Jkj4++0VQ4d0KSx1AsDA4OtXXDo63/w+GD+zC7w5SJaxsmnlYRQ4dgdjA7tTl2KNLnpJ+mvkoDxtt1a4oPaX3EVqj96o9sRKBQqU7ZOiupeAIyLMD+Y3YwHx30XWHB5CQiw7q3mj1EDlP2eBsZbz79ayUMbyHQ7s8gu4Lgip1LiGJj7NQj905/+rgUYKAA5qdrlHKIknWmqfuR+PB8RdBkDg/NgnlT89G72h2NvySnj7UyBwD+mi/IWs1xWbxuVwUIVXun5cMqBtFbrccI+DILjsVQg6eeq0itiRfedn89CvyFtpkxaauEvSANuZmB1p8FGPbU94J9medwsZ9HkUYjmI7OH5HuxendLbxTaYrPuIfE2ffXFKhoNBUp33HsFAXmCV/Vxpq5AYgFoRr5Ay93ZLRlgaIPjhZjXZZChT+aE5iWAXMX0oSFQEtwjiuhQQItTQX5IYrKfKB+queTNplR1Hoflo5/I6aPPmACwQCE2jTOYo5Dz1cs7Sod0KTG/3kEDGk3kUaUCON19xSJCab3kNpWZhSWkO8l+SpW70Wn3g0ciOIJO5JXma6dbos6jyisuxXwUUhj2+1uGhcvuliKtWwsUTw4gi1c/diEEpZHoKoxTBeMDmhPhKTx7TXWRakV8imJR355DcIHkR9IREHxohP4TbyR5LtFU24umRPRmEYHbpe1LghyxPx7YgUHjNbbQFRQhh4KeU1EabXx8FS3JAxp2rwRDoeWkJgWRUSKw6gGP5U2PuO9V4ZuiKXGGzFQuRuf+tkSSsbBtRJKhCi3ENuLlXhPbjTKD4djXVnfXFds6Zb+1XiUrRfyayGxJq1+SYBEfbKlgjiSmk0orgTqzSS+DZ5rTqsJbttiNtp+KMqGE2AHGFw6jQqM5vD6vMptmXV9OAjq49Uf/Lx9Opam+Hn5O9p8qoBBAQixzQZ4eNVkO9sPzJAMyR1y4/RCQQ1s0pV5KAU5sKLw3tkcFbI/JqrjCsK4Mw+W8aod4lioYuawUiCyVWBE/qPaFi5bnkgpfu/ae47174rI1fqQoTbW0HrU6FAejq7ByM0V4zkZTg02/YJK2N7hUQRCeZ4BIgSEqgD8XsjzG6LIsSbuHoIdz/LhFzbNn1clci1NHWJ0/6/O8HJMdIpEZbqi1RrrFfoo/rI/7ufm2MPG5lUI0IYJ4MAiHRTSOFJ2oTverFHYXThkYFIoyFx6rMYFgaOKM4xNWdlOnIcKb/suptptgTOTdVIf4YgdaAjJnIAm4qNNHNQqqAzvi53GkyRCEoseUBrHohZsjUbkR8gfKtc/+Oa72lwxJ8Mq6HDfDATbfbJhzeIuFQJSiw1uZprHlzUf90WgqG76zO0eCB1WdPv1IT6sNxxh91GEL2YpgC97ikFHyoaH92ndwduqZ6IYjkg20DX33MWdoZk7QkcKUCgisIYslOaaLyvIIqRKWQj16jE1DlQWJJaPopWTJjXfixEjRJJo8g4++wuQjbq+WVYjsqCuNIQW3YjnxKe2M5ZKEqq+cX7ZVgnkbsU3RWIyXA1rxv4kGersYJjD//auldXGmcEbcfTeF16Y1708FB1HIfmWv6dSFi6oD4E+RIjCsEZ+kY7dKnwReJJw3xCjKvi3kGN42rvyhUlIz0Bp+fNSV5xwFiuBzG296e5s/oHoFtUyUplmPulIPl+e1CQIQVtjlzLzzzbV+D/OVQtYzo5ixtMi5BmHuG4N/uKfJk5UIREp7+12oZlKtPBomXSzAY0KgtbPzzZoHQxujnREUgBU+O/jKKhgxVhRPtbqyHiUaRwRpHv7pgRPyUrnE7fYkVblGmfTY28tFCvlILC04Tz3ivkNWVazA+OsYrxvRM/hiNn8Fc4bQBeUZABGx5S/xFf9Lbbmk298X7iFg2yeimvsQqqJ+hYbt6uq+Zf9jC+Jcwiccd61NKQtFvGWrgJiHB5lwi6fR8KzYS7EaEHf/ka9EC7H8D+WEa3TEACHBkNSj/cXxFeq4RllC+fUFm2xtstYLL2nos1DfzsC9vqDDdRVcPA3Ho95aEQHvExVThXPqym65llkKlfRXbPTRiDepdylHjmV9YTWAEjlD9DdQnCem7Aj/ml58On366392214B5zrmQz/9ySG2mFqEwjq5sFl5tYJPw5hNz8lyZPUTsr5E0F2C9VMPnZckWP7+mbwp/BiN7f4kf7vtGnZF2JGvjK/sDX1RtcFY5oPQnE4lIAYV49U3C9SP0LCY/9i/WIFK9ORjzM9kG/KGrAuwFmgdEpdLaiqQNpCTGZVuAO65afkY1h33hrqyLjZy92JK3/twdj9pafFcwfXONmPQWldPlMe7jlP24Js0v9m8bIJ9TgS2IuRvE9ZVRaCwSJYOtAfL5H/YS4FfzKWKbek+GFulheyKtDNlBtrdmr+KU+ibHTdalzFUmMfxw3f36x+3cQbJLItSilW9cuvZEMjKw987jykZRlsH/UI+HlKfo2tLwemBEeBFtmxF2xmItA/dAIfQ+rXnm88dqvXa+GapOYVt/2waFimXFx3TC2MUiOi5/Ml+3rj/YU6Ihx2hXgiDXFsUeQkRAD6wF3SCPi2flk7XwKAA4zboqynuELD312EJ88lmDEVOMa1W/K/a8tGylZRMrMoILyoMQzzbDJHNZrhH77L9qSC42HVmKiZ5S0016UTp83gOhCwz9XItK9fgXfK3F5d7nZCBUekoLxrutQaPHa16Rjsa0gTrzyjqTnmcIcrxg6X6dkKiucudc0DD5W4pJPf0vuDW8r5/uw24YfMuxFRpD2ovT2mFX79xH6Jf+MVdv2TYqR6/955QgVPe3JCD/WjAYcLA9tpXgFiEjge2J5ljeI/iUzg91KQuHkII4mmHZxC3XQORLAC6G7uFn5LOmlnXkjFdoO976moNTxElS8HdxWoPAkjjocDR136m2l+f5t6xaaNgdodOvTu0rievnhNAB79WNrVs6EsPgkgfahF9gSFzzAd+rJSraw5Mllit7vUP5YxA843lUpu6/5jAR0RvH4rRXkSg3nE+O5GFyfe+L0s5r3k05FyghSFnKo4TTgs07qj4nTLqOYj6qaW9knJTDkF5OFMYbmCP+8H16Ty482OjvERV6OFyw043L9w3hoJi408sR+SGo1WviXUu8d7qS+ehKjpKwxeCthsm2LBFSFeetx0x4AaKPxtp3CxdWqCsLrB1s/j5TAhc1jNZsXWl6tjo/WDoewxzg8T8NnhZ1niUwL/nhfygLanCnRwaFGDyLw+sfZhyZ1UtYTp8TYB6dE7R3VsKKH95CUxJ8u8N+9u2/9HUNKHW3x3w5GQrfOPafk2w5qZq8MaHT0ebeY3wIsp3rN9lrpIsW9c1ws3VNV+JwNz0Lo9+V7zZr6GD56We6gWVIvtmam5GPPkVAbr74r6SwhuL+TRXtW/0pgyX16VNl4/EAD50TnUPuwrW6OcUO2VlWXS0inq872kk7GUlW6o/ozFKq+Sip6LcTtSDfDrPTcCHhx75H8BeRon+KG2wRwzfDgWhALmiWOMO6h3pm1UCZEPEjScyk7tdLx6WrdA2N1QTPENvNnhCQjW6kl057/qv7IwRryHrZBCwVSbLLnFRiHdTwk8mlYixFt1slEcPD7FVht13HyqVeyD55HOXrh2ElAxJyinGeoFzwKA91zfrdLvDxJSjzmImfvTisreI25EDcVfGsmxLVbfU8PGe/7NmWWKjXcdTJ11jAlVIY/Bv/mcxg/Q10vCHwKG1GW/XbJq5nxDhyLqiorn7Wd7VEVL8UgVzpHMjQ+Z8DUgSukiVwWAKkeTlVVeZ7t1DGnCgJVIdBPZAEK5f8CDyDNo7tK4/5DBjdD5MPV86TaEhGsLVFPQSI68KlBYy84FievdU9gWh6XZrugvtCZmi9vfd6db6V7FmoEcRHnG36VZH8N4aZaldq9zZawt1uBFgxYYx+Gs/qW1jwANeFy+LCoymyM6zgG7j8bGzUyLhvrbJkTYAEdICEb4kMKusKT9V3eIwMLsjdUdgijMc+7iKrr+TxrVWG0U+W95SGrxnxGrE4eaJFfgvAjUM4SAy8UaRwE9j6ZQH5qYAWGtXByvDiLSDfOD0yFA3UCMKSyQ30fyy1mIRg4ZcgZHLNHWl+c9SeijOvbOJxoQy7lTN2r3Y8p6ovxvUY74aOYbuVezryqXA6U+fcp6wSV9X5/OZKP18tB56Ua0gMyxJI7XyNT7IrqN8GsB9rL/kP5KMrjXxgqKLDa+V5OCH6a5hmOWemMUsea9vQl9t5Oce76PrTyTv50ExOqngE3PHPfSL//AItPdB7kGnyTRhVUUFNdJJ2z7RtktZwgmQzhBG/G7QsjZmJfCE7k75EmdIKH7xlnmDrNM/XbTT6FzldcH/rcRGxlPrv4qDScqE7JSmQABJWqRT/TUcJSwoQM+1jvDigvrjjH8oeK2in1S+/yO1j8xAws/T5u0VnIvAPqaE1atNuN0cuRliLcH2j0nTL4JpcR7w9Qya0JoaHgsOiALLCCzRkl1UUESz+ze/gIXHGtDwgYrK6pCFKJ1webSDog4zTlPkgXZqxlQDiYMjhDpwTtBW2WxthWbov9dt2X9XFLFmcF+eEc1UaQ74gqZiZsdj63pH1qcv3Vy8JYciogIVKsJ8Yy3J9w/GhjWVSQAmrS0BPOWK+RKV+0lWqXgYMnIFwpcZVD7zPSp547i9HlflB8gVnSTGmmq1ClO081OW/UH11pEQMfkEdDFzjLC1Cdo/BdL3s7cXb8J++Hzz1rhOUVZFIPehRiZ8VYu6+7Er7j5PSZu9g/GBdmNzJmyCD9wiswj9BZw+T3iBrg81re36ihMLjoVLoWc+62a1U/7qVX5CpvTVF7rocSAKwv4cBVqZm7lLDS/qoXs4fMs/VQi6BtVbNA3uSzKpQfjH1o3x4LrvkOn40zhm6hjduDglzJUwA0POabgdXIndp9fzhOo23Pe+Rk9GSLX0d71Poqry8NQDTzNlsa+JTNG9+UrEf+ngxCjGEsDCc0bz+udVRyHQI1jmEO3S+IOQycEq7XwB6z3wfMfa73m8PVRp+iOgtZfeSBl01xn03vMaQJkyj7vnhGCklsCWVRUl4y+5oNUzQ63B2dbjDF3vikd/3RUMifPYnX5Glfuk2FsV/7RqjI9yKTbE8wJY+74p7qXO8+dIYgjtLD/N8TJtRh04N9tXJA4H59IkMmLElgvr0Q5OCeVfdAt+5hkh4pQgfRMHpL74XatLQpPiOyHRs/OdmHtBf8nOZcxVKzdGclIN16lE7kJ+pVMjspOI+5+TqLRO6m0ZpNXJoZRv9MPDRcAfJUtNZHyig/s2wwReakFgPPJwCQmu1I30/tcBbji+Na53i1W1N+BqoY7Zxo+U/M9XyJ4Ok2SSkBtoOrwuhAY3a03Eu6l8wFdIG1cN+e8hopTkiKF093KuH/BcB39rMiGDLn6XVhGKEaaT/vqb/lufuAdpGExevF1+J9itkFhCfymWr9vGb3BTK4j598zRH7+e+MU9maruZqb0pkGxRDRE1CD4Z8LV4vhgPidk5w2Bq816g3nHw1//j3JStz7NR9HIWELO8TMn3QrP/zZp//+Dv9p429/ogv+GATR+n/UdF+ns9xNkXZQJXY4t9jMkJNUFygAtzndXwjss+yWH9HAnLQQfhAskdZS2l01HLWv7L7us5uTH409pqitvfSOQg/c+Zt7k879P3K9+WV68n7+3cZfuRd/dDPP/03rn+d+/nBvWfgDlt8+LzjqJ/vx3CnNOwiXhho778C96iD+1TBvRZYeP+EH81LE0vVwOOrmCLB3iKzI1x+vJEsrPH4uF0UB4TJ4X3uDfOCo3PYpYe0MF4bouh0DQ/l43fxUF7Y+dpWuvTSffB0yO2UQUETI/LwCZE3BvnevJ7c9zUlY3H58xzke6DNFDQG8n0WtDN4LAYN4nogKav1ezOfK/z+t6tsCTp+dhx4ymjWuCJk1dEUifDP+HyS4iP/Vg9B2jTo9L4NbiBuDS4nuuHW6H+JDQn2JtqRKGkEQPEYE7uzazXIkcxIAqUq1esasZBETlEZY7y7Jo+RoV/IsjY9eIMkUvr42Hc0xqtsavZvhz1OLwSxMOTuqzlhb0WbdOwBH9EYiyBjatz40bUxTHbiWxqJ0uma19qhPruvcWJlbiSSH48OLDDpaHPszvyct41ZfTu10+vjox6kOqK6v0K/gEPphEvMl/vwSv+A4Hhm36JSP9IXTyCZDm4kKsqD5ay8b1Sad/vaiyO5N/sDfEV6Z4q95E+yfjxpqBoBETW2C7xl4pIO2bDODDFurUPwE7EWC2Uplq+AHmBHvir2PSgkR12/Ry65O0aZtQPeXi9mTlF/Wj5GQ+vFkYyhXsLTjrBSP9hwk4GPqDP5rBn5/l8b0mLRAvRSzXHc293bs3s8EsdE3m2exxidWVB4joHR+S+dz5/W+v00K3TqN14CDBth8eWcsTbiwXPsygHdGid0PEdy6HHm2v/IUuV5RVapYmzGsX90mpnIdNGcOOq64Dbc5GUbYpD9M7S+6cLY//QmjxFLP5cuTFRm3vA5rkFZroFnO3bjHF35uU3s8mvL7Tp9nyTc4mymTJ5sLIp7umSnGkO23faehtz3mmTS7fbVx5rP7x3HXIjRNeq/A3xCs9JNB08c9S9BF2O3bOur0ItslFxXgRPdaapBIi4dRpKGxVz7ir69t/bc9qTxjvtOyGOfiLGDhR4fYywHv1WdOplxIV87TpLBy3Wc0QP0P9s4G7FBNOdITS/tep3o3h1TEa5XDDii7fWtqRzUEReP2fbxz7bHWWJdbIOxOUJZtItNZpTFRfj6vm9sYjRxQVO+WTdiOhdPeTJ+8YirPvoeL88l5iLYOHd3b/Imkq+1ZN1El3UikhftuteEYxf1Wujof8Pr4ICTu5ezZyZ4tHQMxlzUHLYO2VMOoNMGL/20S5i2o2obfk+8qqdR7xzbRDbgU0lnuIgz4LelQ5XS7xbLuSQtNS95v3ZUOdaUx/Qd8qxCt6xf2E62yb/HukLO6RyorV8KgYl5YNc75y+KvefrxY+lc/64y9kvWP0a0bDz/rojq+RWjO06WeruWqNFU7r3HPIcLWRql8ICZsz2Ls/qOm/CLn6++X+Qf7mGspYCrZod/lpl6Rw4xN/yuq8gqV4B6aHk1hVE1SfILxWu5gvXqbfARYQpspcxKp1F/c8XOPzkZvmoSw+vEqBLdrq1fr3wAPv5NnM9i8F+jdAuxkP5Z71c6uhK3enlnGymr7UsWZKC12qgUiG8XXGQ9mxnqz4GSIlybF9eXmbqj2sHX+a1jf0gRoONHRdRSrIq03Ty89eQ1GbV/Bk+du4+V15zls+vvERvZ4E7ZbnxWTVjDjb4o/k8jlw44pTIrUGxxuJvBeO+heuhOjpFsO6lVJ/aXnJDa/bM0Ql1cLbXE/Pbv3EZ3vj3iVrB5irjupZTzlnv677NrI9UNYNqbPgp/HZXS+lJmk87wec+7YOxTDo2aw2l3NfDr34VNlvqWJBknuK7oSlZ6/T10zuOoPZOeoIk81N+sL843WJ2Q4Z0fZ3scsqC/JV2fuhWi1jGURSKZV637lf53Xnnx16/vKEXY89aVJ0fv91jGdfG+G4+sniwHes4hS+udOr4RfhFhG/F5gUG35QaU+McuLmclb5ZWmR+sG5V6nf+PxYzlrnFGxpZaK8eqqVo0NfmAWoGfXDiT/FnUbWvzGDOTr8aktOZWg4BYvz5YH12ZbfCcGtNk+dDAZNGWvHov+PIOnY9Prjg8h/wLRrT69suaMVZ5bNuK00lSVpnqSX1NON/81FoP92rYndionwgOiA8WMf4vc8l15KqEEG4yAm2+WAN5Brfu1sq9suWYqgoajgOYt/JCk1gC8wPkK+XKCtRX6TAtgvrnuBgNRmn6I8lVDipOVB9kX6Oxkp4ZKyd1M6Gj8/v2U7k+YQBL95Kb9PQENucJb0JlW3b5tObN7m/Z1j1ev388d7o15zgXsI9CikAGAViR6lkJv7nb4Ak40M2G8TJ447kN+pvfHiOFjSUSP6PM+QfbAywKJCBaxSVxpizHseZUyUBhq59vFwrkyGoRiHbo0apweEZeSLuNiQ+HAekOnarFg00dZNXaPeoHPTRR0FmEyqYExOVaaaO8c0uFUh7U4e/UxdBmthlBDgg257Q33j1hA7HTxSeTTSuVnPZbgW1nodwmG16aKBDKxEetv7D9OjO0JhrbJTnoe+kcGoDJazFSO8/fUN9Jy/g4XK5PUkw2dgPDGpJqBfhe7GA+cjzfE/EGsMM+FV9nj9IAhrSfT/J3QE5TEIYyk5UjsI6ZZcCPr6A8FZUF4g9nnpVmjX90MLSQysIPD0nFzqwCcSJmIb5mYv2Cmk+C1MDFkZQyCBq4c/Yai9LJ6xYkGS/x2s5/frIW2vmG2Wrv0APpCdgCA9snFvfpe8uc0OwdRs4G9973PGEBnQB5qKrCQ6m6X/H7NInZ7y/1674/ZXOVp7OeuCRk8JFS516VHrnH1HkIUIlTIljjHaQtEtkJtosYul77cVwjk3gW1Ajaa6zWeyHGLlpk3VHE2VFzT2yI/EvlGUSz2H9zYE1s4nsKMtMqNyKNtL/59CpFJki5Fou6VXGm8vWATEPwrUVOLvoA8jLuwOzVBCgHB2Cr5V6OwEWtJEKokJkfc87h+sNHTvMb0KVTp5284QTPupoWvQVUwUeogZR3kBMESYo0mfukewRVPKh5+rzLQb7HKjFFIgWhj1w3yN/qCNoPI8XFiUgBNT1hCHBsAz8L7Oyt8wQWUFj92ONn/APyJFg8hzueqoJdNj57ROrFbffuS/XxrSXLTRgj5uxZjpgQYceeMc2wJrahReSKpm3QjHfqExTLAB2ipVumE8pqcZv8LYXQiPHHsgb5BMW8zM5pvQit+mQx8XGaVDcfVbLyMTlY8xcfmm/RSAT/H09UQol5gIz7rESDmnrQ4bURIB4iRXMDQwxgex1GgtDxKp2HayIkR+E/aDmCttNm2C6lytWdfOVzD6X2SpDWjQDlMRvAp1symWv4my1bPCD+E1EmGnMGWhNwmycJnDV2WrQNxO45ukEb08AAffizYKVULp15I4vbNK5DzWwCSUADfmKhfGSUqii1L2UsE8rB7mLuHuUJZOx4+WiizHBJ/hwboaBzhpNOVvgFTf5cJsHef7L1HCI9dOUUbb+YxUJWn6dYOLz+THi91kzY5dtO5c+grX7v0jEbsuoOGnoIreDIg/sFMyG+TyCLIcAWd1IZ1UNFxE8Uie13ucm40U2fcxC0u3WLvLOxwu+F7MWUsHsdtFQZ7W+nlfCASiAKyh8rnP3EyDByvtJb6Kax6/HkLzT9SyEyTMVM1zPtM0MJY14DmsWh4MgD15Ea9Hd00AdkTZ0EiG5NAGuIBzQJJ0JR0na+OB7lQA6UKxMfihIQ7GCCnVz694QvykWXTxpS2soDu+smru1UdIxSvAszBFD1c8c6ZOobA8bJiJIvuycgIXBQIXWwhyTgZDQxJTRXgEwRNAawGSXO0a1DKjdihLVNp/taE/xYhsgwe+VpKEEB4LlraQyE84gEihxCnbfoyOuJIEXy2FIYw+JjRusybKlU2g/vhTSGTydvCvXhYBdtAXtS2v7LkHtmXh/8fly1do8FI/D0f8UbzVb5h+KRhMGSAmR2mhi0YG/uj7wgxcfzCrMvdjitUIpXDX8ae2JcF/36qUWIMwN6JsjaRGNj+jEteGDcFyTUb8X/NHSucKMJp7pduxtD6KuxVlyxxwaeiC1FbGBESO84lbyrAugYxdl+2N8/6AgWpo/IeoAOcsG35IA/b3AuSyoa55L7llBLlaWlEWvuCFd8f8NfcTUgzJv6CbB+6ohWwodlk9nGWFpBAOaz5uEW5xBvmjnHFeDsb0mXwayj3mdYq5gxxNf3H3/tnCgHwjSrpSgVxLmiTtuszdRUFIsn6LiMPjL808vL1uQhDbM7aA43mISXReqjSskynIRcHCJ9qeFopJfx9tqyUoGbSwJex/0aDE3plBPGtNBYgWbdLom3+Q/bjdizR2/AS/c/dH/d3G7pyl1qDXgtOFtEqidwLqxPYtrNEveasWq3vPUUtqTeu8gpov4bdOQRI2kneFvRNMrShyVeEupK1PoLDPMSfWMIJcs267mGB8X9CehQCF0gIyhpP10mbyM7lwW1e6TGvHBV1sg/UyTghHPGRqMyaebC6pbB1WKNCQtlai1GGvmq9zUKaUzLaXsXEBYtHxmFbEZ2kJhR164LhWW2Tlp1dhsGE7ZgIWRBOx3Zcu2DxgH+G83WTPceKG0TgQKKiiNNOlWgvqNEbnrk6fVD+AqRam2OguZb0YWSTX88N+i/ELSxbaUUpPx4vJUzYg/WonSeA8xUK6u7DPHgpqWpEe6D4cXg5uK9FIYVba47V/nb+wyOtk+zG8RrS4EA0ouwa04iByRLSvoJA2FzaobbZtXnq8GdbfqEp5I2dpfpj59TCVif6+E75p665faiX8gS213RqBxTZqfHP46nF6NSenOneuT+vgbLUbdTH2/t0REFXZJOEB6DHvx6N6g9956CYrY/AYcm9gELJXYkrSi+0F0geKDZgOCIYkLU/+GOW5aGj8mvLFgtFH5+XC8hvAE3CvHRfl4ofM/Qwk4x2A+R+nyc9gNu/9Tem7XW4XRnyRymf52z09cTOdr+PG6+P/Vb4QiXlwauc5WB1z3o+IJjlbxI8MyWtSzT+k4sKVbhF3xa+vDts3NxXa87iiu+xRH9cAprnOL2h6vV54iQRXuOAj1s8nLFK8gZ70ThIQcWdF19/2xaJmT0efrkNDkWbpAQPdo92Z8+Hn/aLjbOzB9AI/k12fPs9HhUNDJ1u6ax2VxD3R6PywN7BrLJ26z6s3QoMp76qzzwetrDABKSGkfW5PwS1GvYNUbK6uRqxfyVGNyFB0E+OugMM8kKwmJmupuRWO8XkXXXQECyRVw9UyIrtCtcc4oNqXqr7AURBmKn6Khz3eBN96LwIJrAGP9mr/59uTOSx631suyT+QujDd4beUFpZ0kJEEnjlP+X/Kr2kCKhnENTg4BsMTOmMqlj2WMFLRUlVG0fzdCBgUta9odrJfpVdFomTi6ak0tFjXTcdqqvWBAzjY6hVrH9sbt3Z9gn+AVDpTcQImefbB4edirjzrsNievve4ZT4EUZWV3TxEsIW+9MT/RJoKfZZYSRGfC1CwPG/9rdMOM8qR/LUYvw5f/emUSoD7YSFuOoqchdUg2UePd1eCtFSKgxLSZ764oy4lvRCIH6bowPxZWwxNFctksLeil47pfevcBipkkBIc4ngZG+kxGZ71a72KQ7VaZ6MZOZkQJZXM6kb/Ac0/XkJx8dvyfJcWbI3zONEaEPIW8GbkYjsZcwy+eMoKrYjDmvEEixHzkCSCRPRzhOfJZuLdcbx19EL23MA8rnjTZZ787FGMnkqnpuzB5/90w1gtUSRaWcb0eta8198VEeZMUSfIhyuc4/nywFQ9uqn7jdqXh+5wwv+RK9XouNPbYdoEelNGo34KyySwigsrfCe0v/PlWPvQvQg8R0KgHO18mTVThhQrlbEQ0Kp/JxPdjHyR7E1QPw/ut0r+HDDG7BwZFm9IqEUZRpv2WpzlMkOemeLcAt5CsrzskLGaVOAxyySzZV/D2EY7ydNZMf8e8VhHcKGHAWNszf1EOq8fNstijMY4JXyATwTdncFFqcNDfDo+mWFvxJJpc4sEZtjXyBdoFcxbUmniCoKq5jydUHNjYJxMqN1KzYV62MugcELVhS3Bnd+TLLOh7dws/zSXWzxEb4Nj4aFun5x4kDWLK5TUF/yCXB/cZYvI9kPgVsG2jShtXkxfgT+xzjJofXqPEnIXIQ1lnIdmVzBOM90EXvJUW6a0nZ/7XjJGl8ToO3H/fdxnxmTNKBZxnkpXLVgLXCZywGT3YyS75w/PAH5I/jMuRspej8xZObU9kREbRA+kqjmKRFaKGWAmFQspC+QLbKPf0RaK3OXvBSWqo46p70ws/eZpu6jCtZUgQy6r4tHMPUdAgWGGUYNbuv/1a6K+MVFsd3T183+T8capSo6m0+Sh57fEeG/95dykGJBQMj09DSW2bY0mUonDy9a8trLnnL5B5LW3Nl8rJZNysO8Zb+80zXxqUGFpud3Qzwb7bf+8mq6x0TAnJU9pDQR9YQmZhlna2xuxJt0aCO/f1SU8gblOrbIyMsxTlVUW69VJPzYU2HlRXcqE2lLLxnObZuz2tT9CivfTAUYfmzJlt/lOPgsR6VN64/xQd4Jlk/RV7UKVv2Gx/AWsmTAuCWKhdwC+4HmKEKYZh2Xis4KsUR1BeObs1c13wqFRnocdmuheaTV30gvVXZcouzHKK5zwrN52jXJEuX6dGx3BCpV/++4f3hyaW/cQJLFKqasjsMuO3B3WlMq2gyYfdK1e7L2pO/tRye2mwzwZPfdUMrl5wdLqdd2Kv/wVtnpyWYhd49L6rsOV+8HXPrWH2Kup89l2tz6bf80iYSd+V4LROSOHeamvexR524q4r43rTmtFzQvArpvWfLYFZrbFspBsXNUqqenjxNNsFXatZvlIhk7teUPfK+YL32F8McTnjv0BZNppb+vshoCrtLXjIWq3EJXpVXIlG6ZNL0dh6qEm2WMwDjD3LfOfkGh1/czYc/0qhiD2ozNnH4882MVVt3JbVFkbwowNCO3KL5IoYW5wlVeGCViOuv1svZx7FbzxKzA4zGqBlRRaRWCobXaVq4yYCWbZf8eiJwt3OY+MFiSJengcFP2t0JMfzOiJ7cECvpx7neg1Rc5x+7myPJOXt2FohVRyXtD+/rDoTOyGYInJelZMjolecVHUhUNqvdZWg2J2t0jPmiLFeRD/8fOT4o+NGILb+TufCo9ceBBm3JLVn+MO2675n7qiEX/6W+188cYg3Zn5NSTjgOKfWFSAANa6raCxSoVU851oJLY11WIoYK0du0ec5E4tCnAPoKh71riTsjVIp3gKvBbEYQiNYrmH22oLQWA2AdwMnID6PX9b58dR2QKo4qag1D1Z+L/FwEKTR7osOZPWECPJIHQqPUsM5i/CH5YupVPfFA5pHUBcsesh8eO5YhyWnaVRPZn/BmdXVumZWPxMP5e28zm2uqHgFoT9CymHYNNrzrrjlXZM06HnzDxYNlI5b/QosxLmmrqDFqmogQdqk0WLkUceoAvQxHgkIyvWU69BPFr24VB6+lx75Rna6dGtrmOxDnvBojvi1/4dHjVeg8owofPe1cOnxU1ioh016s/Vudv9mhV9f35At+Sh28h1bpp8xhr09+vf47Elx3Ms6hyp6QvB3t0vnLbOhwo660cp7K0vvepabK7YJfxEWWfrC2YzJfYOjygPwfwd/1amTqa0hZ5ueebhWYVMubRTwIjj+0Oq0ohU3zfRfuL8gt59XsHdwKtxTQQ4Y2qz6gisxnm2UdlmpEkgOsZz7iEk6QOt8BuPwr+NR01LTqXmJo1C76o1N274twJvl+I069TiLpenK/miRxhyY8jvYV6W1WuSwhH9q7kuwnJMtm7IWcqs7HsnyHSqWXLSpYtZGaR1V3t0gauninFPZGtWskF65rtti48UV9uV9KM8kfDYs0pgB00S+TlzTXV6P8mxq15b9En8sz3jWSszcifZa/NuufPNnNTb031pptt0+sRSH/7UG8pzbsgtt3OG3ut7B9JzDMt2mTZuyRNIV8D54TuTrpNcHtgmMlYJeiY9XS83NYJicjRjtJSf9BZLsQv629QdDsKQhTK5CnXhpk7vMNkHzPhm0ExW/VCGApHfPyBagtZQTQmPHx7g5IXXsrQDPzIVhv2LB6Ih138iSDww1JNHrDvzUxvp73MsQBVhW8EbrReaVUcLB1R3PUXyaYG4HpJUcLVxMgDxcPkVRQpL7VTAGabDzbKcvg12t5P8TSGQkrj/gOrpnbiDHwluA73xbXts/L7u468cRWSWRtgTwlQnA47EKg0OiZDgFxAKQQUcsbGomITgeXUAAyKe03eA7Mp4gnyKQmm0LXJtEk6ddksMJCuxDmmHzmVhO+XaN2A54MIh3niw5CF7PwiXFZrnA8wOdeHLvvhdoqIDG9PDI7UnWWHq526T8y6ixJPhkuVKZnoUruOpUgOOp3iIKBjk+yi1vHo5cItHXb1PIKzGaZlRS0g5d3MV2pD8FQdGYLZ73aae/eEIUePMc4NFz8pIUfLCrrF4jVWH5gQneN3S8vANBmUXrEcKGn6hIUN95y1vpsvLwbGpzV9L0ZKTan6TDXM05236uLJcIEMKVAxKNT0K8WljuwNny3BNQRfzovA85beI9zr1AGNYnYCVkR1aGngWURUrgqR+gRrQhxW81l3CHevjvGEPzPMTxdsIfB9dfGRbZU0cg/1mcubtECX4tvaedmNAvTxCJtc2QaoUalGfENCGK7IS/O8CRpdOVca8EWCRwv2sSWE8CJPW5PCugjCXPd3h6U60cPD+bdhtXZuYB6stcoveE7Sm5MM2yvfUHXFSW7KzLmi7/EeEWL0wqcOH9MOSKjhCHHmw+JGLcYE/7SBZQCRggox0ZZTAxrlzNNXYXL5fNIjkdT4YMqVUz6p8YDt049v4OXGdg3qTrtLBUXOZf7ahPlZAY/O+7Sp0bvGSHdyQ8B1LOsplqMb9Se8VAE7gIdSZvxbRSrfl+Lk5Qaqi5QJceqjitdErcHXg/3MryljPSIAMaaloFm1cVwBJ8DNmkDqoGROSHFetrgjQ5CahuKkdH5pRPigMrgTtlFI8ufJPJSUlGgTjbBSvpRc0zypiUn6U5KZqcRoyrtzhmJ7/caeZkmVRwJQeLOG8LY6vP5ChpKhc8Js0El+n6FXqbx9ItdtLtYP92kKfaTLtCi8StLZdENJa9Ex1nOoz1kQ7qxoiZFKRyLf4O4CHRT0T/0W9F8epNKVoeyxUXhy3sQMMsJjQJEyMOjmOhMFgOmmlscV4eFi1CldU92yjwleirEKPW3bPAuEhRZV7JsKV3Lr5cETAiFuX5Nw5UlF7d2HZ96Bh0sgFIL5KGaKSoVYVlvdKpZJVP5+NZ7xDEkQhmDgsDKciazJCXJ6ZN2B3FY2f6VZyGl/t4aunGIAk/BHaS+i+SpdRfnB/OktOvyjinWNfM9Ksr6WwtCa1hCmeRI6icpFM4o8quCLsikU0tMoZI/9EqXRMpKGaWzofl4nQuVQm17d5fU5qXCQeCDqVaL9XJ9qJ08n3G3EFZS28SHEb3cdRBdtO0YcTzil3QknNKEe/smQ1fTb0XbpyNB5xAeuIlf+5KWlEY0DqJbsnzJlQxJPOVyHiKMx5Xu9FcEv1Fbg6Fhm4t+Jyy5JC1W3YO8dYLsO0PXPbxodBgttTbH3rt9Cp1lJIk2r3O1Zqu94eRbnIz2f50lWolYzuKsj4PMok4abHLO8NAC884hiXx5Fy5pWKO0bWL7uEGXaJCtznhP67SlQ4xjWIfgq6EpZ28QMtuZK7JC0RGbl9nA4XtFLug/NLMoH1pGt9IonAJqcEDLyH6TDROcbsmGPaGIxMo41IUAnQVPMPGByp4mOmh9ZQMkBAcksUK55LsZj7E5z5XuZoyWCKu6nHmDq22xI/9Z8YdxJy4kWpD16jLVrpwGLWfyOD0Wd+cBzFBxVaGv7S5k9qwh/5t/LQEXsRqI3Q9Rm3QIoaZW9GlsDaKOUyykyWuhNOprSEi0s1G4rgoiX1V743EELti+pJu5og6X0g6oTynUqlhH9k6ezyRi05NGZHz0nvp3HOJr7ebrAUFrDjbkFBObEvdQWkkUbL0pEvMU46X58vF9j9F3j6kpyetNUBItrEubW9ZvMPM4qNqLlsSBJqOH3XbNwv/cXDXNxN8iFLzUhteisYY+RlHYOuP29/Cb+L+xv+35Rv7xudnZ6ohK4cMPfCG8KI7dNmjNk/H4e84pOxn/sZHK9psfvj8ncA8qJz7O8xqbxESDivGJOZzF7o5PJLQ7g34qAWoyuA+x3btU98LT6ZyGyceIXjrqob2CAVql4VOTQPUQYvHV/g4zAuCZGvYQBtf0wmd5lilrvuEn1BXLny01B4h4SMDlYsnNpm9d7m9h578ufpef9Z4WplqWQvqo52fyUA7J24eZD5av6SyGIV9kpmHNqyvdfzcpEMw97BvknV2fq+MFHun9BT3Lsf8pbzvisWiIQvYkng+8Vxk1V+dli1u56kY50LRjaPdotvT5BwqtwyF+emo/z9J3yVUVGfKrxQtJMOAQWoQii/4dp9wgybSa5mkucmRLtEQZ/pz0tL/NVcgWAd95nEQ3Tg6tNbuyn3Iepz65L3huMUUBntllWuu4DbtOFSMSbpILV4fy6wlM0SOvi6CpLh81c1LreIvKd61uEWBcDw1lUBUW1I0Z+m/PaRlX+PQ/oxg0Ye6KUiIiTF4ADNk59Ydpt5/rkxmq9tV5Kcp/eQLUVVmBzQNVuytQCP6Ezd0G8eLxWyHpmZWJ3bAzkWTtg4lZlw42SQezEmiUPaJUuR/qklVA/87S4ArFCpALdY3QRdUw3G3XbWUp6aq9z0zUizcPa7351p9JXOZyfdZBFnqt90VzQndXB/mwf8LC9STj5kenVpNuqOQQP3mIRJj7eV21FxG8VAxKrEn3c+XfmZ800EPb9/5lIlijscUbB6da0RQaMook0zug1G0tKi/JBC4rw7/D3m4ARzAkzMcVrDcT2SyFtUdWAsFlsPDFqV3N+EjyXaoEePwroaZCiLqEzb8MW+PNE9TmTC01EzWli51PzZvUqkmyuROU+V6ik+Le/9qT6nwzUzf9tP68tYei0YaDGx6kAd7jn1cKqOCuYbiELH9zYqcc4MnRJjkeGiqaGwLImhyeKs+xKJMBlOJ05ow9gGCKZ1VpnMKoSCTbMS+X+23y042zOb5MtcY/6oBeAo1Vy89OTyhpavFP78jXCcFH0t7Gx24hMEOm2gsEfGabVpQgvFqbQKMsknFRRmuPHcZu0Su/WMFphZvB2r/EGbG72rpGGho3h+Msz0uGzJ7hNK2uqQiE1qmn0zgacKYYZBCqsxV+sjbpoVdSilW/b94n2xNb648VmNIoizqEWhBnsen+d0kbCPmRItfWqSBeOd9Wne3c6bcd6uvXOJ6WdiSsuXq0ndhqrQ4QoWUjCjYtZ0EAhnSOP1m44xkf0O7jXghrzSJWxP4a/t72jU29Vu2rvu4n7HfHkkmQOMGSS+NPeLGO5I73mC2B7+lMiBQQZRM9/9liLIfowupUFAbPBbR+lxDM6M8Ptgh1paJq5Rvs7yEuLQv/7d1oU2woFSb3FMPWQOKMuCuJ7pDDjpIclus5TeEoMBy2YdVB4fxmesaCeMNsEgTHKS5WDSGyNUOoEpcC2OFWtIRf0w27ck34/DjxRTVIcc9+kqZE6iMSiVDsiKdP/Xz5XfEhm/sBhO50p1rvJDlkyyxuJ9SPgs7YeUJBjXdeAkE+P9OQJm6SZnn1svcduI78dYmbkE2mtziPrcjVisXG78spLvbZaSFx/Rks9zP4LKn0Cdz/3JsetkT06A8f/yCgMO6Mb1Hme0JJ7b2wZz1qleqTuKBGokhPVUZ0dVu+tnQYNEY1fmkZSz6+EGZ5EzL7657mreZGR3jUfaEk458PDniBzsSmBKhDRzfXameryJv9/D5m6HIqZ0R+ouCE54Dzp4IJuuD1e4Dc5i+PpSORJfG23uVgqixAMDvchMR0nZdH5brclYwRoJRWv/rlxGRI5ffD5NPGmIDt7vDE1434pYdVZIFh89Bs94HGGJbTwrN8T6lh1HZFTOB4lWzWj6EVqxSMvC0/ljWBQ3F2kc/mO2b6tWonT2JEqEwFts8rz2h+oWNds9ceR2cb7zZvJTDppHaEhK5avWqsseWa2Dt5BBhabdWSktS80oMQrL4TvAM9b5HMmyDnO+OkkbMXfUJG7eXqTIG6lqSOEbqVR+qYdP7uWb57WEJqzyh411GAVsDinPs7KvUeXItlcMdOUWzXBH6zscymV1LLVCtc8IePojzXHF9m5b5zGwBRdzcyUJkiu938ApmAayRdJrX1PmVguWUvt2ThQ62czItTyWJMW2An/hdDfMK7SiFQlGIdAbltHz3ycoh7j9V7GxNWBpbtcSdqm4XxRwTawc3cbZ+xfSv9qQfEkDKfZTwCkqWGI/ur250ItXlMlh6vUNWEYIg9A3GzbgmbqvTN8js2YMo87CU5y6nZ4dbJLDQJj9fc7yM7tZzJDZFtqOcU8+mZjYlq4VmifI23iHb1ZoT9E+kT2dolnP1AfiOkt7PQCSykBiXy5mv637IegWSKj9IKrYZf4Lu9+I7ub+mkRdlvYzehh/jaJ9n7HUH5b2IbgeNdkY7wx1yVzxS7pbvky6+nmVUtRllEFfweUQ0/nG017WoUYSxs+j2B4FV/F62EtHlMWZXYrjGHpthnNb1x66LKZ0Qe92INWHdfR/vqp02wMS8r1G4dJqHok8KmQ7947G13a4YXbsGgHcBvRuVu1eAi4/A5+ZixmdSXM73LupB/LH7O9yxLTVXJTyBbI1S49TIROrfVCOb/czZ9pM4JsZx8kUz8dQGv7gUWKxXvTH7QM/3J2OuXXgciUhqY+cgtaOliQQVOYthBLV3xpESZT3rmfEYNZxmpBbb24CRao86prn+i9TNOh8VxRJGXJfXHATJHs1T5txgc/opYrY8XjlGQQbRcoxIBcnVsMjmU1ymmIUL4dviJXndMAJ0Yet+c7O52/p98ytlmAsGBaTAmMhimAnvp1TWNGM9BpuitGj+t810CU2UhorrjPKGtThVC8WaXw04WFnT5fTjqmPyrQ0tN3CkLsctVy2xr0ZWgiWVZ1OrlFjjxJYsOiZv2cAoOvE+7sY0I/TwWcZqMoyIKNOftwP7w++Rfg67ljfovKYa50if3fzE/8aPYVey/Nq35+nH2sLPh/fP5TsylSKGOZ4k69d2PnH43+kq++sRXHQqGArWdwhx+hpwQC6JgT2uxehYU4Zbw7oNb6/HLikPyJROGK2ouyr+vzseESp9G50T4AyFrSqOQ0rroCYP4sMDFBrHn342EyZTMlSyk47rHSq89Y9/nI3zG5lX16Z5lxphguLOcZUndL8wNcrkyjH82jqg8Bo8OYkynrxZvbFno5lUS3OPr8Ko3mX9NoRPdYOKKjD07bvgFgpZ/RF+YzkWvJ/Hs/tUbfeGzGWLxNAjfDzHHMVSDwB5SabQLsIZHiBp43FjGkaienYoDd18hu2BGwOK7U3o70K/WY/kuuKdmdrykIBUdG2mvE91L1JtTbh20mOLbk1vCAamu7utlXeGU2ooVikbU/actcgmsC1FKk2qmj3GWeIWbj4tGIxE7BLcBWUvvcnd/lYxsMV4F917fWeFB/XbINN3qGvIyTpCalz1lVewdIGqeAS/gB8Mi+sA+BqDiX3VGD2eUunTRbSY+AuDy4E3Qx3hAhwnSXX+B0zuj3eQ1miS8Vux2z/l6/BkWtjKGU72aJkOCWhGcSf3+kFkkB15vGOsQrSdFr6qTj0gBYiOlnBO41170gOWHSUoBVRU2JjwppYdhIFDfu7tIRHccSNM5KZOFDPz0TGMAjzzEpeLwTWp+kn201kU6NjbiMQJx83+LX1e1tZ10kuChJZ/XBUQ1dwaBHjTDJDqOympEk8X2M3VtVw21JksChA8w1tTefO3RJ1FMbqZ01bHHkudDB/OhLfe7P5GOHaI28ZXKTMuqo0hLWQ4HabBsGG7NbP1RiXtETz074er6w/OerJWEqjmkq2y51q1BVI+JUudnVa3ogBpzdhFE7fC7kybrAt2Z6RqDjATAUEYeYK45WMupBKQRtQlU+uNsjnzj6ZmGrezA+ASrWxQ6LMkHRXqXwNq7ftv28dUx/ZSJciDXP2SWJsWaN0FjPX9Yko6LobZ7aYW/IdUktI9apTLyHS8DyWPyuoZyxN1TK/vtfxk3HwWh6JczZC8Ftn0bIJay2g+n5wd7lm9rEsKO+svqVmi+c1j88hSCxbzrg4+HEP0Nt1/B6YW1XVm09T1CpAKjc9n18hjqsaFGdfyva1ZG0Xu3ip6N6JGpyTSqY5h4BOlpLPaOnyw45PdXTN+DtAKg7DLrLFTnWusoSBHk3s0d7YouJHq85/R09Tfc37ENXZF48eAYLnq9GLioNcwDZrC6FW6godB8JnqYUPvn0pWLfQz0lM0Yy8Mybgn84Ds3Q9bDP10bLyOV+qzxa4Rd9Dhu7cju8mMaONXK3UqmBQ9qIg7etIwEqM/kECk/Dzja4Bs1xR+Q/tCbc8IKrSGsTdJJ0vge7IG20W687uVmK6icWQ6cD3lwFzgNMGtFvO5qyJeKflGLAAcQZOrkxVwy3cWvqlGpvjmf9Qe6Ap20MPbV92DPV0OhFM4kz8Yr0ffC2zLWSQ1kqY6QdQrttR3kh1YLtQd1kCEv5hVoPIRWl5ERcUTttBIrWp6Xs5Ehh5OUUwI5aEBvuiDmUoENmnVw1FohCrbRp1A1E+XSlWVOTi7ADW+5Ohb9z1vK4qx5R5lPdGCPBJZ00mC+Ssp8VUbgpGAvXWMuWQQRbCqI6Rr2jtxZxtfP7W/8onz+yz0Gs76LaT5HX9ecyiZCB/ZR/gFtMxPsDwohoeCRtiuLxE1GM1vUEUgBv86+eehL58/P56QFGQ/MqOe/vC76L63jzmeax4exd/OKTUvkXg+fOJUHych9xt/9goJMrapSgvXrj8+8vk/N80f22Sewj6cyGqt1B6mztoeklVHHraouhvHJaG/OuBz6DHKMpFmQULU1bRWlyYE0RPXYYkUycIemN7TLtgNCJX6BqdyxDKkegO7nJK5xQ7OVYDZTMf9bVHidtk6DQX9Et+V9M7esgbsYBdEeUpsB0Xvw2kd9+rI7V+m47u+O/tq7mw7262HU1WlS9uFzsV6JxIHNmUCy0QS9e077JGRFbG65z3/dOKB/Zk+yDdKpUmdXjn/aS3N5nv4fK7bMHHmPlHd4E2+iTbV5rpzScRnxk6KARuDTJ8Q1LpK2mP8gj1EbuJ9RIyY+EWK4hCiIDBAS1Tm2IEXAFfgKPgdL9O6mAa06wjCcUAL6EsxPQWO9VNegBPm/0GgkZbDxCynxujX/92vmGcjZRMAY45puak2sFLCLSwXpEsyy5fnF0jGJBhm+fNSHKKUUfy+276A7/feLOFxxUuHRNJI2Osenxyvf8DAGObT60pfTTlhEg9u/KKkhJqm5U1/+BEcSkpFDA5XeCqxwXmPac1jcuZ3JWQ+p0NdWzb/5v1ZvF8GtMTFFEdQjpLO0bwPb0BHNWnip3liDXI2fXf05jjvfJ0NpjLCUgfTh9CMFYVFKEd4Z/OG/2C+N435mnK+9t1gvCiVcaaH7rK4+PjCvpVNiz+t2QyqH1O8x3JKZVl6Q+Lp/XK8wMjVMslOq9FdSw5FtUs/CptXH9PW+wbWHgrV17R5jTVOtGtKFu3nb80T+E0tv9QkzW3J2dbaw/8ddAKZ0pxIaEqLjlPrji3VgJ3GvdFvlqD8075woxh4fVt0JZE0KVFsAvqhe0dqN9b35jtSpnYMXkU+vZq+IAHad3IHc2s/LYrnD1anfG46IFiMIr9oNbZDWvwthqYNqOigaKd/XlLU4XHfk/PXIjPsLy/9/kAtQ+/wKH+hI/IROWj5FPvTZAT9f7j4ZXQyG4M0TujMAFXYkKvEHv1xhySekgXGGqNxWeWKlf8dDAlLuB1cb/qOD+rk7cmwt+1yKpk9cudqBanTi6zTbXRtV8qylNtjyOVKy1HTz0GW9rjt6sSjAZcT5R+KdtyYb0zyqG9pSLuCw5WBwAn7fjBjKLLoxLXMI+52L9cLwIR2B6OllJZLHJ8vDxmWdtF+QJnmt1rsHPIWY20lftk8fYePkAIg6Hgn532QoIpegMxiWgAOfe5/U44APR8Ac0NeZrVh3gEhs12W+tVSiWiUQekf/YBECUy5fdYbA08dd7VzPAP9aiVcIB9k6tY7WdJ1wNV+bHeydNtmC6G5ICtFC1ZwmJU/j8hf0I8TRVKSiz5oYIa93EpUI78X8GYIAZabx47/n8LDAAJ0nNtP1rpROprqKMBRecShca6qXuTSI3jZBLOB3Vp381B5rCGhjSvh/NSVkYp2qIdP/Bg=",Vk=function(e){var r=zk.toByteArray(jk);return e(r)},qk={init:Vk},Fr=Dt(function(t,e){e.init=function(r){e.dictionary=qk.init(r)},e.offsetsByLength=new Uint32Array([0,0,0,0,0,4096,9216,21504,35840,44032,53248,63488,74752,87040,93696,100864,104704,106752,108928,113536,115968,118528,119872,121280,122016]),e.sizeBitsByLength=new Uint8Array([0,0,0,0,10,10,11,11,10,10,10,10,10,9,9,8,7,7,8,7,7,6,6,5,5]),e.minDictionaryWordLength=4,e.maxDictionaryWordLength=24});Fr.init;Fr.dictionary;Fr.offsetsByLength;Fr.sizeBitsByLength;Fr.minDictionaryWordLength;Fr.maxDictionaryWordLength;function ma(t,e){this.bits=t,this.value=e}var Wk=ma,pa=15;function Zv(t,e){for(var r=1<>=1;return(t&r-1)+r}function Kv(t,e,r,n,i){do n-=r,t[e+n]=new ma(i.bits,i.value);while(n>0)}function Gk(t,e,r){for(var n=1<0;--E[c])s=new ma(c&255,S[u++]&65535),Kv(e,r+f,h,y,s),f=Zv(f,c);for(v=w-1,d=-1,c=n+1,h=2;c<=pa;++c,h<<=1)for(;E[c]>0;--E[c])(f&v)!==d&&(r+=y,p=Gk(E,c,n),y=1<>n),h,y,s),f=Zv(f,c);return w},ug={HuffmanCode:Wk,BrotliBuildHuffmanTable:Hk},Zk=new Uint8Array([0,0,0,0,0,0,0,0,0,4,4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,12,16,12,12,20,12,16,24,28,12,12,32,12,36,12,44,44,44,44,44,44,44,44,44,44,32,32,24,40,28,12,12,48,52,52,52,48,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,48,52,52,52,52,52,24,12,28,12,12,12,56,60,60,60,56,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,56,60,60,60,60,60,24,12,28,12,0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,2,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,0,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,56,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,22,22,22,22,23,23,23,23,24,24,24,24,25,25,25,25,26,26,26,26,27,27,27,27,28,28,28,28,29,29,29,29,30,30,30,30,31,31,31,31,32,32,32,32,33,33,33,33,34,34,34,34,35,35,35,35,36,36,36,36,37,37,37,37,38,38,38,38,39,39,39,39,40,40,40,40,41,41,41,41,42,42,42,42,43,43,43,43,44,44,44,44,45,45,45,45,46,46,46,46,47,47,47,47,48,48,48,48,49,49,49,49,50,50,50,50,51,51,51,51,52,52,52,52,53,53,53,53,54,54,54,54,55,55,55,55,56,56,56,56,57,57,57,57,58,58,58,58,59,59,59,59,60,60,60,60,61,61,61,61,62,62,62,62,63,63,63,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),Kk=new Uint16Array([1024,1536,1280,1536,0,256,768,512]),sa={lookup:Zk,lookupOffsets:Kk};function he(t,e){this.offset=t,this.nbits=e}var Xk=[new he(1,2),new he(5,2),new he(9,2),new he(13,2),new he(17,3),new he(25,3),new he(33,3),new he(41,3),new he(49,4),new he(65,4),new he(81,4),new he(97,4),new he(113,5),new he(145,5),new he(177,5),new he(209,5),new he(241,6),new he(305,6),new he(369,7),new he(497,8),new he(753,9),new he(1265,10),new he(2289,11),new he(4337,12),new he(8433,13),new he(16625,24)],Yk=[new he(0,0),new he(1,0),new he(2,0),new he(3,0),new he(4,0),new he(5,0),new he(6,1),new he(8,1),new he(10,2),new he(14,2),new he(18,3),new he(26,3),new he(34,4),new he(50,4),new he(66,5),new he(98,5),new he(130,6),new he(194,7),new he(322,8),new he(578,9),new he(1090,10),new he(2114,12),new he(6210,14),new he(22594,24)],Jk=[new he(2,0),new he(3,0),new he(4,0),new he(5,0),new he(6,0),new he(7,0),new he(8,0),new he(9,0),new he(10,1),new he(12,1),new he(14,2),new he(18,2),new he(22,3),new he(30,3),new he(38,4),new he(54,4),new he(70,5),new he(102,5),new he(134,6),new he(198,7),new he(326,8),new he(582,9),new he(1094,10),new he(2118,24)],Qk=[0,0,8,8,0,16,8,16,16],_k=[0,8,0,8,16,0,16,8,16],Qn={kBlockLengthPrefixCode:Xk,kInsertLengthPrefixCode:Yk,kCopyLengthPrefixCode:Jk,kInsertRangeLut:Qk,kCopyRangeLut:_k},ke=0,Xv=1,$k=2,eF=3,tF=4,rF=5,nF=6,iF=7,aF=8,cg=9,zt=10,Gt=11,Ql=12,oF=13,sF=14,uF=15,cF=16,lF=17,fF=18,hF=20;function J(t,e,r){this.prefix=new Uint8Array(t.length),this.transform=e,this.suffix=new Uint8Array(r.length);for(var n=0;n'),new J("",ke,` +`),new J("",eF,""),new J("",ke,"]"),new J("",ke," for "),new J("",sF,""),new J("",$k,""),new J("",ke," a "),new J("",ke," that "),new J(" ",zt,""),new J("",ke,". "),new J(".",ke,""),new J(" ",ke,", "),new J("",uF,""),new J("",ke," with "),new J("",ke,"'"),new J("",ke," from "),new J("",ke," by "),new J("",cF,""),new J("",lF,""),new J(" the ",ke,""),new J("",tF,""),new J("",ke,". The "),new J("",Gt,""),new J("",ke," on "),new J("",ke," as "),new J("",ke," is "),new J("",iF,""),new J("",Xv,"ing "),new J("",ke,` + `),new J("",ke,":"),new J(" ",ke,". "),new J("",ke,"ed "),new J("",hF,""),new J("",fF,""),new J("",nF,""),new J("",ke,"("),new J("",zt,", "),new J("",aF,""),new J("",ke," at "),new J("",ke,"ly "),new J(" the ",ke," of "),new J("",rF,""),new J("",cg,""),new J(" ",zt,", "),new J("",zt,'"'),new J(".",ke,"("),new J("",Gt," "),new J("",zt,'">'),new J("",ke,'="'),new J(" ",ke,"."),new J(".com/",ke,""),new J(" the ",ke," of the "),new J("",zt,"'"),new J("",ke,". This "),new J("",ke,","),new J(".",ke," "),new J("",zt,"("),new J("",zt,"."),new J("",ke," not "),new J(" ",ke,'="'),new J("",ke,"er "),new J(" ",Gt," "),new J("",ke,"al "),new J(" ",Gt,""),new J("",ke,"='"),new J("",Gt,'"'),new J("",zt,". "),new J(" ",ke,"("),new J("",ke,"ful "),new J(" ",zt,". "),new J("",ke,"ive "),new J("",ke,"less "),new J("",Gt,"'"),new J("",ke,"est "),new J(" ",zt,"."),new J("",Gt,'">'),new J(" ",ke,"='"),new J("",zt,","),new J("",ke,"ize "),new J("",Gt,"."),new J(" ",ke,""),new J(" ",ke,","),new J("",zt,'="'),new J("",Gt,'="'),new J("",ke,"ous "),new J("",Gt,", "),new J("",zt,"='"),new J(" ",zt,","),new J(" ",Gt,'="'),new J(" ",Gt,", "),new J("",Gt,","),new J("",Gt,"("),new J("",Gt,". "),new J(" ",Gt,"."),new J("",Gt,"='"),new J(" ",Gt,". "),new J(" ",zt,'="'),new J(" ",Gt,"='"),new J(" ",zt,"='")],dF=Co,vF=Co.length;function Yv(t,e){return t[e]<192?(t[e]>=97&&t[e]<=122&&(t[e]^=32),1):t[e]<224?(t[e+1]^=32,2):(t[e+2]^=5,3)}var pF=function(e,r,n,i,a){var o=Co[a].prefix,s=Co[a].suffix,c=Co[a].transform,u=ci&&(u=i);for(var v=0;v0;){var p=Yv(e,d);d+=p,i-=p}for(var y=0;y0?17+e:(e=t.readBits(3),e>0?8+e:17))}function dg(t){if(t.readBits(1)){var e=t.readBits(3);return e===0?1:t.readBits(e)+(1<1&&a===0)throw new Error("Invalid size byte");e.meta_block_length|=a<4&&o===0)throw new Error("Invalid size nibble");e.meta_block_length|=o<>>r.bit_pos_&SF,n=t[e].bits-_l,n>0&&(r.bit_pos_+=_l,e+=t[e].value,e+=r.val_>>>r.bit_pos_&(1<0;){var h=0,d;if(n.readMoreInput(),n.fillBitWindow(),h+=n.val_>>>n.bit_pos_&31,n.bit_pos_+=u[h].bits,d=u[h].value&255,d>d);else{var v=d-14,p,y,w=0;if(d===Qv&&(w=a),s!==w&&(o=0,s=w),p=o,o>0&&(o-=2,o<<=v),o+=n.readBits(v)+3,y=o-p,i+y>e)throw new Error("[ReadHuffmanCodeLengths] symbol + repeat_delta > num_symbols");for(var S=0;S0;++s){var w=AF[s],S=0,E;n.fillBitWindow(),S+=n.val_>>>n.bit_pos_&15,n.bit_pos_+=y[S].bits,E=y[S].value,d[w]=E,E!==0&&(v-=32>>E,++p)}if(!(p===1||v===0))throw new Error("[ReadHuffmanCode] invalid num_codes or space");TF(d,t,o,n)}if(i=fg(e,r,_l,o,t),i===0)throw new Error("[ReadHuffmanCode] BuildHuffmanTable failed: ");return i}function Ls(t,e,r){var n,i;return n=xa(t,e,r),i=Qn.kBlockLengthPrefixCode[n].nbits,Qn.kBlockLengthPrefixCode[n].offset+r.readBits(i)}function OF(t,e,r){var n;return t>>5]),this.htrees=new Uint32Array(e)}Bi.prototype.decode=function(t){var e,r,n=0;for(e=0;e=t)throw new Error("[DecodeContextMap] i >= context_map_size");c[o]=0,++o}else c[o]=u-i,++o}return e.readBits(1)&&EF(c,t),r}function dl(t,e,r,n,i,a,o){var s=r*2,c=r,u=xa(e,r*_n,o),f;u===0?f=i[s+(a[c]&1)]:u===1?f=i[s+(a[c]-1&1)]+1:f=u-2,f>=t&&(f-=t),n[r]=f,i[s+(a[c]&1)]=f,++a[c]}function IF(t,e,r,n,i,a){var o=i+1,s=r&i,c=a.pos_&Fa.IBUF_MASK,u;if(e<8||a.bit_pos_+(e<<3)0;)a.readMoreInput(),n[s++]=a.readBits(8),s===o&&(t.write(n,o),s=0);return}if(a.bit_end_pos_<32)throw new Error("[CopyUncompressedBlockToOutput] br.bit_end_pos_ < 32");for(;a.bit_pos_<32;)n[s]=a.val_>>>a.bit_pos_,a.bit_pos_+=8,++s,--e;if(u=a.bit_end_pos_-a.bit_pos_>>3,c+u>Fa.IBUF_MASK){for(var f=Fa.IBUF_MASK+1-c,h=0;h=o){t.write(n,o),s-=o;for(var h=0;h=o;){if(u=o-s,a.input_.read(n,s,u)e.buffer.length){var me=new Uint8Array(n+R);me.set(e.buffer),e.buffer=me}if(i=De.input_end,L=De.is_uncompressed,De.is_metadata){for(DF(k);R>0;--R)k.readMoreInput(),k.readBits(8);continue}if(R!==0){if(L){k.bit_pos_=k.bit_pos_+7&-8,IF(e,R,n,f,u,k),n+=R;continue}for(r=0;r<3;++r)V[r]=dg(k)+1,V[r]>=2&&(Eu(V[r]+2,S,r*_n,k),Eu(wF,E,r*_n,k),j[r]=Ls(E,r*_n,k),K[r]=1);for(k.readMoreInput(),q=k.readBits(2),ee=ef+(k.readBits(4)<0;){var m,b,O,N,$,Q,Fe,Ne,nt,ft,Je;for(k.readMoreInput(),j[1]===0&&(dl(V[1],S,1,U,G,K,k),j[1]=Ls(E,_n,k),Re=w[1].htrees[U[1]]),--j[1],m=xa(w[1].codes,Re,k),b=m>>6,b>=2?(b-=2,Fe=-1):Fe=0,O=Qn.kInsertRangeLut[b]+(m>>3&7),N=Qn.kCopyRangeLut[b]+(m&7),$=Qn.kInsertLengthPrefixCode[O].offset+k.readBits(Qn.kInsertLengthPrefixCode[O].nbits),Q=Qn.kCopyLengthPrefixCode[N].offset+k.readBits(Qn.kCopyLengthPrefixCode[N].nbits),p=f[n-1&u],y=f[n-2&u],ft=0;ft<$;++ft)k.readMoreInput(),j[0]===0&&(dl(V[0],S,0,U,G,K,k),j[0]=Ls(E,0,k),Le=U[0]<<_v,at=Le,we=ae[U[0]],be=sa.lookupOffsets[we],ge=sa.lookupOffsets[we+1]),nt=sa.lookup[be+p]|sa.lookup[ge+y],We=ue[at+nt],--j[0],y=p,p=xa(w[0].codes,w[0].htrees[We],k),f[n&u]=p,(n&u)===u&&e.write(f,c),++n;if(R-=$,R<=0)break;if(Fe<0){var nt;if(k.readMoreInput(),j[2]===0&&(dl(V[2],S,2,U,G,K,k),j[2]=Ls(E,2*_n,k),$e=U[2]<<$v,Ue=$e),--j[2],nt=(Q>4?3:Q-2)&255,Ie=de[Ue+nt],Fe=xa(w[2].codes,w[2].htrees[Ie],k),Fe>=ee){var Ut,jt,kt;Fe-=ee,jt=Fe&H,Fe>>=q,Ut=(Fe>>1)+1,kt=(2+(Fe&1)<s)if(Q>=Fr.minDictionaryWordLength&&Q<=Fr.maxDictionaryWordLength){var kt=Fr.offsetsByLength[Q],Kt=Ne-s-1,dr=Fr.sizeBitsByLength[Q],F=(1<>dr;if(kt+=te*Q,ne=h){e.write(f,c);for(var M=0;M0&&(d[v&3]=Ne,++v),Q>R)throw new Error("Invalid backward reference. pos: "+n+" distance: "+Ne+" len: "+Q+" bytes left: "+R);for(ft=0;ft>>6&3},transformed:function(e){return e.tag==="glyf"||e.tag==="loca"?e.transformVersion===0:e.transformVersion!==0},transformLength:new l.Optional(tp,function(t){return t.transformed})}),gg=new l.Struct({tag:new l.String(4),flavor:l.uint32,length:l.uint32,numTables:l.uint16,reserved:new l.Reserved(l.uint16),totalSfntSize:l.uint32,totalCompressedSize:l.uint32,majorVersion:l.uint16,minorVersion:l.uint16,metaOffset:l.uint32,metaLength:l.uint32,metaOrigLength:l.uint32,privOffset:l.uint32,privLength:l.uint32,tables:new l.Array(VF,"numTables")});gg.process=function(){for(var t={},e=0;e0){for(var u=[],f=0,h=0;h>7);if(u&=127,u<10)s=0,c=nn(u,((u&14)<<7)+e.readUInt8());else if(u<20)s=nn(u,((u-10&14)<<7)+e.readUInt8()),c=0;else if(u<84){var h=u-20,d=e.readUInt8();s=nn(u,1+(h&48)+(d>>4)),c=nn(u>>1,1+((h&12)<<2)+(d&15))}else if(u<120){var h=u-84;s=nn(u,1+(h/12<<8)+e.readUInt8()),c=nn(u>>1,1+(h%12>>2<<8)+e.readUInt8())}else if(u<124){var d=e.readUInt8(),v=e.readUInt8();s=nn(u,(d<<4)+(v>>4)),c=nn(u>>1,((v&15)<<8)+e.readUInt8())}else s=nn(u,e.readUInt16BE()),c=nn(u>>1,e.readUInt16BE());i+=s,n+=c,a.push(new xn(f,!1,i,n))}return a}function np(t){var e=0;if(typeof Symbol>"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=YF(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function YF(t,e){if(t){if(typeof t=="string")return ip(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ip(t,e)}}function ip(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r"u"||t[Symbol.iterator]==null){if(Array.isArray(t)||(t=ex(t)))return function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}};throw new TypeError(`Invalid attempt to iterate non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}return e=t[Symbol.iterator](),e.next.bind(e)}function ex(t,e){if(t){if(typeof t=="string")return ap(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ap(t,e)}}function ap(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0?(this.stream.pos=c.nameOffset+this.header.map.nameListOffset,c.name=nx.decode(this.stream)):c.name=null}a.name==="sfnt"&&(this.sfnt=a)}}var e=t.prototype;return e.getFont=function(n){if(!this.sfnt)return null;for(var i=io(this.sfnt.refList),a;!(a=i()).done;){var o=a.value,s=this.header.dataOffset+o.dataOffset+4,c=new l.DecodeStream(this.stream.buffer.slice(s)),u=new Xi(c);if(u.postscriptName===n)return u}return null},rx(t,[{key:"fonts",get:function(){for(var n=[],i=io(this.sfnt.refList),a;!(a=i()).done;){var o=a.value,s=this.header.dataOffset+o.dataOffset+4,c=new l.DecodeStream(this.stream.buffer.slice(s));n.push(new Xi(c))}return n}}]),t}();Qi.registerFormat(Xi);Qi.registerFormat(kk);Qi.registerFormat(WF);Qi.registerFormat($F);Qi.registerFormat(ux);var cx=Qi,tf=function(t,e){return tf=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)n.hasOwnProperty(i)&&(r[i]=n[i])},tf(t,e)};function ce(t,e){tf(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}var Qe=function(){return Qe=Object.assign||function(e){for(var r,n=1,i=arguments.length;n0&&a[a.length-1])&&(u[0]===6||u[0]===2)){r=0;continue}if(u[0]===3&&(!a||u[1]>a[0]&&u[1]>2],e+=ba[(t[n]&3)<<4|t[n+1]>>4],e+=ba[(t[n+1]&15)<<2|t[n+2]>>6],e+=ba[t[n+2]&63];return r%3===2?e=e.substring(0,e.length-1)+"=":r%3===1&&(e=e.substring(0,e.length-2)+"=="),e},sp=function(t){var e=t.length*.75,r=t.length,n,i=0,a,o,s,c;t[t.length-1]==="="&&(e--,t[t.length-2]==="="&&e--);var u=new Uint8Array(e);for(n=0;n>4,u[i++]=(o&15)<<4|s>>2,u[i++]=(s&3)<<6|c&63;return u},hx=/^(data)?:?([\w\/\+]+)?;?(charset=[\w-]+|base64)?.*,/i,dx=function(t){var e=t.trim(),r=e.substring(0,100),n=r.match(hx);if(!n)return sp(e);var i=n[0],a=e.substring(i.length);return sp(a)},Ye=function(t){return t.charCodeAt(0)},vx=function(t){return t.codePointAt(0)},vs=function(t,e){return Jr(t.toString(16),e,"0").toUpperCase()},hc=function(t){return vs(t,2)},Dn=function(t){return String.fromCharCode(t)},px=function(t){return Dn(parseInt(t,16))},Jr=function(t,e,r){for(var n="",i=0,a=e-t.length;i=55296&&r<=56319&&t.length>i&&(n=t.charCodeAt(i),n>=56320&&n<=57343&&(a=2)),[t.slice(e,e+a),a]},mx=function(t){for(var e=[],r=0,n=t.length;rr&&u(),o+=d,s+=v}}return u(),c},Sx=/^D:(\d\d\d\d)(\d\d)?(\d\d)?(\d\d)?(\d\d)?(\d\d)?([+\-Z])?(\d\d)?'?(\d\d)?'?$/,Sg=function(t){var e=t.match(Sx);if(e){var r=e[1],n=e[2],i=n===void 0?"01":n,a=e[3],o=a===void 0?"01":a,s=e[4],c=s===void 0?"00":s,u=e[5],f=u===void 0?"00":u,h=e[6],d=h===void 0?"00":h,v=e[7],p=v===void 0?"Z":v,y=e[8],w=y===void 0?"00":y,S=e[9],E=S===void 0?"00":S,k=p==="Z"?"Z":""+p+w+":"+E,I=new Date(r+"-"+i+"-"+o+"T"+c+":"+f+":"+d+k);return I}},sh=function(t,e){for(var r,n=0,i;n=0&&t<=65535},Dx=function(t){return t>=65536&&t<=1114111},Cg=function(t){return Math.floor((t-65536)/1024)+55296},kg=function(t){return(t-65536)%1024+56320},ui;(function(t){t.BigEndian="BigEndian",t.LittleEndian="LittleEndian"})(ui||(ui={}));var oo="�".codePointAt(0),Fg=function(t,e){if(e===void 0&&(e=!0),t.length<=1)return String.fromCodePoint(oo);for(var r=e?Rx(t):ui.BigEndian,n=e?2:0,i=[];t.length-n>=2;){var a=cp(t[n++],t[n++],r);if(Bx(a))if(t.length-n<2)i.push(oo);else{var o=cp(t[n++],t[n++],r);up(o)?i.push(a,o):i.push(oo)}else up(a)?(n+=2,i.push(oo)):i.push(a)}return n=55296&&t<=56319},up=function(t){return t>=56320&&t<=57343},cp=function(t,e,r){if(r===ui.LittleEndian)return e<<8|t;if(r===ui.BigEndian)return t<<8|e;throw new Error("Invalid byteOrder: "+r)},Rx=function(t){return xg(t)?ui.BigEndian:Tg(t)?ui.LittleEndian:ui.BigEndian},xg=function(t){return t[0]===254&&t[1]===255},Tg=function(t){return t[0]===255&&t[1]===254},Og=function(t){return xg(t)||Tg(t)},Nx=function(t){var e=String(t);if(Math.abs(t)<1){var r=parseInt(t.toString().split("e-")[1]);if(r){var n=t<0;n&&(t*=-1),t*=Math.pow(10,r-1),e="0."+new Array(r).join("0")+t.toString().substring(2),n&&(e="-"+e)}}else{var r=parseInt(t.toString().split("+")[1]);r>20&&(r-=20,t/=Math.pow(10,r),e=t.toString()+new Array(r+1).join("0"))}return e},ru=function(t){return Math.ceil(t.toString(2).length/8)},ca=function(t){for(var e=new Uint8Array(ru(t)),r=1;r<=e.length;r++)e[r-1]=t>>(e.length-r)*8;return e},gs=function(t){throw new Error(t)},Mx=is(as()),lp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ho=new Uint8Array(256);for(Jt=0;Jt>4,u[i++]=(o&15)<<4|s>>2,u[i++]=(s&3)<<6|c&63;return u},Ux=function(t){for(var e="",r=0;rn)throw new Error(Yt(e)+" must be at least "+r+" and at most "+n+", but was actually "+t)},Xr=function(t,e,r,n){z(t,e,["number","undefined"]),typeof t=="number"&&xr(t,e,r,n)},Ig=function(t,e,r){if(z(t,e,["number"]),t%r!==0)throw new Error(Yt(e)+" must be a multiple of "+r+", but was actually "+t)},fT=function(t,e){if(!Number.isInteger(t))throw new Error(Yt(e)+" must be an integer, but was actually "+t)},vc=function(t,e){if(![1,0].includes(Math.sign(t)))throw new Error(Yt(e)+" must be a positive number or 0, but was actually "+t)},_e=new Uint16Array(256);for(_t=0;_t<256;_t++)_e[_t]=_t;var _t;_e[22]=Ye("");_e[24]=Ye("˘");_e[25]=Ye("ˇ");_e[26]=Ye("ˆ");_e[27]=Ye("˙");_e[28]=Ye("˝");_e[29]=Ye("˛");_e[30]=Ye("˚");_e[31]=Ye("˜");_e[127]=Ye("�");_e[128]=Ye("•");_e[129]=Ye("†");_e[130]=Ye("‡");_e[131]=Ye("…");_e[132]=Ye("—");_e[133]=Ye("–");_e[134]=Ye("ƒ");_e[135]=Ye("⁄");_e[136]=Ye("‹");_e[137]=Ye("›");_e[138]=Ye("−");_e[139]=Ye("‰");_e[140]=Ye("„");_e[141]=Ye("“");_e[142]=Ye("”");_e[143]=Ye("‘");_e[144]=Ye("’");_e[145]=Ye("‚");_e[146]=Ye("™");_e[147]=Ye("fi");_e[148]=Ye("fl");_e[149]=Ye("Ł");_e[150]=Ye("Œ");_e[151]=Ye("Š");_e[152]=Ye("Ÿ");_e[153]=Ye("Ž");_e[154]=Ye("ı");_e[155]=Ye("ł");_e[156]=Ye("œ");_e[157]=Ye("š");_e[158]=Ye("ž");_e[159]=Ye("�");_e[160]=Ye("€");_e[173]=Ye("�");var Dg=function(t){for(var e=new Array(t.length),r=0,n=t.length;r=P.ExclamationPoint&&t<=P.Tilde&&!fh[t]},yp={},mp=new Map,LT=function(t){ce(e,t);function e(r,n){var i=this;if(r!==yp)throw new uh("PDFName");i=t.call(this)||this;for(var a="/",o=0,s=n.length;o=P.Zero&&u<=P.Nine||u>=P.a&&u<=P.f||u>=P.A&&u<=P.F?(n+=c,(n.length===2||!(f>="0"&&f<="9"||f>="a"&&f<="f"||f>="A"&&f<="F"))&&(a(parseInt(n,16)),n="")):a(u):u===P.Hash?i=!0:a(u)}return new Uint8Array(r)},e.prototype.decodeText=function(){var r=this.asBytes();return String.fromCharCode.apply(String,Array.from(r))},e.prototype.asString=function(){return this.encodedName},e.prototype.value=function(){return this.encodedName},e.prototype.clone=function(){return this},e.prototype.toString=function(){return this.encodedName},e.prototype.sizeInBytes=function(){return this.encodedName.length},e.prototype.copyBytesInto=function(r,n){return n+=sr(this.encodedName,r,n),this.encodedName.length},e.of=function(r){var n=NT(r),i=mp.get(n);return i||(i=new e(yp,n),mp.set(n,i)),i},e.Length=e.of("Length"),e.FlateDecode=e.of("FlateDecode"),e.Resources=e.of("Resources"),e.Font=e.of("Font"),e.XObject=e.of("XObject"),e.ExtGState=e.of("ExtGState"),e.Contents=e.of("Contents"),e.Type=e.of("Type"),e.Parent=e.of("Parent"),e.MediaBox=e.of("MediaBox"),e.Page=e.of("Page"),e.Annots=e.of("Annots"),e.TrimBox=e.of("TrimBox"),e.ArtBox=e.of("ArtBox"),e.BleedBox=e.of("BleedBox"),e.CropBox=e.of("CropBox"),e.Rotate=e.of("Rotate"),e.Title=e.of("Title"),e.Author=e.of("Author"),e.Subject=e.of("Subject"),e.Creator=e.of("Creator"),e.Keywords=e.of("Keywords"),e.Producer=e.of("Producer"),e.CreationDate=e.of("CreationDate"),e.ModDate=e.of("ModDate"),e}(pr),x=LT,UT=function(t){ce(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.asNull=function(){return null},e.prototype.clone=function(){return this},e.prototype.toString=function(){return"null"},e.prototype.sizeInBytes=function(){return 4},e.prototype.copyBytesInto=function(r,n){return r[n++]=P.n,r[n++]=P.u,r[n++]=P.l,r[n++]=P.l,4},e}(pr),Sr=new UT,zT=function(t){ce(e,t);function e(r,n){var i=t.call(this)||this;return i.dict=r,i.context=n,i}return e.prototype.keys=function(){return Array.from(this.dict.keys())},e.prototype.values=function(){return Array.from(this.dict.values())},e.prototype.entries=function(){return Array.from(this.dict.entries())},e.prototype.set=function(r,n){this.dict.set(r,n)},e.prototype.get=function(r,n){n===void 0&&(n=!1);var i=this.dict.get(r);if(!(i===Sr&&!n))return i},e.prototype.has=function(r){var n=this.dict.get(r);return n!==void 0&&n!==Sr},e.prototype.lookupMaybe=function(r){for(var n,i=[],a=1;athis.largestObjectNumber&&(this.largestObjectNumber=e.objectNumber)},t.prototype.nextRef=function(){return this.largestObjectNumber+=1,xt.of(this.largestObjectNumber)},t.prototype.register=function(e){var r=this.nextRef();return this.assign(r,e),r},t.prototype.delete=function(e){return this.indirectObjects.delete(e)},t.prototype.lookupMaybe=function(e){for(var r=[],n=1;n1?(this.subsections.push([e]),this.chunkIdx+=1,this.chunkLength=1):(r.push(e),this.chunkLength+=1)},t.create=function(){return new t({ref:xt.of(0,65535),offset:0,deleted:!0})},t.createEmpty=function(){return new t},t}(),Rg=_T,$T=function(){function t(e){this.lastXRefOffset=String(e)}return t.prototype.toString=function(){return`startxref +`+this.lastXRefOffset+` +%%EOF`},t.prototype.sizeInBytes=function(){return 16+this.lastXRefOffset.length},t.prototype.copyBytesInto=function(e,r){var n=r;return e[r++]=P.s,e[r++]=P.t,e[r++]=P.a,e[r++]=P.r,e[r++]=P.t,e[r++]=P.x,e[r++]=P.r,e[r++]=P.e,e[r++]=P.f,e[r++]=P.Newline,r+=sr(this.lastXRefOffset,e,r),e[r++]=P.Newline,e[r++]=P.Percent,e[r++]=P.Percent,e[r++]=P.E,e[r++]=P.O,e[r++]=P.F,r-n},t.forLastCrossRefSectionOffset=function(e){return new t(e)},t}(),dh=$T,eO=function(){function t(e){this.dict=e}return t.prototype.toString=function(){return`trailer +`+this.dict.toString()},t.prototype.sizeInBytes=function(){return 8+this.dict.sizeInBytes()},t.prototype.copyBytesInto=function(e,r){var n=r;return e[r++]=P.t,e[r++]=P.r,e[r++]=P.a,e[r++]=P.i,e[r++]=P.l,e[r++]=P.e,e[r++]=P.r,e[r++]=P.Newline,r+=this.dict.copyBytesInto(e,r),r-n},t.of=function(e){return new t(e)},t}(),tO=eO,rO=function(t){ce(e,t);function e(r,n,i){i===void 0&&(i=!0);var a=t.call(this,r.obj({}),i)||this;return a.objects=n,a.offsets=a.computeObjectOffsets(),a.offsetsString=a.computeOffsetsString(),a.dict.set(x.of("Type"),x.of("ObjStm")),a.dict.set(x.of("N"),Ke.of(a.objects.length)),a.dict.set(x.of("First"),Ke.of(a.offsetsString.length)),a}return e.prototype.getObjectsCount=function(){return this.objects.length},e.prototype.clone=function(r){return e.withContextAndObjects(r||this.dict.context,this.objects.slice(),this.encode)},e.prototype.getContentsString=function(){for(var r=this.offsetsString,n=0,i=this.objects.length;n1&&(o.push(s),o.push(f.ref.objectNumber),s=0),s+=1}return o.push(s),o},a.computeEntryTuples=function(){for(var o=new Array(a.entries.length),s=0,c=a.entries.length;ss[0]&&(s[0]=p),y>s[1]&&(s[1]=y),w>s[2]&&(s[2]=w)}return s},a.entries=n||[],a.entryTuplesCache=Bn.populatedBy(a.computeEntryTuples),a.maxByteWidthsCache=Bn.populatedBy(a.computeMaxEntryByteWidths),a.indexCache=Bn.populatedBy(a.computeIndex),r.set(x.of("Type"),x.of("XRef")),a}return e.prototype.addDeletedEntry=function(r,n){var i=$n.Deleted;this.entries.push({type:i,ref:r,nextFreeObjectNumber:n}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},e.prototype.addUncompressedEntry=function(r,n){var i=$n.Uncompressed;this.entries.push({type:i,ref:r,offset:n}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},e.prototype.addCompressedEntry=function(r,n,i){var a=$n.Compressed;this.entries.push({type:a,ref:r,objectStreamRef:n,index:i}),this.entryTuplesCache.invalidate(),this.maxByteWidthsCache.invalidate(),this.indexCache.invalidate(),this.contentsCache.invalidate()},e.prototype.clone=function(r){var n=this,i=n.dict,a=n.entries,o=n.encode;return e.of(i.clone(r),a.slice(),o)},e.prototype.getContentsString=function(){for(var r=this.entryTuplesCache.access(),n=this.maxByteWidthsCache.access(),i="",a=0,o=r.length;a=0;p--)i+=(h[p]||0).toString(2);for(var p=n[1]-1;p>=0;p--)i+=(d[p]||0).toString(2);for(var p=n[2]-1;p>=0;p--)i+=(v[p]||0).toString(2)}return i},e.prototype.getUnencodedContents=function(){for(var r=this.entryTuplesCache.access(),n=this.maxByteWidthsCache.access(),i=new Uint8Array(this.getUnencodedContentsSize()),a=0,o=0,s=r.length;o=0;y--)i[a++]=d[y]||0;for(var y=n[1]-1;y>=0;y--)i[a++]=v[y]||0;for(var y=n[2]-1;y>=0;y--)i[a++]=p[y]||0}return i},e.prototype.getUnencodedContentsSize=function(){var r=this.maxByteWidthsCache.access(),n=xx(r);return n*this.entries.length},e.prototype.updateDict=function(){t.prototype.updateDict.call(this);var r=this.maxByteWidthsCache.access(),n=this.indexCache.access(),i=this.dict.context;this.dict.set(x.of("W"),i.obj(r)),this.dict.set(x.of("Index"),i.obj(n))},e.create=function(r,n){n===void 0&&(n=!0);var i=new e(r,[],n);return i.addDeletedEntry(xt.of(0,65535),0),i},e.of=function(r,n,i){return i===void 0&&(i=!0),new e(r,n,i)},e}(hh),oO=aO,sO=function(t){ce(e,t);function e(r,n,i,a){var o=t.call(this,r,n)||this;return o.encodeStreams=i,o.objectsPerStream=a,o}return e.prototype.computeBufferSize=function(){return et(this,void 0,void 0,function(){var r,n,i,a,o,s,c,u,p,y,f,S,h,d,w,v,p,y,w,S,E,k,I,D;return tt(this,function(R){switch(R.label){case 0:r=this.context.largestObjectNumber+1,n=pc.forVersion(1,7),i=n.sizeInBytes()+2,a=oO.create(this.createTrailerDict(),this.encodeStreams),o=[],s=[],c=[],u=this.context.enumerateIndirectObjects(),p=0,y=u.length,R.label=1;case 1:return p"},e.prototype.sizeInBytes=function(){return this.value.length+2},e.prototype.copyBytesInto=function(r,n){return r[n++]=P.LessThan,n+=sr(this.value,r,n),r[n++]=P.GreaterThan,this.value.length+2},e.of=function(r){return new e(r)},e.fromText=function(r){for(var n=Ex(r),i="",a=0,o=n.length;a> def +/CMapName /Adobe-Identity-UCS def +/CMapType 2 def +1 begincodespacerange +<0000> +endcodespacerange +`+t.length+` beginbfchar +`+t.map(function(e){var r=e[0],n=e[1];return r+" "+n}).join(` +`)+` +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end`},Ap=function(){for(var t=[],e=0;e"},nu=function(t){return vs(t,4)},dO=function(t){if(Ix(t))return nu(t);if(Dx(t)){var e=Cg(t),r=kg(t);return""+nu(e)+nu(r)}var n=hc(t),i="0x"+n+" is not a valid UTF-8 or UTF-16 codepoint.";throw new Error(i)},vO=function(t){var e=0,r=function(n){e|=1<=P.Zero&&u<=P.Seven?(n+=c,(n.length===3||!(f>="0"&&f<="7"))&&(a(parseInt(n,8)),n="")):a(u):u===P.BackSlash?i=!0:a(u)}return new Uint8Array(r)},e.prototype.decodeText=function(){var r=this.asBytes();return Og(r)?Fg(r):Dg(r)},e.prototype.decodeDate=function(){var r=this.decodeText(),n=Sg(r);if(!n)throw new Bg(r);return n},e.prototype.asString=function(){return this.value},e.prototype.clone=function(){return e.of(this.value)},e.prototype.toString=function(){return"("+this.value+")"},e.prototype.sizeInBytes=function(){return this.value.length+2},e.prototype.copyBytesInto=function(r,n){return r[n++]=P.LeftParen,n+=sr(this.value,r,n),r[n++]=P.RightParen,this.value.length+2},e.of=function(r){return new e(r)},e.fromDate=function(r){var n=Jr(String(r.getUTCFullYear()),4,"0"),i=Jr(String(r.getUTCMonth()+1),2,"0"),a=Jr(String(r.getUTCDate()),2,"0"),o=Jr(String(r.getUTCHours()),2,"0"),s=Jr(String(r.getUTCMinutes()),2,"0"),c=Jr(String(r.getUTCSeconds()),2,"0");return new e("D:"+n+i+a+o+s+c+"Z")},e}(pr),wt=gO,yO=function(){function t(e,r,n,i){var a=this;this.allGlyphsInFontSortedById=function(){for(var o=new Array(a.font.characterSet.length),s=0,c=o.length;s>3)]>>7-((v&7)<<0)&1,G=3*V;s[k]=I[G],s[k+1]=I[G+1],s[k+2]=I[G+2],s[k+3]=V>2)]>>6-((v&3)<<1)&3,G=3*V;s[k]=I[G],s[k+1]=I[G+1],s[k+2]=I[G+2],s[k+3]=V>1)]>>4-((v&1)<<2)&15,G=3*V;s[k]=I[G],s[k+1]=I[G+1],s[k+2]=I[G+2],s[k+3]=V>>3)]>>>7-(_&7)&1),ue=q==w*255?0:255;c[H+_]=ue<<24|q<<16|q<<8|q}else if(f==2)for(var _=0;_>>2)]>>>6-((_&3)<<1)&3),ue=q==w*85?0:255;c[H+_]=ue<<24|q<<16|q<<8|q}else if(f==4)for(var _=0;_>>1)]>>>4-((_&1)<<2)&15),ue=q==w*17?0:255;c[H+_]=ue<<24|q<<16|q<<8|q}else if(f==8)for(var _=0;_>>2<<3));i==0;){if(i=w(e,d,1),a=w(e,d+1,2),d+=3,a==0){d&7&&(d+=8-(d&7));var j=(d>>>3)+4,U=e[j-4]|e[j-3]<<8;L&&(r=t.H.W(r,h+U)),r.set(new n(e.buffer,e.byteOffset+j,U),h),d=j+U<<3,h+=U;continue}if(L&&(r=t.H.W(r,h+(1<<17))),a==1&&(v=R.J,p=R.h,u=511,f=31),a==2){o=S(e,d,5)+257,s=S(e,d+5,5)+1,c=S(e,d+10,4)+4,d+=14;for(var V=1,G=0;G<38;G+=2)R.Q[G]=0,R.Q[G+1]=0;for(var G=0;GV&&(V=K)}d+=3*c,k(R.Q,V),I(R.Q,V,R.u),v=R.w,p=R.d,d=E(R.u,(1<>>4;if(!(_>>>8))r[h++]=_;else{if(_==256)break;var ue=h+_-254;if(_>264){var ae=R.q[_-257];ue=h+(ae>>>3)+S(e,d,ae&7),d+=ae&7}var Ae=p[D(e,d)&f];d+=Ae&15;var de=Ae>>>4,Ce=R.c[de],Le=(Ce>>>4)+w(e,d,Ce&15);for(d+=Ce&15;h>>4;if(h<=15)o[u]=h,u++;else{var d=0,v=0;h==16?(v=3+s(i,a,2),a+=2,d=o[u-1]):h==17?(v=3+s(i,a,3),a+=3):h==18&&(v=11+s(i,a,7),a+=7);for(var p=u+v;u>>1;oa&&(a=c),o++}for(;o>1,u=e[s+1],f=c<<4|u,h=r-u,d=e[s]<>>15-r;n[p]=f,d++}},t.H.l=function(e,r){for(var n=t.H.m.r,i=15-r,a=0;a>>i}},t.H.M=function(e,r,n){n=n<<(r&7);var i=r>>>3;e[i]|=n,e[i+1]|=n>>>8},t.H.I=function(e,r,n){n=n<<(r&7);var i=r>>>3;e[i]|=n,e[i+1]|=n>>>8,e[i+2]|=n>>>16},t.H.e=function(e,r,n){return(e[r>>>3]|e[(r>>>3)+1]<<8)>>>(r&7)&(1<>>3]|e[(r>>>3)+1]<<8|e[(r>>>3)+2]<<16)>>>(r&7)&(1<>>3]|e[(r>>>3)+1]<<8|e[(r>>>3)+2]<<16)>>>(r&7)},t.H.i=function(e,r){return(e[r>>>3]|e[(r>>>3)+1]<<8|e[(r>>>3)+2]<<16|e[(r>>>3)+3]<<24)>>>(r&7)},t.H.m=function(){var e=Uint16Array,r=Uint32Array;return{K:new e(16),j:new e(16),X:[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S:[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,999,999,999],T:[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0],q:new e(32),p:[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,65535,65535],z:[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0],c:new r(32),J:new e(512),_:[],h:new e(32),$:[],w:new e(32768),C:[],v:[],d:new e(32768),D:[],u:new e(512),Q:[],r:new e(32768),s:new r(286),Y:new r(30),a:new r(19),t:new r(15e3),k:new e(65536),g:new e(32768)}}(),function(){for(var e=t.H.m,r=32768,n=0;n>>1|(i&1431655765)<<1,i=(i&3435973836)>>>2|(i&858993459)<<2,i=(i&4042322160)>>>4|(i&252645135)<<4,i=(i&4278255360)>>>8|(i&16711935)<<8,e.r[n]=(i>>>16|i<<16)>>>17}function a(o,s,c){for(;s--!=0;)o.push(0,c)}for(var n=0;n<32;n++)e.q[n]=e.S[n]<<3|e.T[n],e.c[n]=e.p[n]<<4|e.z[n];a(e._,144,8),a(e._,112,9),a(e._,24,7),a(e._,8,8),t.H.n(e._,9),t.H.A(e._,9,e.J),t.H.l(e._,9),a(e.$,32,5),t.H.n(e.$,5),t.H.A(e.$,5,e.h),t.H.l(e.$,5),a(e.Q,19,0),a(e.C,286,0),a(e.D,30,0),a(e.v,320,0)}(),t.H.N}();ie.decode._readInterlace=function(t,e){for(var r=e.width,n=e.height,i=ie.decode._getBPP(e),a=i>>3,o=Math.ceil(r*i/8),s=new Uint8Array(n*o),c=0,u=[0,0,4,0,2,0,1],f=[0,4,0,2,0,1,0],h=[8,8,8,4,4,2,2],d=[8,8,4,4,2,2,1],v=0;v<7;){for(var p=h[v],y=d[v],w=0,S=0,E=u[v];E>3];U=U>>7-(j&7)&1,s[R*o+(L>>3)]|=U<<7-((L&7)<<0)}if(i==2){var U=t[j>>3];U=U>>6-(j&7)&3,s[R*o+(L>>2)]|=U<<6-((L&3)<<1)}if(i==4){var U=t[j>>3];U=U>>4-(j&7)&15,s[R*o+(L>>1)]|=U<<4-((L&1)<<2)}if(i>=8)for(var V=R*o+L*a,G=0;G>3)+G];j+=i,L+=y}D++,R+=p}w*S!=0&&(c+=S*(1+I)),v=v+1}return s};ie.decode._getBPP=function(t){var e=[1,null,3,1,2,null,4][t.ctype];return e*t.depth};ie.decode._filterZero=function(t,e,r,n,i){var a=ie.decode._getBPP(e),o=Math.ceil(n*a/8),s=ie.decode._paeth;a=Math.ceil(a/8);var c=0,u=1,f=t[r],h=0;if(f>1&&(t[r]=[0,0,1][f-2]),f==3)for(h=a;h>>1)&255;for(var d=0;d>>1);for(;h>>1)}else{for(;h>8&255,t[e+1]=r&255},readUint:function(t,e){return t[e]*(256*256*256)+(t[e+1]<<16|t[e+2]<<8|t[e+3])},writeUint:function(t,e,r){t[e]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r&255},readASCII:function(t,e,r){for(var n="",i=0;i=0&&s>=0?(h=v*e+p<<2,d=(s+v)*i+o+p<<2):(h=(-s+v)*e-o+p<<2,d=v*i+p<<2),c==0)n[d]=t[h],n[d+1]=t[h+1],n[d+2]=t[h+2],n[d+3]=t[h+3];else if(c==1){var y=t[h+3]*.00392156862745098,w=t[h]*y,S=t[h+1]*y,E=t[h+2]*y,k=n[d+3]*(1/255),I=n[d]*k,D=n[d+1]*k,R=n[d+2]*k,L=1-y,j=y+k*L,U=j==0?0:1/j;n[d+3]=255*j,n[d+0]=(w+I*L)*U,n[d+1]=(S+D*L)*U,n[d+2]=(E+R*L)*U}else if(c==2){var y=t[h+3],w=t[h],S=t[h+1],E=t[h+2],k=n[d+3],I=n[d],D=n[d+1],R=n[d+2];y==k&&w==I&&S==D&&E==R?(n[d]=0,n[d+1]=0,n[d+2]=0,n[d+3]=0):(n[d]=w,n[d+1]=S,n[d+2]=E,n[d+3]=y)}else if(c==3){var y=t[h+3],w=t[h],S=t[h+1],E=t[h+2],k=n[d+3],I=n[d],D=n[d+1],R=n[d+2];if(y==k&&w==I&&S==D&&E==R)continue;if(y<220&&k>20)return!1}return!0};ie.encode=function(t,e,r,n,i,a,o){n==null&&(n=0),o==null&&(o=!1);var s=ie.encode.compress(t,e,r,n,[!1,!1,!1,0,o]);return ie.encode.compressPNG(s,-1),ie.encode._main(s,e,r,i,a)};ie.encodeLL=function(t,e,r,n,i,a,o,s){for(var c={ctype:0+(n==1?0:2)+(i==0?0:4),depth:a,frames:[]},u=(n+i)*a,f=u*e,h=0;h1,h=!1,d=33+(f?20:0);if(i.sRGB!=null&&(d+=13),i.pHYs!=null&&(d+=21),t.ctype==3){for(var v=t.plte.length,p=0;p>>24!=255&&(h=!0);d+=8+v*3+4+(h?8+v*1+4:0)}for(var y=0;y>>8&255,L=I>>>16&255;S[u+k+0]=D,S[u+k+1]=R,S[u+k+2]=L}if(u+=v*3,o(S,u,a(S,u-v*3-4,v*3+4)),u+=4,h){o(S,u,v),u+=4,c(S,u,"tRNS"),u+=4;for(var p=0;p>>24&255;u+=v,o(S,u,a(S,u-v-4,v+4)),u+=4}}for(var j=0,y=0;y>2,K>>2));for(var v=0;vH&&ue==ee[w-H])_[w]=_[w-H];else{var ae=k[ue];if(ae==null&&(k[ue]=ae=I.length,I.push(ue),I.length>=300))break;_[w]=ae}}}var Ae=I.length;Ae<=256&&u==!1&&(Ae<=2?h=1:Ae<=4?h=2:Ae<=16?h=4:h=8,h=Math.max(h,c));for(var v=0;v>1)]|=$e[Ie+be]<<4-(be&1)*4;else if(h==2)for(var be=0;be>2)]|=$e[Ie+be]<<6-(be&3)*2;else if(h==1)for(var be=0;be>3)]|=$e[Ie+be]<<7-(be&7)*1}Ce=We,f=3,at=1}else if(S==!1&&E.length==1){for(var We=new Uint8Array(H*de*3),ge=H*de,w=0;wL&&(L=V),Uj&&(j=U))}L==-1&&(D=R=L=j=0),i&&((D&1)==1&&D--,(R&1)==1&&R--);var K=(L-D+1)*(j-R+1);Kw&&(w=I),DS&&(S=D))}w==-1&&(p=y=w=S=0),o&&((p&1)==1&&p--,(y&1)==1&&y--),a={x:p,y,width:w-p+1,height:S-y+1};var j=n[i];j.rect=a,j.blend=1,j.img=new Uint8Array(a.width*a.height*4),n[i-1].dispose==0?(ie._copyTile(u,e,r,j.img,a.width,a.height,-a.x,-a.y,0),ie.encode._prepareDiff(d,e,r,j.img,a)):ie._copyTile(d,e,r,j.img,a.width,a.height,-a.x,-a.y,0)};ie.encode._prepareDiff=function(t,e,r,n,i){ie._copyTile(t,e,r,n,i.width,i.height,-i.x,-i.y,2)};ie.encode._filterZero=function(t,e,r,n,i,a,o){var s=[],c=[0,1,2,3,4];a!=-1?c=[a]:(e*n>5e5||r==1)&&(c=[0]);var u;o&&(u={level:0});for(var f=o&&UZIP!=null?UZIP:kO.default,h=0;h>1)+256&255;if(a==4)for(var u=i;u>1)&255;for(var u=i;u>1)&255}if(a==4){for(var u=0;u>>1:r=r>>>1;t[e]=r}return t}(),update:function(t,e,r,n){for(var i=0;i>>8;return t},crc:function(t,e,r){return ie.crc.update(4294967295,t,e,r)^4294967295}};ie.quantize=function(t,e){var r=new Uint8Array(t),n=r.slice(0),i=new Uint32Array(n.buffer),a=ie.quantize.getKDtree(n,e),o=a[0],s=a[1];ie.quantize.planeDst;for(var c=r,u=i,f=c.length,h=new Uint8Array(r.length>>2),d=0;d>2]=S.ind,u[d>>2]=S.est.rgba}return{abuf:n.buffer,inds:h,plte:s}};ie.quantize.getKDtree=function(t,e,r){r==null&&(r=1e-4);var n=new Uint32Array(t.buffer),i={i0:0,i1:t.length,bst:null,est:null,tdst:0,left:null,right:null};i.bst=ie.quantize.stats(t,i.i0,i.i1),i.est=ie.quantize.estats(i.bst);for(var a=[i];a.lengtho&&(o=a[c].est.L,s=c);if(o=f||u.i1<=f;if(h){u.est.L=0;continue}var d={i0:u.i0,i1:f,bst:null,est:null,tdst:0,left:null,right:null};d.bst=ie.quantize.stats(t,d.i0,d.i1),d.est=ie.quantize.estats(d.bst);var v={i0:f,i1:u.i1,bst:null,est:null,tdst:0,left:null,right:null};v.bst={R:[],m:[],N:u.bst.N-d.bst.N};for(var c=0;c<16;c++)v.bst.R[c]=u.bst.R[c]-d.bst.R[c];for(var c=0;c<4;c++)v.bst.m[c]=u.bst.m[c]-d.bst.m[c];v.est=ie.quantize.estats(v.bst),u.left=d,u.right=v,a[s]=d,a.push(v)}a.sort(function(p,y){return y.bst.N-p.bst.N});for(var c=0;c0&&(o=t.right,s=t.left);var c=ie.quantize.getNearest(o,e,r,n,i);if(c.tdst<=a*a)return c;var u=ie.quantize.getNearest(s,e,r,n,i);return u.tdsta;)n-=4;if(r>=n)break;var s=e[r>>2];e[r>>2]=e[n>>2],e[n>>2]=s,r+=4,n-=4}for(;o(t,r,i)>a;)r-=4;return r+4};ie.quantize.vecDot=function(t,e,r){return t[e]*r[0]+t[e+1]*r[1]+t[e+2]*r[2]+t[e+3]*r[3]};ie.quantize.stats=function(t,e,r){for(var n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],i=[0,0,0,0],a=r-e>>2,o=e;o>>0}};ie.M4={multVec:function(t,e){return[t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3],t[4]*e[0]+t[5]*e[1]+t[6]*e[2]+t[7]*e[3],t[8]*e[0]+t[9]*e[1]+t[10]*e[2]+t[11]*e[3],t[12]*e[0]+t[13]*e[1]+t[14]*e[2]+t[15]*e[3]]},dot:function(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]+t[3]*e[3]},sml:function(t,e){return[t*e[0],t*e[1],t*e[2],t*e[3]]}};ie.encode.concatRGBA=function(t){for(var e=0,r=0;r1)throw new Error("Animated PNGs are not supported");var i=new Uint8Array(n[0]),a=xO(i),o=a.rgbChannel,s=a.alphaChannel;this.rgbChannel=o;var c=s.some(function(u){return u<255});c&&(this.alphaChannel=s),this.type=FO(r.ctype),this.width=r.width,this.height=r.height,this.bitsPerComponent=8}return t.load=function(e){return new t(e)},t}(),OO=function(){function t(e){this.image=e,this.bitsPerComponent=e.bitsPerComponent,this.width=e.width,this.height=e.height,this.colorSpace="DeviceRGB"}return t.for=function(e){return et(this,void 0,void 0,function(){var r;return tt(this,function(n){return r=TO.load(e),[2,new t(r)]})})},t.prototype.embedIntoContext=function(e,r){return et(this,void 0,void 0,function(){var n,i;return tt(this,function(a){return n=this.embedAlphaChannel(e),i=e.flateStream(this.image.rgbChannel,{Type:"XObject",Subtype:"Image",BitsPerComponent:this.image.bitsPerComponent,Width:this.image.width,Height:this.image.height,ColorSpace:this.colorSpace,SMask:n}),r?(e.assign(r,i),[2,r]):[2,e.register(i)]})})},t.prototype.embedAlphaChannel=function(e){if(this.image.alphaChannel){var r=e.flateStream(this.image.alphaChannel,{Type:"XObject",Subtype:"Image",Height:this.image.height,Width:this.image.width,BitsPerComponent:this.image.bitsPerComponent,ColorSpace:"DeviceGray",Decode:[0,1]});return e.register(r)}},t}(),zg=OO,PO=function(){function t(e,r,n){this.bytes=e,this.start=r||0,this.pos=this.start,this.end=r&&n?r+n:this.bytes.length}return Object.defineProperty(t.prototype,"length",{get:function(){return this.end-this.start},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isEmpty",{get:function(){return this.length===0},enumerable:!1,configurable:!0}),t.prototype.getByte=function(){return this.pos>=this.end?-1:this.bytes[this.pos++]},t.prototype.getUint16=function(){var e=this.getByte(),r=this.getByte();return e===-1||r===-1?-1:(e<<8)+r},t.prototype.getInt32=function(){var e=this.getByte(),r=this.getByte(),n=this.getByte(),i=this.getByte();return(e<<24)+(r<<16)+(n<<8)+i},t.prototype.getBytes=function(e,r){r===void 0&&(r=!1);var n=this.bytes,i=this.pos,a=this.end;if(e){var s=i+e;s>a&&(s=a),this.pos=s;var o=n.subarray(i,s);return r?new Uint8ClampedArray(o):o}else{var o=n.subarray(i,a);return r?new Uint8ClampedArray(o):o}},t.prototype.peekByte=function(){var e=this.getByte();return this.pos--,e},t.prototype.peekBytes=function(e,r){r===void 0&&(r=!1);var n=this.getBytes(e,r);return this.pos-=n.length,n},t.prototype.skip=function(e){e||(e=1),this.pos+=e},t.prototype.reset=function(){this.pos=this.start},t.prototype.moveStart=function(){this.start=this.pos},t.prototype.makeSubStream=function(e,r){return new t(this.bytes,e,r)},t.prototype.decode=function(){return this.bytes},t}(),jg=PO,EO=new Uint8Array(0),IO=function(){function t(e){if(this.pos=0,this.bufferLength=0,this.eof=!1,this.buffer=EO,this.minBufferLength=512,e)for(;this.minBufferLengtha&&(n=a)}else{for(;!this.eof;)this.readBlock();n=this.bufferLength}this.pos=n;var o=this.buffer.subarray(i,n);return r&&!(o instanceof Uint8ClampedArray)?new Uint8ClampedArray(o):o},t.prototype.peekByte=function(){var e=this.getByte();return this.pos--,e},t.prototype.peekBytes=function(e,r){r===void 0&&(r=!1);var n=this.getBytes(e,r);return this.pos-=n.length,n},t.prototype.skip=function(e){e||(e=1),this.pos+=e},t.prototype.reset=function(){this.pos=0},t.prototype.makeSubStream=function(e,r){for(var n=e+r;this.bufferLength<=n&&!this.eof;)this.readBlock();return new jg(this.buffer,e,r)},t.prototype.decode=function(){for(;!this.eof;)this.readBlock();return this.buffer.subarray(0,this.bufferLength)},t.prototype.readBlock=function(){throw new zr(this.constructor.name,"readBlock")},t.prototype.ensureBuffer=function(e){var r=this.buffer;if(e<=r.byteLength)return r;for(var n=this.minBufferLength;n=0;--u)c[s+u]=h&255,h>>=8}},e}(ys),BO=DO,RO=function(t){ce(e,t);function e(r,n){var i=t.call(this,n)||this;return i.stream=r,i.firstDigit=-1,n&&(n=.5*n),i}return e.prototype.readBlock=function(){var r=8e3,n=this.stream.getBytes(r);if(!n.length){this.eof=!0;return}for(var i=n.length+1>>1,a=this.ensureBuffer(this.bufferLength+i),o=this.bufferLength,s=this.firstDigit,c=0,u=n.length;c=48&&f<=57)h=f&15;else if(f>=65&&f<=70||f>=97&&f<=102)h=(f&15)+9;else if(f===62){this.eof=!0;break}else continue;s<0?s=h:(a[o++]=s<<4|h,s=-1)}s>=0&&this.eof&&(a[o++]=s<<4,s=-1),this.firstDigit=s,this.bufferLength=o},e}(ys),NO=RO,xp=new Int32Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),MO=new Int32Array([3,4,5,6,7,8,9,10,65547,65549,65551,65553,131091,131095,131099,131103,196643,196651,196659,196667,262211,262227,262243,262259,327811,327843,327875,327907,258,258,258]),LO=new Int32Array([1,2,3,4,65541,65543,131081,131085,196625,196633,262177,262193,327745,327777,393345,393409,459009,459137,524801,525057,590849,591361,657409,658433,724993,727041,794625,798721,868353,876545]),UO=[new Int32Array([459008,524368,524304,524568,459024,524400,524336,590016,459016,524384,524320,589984,524288,524416,524352,590048,459012,524376,524312,589968,459028,524408,524344,590032,459020,524392,524328,59e4,524296,524424,524360,590064,459010,524372,524308,524572,459026,524404,524340,590024,459018,524388,524324,589992,524292,524420,524356,590056,459014,524380,524316,589976,459030,524412,524348,590040,459022,524396,524332,590008,524300,524428,524364,590072,459009,524370,524306,524570,459025,524402,524338,590020,459017,524386,524322,589988,524290,524418,524354,590052,459013,524378,524314,589972,459029,524410,524346,590036,459021,524394,524330,590004,524298,524426,524362,590068,459011,524374,524310,524574,459027,524406,524342,590028,459019,524390,524326,589996,524294,524422,524358,590060,459015,524382,524318,589980,459031,524414,524350,590044,459023,524398,524334,590012,524302,524430,524366,590076,459008,524369,524305,524569,459024,524401,524337,590018,459016,524385,524321,589986,524289,524417,524353,590050,459012,524377,524313,589970,459028,524409,524345,590034,459020,524393,524329,590002,524297,524425,524361,590066,459010,524373,524309,524573,459026,524405,524341,590026,459018,524389,524325,589994,524293,524421,524357,590058,459014,524381,524317,589978,459030,524413,524349,590042,459022,524397,524333,590010,524301,524429,524365,590074,459009,524371,524307,524571,459025,524403,524339,590022,459017,524387,524323,589990,524291,524419,524355,590054,459013,524379,524315,589974,459029,524411,524347,590038,459021,524395,524331,590006,524299,524427,524363,590070,459011,524375,524311,524575,459027,524407,524343,590030,459019,524391,524327,589998,524295,524423,524359,590062,459015,524383,524319,589982,459031,524415,524351,590046,459023,524399,524335,590014,524303,524431,524367,590078,459008,524368,524304,524568,459024,524400,524336,590017,459016,524384,524320,589985,524288,524416,524352,590049,459012,524376,524312,589969,459028,524408,524344,590033,459020,524392,524328,590001,524296,524424,524360,590065,459010,524372,524308,524572,459026,524404,524340,590025,459018,524388,524324,589993,524292,524420,524356,590057,459014,524380,524316,589977,459030,524412,524348,590041,459022,524396,524332,590009,524300,524428,524364,590073,459009,524370,524306,524570,459025,524402,524338,590021,459017,524386,524322,589989,524290,524418,524354,590053,459013,524378,524314,589973,459029,524410,524346,590037,459021,524394,524330,590005,524298,524426,524362,590069,459011,524374,524310,524574,459027,524406,524342,590029,459019,524390,524326,589997,524294,524422,524358,590061,459015,524382,524318,589981,459031,524414,524350,590045,459023,524398,524334,590013,524302,524430,524366,590077,459008,524369,524305,524569,459024,524401,524337,590019,459016,524385,524321,589987,524289,524417,524353,590051,459012,524377,524313,589971,459028,524409,524345,590035,459020,524393,524329,590003,524297,524425,524361,590067,459010,524373,524309,524573,459026,524405,524341,590027,459018,524389,524325,589995,524293,524421,524357,590059,459014,524381,524317,589979,459030,524413,524349,590043,459022,524397,524333,590011,524301,524429,524365,590075,459009,524371,524307,524571,459025,524403,524339,590023,459017,524387,524323,589991,524291,524419,524355,590055,459013,524379,524315,589975,459029,524411,524347,590039,459021,524395,524331,590007,524299,524427,524363,590071,459011,524375,524311,524575,459027,524407,524343,590031,459019,524391,524327,589999,524295,524423,524359,590063,459015,524383,524319,589983,459031,524415,524351,590047,459023,524399,524335,590015,524303,524431,524367,590079]),9],zO=[new Int32Array([327680,327696,327688,327704,327684,327700,327692,327708,327682,327698,327690,327706,327686,327702,327694,0,327681,327697,327689,327705,327685,327701,327693,327709,327683,327699,327691,327707,327687,327703,327695,0]),5],jO=function(t){ce(e,t);function e(r,n){var i=t.call(this,n)||this;i.stream=r;var a=r.getByte(),o=r.getByte();if(a===-1||o===-1)throw new Error("Invalid header in flate stream: "+a+", "+o);if((a&15)!==8)throw new Error("Unknown compression method in flate stream: "+a+", "+o);if(((a<<8)+o)%31!==0)throw new Error("Bad FCHECK in flate stream: "+a+", "+o);if(o&32)throw new Error("FDICT bit set in flate stream: "+a+", "+o);return i.codeSize=0,i.codeBuf=0,i}return e.prototype.readBlock=function(){var r,n,i=this.stream,a=this.getBits(3);if(a&1&&(this.eof=!0),a>>=1,a===0){var o=void 0;if((o=i.getByte())===-1)throw new Error("Bad block header in flate stream");var s=o;if((o=i.getByte())===-1)throw new Error("Bad block header in flate stream");if(s|=o<<8,(o=i.getByte())===-1)throw new Error("Bad block header in flate stream");var c=o;if((o=i.getByte())===-1)throw new Error("Bad block header in flate stream");if(c|=o<<8,c!==(~s&65535)&&(s!==0||c!==0))throw new Error("Bad uncompressed block length in flate stream");this.codeBuf=0,this.codeSize=0;var u=this.bufferLength;r=this.ensureBuffer(u+s);var f=u+s;if(this.bufferLength=f,s===0)i.peekByte()===-1&&(this.eof=!0);else for(var h=u;h0;)D[E++]=j}d=this.generateHuffmanTable(D.subarray(0,p)),v=this.generateHuffmanTable(D.subarray(p,I))}else throw new Error("Unknown block type in flate stream");r=this.buffer;for(var G=r?r.length:0,K=this.bufferLength;;){var q=this.getCode(d);if(q<256){K+1>=G&&(r=this.ensureBuffer(K+1),G=r.length),r[K++]=q;continue}if(q===256){this.bufferLength=K;return}q-=257,q=MO[q];var ee=q>>16;ee>0&&(ee=this.getBits(ee)),n=(q&65535)+ee,q=this.getCode(v),q=LO[q],ee=q>>16,ee>0&&(ee=this.getBits(ee));var H=(q&65535)+ee;K+n>=G&&(r=this.ensureBuffer(K+n),G=r.length);for(var _=0;_>r,this.codeSize=i-=r,o},e.prototype.getCode=function(r){for(var n=this.stream,i=r[0],a=r[1],o=this.codeSize,s=this.codeBuf,c;o>16,h=u&65535;if(f<1||o>f,this.codeSize=o-f,h},e.prototype.generateHuffmanTable=function(r){var n=r.length,i=0,a;for(a=0;ai&&(i=r[a]);for(var o=1<>=1;for(a=d;a0;if(!D||D<256)w[0]=D,S=1;else if(D>=258)if(D=0;o--)w[o]=h[s],s=v[s];else w[S++]=w[0];else if(D===256){p=9,f=258,S=0;continue}else{this.eof=!0,delete this.lzwState;break}if(R&&(v[f]=y,d[f]=d[y]+1,h[f]=w[0],f++,p=f+u&f+u-1?p:Math.min(Math.log(f+u)/.6931471805599453+1,12)|0),y=D,E+=S,n>>n&(1<0){var o=this.stream.getBytes(a);n.set(o,i),i+=a}}else{a=257-a;var s=r[1];n=this.ensureBuffer(i+a+1);for(var c=0;cn.size())throw new Bu(r,0,n.size());n.remove(r)}else{if(r!==0)throw new Bu(r,0,0);this.setKids([])}},e.prototype.normalizedEntries=function(){var r=this.Kids();return r||(r=this.dict.context.obj([this.ref]),this.dict.set(x.of("Kids"),r)),{Kids:r}},e.fromDict=function(r,n){return new e(r,n)},e}(qg),Wa=nP,iP=function(t){ce(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.Opt=function(){return this.dict.lookupMaybe(x.of("Opt"),wt,Me,vt)},e.prototype.setOpt=function(r){this.dict.set(x.of("Opt"),this.dict.context.obj(r))},e.prototype.getExportValues=function(){var r=this.Opt();if(r){if(r instanceof wt||r instanceof Me)return[r];for(var n=[],i=0,a=r.size();in.size())throw new Bu(r,0,n.size());n.remove(r)}},e.prototype.normalizeExportValues=function(){for(var r,n,i,a,o=(r=this.getExportValues())!==null&&r!==void 0?r:[],s=[],c=this.getWidgets(),u=0,f=c.length;u1){if(!this.hasFlag(Ft.MultiSelect))throw new mT;this.dict.set(x.of("V"),this.dict.context.obj(r))}this.updateSelectedIndices(r)},e.prototype.valuesAreValid=function(r){for(var n=this.getOptions(),i=function(c,u){var f=r[c].decodeText();if(!n.find(function(h){return f===(h.display||h.value).decodeText()}))return{value:!1}},a=0,o=r.length;a1){for(var n=new Array(r.length),i=this.getOptions(),a=function(c,u){var f=r[c].decodeText();n[c]=i.findIndex(function(h){return f===(h.display||h.value).decodeText()})},o=0,s=r.length;o0){var s=o.lookup(0,wt,Me),c=o.lookupMaybe(1,wt,Me);n.push({value:s,display:c||s})}}return n}return[]},e}(Wa),Wg=oP,sP=function(t){ce(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.fromDict=function(r,n){return new e(r,n)},e.create=function(r){var n=r.obj({FT:"Ch",Ff:Ft.Combo,Kids:[]}),i=r.register(n);return new e(n,i)},e}(Wg),yc=sP,uP=function(t){ce(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.addField=function(r){var n=this.normalizedEntries().Kids;n==null||n.push(r)},e.prototype.normalizedEntries=function(){var r=this.Kids();return r||(r=this.dict.context.obj([]),this.dict.set(x.of("Kids"),r)),{Kids:r}},e.fromDict=function(r,n){return new e(r,n)},e.create=function(r){var n=r.obj({}),i=r.register(n);return new e(n,i)},e}(qg),Lu=uP,cP=function(t){ce(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.fromDict=function(r,n){return new e(r,n)},e}(Wa),yh=cP,lP=function(t){ce(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.MaxLen=function(){var r=this.dict.lookup(x.of("MaxLen"));if(r instanceof Ke)return r},e.prototype.Q=function(){var r=this.dict.lookup(x.of("Q"));if(r instanceof Ke)return r},e.prototype.setMaxLength=function(r){this.dict.set(x.of("MaxLen"),Ke.of(r))},e.prototype.removeMaxLength=function(){this.dict.delete(x.of("MaxLen"))},e.prototype.getMaxLength=function(){var r;return(r=this.MaxLen())===null||r===void 0?void 0:r.asNumber()},e.prototype.setQuadding=function(r){this.dict.set(x.of("Q"),Ke.of(r))},e.prototype.getQuadding=function(){var r;return(r=this.Q())===null||r===void 0?void 0:r.asNumber()},e.prototype.setValue=function(r){this.dict.set(x.of("V"),r)},e.prototype.removeValue=function(){this.dict.delete(x.of("V"))},e.prototype.getValue=function(){var r=this.V();if(r instanceof wt||r instanceof Me)return r},e.fromDict=function(r,n){return new e(r,n)},e.create=function(r){var n=r.obj({FT:"Tx",Kids:[]}),i=r.register(n);return new e(n,i)},e}(Wa),mc=lP,fP=function(t){ce(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.fromDict=function(r,n){return new e(r,n)},e.create=function(r){var n=r.obj({FT:"Btn",Ff:Lr.PushButton,Kids:[]}),i=r.register(n);return new e(n,i)},e}(gh),bc=fP,hP=function(t){ce(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.setValue=function(r){var n=this.getOnValues();if(!n.includes(r)&&r!==x.of("Off"))throw new lh;this.dict.set(x.of("V"),r);for(var i=this.getWidgets(),a=0,o=i.length;aa)throw new vp(n,a);for(var o=n,s=0,c=i.size();so)return f.insertLeafNode(r,o)||u;o-=f.Count().asNumber()}f instanceof Rn&&(o-=1)}if(o===0){this.insertLeafKid(i.size(),r);return}throw new pp(n,"insertLeafNode")},e.prototype.removeLeafNode=function(r,n){n===void 0&&(n=!0);var i=this.Kids(),a=this.Count().asNumber();if(r>=a)throw new vp(r,a);for(var o=r,s=0,c=i.size();so){f.removeLeafNode(o,n),n&&f.Kids().size()===0&&i.remove(s);return}else o-=f.Count().asNumber();if(f instanceof Rn)if(o===0){this.removeKid(s);return}else o-=1}throw new pp(r,"removeLeafNode")},e.prototype.ascend=function(r){r(this);var n=this.Parent();n&&n.ascend(r)},e.prototype.traverse=function(r){for(var n=this.Kids(),i=0,a=n.size();iNumber.MAX_SAFE_INTEGER)if(this.capNumbers){var i="Parsed number that is too large for some PDF readers: "+e+", using Number.MAX_SAFE_INTEGER instead.";return console.warn(i),Number.MAX_SAFE_INTEGER}else{var i="Parsed number that is too large for some PDF readers: "+e+", not capping.";console.warn(i)}return n},t.prototype.skipWhitespace=function(){for(;!this.bytes.done()&&jn[this.bytes.peek()];)this.bytes.next()},t.prototype.skipLine=function(){for(;!this.bytes.done();){var e=this.bytes.peek();if(e===Pp||e===Ep)return;this.bytes.next()}},t.prototype.skipComment=function(){if(this.bytes.peek()!==P.Percent)return!1;for(;!this.bytes.done();){var e=this.bytes.peek();if(e===Pp||e===Ep)return!0;this.bytes.next()}return!0},t.prototype.skipWhitespaceAndComments=function(){for(this.skipWhitespace();this.skipComment();)this.skipWhitespace()},t.prototype.matchKeyword=function(e){for(var r=this.bytes.offset(),n=0,i=e.length;n=this.length},t.prototype.offset=function(){return this.idx},t.prototype.slice=function(e,r){return this.bytes.slice(e,r)},t.prototype.position=function(){return{line:this.line,column:this.column,offset:this.idx}},t.of=function(e){return new t(e)},t.fromPDFRawStream=function(e){return t.of(ph(e).decode())},t}(),Cc=CP,kP=P.Space,so=P.CarriageReturn,uo=P.Newline,co=[P.s,P.t,P.r,P.e,P.a,P.m],Vs=[P.e,P.n,P.d,P.s,P.t,P.r,P.e,P.a,P.m],Et={header:[P.Percent,P.P,P.D,P.F,P.Dash],eof:[P.Percent,P.Percent,P.E,P.O,P.F],obj:[P.o,P.b,P.j],endobj:[P.e,P.n,P.d,P.o,P.b,P.j],xref:[P.x,P.r,P.e,P.f],trailer:[P.t,P.r,P.a,P.i,P.l,P.e,P.r],startxref:[P.s,P.t,P.a,P.r,P.t,P.x,P.r,P.e,P.f],true:[P.t,P.r,P.u,P.e],false:[P.f,P.a,P.l,P.s,P.e],null:[P.n,P.u,P.l,P.l],stream:co,streamEOF1:yt(co,[kP,so,uo]),streamEOF2:yt(co,[so,uo]),streamEOF3:yt(co,[so]),streamEOF4:yt(co,[uo]),endstream:Vs,EOF1endstream:yt([so,uo],Vs),EOF2endstream:yt([so],Vs),EOF3endstream:yt([uo],Vs)},FP=function(t){ce(e,t);function e(r,n,i){i===void 0&&(i=!1);var a=t.call(this,r,i)||this;return a.context=n,a}return e.prototype.parseObject=function(){if(this.skipWhitespaceAndComments(),this.matchKeyword(Et.true))return $o.True;if(this.matchKeyword(Et.false))return $o.False;if(this.matchKeyword(Et.null))return Sr;var r=this.bytes.peek();if(r===P.LessThan&&this.bytes.peekAhead(1)===P.LessThan)return this.parseDictOrStream();if(r===P.LessThan)return this.parseHexString();if(r===P.LeftParen)return this.parseString();if(r===P.ForwardSlash)return this.parseName();if(r===P.LeftSquareBracket)return this.parseArray();if(wh[r])return this.parseNumberOrRef();throw new AT(this.bytes.position(),r)},e.prototype.parseNumberOrRef=function(){var r=this.parseRawNumber();this.skipWhitespaceAndComments();var n=this.bytes.offset();if(fr[this.bytes.peek()]){var i=this.parseRawNumber();if(this.skipWhitespaceAndComments(),this.bytes.peek()===P.R)return this.bytes.assertNext(P.R),xt.of(r,i)}return this.bytes.moveTo(n),Ke.of(r)},e.prototype.parseHexString=function(){var r="";for(this.bytes.assertNext(P.LessThan);!this.bytes.done()&&this.bytes.peek()!==P.GreaterThan;)r+=Dn(this.bytes.next());return this.bytes.assertNext(P.GreaterThan),Me.of(r)},e.prototype.parseString=function(){for(var r=0,n=!1,i="";!this.bytes.done();){var a=this.bytes.next();if(i+=Dn(a),n||(a===P.LeftParen&&(r+=1),a===P.RightParen&&(r-=1)),a===P.BackSlash?n=!n:n&&(n=!1),r===0)return wt.of(i.substring(1,i.length-1))}throw new FT(this.bytes.position())},e.prototype.parseName=function(){this.bytes.assertNext(P.ForwardSlash);for(var r="";!this.bytes.done();){var n=this.bytes.peek();if(jn[n]||Zr[n])break;r+=Dn(n),this.bytes.next()}return x.of(r)},e.prototype.parseArray=function(){this.bytes.assertNext(P.LeftSquareBracket),this.skipWhitespaceAndComments();for(var r=vt.withContext(this.context);this.bytes.peek()!==P.RightSquareBracket;){var n=this.parseObject();r.push(n),this.skipWhitespaceAndComments()}return this.bytes.assertNext(P.RightSquareBracket),r},e.prototype.parseDict=function(){this.bytes.assertNext(P.LessThan),this.bytes.assertNext(P.LessThan),this.skipWhitespaceAndComments();for(var r=new Map;!this.bytes.done()&&this.bytes.peek()!==P.GreaterThan&&this.bytes.peekAhead(1)!==P.GreaterThan;){var n=this.parseName(),i=this.parseObject();r.set(n,i),this.skipWhitespaceAndComments()}this.skipWhitespaceAndComments(),this.bytes.assertNext(P.GreaterThan),this.bytes.assertNext(P.GreaterThan);var a=r.get(x.of("Type"));return a===x.of("Catalog")?Zg.fromMapWithContext(r,this.context):a===x.of("Pages")?Kg.fromMapWithContext(r,this.context):a===x.of("Page")?Rn.fromMapWithContext(r,this.context):je.fromMapWithContext(r,this.context)},e.prototype.parseDictOrStream=function(){var r=this.bytes.position(),n=this.parseDict();if(this.skipWhitespaceAndComments(),!this.matchKeyword(Et.streamEOF1)&&!this.matchKeyword(Et.streamEOF2)&&!this.matchKeyword(Et.streamEOF3)&&!this.matchKeyword(Et.streamEOF4)&&!this.matchKeyword(Et.stream))return n;var i=this.bytes.offset(),a,o=n.get(x.of("Length"));o instanceof Ke?(a=i+o.asNumber(),this.bytes.moveTo(a),this.skipWhitespaceAndComments(),this.matchKeyword(Et.endstream)||(this.bytes.moveTo(i),a=this.findEndOfStreamFallback(r))):a=this.findEndOfStreamFallback(r);var s=this.bytes.slice(i,a);return za.of(n,s)},e.prototype.findEndOfStreamFallback=function(r){for(var n=1,i=this.bytes.offset();!this.bytes.done()&&(i=this.bytes.offset(),this.matchKeyword(Et.stream)?n+=1:this.matchKeyword(Et.EOF1endstream)||this.matchKeyword(Et.EOF2endstream)||this.matchKeyword(Et.EOF3endstream)||this.matchKeyword(Et.endstream)?n-=1:this.bytes.next(),n!==0););if(n!==0)throw new kT(r);return i},e.forBytes=function(r,n,i){return new e(Cc.of(r),n,i)},e.forByteStream=function(r,n,i){return i===void 0&&(i=!1),new e(r,n,i)},e}(AP),Xg=FP,xP=function(t){ce(e,t);function e(r,n){var i=t.call(this,Cc.fromPDFRawStream(r),r.dict.context)||this,a=r.dict;return i.alreadyParsed=!1,i.shouldWaitForTick=n||function(){return!1},i.firstOffset=a.lookup(x.of("First"),Ke).asNumber(),i.objectCount=a.lookup(x.of("N"),Ke).asNumber(),i}return e.prototype.parseIntoContext=function(){return et(this,void 0,void 0,function(){var r,n,i,a,o,s,c,u;return tt(this,function(f){switch(f.label){case 0:if(this.alreadyParsed)throw new ch("PDFObjectStreamParser","parseIntoContext");this.alreadyParsed=!0,r=this.parseOffsetsAndObjectNumbers(),n=0,i=r.length,f.label=1;case 1:return n=P.Space&&n<=P.Tilde;if(i&&(this.matchKeyword(Et.xref)||this.matchKeyword(Et.trailer)||this.matchKeyword(Et.startxref)||this.matchIndirectObjectHeader())){this.bytes.moveTo(r);break}this.bytes.next()}},e.prototype.skipBinaryHeaderComment=function(){this.skipWhitespaceAndComments();try{var r=this.bytes.offset();this.parseIndirectObjectHeader(),this.bytes.moveTo(r)}catch{this.bytes.next(),this.skipWhitespaceAndComments()}},e.forBytesWithOptions=function(r,n,i,a){return new e(r,n,i,a)},e}(Xg),IP=EP,an=function(t){return 1<0&&(n[n.length]=+i),r[r.length]={cmd:e,args:n},n=[],i="",a=!1),e=u;else if([" ",","].includes(u)||u==="-"&&i.length>0&&i[i.length-1]!=="e"||u==="."&&a){if(i.length===0)continue;n.length===o?(r[r.length]={cmd:e,args:n},n=[+i],e==="M"&&(e="L"),e==="m"&&(e="l")):n[n.length]=+i,a=u===".",i=["-","."].includes(u)?u:""}else i+=u,u==="."&&(a=!0)}return i.length>0&&(n.length===o?(r[r.length]={cmd:e,args:n},n=[+i],e==="M"&&(e="L"),e==="m"&&(e="l")):n[n.length]=+i),r[r.length]={cmd:e,args:n},r},GP=function(t){Pe=Ee=ht=dt=vo=po=0;for(var e=[],r=0;r1&&(d=Math.sqrt(d),r*=d,n*=d);var v=h/r,p=f/r,y=-f/n,w=h/n,S=v*s+p*c,E=y*s+w*c,k=v*t+p*e,I=y*t+w*e,D=(k-S)*(k-S)+(I-E)*(I-E),R=1/D-.25;R<0&&(R=0);var L=Math.sqrt(R);a===i&&(L=-L);var j=.5*(S+k)-L*(I-E),U=.5*(E+I)+L*(k-S),V=Math.atan2(E-U,S-j),G=Math.atan2(I-U,k-j),K=G-V;K<0&&a===1?K+=2*Math.PI:K>0&&a===0&&(K-=2*Math.PI);for(var q=Math.ceil(Math.abs(K/(Math.PI*.5+.001))),ee=[],H=0;Ht.length)return i-1;var w=e.heightAtSize(i),S=w+w*.2,E=S*a;if(E>Math.abs(r.height))return i-1;i+=1}return i},h9=function(t,e,r,n){for(var i=r.width/n,a=r.height,o=hy,s=mx(t);oi*.75;if(h)return o-1}var d=e.heightAtSize(o,{descender:!1});if(d>a)return o-1;o+=1}return o},d9=function(t){for(var e=t.length;e>0;e--)if(/\s/.test(t[e]))return e},v9=function(t,e,r,n){for(var i,a=t.length;a>0;){var o=t.substring(0,a),s=r.encodeText(o),c=r.widthOfTextAtSize(o,n);if(cd&&(d=L+D),p+s>v&&(v=p+s),u.push({text:k,encoded:I,width:D,height:s,x:L,y:p}),S=R==null?void 0:R.trim()}return{fontSize:n,lineHeight:c,lines:u,bounds:{x:f,y:h,width:d-f,height:v-h}}},p9=function(t,e){var r=e.fontSize,n=e.font,i=e.bounds,a=e.cellCount,o=bg(ps(t));if(o.length>a)throw new c9(o.length,a);(r===void 0||r===0)&&(r=h9(o,n,i,a));for(var s=i.width/a,c=n.heightAtSize(r,{descender:!1}),u=i.y+(i.height/2-c/2),f=[],h=i.x,d=i.y,v=i.x+i.width,p=i.y+i.height,y=0,w=0;yv&&(v=L+D),u+c>p&&(p=u+c),f.push({text:o,encoded:I,width:D,height:c,x:L,y:u}),y+=1,w+=k}return{fontSize:r,cells:f,bounds:{x:h,y:d,width:v-h,height:p-d}}},Wu=function(t,e){var r=e.alignment,n=e.fontSize,i=e.font,a=e.bounds,o=bg(ps(t));(n===void 0||n===0)&&(n=vy([o],i,a));var s=i.encodeText(o),c=i.widthOfTextAtSize(o,n),u=i.heightAtSize(n,{descender:!1}),f=r===Qt.Left?a.x:r===Qt.Center?a.x+a.width/2-c/2:r===Qt.Right?a.x+a.width-c:a.x,h=a.y+(a.height/2-u/2);return{fontSize:n,line:{text:o,encoded:s,width:c,height:u,x:f,y:h},bounds:{x:f,y:h,width:c,height:u}}},Ha=function(t){return"normal"in t?t:{normal:t}},g9=/\/([^\0\t\n\f\r\ ]+)[\0\t\n\f\r\ ]+(\d*\.\d+|\d+)[\0\t\n\f\r\ ]+Tf/,yi=function(t){var e,r,n=(e=t.getDefaultAppearance())!==null&&e!==void 0?e:"",i=(r=sh(n,g9).match)!==null&&r!==void 0?r:[],a=Number(i[2]);return isFinite(a)?a:void 0},y9=/(\d*\.\d+|\d+)[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]+(g|rg|k)/,Gr=function(t){var e,r=(e=t.getDefaultAppearance())!==null&&e!==void 0?e:"",n=sh(r,y9).match,i=n??[],a=i[1],o=i[2],s=i[3],c=i[4],u=i[5];if(u==="g"&&a)return sy(Number(a));if(u==="rg"&&a&&o&&s)return Be(Number(a),Number(o),Number(s));if(u==="k"&&a&&o&&s&&c)return uy(Number(a),Number(o),Number(s),Number(c))},Hr=function(t,e,r,n){var i;n===void 0&&(n=0);var a=[ta(e).toString(),kh((i=r==null?void 0:r.name)!==null&&i!==void 0?i:"dummy__noop",n).toString()].join(` +`);t.setDefaultAppearance(a)},m9=function(t,e){var r,n,i,a=Gr(e),o=Gr(t.acroField),s=e.getRectangle(),c=e.getAppearanceCharacteristics(),u=e.getBorderStyle(),f=(r=u==null?void 0:u.getWidth())!==null&&r!==void 0?r:0,h=Vn(c==null?void 0:c.getRotation()),d=$i(s,h),v=d.width,p=d.height,y=ki(Qe(Qe({},s),{rotation:h})),w=Be(0,0,0),S=(n=gr(c==null?void 0:c.getBorderColor()))!==null&&n!==void 0?n:w,E=gr(c==null?void 0:c.getBackgroundColor()),k=gr(c==null?void 0:c.getBackgroundColor(),.8),I=(i=a??o)!==null&&i!==void 0?i:w;Hr(a?e:t.acroField,I);var D={x:0+f/2,y:0+f/2,width:v-f,height:p-f,thickness:1.5,borderWidth:f,borderColor:S,markColor:I};return{normal:{on:yt(y,Gs(Qe(Qe({},D),{color:E,filled:!0}))),off:yt(y,Gs(Qe(Qe({},D),{color:E,filled:!1})))},down:{on:yt(y,Gs(Qe(Qe({},D),{color:k,filled:!0}))),off:yt(y,Gs(Qe(Qe({},D),{color:k,filled:!1})))}}},b9=function(t,e){var r,n,i,a=Gr(e),o=Gr(t.acroField),s=e.getRectangle(),c=e.getAppearanceCharacteristics(),u=e.getBorderStyle(),f=(r=u==null?void 0:u.getWidth())!==null&&r!==void 0?r:0,h=Vn(c==null?void 0:c.getRotation()),d=$i(s,h),v=d.width,p=d.height,y=ki(Qe(Qe({},s),{rotation:h})),w=Be(0,0,0),S=(n=gr(c==null?void 0:c.getBorderColor()))!==null&&n!==void 0?n:w,E=gr(c==null?void 0:c.getBackgroundColor()),k=gr(c==null?void 0:c.getBackgroundColor(),.8),I=(i=a??o)!==null&&i!==void 0?i:w;Hr(a?e:t.acroField,I);var D={x:v/2,y:p/2,width:v-f,height:p-f,borderWidth:f,borderColor:S,dotColor:I};return{normal:{on:yt(y,Hs(Qe(Qe({},D),{color:E,filled:!0}))),off:yt(y,Hs(Qe(Qe({},D),{color:E,filled:!1})))},down:{on:yt(y,Hs(Qe(Qe({},D),{color:k,filled:!0}))),off:yt(y,Hs(Qe(Qe({},D),{color:k,filled:!1})))}}},w9=function(t,e,r){var n,i,a,o,s,c=Gr(e),u=Gr(t.acroField),f=yi(e),h=yi(t.acroField),d=e.getRectangle(),v=e.getAppearanceCharacteristics(),p=e.getBorderStyle(),y=v==null?void 0:v.getCaptions(),w=(n=y==null?void 0:y.normal)!==null&&n!==void 0?n:"",S=(a=(i=y==null?void 0:y.down)!==null&&i!==void 0?i:w)!==null&&a!==void 0?a:"",E=(o=p==null?void 0:p.getWidth())!==null&&o!==void 0?o:0,k=Vn(v==null?void 0:v.getRotation()),I=$i(d,k),D=I.width,R=I.height,L=ki(Qe(Qe({},d),{rotation:k})),j=Be(0,0,0),U=gr(v==null?void 0:v.getBorderColor()),V=gr(v==null?void 0:v.getBackgroundColor()),G=gr(v==null?void 0:v.getBackgroundColor(),.8),K={x:E,y:E,width:D-E*2,height:R-E*2},q=Wu(w,{alignment:Qt.Center,fontSize:f??h,font:r,bounds:K}),ee=Wu(S,{alignment:Qt.Center,fontSize:f??h,font:r,bounds:K}),H=Math.min(q.fontSize,ee.fontSize),_=(s=c??u)!==null&&s!==void 0?s:j;Hr(c||f!==void 0?e:t.acroField,_,r,H);var ue={x:0+E/2,y:0+E/2,width:D-E,height:R-E,borderWidth:E,borderColor:U,textColor:_,font:r.name,fontSize:H};return{normal:yt(L,Lp(Qe(Qe({},ue),{color:V,textLines:[q.line]}))),down:yt(L,Lp(Qe(Qe({},ue),{color:G,textLines:[ee.line]})))}},S9=function(t,e,r){var n,i,a,o,s=Gr(e),c=Gr(t.acroField),u=yi(e),f=yi(t.acroField),h=e.getRectangle(),d=e.getAppearanceCharacteristics(),v=e.getBorderStyle(),p=(n=t.getText())!==null&&n!==void 0?n:"",y=(i=v==null?void 0:v.getWidth())!==null&&i!==void 0?i:0,w=Vn(d==null?void 0:d.getRotation()),S=$i(h,w),E=S.width,k=S.height,I=ki(Qe(Qe({},h),{rotation:w})),D=Be(0,0,0),R=gr(d==null?void 0:d.getBorderColor()),L=gr(d==null?void 0:d.getBackgroundColor()),j,U,V=t.isCombed()?0:1,G={x:y+V,y:y+V,width:E-(y+V)*2,height:k-(y+V)*2};if(t.isMultiline()){var K=py(p,{alignment:t.getAlignment(),fontSize:u??f,font:r,bounds:G});j=K.lines,U=K.fontSize}else if(t.isCombed()){var K=p9(p,{fontSize:u??f,font:r,bounds:G,cellCount:(a=t.getMaxLength())!==null&&a!==void 0?a:0});j=K.cells,U=K.fontSize}else{var K=Wu(p,{alignment:t.getAlignment(),fontSize:u??f,font:r,bounds:G});j=[K.line],U=K.fontSize}var q=(o=s??c)!==null&&o!==void 0?o:D;Hr(s||u!==void 0?e:t.acroField,q,r,U);var ee={x:0+y/2,y:0+y/2,width:E-y,height:k-y,borderWidth:y??0,borderColor:R,textColor:q,font:r.name,fontSize:U,color:L,textLines:j,padding:V};return yt(I,ly(ee))},A9=function(t,e,r){var n,i,a,o=Gr(e),s=Gr(t.acroField),c=yi(e),u=yi(t.acroField),f=e.getRectangle(),h=e.getAppearanceCharacteristics(),d=e.getBorderStyle(),v=(n=t.getSelected()[0])!==null&&n!==void 0?n:"",p=(i=d==null?void 0:d.getWidth())!==null&&i!==void 0?i:0,y=Vn(h==null?void 0:h.getRotation()),w=$i(f,y),S=w.width,E=w.height,k=ki(Qe(Qe({},f),{rotation:y})),I=Be(0,0,0),D=gr(h==null?void 0:h.getBorderColor()),R=gr(h==null?void 0:h.getBackgroundColor()),L=1,j={x:p+L,y:p+L,width:S-(p+L)*2,height:E-(p+L)*2},U=Wu(v,{alignment:Qt.Left,fontSize:c??u,font:r,bounds:j}),V=U.line,G=U.fontSize,K=(a=o??s)!==null&&a!==void 0?a:I;Hr(o||c!==void 0?e:t.acroField,K,r,G);var q={x:0+p/2,y:0+p/2,width:S-p,height:E-p,borderWidth:p??0,borderColor:D,textColor:K,font:r.name,fontSize:G,color:R,textLines:[V],padding:L};return yt(k,ly(q))},C9=function(t,e,r){var n,i,a=Gr(e),o=Gr(t.acroField),s=yi(e),c=yi(t.acroField),u=e.getRectangle(),f=e.getAppearanceCharacteristics(),h=e.getBorderStyle(),d=(n=h==null?void 0:h.getWidth())!==null&&n!==void 0?n:0,v=Vn(f==null?void 0:f.getRotation()),p=$i(u,v),y=p.width,w=p.height,S=ki(Qe(Qe({},u),{rotation:v})),E=Be(0,0,0),k=gr(f==null?void 0:f.getBorderColor()),I=gr(f==null?void 0:f.getBackgroundColor()),D=t.getOptions(),R=t.getSelected();t.isSorted()&&D.sort();for(var L="",j=0,U=D.length;j1||i.length===1&&n)&&this.enableMultiselect();for(var s=new Array(i.length),c=0,u=i.length;c1||i.length===1&&n)&&this.enableMultiselect();for(var o=new Array(i.length),s=0,c=i.length;sn)throw new l9(r.length,n,this.getName());this.markAsDirty(),this.disableRichFormatting(),r?this.acroField.setValue(Me.fromText(r)):this.acroField.removeValue()},e.prototype.getAlignment=function(){var r=this.acroField.getQuadding();return r===0?Qt.Left:r===1?Qt.Center:r===2?Qt.Right:Qt.Left},e.prototype.setAlignment=function(r){ni(r,"alignment",Qt),this.markAsDirty(),this.acroField.setQuadding(r)},e.prototype.getMaxLength=function(){return this.acroField.getMaxLength()},e.prototype.setMaxLength=function(r){if(Xr(r,"maxLength",0,Number.MAX_SAFE_INTEGER),this.markAsDirty(),r===void 0)this.acroField.removeMaxLength();else{var n=this.getText();if(n&&n.length>r)throw new f9(n.length,r,this.getName());this.acroField.setMaxLength(r)}},e.prototype.removeMaxLength=function(){this.markAsDirty(),this.acroField.removeMaxLength()},e.prototype.setImage=function(r){for(var n=this.getAlignment(),i=n===Qt.Center?ci.Center:n===Qt.Right?ci.Right:ci.Left,a=this.acroField.getWidgets(),o=0,s=a.length;o0){wl(t,e,r,n,i,a,s.color);const c=s.width;wl(t,e+c,r+c,Math.max(0,n-c*2),Math.max(0,i-c*2),Math.max(0,a-c),o);return}wl(t,e,r,n,i,a,o)}function K9(t,e,r,n,i,a,o){yy(t,e,r,n,i,i/2,a,o)}var Gu=595.28,uu=841.89,zi=40,X9=24,my=14,Y9=14,Wi=(Gu-zi*2-my)/2,ar=16,by=56,J9=16,wy=13.5,Sy=19,Sl=12,Q9=39,_9=140,Up=17,$9=9.5,mo=9.5,zp=10,eE={pageBg:Be(255/255,251/255,254/255),shadow:Be(0/255,0/255,0/255),border:Be(121/255,116/255,126/255),card:Be(255/255,251/255,254/255),header:Be(24/255,103/255,192/255),headerText:Be(29/255,27/255,32/255),dateText:Be(73/255,69/255,79/255),content:Be(29/255,27/255,32/255),chip:Be(232/255,222/255,248/255),chipText:Be(29/255,25/255,43/255),muted:Be(73/255,69/255,79/255),watermark:Be(73/255,69/255,79/255)},tE={pageBg:Be(20/255,18/255,24/255),shadow:Be(0/255,0/255,0/255),border:Be(73/255,69/255,79/255),card:Be(29/255,27/255,32/255),header:Be(24/255,103/255,192/255),headerText:Be(230/255,225/255,229/255),dateText:Be(202/255,196/255,208/255),content:Be(230/255,225/255,229/255),chip:Be(74/255,68/255,88/255),chipText:Be(232/255,222/255,248/255),muted:Be(202/255,196/255,208/255),watermark:Be(255/255,255/255,255/255)};function ns(t,e,r){return t.widthOfTextAtSize(e,r)}function Ay(t,e,r,n){if(ns(e,t,r)<=n)return t;let i="";for(const a of t){if(ns(e,`${i}${a}...`,r)>n)break;i+=a}return`${i}...`}function rE(t,e,r,n){const i=[];let a="";const o=t.replace(/\r\n?/g,` +`);for(const s of o){if(s===` +`){i.push(a),a="";continue}a&&ns(e,`${a}${s}`,r)>n?(i.push(a),a=s):a+=s}return(a||i.length===0)&&i.push(a),i}function nE(t,e){const r=Wi-ar*2,n=[];for(const i of t){const a=rE(i.content,e,wy,r);for(let o=0;o=a.length,u=s.length*Sy,f=Math.max(_9,ar+by+12+u+(c?Q9:12)+ar);n.push({assignment:i,continuation:o>0,lines:s,showTags:c,height:f})}}return n}function iE(t,e){if(e==="iso")return t;const r=/^(\d{4})-(\d{2})-(\d{2})$/.exec(t);if(r)return`${r[1]}年${Number(r[2])}月${Number(r[3])}日`;const n=new Date(t);return Number.isNaN(n.getTime())?t:`${n.getFullYear()}年${n.getMonth()+1}月${n.getDate()}日`}function aE(t,e,r,n){t.drawRectangle({x:0,y:0,width:Gu,height:uu,color:n.pageBg});const i=r?"使用 UAF v1.0 导出":"Exported with UAF v1.0";t.drawText(i,{x:Gu-zi-ns(e,i,zp),y:zi-4,size:zp,font:e,color:n.watermark})}function oE(t,e,r,n,i,a){if(e.length===0){t.drawText("",{x:r,y:n,font:i,size:mo});return}let o=r;const s=r+Wi-ar*2;for(const c of e){const u=Ay(c,i,mo,Wi-ar*2-16),f=Math.min(ns(i,u,mo)+16,Wi-ar*2);if(o+f>s)break;K9(t,o,n,f,19,a.chip),t.drawText(u,{x:o+8,y:n+5.2,size:mo,font:i,color:a.chipText}),o+=f+6}}function sE(t,e,r,n,i,a,o,s,c){const u=n-e.height;yy(t,r,u,Wi,e.height,J9,c.card,{color:c.border,width:1});const f=e.continuation?s?"(续)":" (cont.)":"",h=Ay(`${e.assignment.subject}${f}`,a,Up,Wi-ar*2);t.drawText(h,{x:r+ar,y:n-ar-20,size:Up,font:a,color:c.headerText}),t.drawText(iE(e.assignment.date,o),{x:r+ar,y:n-ar-40,size:$9,font:i,color:c.dateText});let d=n-ar-by-12;for(const v of e.lines)t.drawText(v||" ",{x:r+ar,y:d,size:wy,font:i,color:c.content}),d-=Sy;if(e.showTags)oE(t,e.assignment.tags,r+ar,u+ar+5,i,c);else{const v=s?"正文下页继续":"Continued on next card";t.drawText(v,{x:r+ar,y:u+ar+8,size:mo,font:i,color:c.muted})}}function uE(t,e,r,n,i={}){const a=nE(e,r),o=[],s=i.dateDisplay??"zh",c=i.theme==="classworks-dark"?tE:eE,u=zi+X9;let f,h=uu-zi;for(let d=0;dy.height));(!f||h-p{sE(f,y,zi+w*(Wi+my),h,r,n,s,i.canRenderCjk!==!1,c)}),h-=p+Y9}return o}async function cE(t,e={}){const r=p0(t),n=new TextEncoder().encode(tb(r)),i=await bn.create();let a;if(e.useStandardFont)a=await i.embedFont(rs.Helvetica);else{if(!e.fontBytes)throw new Error("fontBytes are required for CJK PDF rendering");i.registerFontkit(cx),a=await i.embedFont(e.fontBytes,{subset:e.subsetFont??!0})}return uE(i,r,a,a,{dateDisplay:e.useStandardFont?"iso":"zh",canRenderCjk:!e.useStandardFont,theme:e.theme}),await i.attach(n,h0,{mimeType:"text/csv",description:"UAF v1.0 multi-assignment payload",afRelationship:Nu.Data,creationDate:new Date,modificationDate:new Date}),i.save()}function lE(t){const e=["使用 UAF v1.0 导出正文下页继续(续)年月日"];for(const r of t)e.push(r.subject,r.date,r.content,...r.tags);return[...new Set(e.join(""))].join("")}async function fE(t,e,r){const n=await fetch(r);if(!n.ok)throw new Error(`Failed to load HarfBuzz subset engine: ${n.status}`);const a=(await WebAssembly.instantiate(await n.arrayBuffer())).instance.exports,o=a.hb_subset_input_create_or_fail();if(!o)throw new Error("HarfBuzz could not create a subset input");const s=a.malloc(t.byteLength);new Uint8Array(a.memory.buffer).set(t,s);const c=a.hb_blob_create(s,t.byteLength,2,0,0),u=a.hb_face_create(c,0);a.hb_blob_destroy(c);try{const f=a.hb_subset_input_set(o,6);a.hb_set_clear(f),a.hb_set_invert(f),a.hb_subset_input_set_flags(o,a.hb_subset_input_get_flags(o)|512);const h=a.hb_subset_input_unicode_set(o);for(const v of e)a.hb_set_add(h,v.codePointAt(0)??0);const d=a.hb_subset_or_fail(u,o);if(!d)throw new Error("HarfBuzz could not subset the UAF font");try{const v=a.hb_face_reference_blob(d);try{const p=a.hb_blob_get_data(v,0),y=a.hb_blob_get_length(v);if(!y)throw new Error("HarfBuzz returned an empty font subset");return new Uint8Array(new Uint8Array(a.memory.buffer,p,y))}finally{a.hb_blob_destroy(v)}}finally{a.hb_face_destroy(d)}}finally{a.hb_subset_input_destroy(o),a.hb_face_destroy(u),a.free(s)}}function df(t){return t.decodeText()}function Cy(t,e){const r=[],n=t.lookupMaybe(x.of("Names"),vt);if(n)for(let a=0;a0)return h}}}const o=i.lookupMaybe(x.of("AF"),vt);if(o)for(let s=0;s0)return f}}throw new ei(Dl.NoPayload,`Embedded file "${e}" not found`)}async function hE(t){const e=await ky(t),r=new TextDecoder("utf-8").decode(e);return v0(r)}async function gE(t){const e=await ky(t);return new TextDecoder("utf-8").decode(e)}async function yE(t){const e=[];let r;try{r=await bn.load(t,{ignoreEncryption:!0})}catch{return{valid:!1,pageCount:0,errors:["Failed to load PDF"]}}const n=r.getPageCount();n<1&&e.push("Expected at least 1 page");try{const i=await hE(t);return{valid:e.length===0,pageCount:n,payload:i,errors:e}}catch(i){return i instanceof ei?(e.push(i.message),{valid:!1,pageCount:n,errors:e}):(e.push(i instanceof Error?i.message:"Unknown error"),{valid:!1,pageCount:n,errors:e})}}var Zs;async function dE(t){if(t.fontBytes)return t.fontBytes;if(Zs)return Zs;const e=t.fontUrl??new URL("../assets/NotoSansSC-Regular.otf",import.meta.url),r=await fetch(e);if(!r.ok)throw new Error(`Failed to load UAF font: ${r.status}`);return Zs=new Uint8Array(await r.arrayBuffer()),Zs}async function vE(t,e={}){const r=await dE(e),n=e.wasmUrl??new URL("../assets/hb-subset.wasm",import.meta.url),i=await fE(r,lE(t),n);return cE(t,{fontBytes:i,subsetFont:!1,theme:e.theme})}async function mE(t,e={}){return vE(v0(t),e)}/*! Bundled license information: + +tslib/tslib.es6.js: + (*! ***************************************************************************** + Copyright (c) Microsoft Corporation. + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted. + + THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + PERFORMANCE OF THIS SOFTWARE. + ***************************************************************************** *) +*/export{vE as createUafPdf,mE as createUafPdfFromCsv,hE as extractUafPayload,gE as extractUafPayloadCsv,yE as validateUafPdf}; diff --git a/assets/cses2wakeup-CYA5ZLcv.js b/assets/cses2wakeup-CYA5ZLcv.js new file mode 100644 index 0000000..7bd563e --- /dev/null +++ b/assets/cses2wakeup-CYA5ZLcv.js @@ -0,0 +1,7 @@ +import{_ as J,e as j,c as N,f as k,E as I,d as P,F as q,h as V,l as Z,g as G}from"./index-Ceq_468-.js";import{V as R,a as C}from"./VRow-BiiRXDj9.js";import{V as E}from"./VAlert-C02HdytA.js";import{V as U,a as W}from"./VTabs-B7ztkrUN.js";import{a as L,V as Y}from"./VTooltip-CWhmSQeX.js";import{c as z,d as M,b as X}from"./VTable-CJ8evfI8.js";import{V as K}from"./VTextarea-UKN-Avq_.js";import{V as Q}from"./VFileInput-D2ZU5WsA.js";import{a as $,V as v}from"./VChip-BdtDOEwz.js";import{V as O}from"./VSwitch-d4Yvphn0.js";import{V as ee}from"./VTextField-DpXLMPq7.js";import{V as te}from"./VSkeletonLoader-B0OOafGJ.js";import{V as se}from"./VDataTable-BtP49-4R.js";import{X as u,Y as g,Z as l,j as r,a1 as n,k as c,S as p,$ as b,_ as h,F as D,a2 as x,ad as le,m as B}from"./vendor-vue-BiQC5iF7.js";import{V as re}from"./VCheckbox-BM0AQhRG.js";import{V as ie}from"./VContainer-BisEDTd3.js";import"./vendor-vuetify-rtu3DHX4.js";import"./VPagination-BQZD6rf1.js";import"./VSelect-OEnAsVY5.js";import"./VMenu-DqtPWEMI.js";import"./VSheet-MW0wxrpj.js";import"./VCheckboxBtn-snLiE5D5.js";const F=()=>new Promise((i,e)=>{if(typeof window.jsyaml<"u")return i(window.jsyaml);const d=document.createElement("script");d.src="https://cdnjs.cloudflare.com/ajax/libs/js-yaml/4.1.0/js-yaml.min.js",d.async=!0,d.onload=()=>i(window.jsyaml),d.onerror=()=>e(new Error("无法加载YAML解析库")),document.head.appendChild(d)});class H{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 o of e)this.subjects.push({name:o.name,simplified_name:o.simplified_name||null,teacher:o.teacher||null,room:o.room||null});const d=this.data.schedules||[];for(const o of d){const t=[];for(const a of o.classes||[])t.push({subject:a.subject,start_time:a.start_time,end_time:a.end_time});this.schedules.push({name:o.name,enable_day:o.enable_day,weeks:o.weeks||"all",classes:t})}}getSubjects(){return this.subjects}getSchedules(){return this.schedules}getScheduleByDay(e){const d=this.schedules.find(o=>o.enable_day===e);return d?d.classes:[]}toCsesData(){return{version:this.version,subjects:this.subjects,schedules:this.schedules}}}const ae={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 i=[],e=this.processedData.tableData.filter(o=>this.exportPeriods.includes(o.period)),d={};return e.sort((o,t)=>o.period-t.period).forEach((o,t)=>{d[o.period]=t+1}),e.forEach(o=>{for(let t=1;t<=7;t++){if(!this.selectedDays.includes(t))continue;const a=o[t];if(a)if(Array.isArray(a))a.forEach(s=>{!s||!s.name||i.push({originalPeriod:o.period,period:d[o.period],subject:s.name,day:this.dayNames[t],startTime:s.startTime,endTime:s.endTime,teacher:this.settings.hideTeacherName?"":s.teacher||"",room:this.settings.hideRoom?"":s.room||"",weeks:s.weekType?`1-${this.settings.totalWeeks}${s.weekType}`:`1-${this.settings.totalWeeks}`})});else{if(!a.name)continue;i.push({originalPeriod:o.period,period:d[o.period],subject:a.name,day:this.dayNames[t],startTime:a.startTime,endTime:a.endTime,teacher:this.settings.hideTeacherName?"":a.teacher||"",room:this.settings.hideRoom?"":a.room||"",weeks:a.weekType?`1-${this.settings.totalWeeks}${a.weekType}`:`1-${this.settings.totalWeeks}`})}}}),i.sort((o,t)=>{if(o.period!==t.period)return o.period-t.period;const a={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return a[o.day]-a[t.day]})},hasExportData(){return this.processedData&&this.exportPeriods.length>0},totalClassHours(){return this.timeTableData.length},daysWithSchedule(){const i=[];for(let e=1;e<=7;e++)this.selectedDays.includes(e)&&this.getDaySchedule(e).length>0&&i.push(e);return i}},async mounted(){try{await F(),this.yamlLibLoaded=!0}catch(i){this.error=i.message}this.$watch("daysWithSchedule",i=>{i.length>0&&!this.activeDay&&(this.activeDay=i[0])})},methods:{async handleFileChange(){if(this.resetData(),!this.file)return;const i=this.file.name.toLowerCase();if(i.endsWith(".json")||i.endsWith(".js"))this.formatMode="json";else if((i.endsWith(".yml")||i.endsWith(".yaml"))&&(this.formatMode="yaml",!this.yamlLibLoaded))try{await F(),this.yamlLibLoaded=!0}catch(e){this.error=`无法加载YAML解析库: ${e.message}`;return}try{const e=new FileReader;e.onload=async d=>{try{this.jsonText=d.target.result,await this.processInput()}catch(o){this.error=`文件读取失败: ${o.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 i;try{if(this.formatMode==="yaml"||this.formatMode==="auto"&&this.isYaml(this.jsonText)){const d=this.parseYaml(this.jsonText);i=new H(d).toCsesData()}else i=JSON.parse(this.jsonText)}catch(d){throw new Error(`格式解析错误: ${d.message}`)}if(!this.validateCsesFormat(i))throw new Error("不是有效的CSES格式数据");const e=this.processCsesData(i);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(d=>d.period))}catch(i){this.error="数据处理失败:"+i.message,console.error(i)}finally{this.loading=!1}},validateCsesFormat(i){return i instanceof H?i.version===1&&Array.isArray(i.subjects)&&Array.isArray(i.schedules):!(!i||typeof i!="object"||i.version!==1||!Array.isArray(i.subjects)||!Array.isArray(i.schedules))},processCsesData(i){const{schedules:e,subjects:d}=i,o=Object.fromEntries(d.map(s=>[s.name,s])),t=[];let a=0;e.forEach(s=>{s.classes&&s.classes.length>a&&(a=s.classes.length)});for(let s=1;s<=a;s++)t.push({period:s,1:null,2:null,3:null,4:null,5:null,6:null,7:null});return e.forEach(s=>{const m=s.enable_day;if(!m||m<1||m>7)return;let f="";s.weeks==="odd"?f="单":s.weeks==="even"&&(f="双"),s.classes.forEach((y,T)=>{if(!y.subject)return;const w=T+1;if(w>a)return;const _=o[y.subject]||{},A={name:y.subject,teacher:_.teacher||"",room:_.room||"",period:w,startTime:y.start_time,endTime:y.end_time,day:m,weekType:f},S=t[w-1][m];S?f&&S.weekType&&f!==S.weekType?(Array.isArray(t[w-1][m])||(t[w-1][m]=[S]),t[w-1][m].push(A)):f===S.weekType?t[w-1][m]=A:f||(t[w-1][m]=A):t[w-1][m]=A})}),{tableData:t,originalData:i}},updateSelectedPeriods(i){this.exportPeriods=[],i&&i.length>0&&(this.exportPeriods=[...new Set(i.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 i=`课程名称,星期,开始节数,结束节数,老师,地点,周数 +`;for(const a of this.daysWithSchedule){const s=this.groupByPeriod(this.getDaySchedule(a));for(const m of s)for(const f of m.items){const y={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7}[f.day],T=this.settings.hideTeacherName?"":f.teacher||"",w=this.settings.hideRoom?"":f.room||"";i+=`${f.subject},${y},${f.period},${f.period},${T},${w},${f.weeks} +`}}const e="\uFEFF",d=new Blob([e+i],{type:"text/csv;charset=utf-8"}),o=document.createElement("a");o.href=URL.createObjectURL(d),o.download=`course_schedule_${this.totalClassHours}课时.csv`,o.click(),URL.revokeObjectURL(o.href),this.success=`导出成功!共计 ${this.totalClassHours} 课时`},showExportPreview(){if(!this.hasExportData){this.error="请先选择要导出的节次";return}const i=this.timeTableData.slice(0,5).map(e=>`${e.subject} (${e.day} 第${e.period}节)`).join(` +`);this.timeTableData.length>5?this.success=`导出预览 (共${this.totalClassHours}课时): +${i} +...等${this.totalClassHours-5}节课程`:this.success=`导出预览 (共${this.totalClassHours}课时): +${i}`,this.$nextTick(()=>{this.daysWithSchedule.length>0&&!this.activeDay&&(this.activeDay=this.daysWithSchedule[0])})},isYaml(i){const e=i.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(i){try{if(typeof window.jsyaml<"u")return window.jsyaml.load(i);throw new Error("YAML解析器未加载")}catch(e){throw new Error(`YAML解析错误: ${e.message}`)}},getDaySchedule(i){return this.timeTableData?this.getUnfilteredTimeTableData().filter(d=>({周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7})[d.day]===i):[]},getUnfilteredTimeTableData(){if(!this.processedData||!this.processedData.tableData)return[];const i=[],e=this.processedData.tableData.filter(o=>this.exportPeriods.includes(o.period)),d={};return e.sort((o,t)=>o.period-t.period).forEach((o,t)=>{d[o.period]=t+1}),e.forEach(o=>{for(let t=1;t<=7;t++){const a=o[t];if(a)if(Array.isArray(a))a.forEach(s=>{!s||!s.name||i.push({originalPeriod:o.period,period:d[o.period],subject:s.name,day:this.dayNames[t],startTime:s.startTime,endTime:s.endTime,teacher:this.settings.hideTeacherName?"":s.teacher||"",room:this.settings.hideRoom?"":s.room||"",weeks:s.weekType?`1-${this.settings.totalWeeks}${s.weekType}`:`1-${this.settings.totalWeeks}`})});else{if(!a.name)continue;i.push({originalPeriod:o.period,period:d[o.period],subject:a.name,day:this.dayNames[t],startTime:a.startTime,endTime:a.endTime,teacher:this.settings.hideTeacherName?"":a.teacher||"",room:this.settings.hideRoom?"":a.room||"",weeks:a.weekType?`1-${this.settings.totalWeeks}${a.weekType}`:`1-${this.settings.totalWeeks}`})}}}),i.sort((o,t)=>{if(o.period!==t.period)return o.period-t.period;const a={周一:1,周二:2,周三:3,周四:4,周五:5,周六:6,周日:7};return a[o.day]-a[t.day]})},groupByPeriod(i){const e={};return i.forEach(d=>{e[d.period]||(e[d.period]={period:d.period,originalPeriod:d.originalPeriod,items:[],timeSlots:[]}),e[d.period].items.push(d),e[d.period].timeSlots.push({startTime:d.startTime,endTime:d.endTime})}),Object.values(e).forEach(d=>{d.uniqueTimeSlots=[],d.timeSlots.forEach(o=>{d.uniqueTimeSlots.some(t=>t.startTime===o.startTime&&t.endTime===o.endTime)||d.uniqueTimeSlots.push(o)}),d.uniqueTimeSlots.sort((o,t)=>o.startTime.localeCompare(t.startTime))}),Object.values(e).sort((d,o)=>d.period-o.period)},formatTime(i){return i?i.substring(0,5):""},getSubjectColor(i){return this.subjectColors[i]||"grey"},selectAllDays(){this.selectedDays=[1,2,3,4,5,6,7]},clearSelectedDays(){this.selectedDays=[]}}},oe={class:"d-flex align-center"},ne={class:"d-flex align-center"},de={key:2,class:"text-caption mb-2"},ue={class:"d-flex align-center mb-2"},me={class:"d-flex align-center mb-3"},ce={class:"d-flex align-center mb-3"},pe={key:0,class:"course-cell"},he={key:0},fe={key:1},ye={key:2,class:"week-type"},be={key:0},ge={key:1},ke={key:2,class:"week-type"},Te={class:"text-center font-weight-bold"};function De(i,e,d,o,t,a){return u(),g(ie,{class:"fill-height"},{default:l(()=>[r(R,null,{default:l(()=>[r(C,{cols:"12"},{default:l(()=>[r(j,{class:"elevation-12",border:""},{default:l(()=>[r(N,{class:"d-flex align-center primary lighten-1 white--text py-3 px-4"},{default:l(()=>[r(k,{color:"white",class:"mr-2"},{default:l(()=>[...e[15]||(e[15]=[n(" mdi-swap-horizontal ",-1)])]),_:1}),e[16]||(e[16]=n(" 课程表转换工具 ",-1))]),_:1}),r(I,null,{default:l(()=>[...e[17]||(e[17]=[n(" 将CSES格式的JSON或YAML文本转换为WakeUp软件使用的课程表 ",-1)])]),_:1}),r(P,null,{default:l(()=>[t.error?(u(),g(E,{key:0,type:"error",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":e[0]||(e[0]=s=>t.error="")},{default:l(()=>[c("div",oe,[r(k,{class:"mr-2"},{default:l(()=>[...e[18]||(e[18]=[n(" mdi-alert-circle ",-1)])]),_:1}),n(" "+p(t.error),1)])]),_:1})):b("",!0),t.success?(u(),g(E,{key:1,type:"success",class:"mb-4 mt-3 mx-2",variant:"tonal",border:"start",closable:"","onClick:close":e[1]||(e[1]=s=>t.success="")},{default:l(()=>[c("div",ne,[r(k,{class:"mr-2"},{default:l(()=>[...e[19]||(e[19]=[n(" mdi-check-circle ",-1)])]),_:1}),n(" "+p(t.success),1)])]),_:1})):b("",!0),r(U,{modelValue:t.activeTab,"onUpdate:modelValue":e[2]||(e[2]=s=>t.activeTab=s),class:"mb-4 mx-2",color:"primary",rounded:""},{default:l(()=>[r(W,{value:"text",class:"px-5"},{default:l(()=>[r(k,{start:""},{default:l(()=>[...e[20]||(e[20]=[n(" mdi-text-box ",-1)])]),_:1}),e[21]||(e[21]=n(" 文本粘贴 ",-1))]),_:1}),r(W,{value:"file",class:"px-5"},{default:l(()=>[r(k,{start:""},{default:l(()=>[...e[22]||(e[22]=[n(" mdi-file-upload ",-1)])]),_:1}),e[23]||(e[23]=n(" 文件上传 ",-1))]),_:1})]),_:1},8,["modelValue"]),r(q,{modelValue:t.formatMode,"onUpdate:modelValue":e[3]||(e[3]=s=>t.formatMode=s),color:"primary",class:"mb-4 mx-2",mandatory:"",density:"comfortable",border:"",rounded:""},{default:l(()=>[r(V,{value:"auto"},{default:l(()=>[...e[24]||(e[24]=[n(" 自动检测 ",-1)])]),_:1}),r(V,{value:"json"},{default:l(()=>[...e[25]||(e[25]=[n(" JSON ",-1)])]),_:1}),r(V,{value:"yaml",disabled:!t.yamlLibLoaded},{default:l(()=>[e[26]||(e[26]=n(" YAML ",-1)),r(L,{activator:"parent",location:"bottom"},{default:l(()=>[n(p(t.yamlLibLoaded?"YAML解析库已加载":"正在加载YAML解析库..."),1)]),_:1})]),_:1},8,["disabled"])]),_:1},8,["modelValue"]),t.jsonText&&t.formatMode==="auto"?(u(),h("div",de," 检测到的格式: "+p(a.isYaml(t.jsonText)?"YAML":"JSON"),1)):b("",!0),r(z,{modelValue:t.activeTab,"onUpdate:modelValue":e[6]||(e[6]=s=>t.activeTab=s)},{default:l(()=>[r(M,{value:"text"},{default:l(()=>[c("div",ue,[r(K,{modelValue:t.jsonText,"onUpdate:modelValue":e[4]||(e[4]=s=>t.jsonText=s),label:"粘贴JSON或YAML文本",loading:t.loading,disabled:t.loading,"row-height":"25",rows:"6",placeholder:"请在此粘贴CSES格式的数据...",onInput:a.handleTextChange},null,8,["modelValue","loading","disabled","onInput"])])]),_:1}),r(M,{value:"file"},{default:l(()=>[r(Q,{modelValue:t.file,"onUpdate:modelValue":e[5]||(e[5]=s=>t.file=s),accept:".js,.json,.yml,.yaml",label:"选择课程表文件","prepend-icon":"mdi-file-upload",loading:t.loading,disabled:t.loading,hint:"支持JSON、YAML格式文件","persistent-hint":"",rules:[s=>!s||s.size<2e6||"文件大小不能超过 2 MB"],onChange:a.handleFileChange},null,8,["modelValue","loading","disabled","rules","onChange"]),t.file&&t.formatMode==="auto"?(u(),g(E,{key:0,type:"info",class:"mb-4",variant:"tonal",density:"compact"},{default:l(()=>[...e[27]||(e[27]=[n(" 将根据文件扩展名自动检测格式 ",-1)])]),_:1})):b("",!0)]),_:1})]),_:1},8,["modelValue"]),r(C,{cols:"12"},{default:l(()=>[r(j,{flat:"",class:"pa-4 rounded-lg",border:""},{default:l(()=>[c("div",me,[r(k,{color:"primary",class:"mr-2"},{default:l(()=>[...e[28]||(e[28]=[n(" mdi-calendar-multiselect ",-1)])]),_:1}),e[33]||(e[33]=c("h3",{class:"text-subtitle-1 font-weight-medium mr-auto"}," 选择导出天数 ",-1)),r(V,{variant:"text",color:"primary",class:"ml-2",onClick:a.selectAllDays},{default:l(()=>[r(k,{start:"",size:"small"},{default:l(()=>[...e[29]||(e[29]=[n(" mdi-checkbox-multiple-marked ",-1)])]),_:1}),e[30]||(e[30]=n(" 全选 ",-1))]),_:1},8,["onClick"]),r(V,{variant:"text",color:"error",class:"ml-2",onClick:a.clearSelectedDays},{default:l(()=>[r(k,{start:"",size:"small"},{default:l(()=>[...e[31]||(e[31]=[n(" mdi-checkbox-multiple-blank-outline ",-1)])]),_:1}),e[32]||(e[32]=n(" 清除 ",-1))]),_:1},8,["onClick"])]),r($,{modelValue:t.selectedDays,"onUpdate:modelValue":e[7]||(e[7]=s=>t.selectedDays=s),multiple:"",class:"mb-2",color:"primary"},{default:l(()=>[(u(),h(D,null,x(7,s=>r(v,{key:s,value:s,filter:"",variant:"tonal",class:"filter-chip",label:""},{default:l(()=>[n(p(t.dayNames[s])+" ",1),a.getDaySchedule(s).length>0?(u(),g(Y,{key:0,content:a.getDaySchedule(s).length,color:"primary",inline:""},null,8,["content"])):b("",!0)]),_:2},1032,["value"])),64))]),_:1},8,["modelValue"])]),_:1})]),_:1}),r(C,{cols:"12"},{default:l(()=>[r(j,{flat:"",class:"pa-4 rounded-lg",border:""},{default:l(()=>[c("div",ce,[r(k,{color:"primary",class:"mr-2"},{default:l(()=>[...e[34]||(e[34]=[n(" mdi-cog ",-1)])]),_:1}),e[35]||(e[35]=c("h3",{class:"text-subtitle-1 font-weight-medium"}," 显示配置 ",-1))]),r(R,null,{default:l(()=>[r(C,{cols:"12",sm:"6"},{default:l(()=>[r(O,{modelValue:t.settings.hideTeacherName,"onUpdate:modelValue":e[8]||(e[8]=s=>t.settings.hideTeacherName=s),label:"不显示教师姓名",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),r(C,{cols:"12",sm:"6"},{default:l(()=>[r(O,{modelValue:t.settings.hideRoom,"onUpdate:modelValue":e[9]||(e[9]=s=>t.settings.hideRoom=s),label:"不显示教室信息",color:"primary",inset:"","hide-details":""},null,8,["modelValue"])]),_:1}),r(C,{cols:"12",sm:"6"},{default:l(()=>[r(ee,{modelValue:t.settings.totalWeeks,"onUpdate:modelValue":e[10]||(e[10]=s=>t.settings.totalWeeks=s),modelModifiers:{number:!0},label:"总周数",type:"number",min:"1",max:"30",rules:[s=>s>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?(u(),g(j,{key:3,class:"my-4",outlined:""},{default:l(()=>[r(P,null,{default:l(()=>[r(te,{type:"table",class:"mx-auto"})]),_:1})]),_:1})):b("",!0),t.processedData?(u(),g(v,{key:4,color:"primary",class:"ml-2","prepend-icon":"mdi-book-open-variant"},{default:l(()=>[n(p(t.processedData.tableData.length)+" 节课程 ",1)]),_:1})):b("",!0),t.processedData&&t.exportPeriods.length===0?(u(),g(E,{key:5,type:"warning",class:"mb-4",closable:""},{default:l(()=>[...e[36]||(e[36]=[n(" 请选择要导出的节次 ",-1)])]),_:1})):b("",!0),t.processedData?(u(),g(j,{key:6,class:"my-4",elevation:"1"},{default:l(()=>[r(N,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:l(()=>[r(k,{color:"primary",class:"mr-2"},{default:l(()=>[...e[37]||(e[37]=[n(" mdi-table ",-1)])]),_:1}),e[39]||(e[39]=c("span",{class:"font-weight-bold"},"课程表",-1)),r(v,{color:"primary",class:"ml-3",size:"small",pill:""},{default:l(()=>[r(k,{start:"",size:"x-small"},{default:l(()=>[...e[38]||(e[38]=[n(" mdi-book-open-variant ",-1)])]),_:1}),n(" "+p(t.processedData.tableData.length)+" 节课程 ",1)]),_:1})]),_:1}),r(P,{class:"pa-0"},{default:l(()=>[r(se,{"items-selected":t.selectedRows,"onUpdate:itemsSelected":[e[12]||(e[12]=s=>t.selectedRows=s),a.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":""},le({"item.data-table-select":l(({item:s})=>[r(re,{modelValue:t.exportPeriods,"onUpdate:modelValue":e[11]||(e[11]=m=>t.exportPeriods=m),value:s.period,"hide-details":"",density:"compact"},null,8,["modelValue","value"])]),_:2},[x(7,s=>({name:`item.${s}`,fn:l(({item:m})=>[m[s]?(u(),h("div",pe,[Array.isArray(m[s])?(u(!0),h(D,{key:0},x(m[s],(f,y)=>(u(),h("div",{key:y,class:"course-item"},[n(p(f.name)+" ",1),!t.settings.hideTeacherName&&f.teacher?(u(),h("span",he,[e[40]||(e[40]=c("br",null,null,-1)),n(p(f.teacher),1)])):b("",!0),!t.settings.hideRoom&&f.room?(u(),h("span",fe,[e[41]||(e[41]=c("br",null,null,-1)),n(p(f.room),1)])):b("",!0),f.weekType?(u(),h("span",ye,p(f.weekType)+"周 ",1)):b("",!0)]))),128)):(u(),h(D,{key:1},[n(p(m[s].name)+" ",1),!t.settings.hideTeacherName&&m[s].teacher?(u(),h("span",be,[e[42]||(e[42]=c("br",null,null,-1)),n(p(m[s].teacher),1)])):b("",!0),!t.settings.hideRoom&&m[s].room?(u(),h("span",ge,[e[43]||(e[43]=c("br",null,null,-1)),n(p(m[s].room),1)])):b("",!0),m[s].weekType?(u(),h("span",ke,p(m[s].weekType)+"周 ",1)):b("",!0)],64))])):b("",!0)])}))]),1032,["items-selected","headers","items","onUpdate:itemsSelected"])]),_:1})]),_:1})):b("",!0),a.hasExportData?(u(),g(j,{key:7,class:"my-4",elevation:"1"},{default:l(()=>[r(N,{class:"d-flex align-center pa-4 bg-primary-lighten-5"},{default:l(()=>[r(k,{color:"primary",class:"mr-2"},{default:l(()=>[...e[44]||(e[44]=[n(" mdi-timetable ",-1)])]),_:1}),e[48]||(e[48]=c("span",{class:"font-weight-bold"},"每日课程时间表",-1)),r(v,{class:"ml-3",size:"small",color:"primary",pill:""},{default:l(()=>[r(k,{start:"",size:"x-small"},{default:l(()=>[...e[45]||(e[45]=[n(" mdi-clock-outline ",-1)])]),_:1}),n(" "+p(a.totalClassHours)+" 课时 ",1)]),_:1}),t.exportPeriods.length>0?(u(),g(L,{key:0},{activator:l(({props:s})=>[r(v,B({class:"ml-2",size:"small",color:"info"},s,{pill:""}),{default:l(()=>[r(k,{start:"",size:"x-small"},{default:l(()=>[...e[46]||(e[46]=[n(" mdi-information-outline ",-1)])]),_:1}),e[47]||(e[47]=n(" 节次已重排 ",-1))]),_:1},16)]),default:l(()=>[c("span",null,"已将选中的节次 "+p(t.exportPeriods.join(", "))+" 重新排序为连续的 1-"+p(t.exportPeriods.length),1)]),_:1})):b("",!0)]),_:1}),r(P,null,{default:l(()=>[a.daysWithSchedule.length>0?(u(),g(U,{key:0,modelValue:t.activeDay,"onUpdate:modelValue":e[13]||(e[13]=s=>t.activeDay=s),class:"mb-4",color:"primary",grow:"","align-tabs":"center"},{default:l(()=>[(u(!0),h(D,null,x(a.daysWithSchedule,s=>(u(),g(W,{key:s,value:s,class:"px-2 font-weight-medium"},{default:l(()=>[n(p(t.dayNames[s])+" ",1),r(Y,{content:a.getDaySchedule(s).length,color:"primary",inline:""},null,8,["content"])]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])):b("",!0),r(z,{modelValue:t.activeDay,"onUpdate:modelValue":e[14]||(e[14]=s=>t.activeDay=s)},{default:l(()=>[(u(!0),h(D,null,x(a.daysWithSchedule,s=>(u(),g(M,{key:s,value:s},{default:l(()=>[r(X,{density:"compact",class:"rounded","headers-length":6,"disable-sort":""},{default:l(()=>[e[50]||(e[50]=c("thead",null,[c("tr",null,[c("th",{class:"text-center"}," 节次 "),c("th",null,"课程"),c("th",null,"时间"),c("th",null,"教师"),c("th",null,"教室"),c("th",null,"周次")])],-1)),c("tbody",null,[(u(!0),h(D,null,x(a.groupByPeriod(a.getDaySchedule(s)),(m,f)=>(u(),h("tr",{key:f},[c("td",Te,[n(p(m.period)+" ",1),m.originalPeriod!==m.period?(u(),g(L,{key:0},{activator:l(({props:y})=>[r(k,B({size:"x-small"},{ref_for:!0},y,{color:"info",class:"ml-1"}),{default:l(()=>[...e[49]||(e[49]=[n(" mdi-sync ",-1)])]),_:1},16)]),default:l(()=>[n(" 原节次: "+p(m.originalPeriod),1)]),_:2},1024)):b("",!0)]),c("td",null,[(u(!0),h(D,null,x(m.items,(y,T)=>(u(),h("div",{key:T,class:"mb-1"},[r(v,{size:"small",color:a.getSubjectColor(y.subject),label:"","text-color":"white",class:"mr-1"},{default:l(()=>[n(p(y.subject),1)]),_:2},1032,["color"]),m.items.length>1?(u(),g(v,{key:0,size:"x-small",class:"ml-1",color:y.weekType==="单"?"warning":"success"},{default:l(()=>[n(p(y.weekType)+"周 ",1)]),_:2},1032,["color"])):b("",!0)]))),128))]),c("td",null,[(u(!0),h(D,null,x(m.uniqueTimeSlots,(y,T)=>(u(),h("div",{key:T,class:"mb-1"},[r(v,{size:"x-small",class:"time-chip"},{default:l(()=>[n(p(a.formatTime(y.startTime))+" - "+p(a.formatTime(y.endTime)),1)]),_:2},1024)]))),128))]),c("td",null,[t.settings.hideTeacherName?(u(),h(D,{key:1},[n(" - ")],64)):(u(!0),h(D,{key:0},x(m.items,(y,T)=>(u(),h("div",{key:T,class:"mb-1"},p(y.teacher||"-"),1))),128))]),c("td",null,[t.settings.hideRoom?(u(),h(D,{key:1},[n(" - ")],64)):(u(!0),h(D,{key:0},x(m.items,(y,T)=>(u(),h("div",{key:T,class:"mb-1"},p(y.room||"-"),1))),128))]),c("td",null,[(u(!0),h(D,null,x(m.items,(y,T)=>(u(),h("div",{key:T,class:"mb-1"},p(y.weeks),1))),128))])]))),128))])]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),a.hasExportData&&a.daysWithSchedule.length===0?(u(),g(E,{key:1,type:"info",class:"mt-3"},{default:l(()=>[...e[51]||(e[51]=[n(" 没有找到任何课程数据 ",-1)])]),_:1})):b("",!0)]),_:1})]),_:1})):b("",!0)]),_:1}),r(Z,{class:""},{default:l(()=>[r(G),r(V,{color:"primary",variant:"outlined",loading:t.loading,disabled:!t.jsonText&&!t.file||t.loading,"prepend-icon":"mdi-cog-refresh",onClick:a.processInput},{default:l(()=>[...e[52]||(e[52]=[n(" 处理数据 ",-1)])]),_:1},8,["loading","disabled","onClick"]),r(V,{color:"info",disabled:!a.hasExportData,class:"ml-2","prepend-icon":"mdi-eye",border:"",onClick:a.showExportPreview},{default:l(()=>[...e[53]||(e[53]=[n(" 刷新 ",-1)])]),_:1},8,["disabled","onClick"]),r(V,{color:"success",variant:"outlined",disabled:!a.hasExportData,class:"ml-2","prepend-icon":"mdi-download",border:"",onClick:a.downloadCSV},{default:l(()=>[...e[54]||(e[54]=[n(" 下载CSV ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const He=J(ae,[["render",De],["__scopeId","data-v-7ebae639"]]);export{He as default}; diff --git a/assets/cses2wakeup-DFUa6tSq.css b/assets/cses2wakeup-DFUa6tSq.css deleted file mode 100644 index ad8ef84..0000000 --- a/assets/cses2wakeup-DFUa6tSq.css +++ /dev/null @@ -1 +0,0 @@ -.v-chip--selected[data-v-7ebae639]{font-weight:700}.v-chip .v-badge[data-v-7ebae639]{margin-left:4px}.time-chip[data-v-7ebae639]{font-size:.75rem}.course-cell[data-v-7ebae639]{padding:4px;font-size:.85rem;white-space:pre-line}.course-item[data-v-7ebae639]{padding:2px 0;border-bottom:1px dashed rgba(0,0,0,.1)}.course-item[data-v-7ebae639]:last-child{border-bottom:none}.week-type[data-v-7ebae639]{font-size:.7rem;background-color:#0000000d;padding:1px 3px;border-radius:2px;margin-left:2px}.filter-chip[data-v-7ebae639]{min-width:60px;justify-content:center;transition:all .2s ease}.filter-chip.v-chip--selected[data-v-7ebae639]{transform:scale(1.05);font-weight:700}.v-data-table[data-v-7ebae639]{border-radius:8px;overflow:hidden}.v-card[data-v-7ebae639]{border-radius:12px;overflow:hidden}.v-btn[data-v-7ebae639]{transition:transform .2s ease}.v-btn[data-v-7ebae639]: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-DRhHxOpY.js b/assets/cses2wakeup-DRhHxOpY.js deleted file mode 100644 index 5758328..0000000 --- a/assets/cses2wakeup-DRhHxOpY.js +++ /dev/null @@ -1,7 +0,0 @@ -import{E as Oe,_ as Ye,e as L,c as G,f as D,F as He,d as O,G as Je,h as A,l as qe,g as Ge}from"./index-DGIAsv4W.js";import{V as ie,a as M}from"./VRow-Cjhiymuu.js";import{V as I}from"./VAlert-BZ4-f-hy.js";import{V as oe,a as Z}from"./VTabs-DqmvmKGK.js";import{a as K,V as ne}from"./VTooltip-2IUjfpCS.js";import{c as de,d as X,b as Ze}from"./VTable-Cq72iBVc.js";import{V as Ke}from"./VTextarea-vGWmTJww.js";import{u as Xe,a as ue,b as ce,c as Qe,m as $e,d as et,V as tt}from"./VTextField-BurlcggD.js";import{p as ye,f as st,an as lt,n as rt,w as be,u as at,ao as it,ap as ot,aq as me,a5 as nt}from"./vendor-vuetify-DsKlzgKp.js";import{e as N,o as dt,j as o,k as p,F as T,m as z,n as ut,b as Q,t as ct,I as mt,s as ft,X as m,Y as v,Z as i,a1 as c,S as y,$ as k,_ as b,a2 as C,ad as pt}from"./vendor-vue-BiQC5iF7.js";import{V as j,a as ht}from"./VChip-mRzIPuM0.js";import{V as fe}from"./VSwitch-k6hfPfa2.js";import{V as yt}from"./VSkeletonLoader-DwE_iqTb.js";import{V as bt}from"./VDataTable-DmTCHg4b.js";import{V as gt}from"./VCheckbox-BRi_fHJs.js";import{V as kt}from"./VContainer-DZyPrcqa.js";import"./VPagination-DLzhjdaP.js";import"./VSelect-oxA0t9CG.js";import"./VSheet-BBnSA_kJ.js";import"./VCheckboxBtn-BKcSogH0.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 xt=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},...nt(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(),...$e({clearable:!0})},"VFileInput"),Vt=st()({name:"VFileInput",inheritAttrs:!1,props:xt(),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}=lt(),{filterAccepted:l}=wt(s),d=rt(s,"modelValue",s.modelValue,u=>be(u),u=>!s.multiple&&Array.isArray(u)?u[0]:u),{isFocused:f,focus:h,blur:w}=Xe(s),x=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(()=>me(W.value,x.value)),S=N(()=>(d.value??[]).map(u=>{const{name:g="",size:E=0}=u,F=je(g);return s.showSize?`${F} (${me(E,x.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(),V=Q(),Te=ct(()=>f.value||s.active),te=N(()=>["plain","underlined"].includes(s.variant)),_=ft(!1),{handleDrop:we,hasFilesOrFolders:De}=vt();function Y(){var u;V.value!==document.activeElement&&((u=V.value)==null||u.focus()),f.value||h()}function xe(u){var g;(g=V.value)==null||g.click()}function Ve(u){a("mousedown:control",u)}function Ce(u){var g;(g=V.value)==null||g.click(),a("click:control",u)}function Se(u){u.stopPropagation(),Y(),mt(()=>{d.value=[],ot(s["onClick:clear"],u)})}function je(u){if(u.length{(!Array.isArray(u)||!u.length)&&V.value&&(V.value.value="")}),at(()=>{const u=!!(t.counter||s.counter),g=!!(u||t.details),[E,F]=it(n),{modelValue:H,...J}=ue.filterProps(s),Re={...ce.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":xe},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(ce,z({ref:ee,prependIcon:s.prependIcon,onMousedown:Ve,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=>V.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:ut(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(Qe,{active:!!((B=d.value)!=null&&B.length),value:ve.value,disabled:s.disabled},t.counter)])])}:void 0})}),Oe({},$,ee,V)}}),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}},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])})},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 x=w+1;if(x>r)return;const W=a[h.subject]||{},P={name:h.subject,teacher:W.teacher||"",room:W.room||"",period:x,startTime:h.start_time,endTime:h.end_time,day:d,weekType:f},S=t[x-1][d];S?f&&S.weekType&&f!==S.weekType?(Array.isArray(t[x-1][d])||(t[x-1][d]=[S]),t[x-1][d].push(P)):f===S.weekType?t[x-1][d]=P:f||(t[x-1][d]=P):t[x-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||"",x=this.settings.hideRoom?"":f.room||"";s+=`${f.subject},${h},${f.period},${f.period},${w},${x},${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=[]}}},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(de,{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(Vt,{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,hint:"支持JSON、YAML格式文件","persistent-hint":"",rules:[l=>!l||l.size<2e6||"文件大小不能超过 2 MB"],onChange:r.handleFileChange},null,8,["modelValue","loading","disabled","rules","onChange"]),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(ht,{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(ne,{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(tt,{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":""},pt({"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(ne,{content:r.getDaySchedule(l).length,color:"primary",inline:""},null,8,["content"])]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])):k("",!0),o(de,{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,"prepend-icon":"mdi-cog-refresh",onClick:r.processInput},{default:i(()=>[...e[52]||(e[52]=[c(" 处理数据 ",-1)])]),_:1},8,["loading","disabled","onClick"]),o(A,{color:"info",disabled:!r.hasExportData,class:"ml-2","prepend-icon":"mdi-eye",border:"",onClick:r.showExportPreview},{default:i(()=>[...e[53]||(e[53]=[c(" 刷新 ",-1)])]),_:1},8,["disabled","onClick"]),o(A,{color:"success",variant:"outlined",disabled:!r.hasExportData,class:"ml-2","prepend-icon":"mdi-download",border:"",onClick:r.downloadCSV},{default:i(()=>[...e[54]||(e[54]=[c(" 下载CSV ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const ns=Ye(Ct,[["render",_t],["__scopeId","data-v-7ebae639"]]);export{ns as default}; diff --git a/assets/cses2wakeup-Qc4GsQy3.css b/assets/cses2wakeup-Qc4GsQy3.css new file mode 100644 index 0000000..c82d215 --- /dev/null +++ b/assets/cses2wakeup-Qc4GsQy3.css @@ -0,0 +1 @@ +.v-chip--selected[data-v-7ebae639]{font-weight:700}.v-chip .v-badge[data-v-7ebae639]{margin-left:4px}.time-chip[data-v-7ebae639]{font-size:.75rem}.course-cell[data-v-7ebae639]{padding:4px;font-size:.85rem;white-space:pre-line}.course-item[data-v-7ebae639]{padding:2px 0;border-bottom:1px dashed rgba(0,0,0,.1)}.course-item[data-v-7ebae639]:last-child{border-bottom:none}.week-type[data-v-7ebae639]{font-size:.7rem;background-color:#0000000d;padding:1px 3px;border-radius:2px;margin-left:2px}.filter-chip[data-v-7ebae639]{min-width:60px;justify-content:center;transition:all .2s ease}.filter-chip.v-chip--selected[data-v-7ebae639]{transform:scale(1.05);font-weight:700}.v-data-table[data-v-7ebae639]{border-radius:8px;overflow:hidden}.v-card[data-v-7ebae639]{border-radius:12px;overflow:hidden}.v-btn[data-v-7ebae639]{transition:transform .2s ease}.v-btn[data-v-7ebae639]:not(:disabled):hover{transform:translateY(-2px)} diff --git a/assets/dataProvider-GWPC-0Vt.js b/assets/dataProvider-D5waPBEc.js similarity index 98% rename from assets/dataProvider-GWPC-0Vt.js rename to assets/dataProvider-D5waPBEc.js index 82275a0..3577e15 100644 --- a/assets/dataProvider-GWPC-0Vt.js +++ b/assets/dataProvider-D5waPBEc.js @@ -1 +1 @@ -import{a as ge,g as he}from"./vendor-utils-DwALrQNc.js";import{n as d,ai as Se,s as B}from"./index-DGIAsv4W.js";import{i as j,t as x,g as q}from"./serverRotation-BtcwvdZJ.js";const J=(e,t)=>t.some(r=>e instanceof r);let Y,ee;function pe(){return Y||(Y=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function De(){return ee||(ee=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const M=new WeakMap,P=new WeakMap,K=new WeakMap;function be(e){const t=new Promise((r,n)=>{const s=()=>{e.removeEventListener("success",a),e.removeEventListener("error",o)},a=()=>{r(O(e.result)),s()},o=()=>{n(e.error),s()};e.addEventListener("success",a),e.addEventListener("error",o)});return K.set(t,e),t}function ke(e){if(M.has(e))return;const t=new Promise((r,n)=>{const s=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",o),e.removeEventListener("abort",o)},a=()=>{r(),s()},o=()=>{n(e.error||new DOMException("AbortError","AbortError")),s()};e.addEventListener("complete",a),e.addEventListener("error",o),e.addEventListener("abort",o)});M.set(e,t)}let W={get(e,t,r){if(e instanceof IDBTransaction){if(t==="done")return M.get(e);if(t==="store")return r.objectStoreNames[1]?void 0:r.objectStore(r.objectStoreNames[0])}return O(e[t])},set(e,t,r){return e[t]=r,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};function ie(e){W=e(W)}function Ee(e){return De().includes(e)?function(...t){return e.apply(H(this),t),O(this.request)}:function(...t){return O(e.apply(H(this),t))}}function Ie(e){return typeof e=="function"?Ee(e):(e instanceof IDBTransaction&&ke(e),J(e,pe())?new Proxy(e,W):e)}function O(e){if(e instanceof IDBRequest)return be(e);if(P.has(e))return P.get(e);const t=Ie(e);return t!==e&&(P.set(e,t),K.set(t,e)),t}const H=e=>K.get(e);function ue(e,t,{blocked:r,upgrade:n,blocking:s,terminated:a}={}){const o=indexedDB.open(e,t),i=O(o);return n&&o.addEventListener("upgradeneeded",c=>{n(O(o.result),c.oldVersion,c.newVersion,O(o.transaction),c)}),r&&o.addEventListener("blocked",c=>r(c.oldVersion,c.newVersion,c)),i.then(c=>{a&&c.addEventListener("close",()=>a()),s&&c.addEventListener("versionchange",u=>s(u.oldVersion,u.newVersion,u))}).catch(()=>{}),i}const Ne=["get","getKey","getAll","getAllKeys","count"],Oe=["put","add","delete","clear"],F=new Map;function te(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(F.get(t))return F.get(t);const r=t.replace(/FromIndex$/,""),n=t!==r,s=Oe.includes(r);if(!(r in(n?IDBIndex:IDBObjectStore).prototype)||!(s||Ne.includes(r)))return;const a=async function(o,...i){const c=this.transaction(o,s?"readwrite":"readonly");let u=c.store;return n&&(u=u.index(i.shift())),(await Promise.all([u[r](...i),s&&c.done]))[0]};return F.set(t,a),a}ie(e=>({...e,get:(t,r,n)=>te(t,r)||e.get(t,r,n),has:(t,r)=>!!te(t,r)||e.has(t,r)}));const Te=["continue","continuePrimaryKey","advance"],re={},z=new WeakMap,de=new WeakMap,Re={get(e,t){if(!Te.includes(t))return e[t];let r=re[t];return r||(r=re[t]=function(...n){z.set(this,de.get(this)[t](...n))}),r}};async function*_e(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;t=t;const r=new Proxy(t,Re);for(de.set(r,t),K.set(r,H(t));t;)yield r,t=await(z.get(r)||t.continue()),z.delete(r)}function ne(e,t){return t===Symbol.asyncIterator&&J(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&J(e,[IDBIndex,IDBObjectStore])}ie(e=>({...e,get(t,r,n){return ne(t,r)?_e:e.get(t,r,n)},has(t,r){return ne(t,r)||e.has(t,r)}}));const je="ClassworksDB",xe=3,E=async()=>ue(je,xe,{upgrade(e){e.objectStoreNames.contains("kv")||e.createObjectStore("kv"),e.objectStoreNames.contains("system")||e.createObjectStore("system"),e.objectStoreNames.contains("syncQueue")||e.createObjectStore("syncQueue")}}),S={async loadData(e){try{const r=await(await E()).get("kv",e);return r?v(JSON.parse(r)):f("数据不存在","NOT_FOUND")}catch(t){return f("读取本地数据失败:"+t)}},async saveData(e,t){try{return await(await E()).put("kv",JSON.stringify(t),e),v(!0)}catch(r){return f("保存本地数据失败:"+r)}},async loadKeys(e={}){try{const s=await(await E()).transaction(["kv"],"readonly").objectStore("kv").getAllKeys(),{sortDir:a="asc",limit:o=100,skip:i=0}=e,c=s.sort((h,y)=>a==="desc"?y.localeCompare(h):h.localeCompare(y)),u=c.length,l=c.slice(i,i+o),g={keys:l,total_rows:u,current_page:{limit:o,skip:i,count:l.length},load_more:null};return v(g)}catch(t){return f("获取本地键名列表失败:"+t.message)}},async addToSyncQueue(e){try{return await(await E()).put("syncQueue",JSON.stringify(e),e.key),v(!0)}catch(t){return f("添加同步队列失败:"+t)}},async getSyncQueue(){try{const e=await E(),t=await e.getAllKeys("syncQueue"),r=[];for(const n of t){const s=await e.get("syncQueue",n);s&&r.push(JSON.parse(s))}return r.sort((n,s)=>n.timestamp-s.timestamp),v(r)}catch(e){return f("获取同步队列失败:"+e)}},async removeFromSyncQueue(e){try{return await(await E()).delete("syncQueue",e),v(!0)}catch(t){return f("删除同步队列项失败:"+t)}},async deleteByPrefix(e){try{const r=(await E()).transaction("kv","readwrite"),n=r.objectStore("kv"),s=await n.getAllKeys();let a=0;for(const o of s)o.startsWith(e)&&(await n.delete(o),a++);return await r.done,a}catch(t){return console.warn("kvLocalProvider.deleteByPrefix 失败:",t),0}}};function Le(e,t){return"headers"in e&&typeof e.headers=="object"&&!Array.isArray(e.headers)?U(e.headers):"getHeaders"in e&&typeof e.getHeaders=="function"?U(e.getHeaders()):U(e)}function U(e,t){const r=D(e,"ratelimit");if(r)return $e(r);let n;if(D(e,"ratelimit-remaining"))n="ratelimit-";else if(D(e,"x-ratelimit-remaining"))n="x-ratelimit-";else if(D(e,"x-rate-limit-remaining"))n="x-rate-limit-";else return;const s=p(D(e,`${n}limit`)),a=p(D(e,`${n}used`))||p(D(e,`${n}observed`)),o=p(D(e,`${n}remaining`));let i;const c=D(e,`${n}reset`);switch(void 0){case"date":{i=fe(c??"");break}case"unix":{i=G(c??"");break}case"seconds":{i=le(c??"");break}case"milliseconds":{i=Be(c??"");break}default:if(c)i=Fe(c);else{const l=D(e,"retry-after");l&&(i=G(l))}}return{limit:Number.isNaN(s)?a+o:s,used:Number.isNaN(a)?s-o:a,remaining:o,reset:i}}var Ae=/limit\s*=\s*(\d+)/i,Ce=/remaining\s*=\s*(\d+)/i,Ke=/reset\s*=\s*(\d+)/i;function $e(e){var t,r,n;const s=p((t=Ae.exec(e))==null?void 0:t[1]),a=p((r=Ce.exec(e))==null?void 0:r[1]),o=p((n=Ke.exec(e))==null?void 0:n[1]),i=X(o);return{limit:s,used:s-a,remaining:a,reset:i}}function X(e){const t=new Date;return t.setSeconds(t.getSeconds()+e),t}function p(e){return typeof e=="number"?e:Number.parseInt(e??"",10)}function D(e,t){var r;if("get"in e&&typeof e.get=="function")return(r=e.get(t))!=null?r:void 0;if(t in e&&typeof e[t]=="string")return e[t]}function fe(e){return new Date(e)}function G(e){const t=p(e);return new Date(t*1e3)}function le(e){const t=p(e);return X(t)}function Be(e){const t=p(e);return X(t/1e3)}var Pe=/[a-z]/i;function Fe(e){if(Pe.test(e))return fe(e);const t=p(e);return t&&t>1e9?G(t):le(t)}const w=ge.create({timeout:1e4});w.interceptors.request.use(e=>{const t=d("server.provider");if(t==="kv-server"||t==="classworkscloud"){const r=d("server.kvToken");if(r)e.headers["x-app-token"]=r;else{const n=d("server.siteKey");n&&(e.headers["x-site-key"]=he.encode(n))}}return e},e=>(console.log(e),Promise.reject(e)));w.interceptors.response.use(e=>e,e=>{if(e.response&&e.response.status===429)try{const t=Le(e.response);t&&Se.show(t.reset,e.config.url,e.config.method.toUpperCase())}catch(t){console.error("解析限速头信息失败:",t)}return Promise.reject(e)});const nt=Object.freeze(Object.defineProperty({__proto__:null,default:w},Symbol.toStringTag,{value:"Module"})),b=()=>{const e={Accept:"application/json"},t=d("server.kvToken"),r=d("server.siteKey");return t?e["x-app-token"]=t:r&&(e["x-site-key"]=r),e},I={async loadNamespaceInfo(){var e,t;try{if(j())return await x(async s=>{const a=await w.get(`${s}/kv/_info`,{headers:b()});return v(a.data)});const r=d("server.domain"),n=await w.get(`${r}/kv/_info`,{headers:b()});return v(n.data)}catch(r){return console.error("获取命名空间信息失败:",r),f(((t=(e=r.response)==null?void 0:e.data)==null?void 0:t.message)||"获取命名空间信息失败","NAMESPACE_ERROR")}},async updateNamespaceInfo(e){var t,r;try{if(j())return await x(async a=>await w.put(`${a}/kv/_info`,e,{headers:b()}));const n=d("server.domain");return await w.put(`${n}/kv/_info`,e,{headers:b()})}catch(n){return f(((r=(t=n.response)==null?void 0:t.data)==null?void 0:r.message)||"更新命名空间信息失败","NAMESPACE_ERROR")}},async loadData(e){var t,r,n;try{if(j())return await x(async o=>{const i=await w.get(`${o}/kv/${e}`,{headers:b()});return v(i.data)});const s=d("server.domain"),a=await w.get(`${s}/kv/${e}`,{headers:b()});return v(a.data)}catch(s){return((t=s.response)==null?void 0:t.status)===404?f("数据不存在","NOT_FOUND"):(console.log(s),f(((n=(r=s.response)==null?void 0:r.data)==null?void 0:n.message)||"服务器连接失败","NETWORK_ERROR"))}},async saveData(e,t){var r,n;try{if(j())return await x(async a=>(await w.post(`${a}/kv/${e}`,t,{headers:b()}),v(!0)));const s=d("server.domain");return await w.post(`${s}/kv/${e}`,t,{headers:b()}),v(!0)}catch(s){return console.log(s),f(((n=(r=s.response)==null?void 0:r.data)==null?void 0:n.message)||"保存失败","SAVE_ERROR")}},async loadKeys(e={}){var t,r,n,s,a;try{const{sortBy:o="key",sortDir:i="asc",limit:c=100,skip:u=0}=e,l=new URLSearchParams({sortBy:o,sortDir:i,limit:c.toString(),skip:u.toString()});if(j())return await x(async y=>{const m=await w.get(`${y}/kv/_keys?${l}`,{headers:b()});return v(m.data)});const g=d("server.domain"),h=await w.get(`${g}/kv/_keys?${l}`,{headers:b()});return v(h.data)}catch(o){return((t=o.response)==null?void 0:t.status)===404?f("命名空间不存在","NOT_FOUND"):((r=o.response)==null?void 0:r.status)===403?f("无权限访问此命名空间","PERMISSION_DENIED"):((n=o.response)==null?void 0:n.status)===401?f("认证失败","UNAUTHORIZED"):(console.log(o),f(((a=(s=o.response)==null?void 0:s.data)==null?void 0:a.message)||"获取键名列表失败","NETWORK_ERROR"))}}};function T(e){return{vc:{[e]:0},ts:0,deviceId:e,_fieldTs:{},lastSyncedData:null,lastSyncedTs:0,lastSyncedVc:{[e]:0}}}function se(e,t){const r={...e.vc};return r[t]=(r[t]||0)+1,{...e,vc:r,ts:Date.now(),deviceId:t}}function Ue(e,t){const r={...e};for(const[n,s]of Object.entries(t))r[n]=Math.max(r[n]||0,s);return r}function R(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ve(e,t){if(!e&&!t)return{};if(!e)return{...t};if(!t)return{...e};const r={...e};for(const[n,s]of Object.entries(t)){const a=r[n];(!a||s.ts>a.ts||s.ts===a.ts&&s.deviceIdR(r)?r.id:JSON.stringify(r);if("name"in t)return r=>R(r)?r.name:JSON.stringify(r);if("key"in t)return r=>R(r)?r.key:JSON.stringify(r)}return null}function Qe(e,t,r){const n=ae(e)||ae(r)||(c=>JSON.stringify(c)),s=new Map,a=new Map;e.forEach(c=>{const u=n(c);s.has(u)||s.set(u,c)}),r.forEach(c=>{const u=n(c);a.has(u)||a.set(u,c)});const o=[],i=new Set;for(const[c,u]of s)i.has(c)||(i.add(c),o.push(u));for(const[c,u]of a)i.has(c)||(i.add(c),o.push(u));return o}function Je(e,t,r,n){var o,i;const s={},a=new Set([...Object.keys(e),...Object.keys(r)]);for(const c of a){const u=c in e,l=c in r;if(u&&!l)s[c]=e[c];else if(!u&&l)s[c]=r[c];else{const g=((o=t._fieldTs)==null?void 0:o[c])||{ts:t.ts,deviceId:t.deviceId},h=((i=n._fieldTs)==null?void 0:i[c])||{ts:n.ts,deviceId:n.deviceId};g.ts>h.ts?s[c]=e[c]:h.ts>g.ts?s[c]=r[c]:s[c]=g.deviceId<=h.deviceId?e[c]:r[c]}}return s}function Me(e,t,r,n){const s=Ue(t.vc||{},n.vc||{}),a=Math.max(t.ts||0,n.ts||0),o=Ve(t._fieldTs,n._fieldTs);let i;return R(e)&&R(r)?i=Je(e,t,r,n):Array.isArray(e)&&Array.isArray(r)?i=Qe(e,t,r):typeof e==typeof r&&typeof e!="object"?(t.ts||0)>(n.ts||0)?i=e:(n.ts||0)>(t.ts||0)?i=r:i=(t.deviceId||"")<=(n.deviceId||"")?e:r:i=(t.ts||0)>=(n.ts||0)?e:r,{data:i,meta:{vc:s,ts:a,deviceId:a===(t.ts||0)?t.deviceId:n.deviceId,_fieldTs:o,lastSyncedData:n.lastSyncedData??t.lastSyncedData??null,lastSyncedTs:Math.max(t.lastSyncedTs||0,n.lastSyncedTs||0),lastSyncedVc:s}}}const $="_cache:",We="ClassworksDB",ye=7*24*60*60*1e3,He=[{pattern:"*",ttl:ye}];async function Z(){return ue(We,void 0,{upgrade(e){e.objectStoreNames.contains("kv")||e.createObjectStore("kv"),e.objectStoreNames.contains("system")||e.createObjectStore("system"),e.objectStoreNames.contains("syncQueue")||e.createObjectStore("syncQueue")}})}function ze(e,t){const r="^"+e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*")+"$";return new RegExp(r).test(t)}function Ge(e){return e&&typeof e=="object"&&!("meta"in e)&&!("cacheTimestamp"in e)}function me(e){return e&&typeof e=="object"&&"meta"in e&&"cacheTimestamp"in e}function ve(e){for(const{pattern:t,ttl:r}of He)if(ze(t,e))return r;return ye}async function A(e){try{const t=await Z(),r=$+e,n=await t.get("kv",r);if(!n)return null;let s;try{s=typeof n=="string"?JSON.parse(n):n}catch{return null}if(Ge(s)){const a=d("device.uuid")||"unknown",o=T(a);o.ts=Date.now(),o.lastSyncedData=s;const i={data:s,meta:o,cacheTimestamp:Date.now(),cacheTTL:ve(e)};return await t.put("kv",JSON.stringify(i),r),{data:i.data,meta:i.meta}}return me(s)?Date.now()-s.cacheTimestamp>s.cacheTTL?(await t.delete("kv",r),null):{data:s.data,meta:s.meta}:null}catch(t){return console.warn("cacheManager.getCacheEntry 失败:",t),null}}async function N(e,t,r){try{const n=await Z(),s=$+e,a={data:t,meta:r,cacheTimestamp:Date.now(),cacheTTL:ve(e)};return await n.put("kv",JSON.stringify(a),s),!0}catch(n){return console.warn("cacheManager.setCacheEntry 失败:",n),!1}}async function we(){let e=0;try{const r=(await Z()).transaction("kv","readwrite"),n=r.objectStore("kv"),s=await n.getAllKeys();for(const a of s){if(!a.startsWith($))continue;const o=await n.get(a);if(!o)continue;let i;try{i=typeof o=="string"?JSON.parse(o):o}catch{continue}me(i)&&Date.now()-i.cacheTimestamp>i.cacheTTL&&(await n.delete(a),e++)}await r.done}catch(t){console.warn("cacheManager.cleanupExpiredEntries 失败:",t)}return e}let _=null,V=!1;async function C(e={}){var n;if(V)return{synced:0,failed:0};V=!0;let t=0,r=0;try{const s=await S.getSyncQueue();if(s.success===!1||!Array.isArray(s)||s.length===0)return{synced:0,failed:0};for(const a of s)try{const o=await I.saveData(a.key,a.data);if(o.success!==!1){if(await S.removeFromSyncQueue(a.key),a.meta){const i=d("device.uuid")||"unknown",c=await A(a.key);if(c){const u={...c.meta};u.lastSyncedData=a.data,u.lastSyncedTs=Date.now(),u.lastSyncedVc={...u.vc},await N(a.key,c.data,u)}else{const u=a.meta||T(i);u.lastSyncedData=a.data,u.lastSyncedTs=Date.now(),u.lastSyncedVc={...u.vc},await N(a.key,a.data,u)}}t++}else r++,e.silent||console.warn(`smartSync: 跳过 key=${a.key}, 服务器错误:`,(n=o.error)==null?void 0:n.message)}catch{r++;break}t>0&&we()}finally{V=!1}return!e.silent&&t>0&&console.log(`smartSync: 同步完成,成功 ${t} 条,失败 ${r} 条`),{synced:t,failed:r}}async function Xe(){try{const e=await S.getSyncQueue();if(e.success===!1||!Array.isArray(e)||e.length===0)return;C({silent:!0})}catch{}}function Ze(){_||(_=()=>C(),window.addEventListener("online",_),we(),navigator.onLine&&C())}function qe(){_&&(window.removeEventListener("online",_),_=null)}const v=e=>e,f=(e,t="UNKNOWN_ERROR")=>({success:!1,error:{code:t,message:e}});function Ye(e){return e&&e.success===!1}function oe(e){var t;return Ye(e)&&((t=e.error)==null?void 0:t.code)==="NETWORK_ERROR"}function ce(){return d("device.uuid")||"unknown"}function L(e){return e&&typeof e=="object"&&!Array.isArray(e)&&"value"in e?e.value:e}const st={init:Ze,destroy:qe,flushNow:C};function Q(){const e=d("server.provider");return e==="kv-server"||e==="classworkscloud"}const at={loadData:async e=>{if(!Q())return S.loadData(e);const t=await I.loadData(e),r=L(t);if(!oe(r)){if(r.success!==!1){const a=await A(e),o=ce();if(a){const i=L(a.data),c=JSON.stringify(i),u=JSON.stringify(r),l=JSON.stringify(L(a.meta.lastSyncedData)??null);if(u===c)return i;if(u!==l){const g=a.meta.vc||{},h=a.meta.lastSyncedVc||{};if((g[o]||0)>(h[o]||0)){const m=T("server");m.ts=Date.now();const k=Me(i,a.meta,r,m);return await N(e,k.data,k.meta),I.saveData(e,k.data),k.data}else{const m=T(o);return m.ts=Date.now(),m.lastSyncedData=r,m.lastSyncedTs=Date.now(),m.lastSyncedVc={...m.vc},await N(e,r,m),r}}else return i}else{const i=T(o);return i.ts=Date.now(),i.lastSyncedData=r,i.lastSyncedTs=Date.now(),i.lastSyncedVc={...i.vc},await N(e,r,i),r}}return r}const n=await A(e);if(n){const a=L(n.data);return typeof a=="object"&&a!==null&&(a.fromCache=!0),a}const s=await S.loadData($+e);return s.success!==!1?{...s,fromCache:!0}:r},saveData:async(e,t)=>{if(!Q())return S.saveData(e,t);const r=ce(),n=await A(e);let s;n?s=se(n.meta,r):s=se(T(r),r),await N(e,t,s);const a=await I.saveData(e,t);return a.success!==!1?(s.lastSyncedData=t,s.lastSyncedTs=Date.now(),s.lastSyncedVc={...s.vc},await N(e,t,s),await S.removeFromSyncQueue(e),Xe(),a):(await S.addToSyncQueue({key:e,data:t,timestamp:Date.now(),meta:s}),{success:!0,queuedForSync:!0})},loadKeys:async(e={})=>{if(!Q())return S.loadKeys(e);const t=await I.loadKeys(e);return oe(t)?S.loadKeys(e):t},async getKeyCloudUrl(e,t={}){var s;const{migrateFromLocal:r=!0,autoConfigureCloud:n=!0}=t;try{const a=d("server.provider");let o;a==="classworkscloud"?o=q():o=d("server.domain");let i=d("server.siteKey");const c=d("device.uuid");let u=!1;if(!o||!c)if(n){const y={"server.domain":"https://kv-service.houlang.cloud","server.siteKey":""};o||(B("server.domain",y["server.domain"]),o=y["server.domain"],u=!0),i||(B("server.siteKey",y["server.siteKey"]),i=y["server.siteKey"]),B("server.provider","classworkscloud"),o=q()}else return f("云端配置无效,请检查服务器域名和设备UUID","CONFIG_ERROR");let l=!1;if(r)try{const y=await S.loadData(e);if(y&&y.success!==!1){const m=await I.loadData(e);if(m&&m.success===!1&&((s=m.error)==null?void 0:s.code)==="NOT_FOUND"){const k=await I.saveData(e,y);k&&k.success!==!1&&(l=!0,console.log(`已成功将键 ${e} 的数据从本地迁移到云端`))}}}catch(y){console.warn(`迁移键 ${e} 的数据时出错:`,y)}const g=d("server.kvToken");return{success:!0,url:`${o}/kv/${e}?token=${g}`,migrated:l,configured:u}}catch(a){return console.error("获取键云端地址时出错:",a),f(a.message||"获取键云端地址失败","CLOUD_URL_ERROR")}}};export{w as a,S as b,nt as c,at as d,I as k,ue as o,st as s}; +import{a as ge,g as he}from"./vendor-utils-2lvrqI0-.js";import{n as d,ak as Se,s as B}from"./index-Ceq_468-.js";import{i as j,t as x,g as q}from"./serverRotation-Bs3NH0Jb.js";const J=(e,t)=>t.some(r=>e instanceof r);let Y,ee;function pe(){return Y||(Y=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function De(){return ee||(ee=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const M=new WeakMap,P=new WeakMap,K=new WeakMap;function be(e){const t=new Promise((r,n)=>{const s=()=>{e.removeEventListener("success",a),e.removeEventListener("error",o)},a=()=>{r(O(e.result)),s()},o=()=>{n(e.error),s()};e.addEventListener("success",a),e.addEventListener("error",o)});return K.set(t,e),t}function ke(e){if(M.has(e))return;const t=new Promise((r,n)=>{const s=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",o),e.removeEventListener("abort",o)},a=()=>{r(),s()},o=()=>{n(e.error||new DOMException("AbortError","AbortError")),s()};e.addEventListener("complete",a),e.addEventListener("error",o),e.addEventListener("abort",o)});M.set(e,t)}let W={get(e,t,r){if(e instanceof IDBTransaction){if(t==="done")return M.get(e);if(t==="store")return r.objectStoreNames[1]?void 0:r.objectStore(r.objectStoreNames[0])}return O(e[t])},set(e,t,r){return e[t]=r,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};function ie(e){W=e(W)}function Ee(e){return De().includes(e)?function(...t){return e.apply(H(this),t),O(this.request)}:function(...t){return O(e.apply(H(this),t))}}function Ie(e){return typeof e=="function"?Ee(e):(e instanceof IDBTransaction&&ke(e),J(e,pe())?new Proxy(e,W):e)}function O(e){if(e instanceof IDBRequest)return be(e);if(P.has(e))return P.get(e);const t=Ie(e);return t!==e&&(P.set(e,t),K.set(t,e)),t}const H=e=>K.get(e);function ue(e,t,{blocked:r,upgrade:n,blocking:s,terminated:a}={}){const o=indexedDB.open(e,t),i=O(o);return n&&o.addEventListener("upgradeneeded",c=>{n(O(o.result),c.oldVersion,c.newVersion,O(o.transaction),c)}),r&&o.addEventListener("blocked",c=>r(c.oldVersion,c.newVersion,c)),i.then(c=>{a&&c.addEventListener("close",()=>a()),s&&c.addEventListener("versionchange",u=>s(u.oldVersion,u.newVersion,u))}).catch(()=>{}),i}const Ne=["get","getKey","getAll","getAllKeys","count"],Oe=["put","add","delete","clear"],F=new Map;function te(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(F.get(t))return F.get(t);const r=t.replace(/FromIndex$/,""),n=t!==r,s=Oe.includes(r);if(!(r in(n?IDBIndex:IDBObjectStore).prototype)||!(s||Ne.includes(r)))return;const a=async function(o,...i){const c=this.transaction(o,s?"readwrite":"readonly");let u=c.store;return n&&(u=u.index(i.shift())),(await Promise.all([u[r](...i),s&&c.done]))[0]};return F.set(t,a),a}ie(e=>({...e,get:(t,r,n)=>te(t,r)||e.get(t,r,n),has:(t,r)=>!!te(t,r)||e.has(t,r)}));const Te=["continue","continuePrimaryKey","advance"],re={},z=new WeakMap,de=new WeakMap,Re={get(e,t){if(!Te.includes(t))return e[t];let r=re[t];return r||(r=re[t]=function(...n){z.set(this,de.get(this)[t](...n))}),r}};async function*_e(...e){let t=this;if(t instanceof IDBCursor||(t=await t.openCursor(...e)),!t)return;t=t;const r=new Proxy(t,Re);for(de.set(r,t),K.set(r,H(t));t;)yield r,t=await(z.get(r)||t.continue()),z.delete(r)}function ne(e,t){return t===Symbol.asyncIterator&&J(e,[IDBIndex,IDBObjectStore,IDBCursor])||t==="iterate"&&J(e,[IDBIndex,IDBObjectStore])}ie(e=>({...e,get(t,r,n){return ne(t,r)?_e:e.get(t,r,n)},has(t,r){return ne(t,r)||e.has(t,r)}}));const je="ClassworksDB",xe=3,E=async()=>ue(je,xe,{upgrade(e){e.objectStoreNames.contains("kv")||e.createObjectStore("kv"),e.objectStoreNames.contains("system")||e.createObjectStore("system"),e.objectStoreNames.contains("syncQueue")||e.createObjectStore("syncQueue")}}),S={async loadData(e){try{const r=await(await E()).get("kv",e);return r?v(JSON.parse(r)):f("数据不存在","NOT_FOUND")}catch(t){return f("读取本地数据失败:"+t)}},async saveData(e,t){try{return await(await E()).put("kv",JSON.stringify(t),e),v(!0)}catch(r){return f("保存本地数据失败:"+r)}},async loadKeys(e={}){try{const s=await(await E()).transaction(["kv"],"readonly").objectStore("kv").getAllKeys(),{sortDir:a="asc",limit:o=100,skip:i=0}=e,c=s.sort((h,y)=>a==="desc"?y.localeCompare(h):h.localeCompare(y)),u=c.length,l=c.slice(i,i+o),g={keys:l,total_rows:u,current_page:{limit:o,skip:i,count:l.length},load_more:null};return v(g)}catch(t){return f("获取本地键名列表失败:"+t.message)}},async addToSyncQueue(e){try{return await(await E()).put("syncQueue",JSON.stringify(e),e.key),v(!0)}catch(t){return f("添加同步队列失败:"+t)}},async getSyncQueue(){try{const e=await E(),t=await e.getAllKeys("syncQueue"),r=[];for(const n of t){const s=await e.get("syncQueue",n);s&&r.push(JSON.parse(s))}return r.sort((n,s)=>n.timestamp-s.timestamp),v(r)}catch(e){return f("获取同步队列失败:"+e)}},async removeFromSyncQueue(e){try{return await(await E()).delete("syncQueue",e),v(!0)}catch(t){return f("删除同步队列项失败:"+t)}},async deleteByPrefix(e){try{const r=(await E()).transaction("kv","readwrite"),n=r.objectStore("kv"),s=await n.getAllKeys();let a=0;for(const o of s)o.startsWith(e)&&(await n.delete(o),a++);return await r.done,a}catch(t){return console.warn("kvLocalProvider.deleteByPrefix 失败:",t),0}}};function Le(e,t){return"headers"in e&&typeof e.headers=="object"&&!Array.isArray(e.headers)?U(e.headers):"getHeaders"in e&&typeof e.getHeaders=="function"?U(e.getHeaders()):U(e)}function U(e,t){const r=D(e,"ratelimit");if(r)return $e(r);let n;if(D(e,"ratelimit-remaining"))n="ratelimit-";else if(D(e,"x-ratelimit-remaining"))n="x-ratelimit-";else if(D(e,"x-rate-limit-remaining"))n="x-rate-limit-";else return;const s=p(D(e,`${n}limit`)),a=p(D(e,`${n}used`))||p(D(e,`${n}observed`)),o=p(D(e,`${n}remaining`));let i;const c=D(e,`${n}reset`);switch(void 0){case"date":{i=fe(c??"");break}case"unix":{i=G(c??"");break}case"seconds":{i=le(c??"");break}case"milliseconds":{i=Be(c??"");break}default:if(c)i=Fe(c);else{const l=D(e,"retry-after");l&&(i=G(l))}}return{limit:Number.isNaN(s)?a+o:s,used:Number.isNaN(a)?s-o:a,remaining:o,reset:i}}var Ae=/limit\s*=\s*(\d+)/i,Ce=/remaining\s*=\s*(\d+)/i,Ke=/reset\s*=\s*(\d+)/i;function $e(e){var t,r,n;const s=p((t=Ae.exec(e))==null?void 0:t[1]),a=p((r=Ce.exec(e))==null?void 0:r[1]),o=p((n=Ke.exec(e))==null?void 0:n[1]),i=X(o);return{limit:s,used:s-a,remaining:a,reset:i}}function X(e){const t=new Date;return t.setSeconds(t.getSeconds()+e),t}function p(e){return typeof e=="number"?e:Number.parseInt(e??"",10)}function D(e,t){var r;if("get"in e&&typeof e.get=="function")return(r=e.get(t))!=null?r:void 0;if(t in e&&typeof e[t]=="string")return e[t]}function fe(e){return new Date(e)}function G(e){const t=p(e);return new Date(t*1e3)}function le(e){const t=p(e);return X(t)}function Be(e){const t=p(e);return X(t/1e3)}var Pe=/[a-z]/i;function Fe(e){if(Pe.test(e))return fe(e);const t=p(e);return t&&t>1e9?G(t):le(t)}const w=ge.create({timeout:1e4});w.interceptors.request.use(e=>{const t=d("server.provider");if(t==="kv-server"||t==="classworkscloud"){const r=d("server.kvToken");if(r)e.headers["x-app-token"]=r;else{const n=d("server.siteKey");n&&(e.headers["x-site-key"]=he.encode(n))}}return e},e=>(console.log(e),Promise.reject(e)));w.interceptors.response.use(e=>e,e=>{if(e.response&&e.response.status===429)try{const t=Le(e.response);t&&Se.show(t.reset,e.config.url,e.config.method.toUpperCase())}catch(t){console.error("解析限速头信息失败:",t)}return Promise.reject(e)});const nt=Object.freeze(Object.defineProperty({__proto__:null,default:w},Symbol.toStringTag,{value:"Module"})),b=()=>{const e={Accept:"application/json"},t=d("server.kvToken"),r=d("server.siteKey");return t?e["x-app-token"]=t:r&&(e["x-site-key"]=r),e},I={async loadNamespaceInfo(){var e,t;try{if(j())return await x(async s=>{const a=await w.get(`${s}/kv/_info`,{headers:b()});return v(a.data)});const r=d("server.domain"),n=await w.get(`${r}/kv/_info`,{headers:b()});return v(n.data)}catch(r){return console.error("获取命名空间信息失败:",r),f(((t=(e=r.response)==null?void 0:e.data)==null?void 0:t.message)||"获取命名空间信息失败","NAMESPACE_ERROR")}},async updateNamespaceInfo(e){var t,r;try{if(j())return await x(async a=>await w.put(`${a}/kv/_info`,e,{headers:b()}));const n=d("server.domain");return await w.put(`${n}/kv/_info`,e,{headers:b()})}catch(n){return f(((r=(t=n.response)==null?void 0:t.data)==null?void 0:r.message)||"更新命名空间信息失败","NAMESPACE_ERROR")}},async loadData(e){var t,r,n;try{if(j())return await x(async o=>{const i=await w.get(`${o}/kv/${e}`,{headers:b()});return v(i.data)});const s=d("server.domain"),a=await w.get(`${s}/kv/${e}`,{headers:b()});return v(a.data)}catch(s){return((t=s.response)==null?void 0:t.status)===404?f("数据不存在","NOT_FOUND"):(console.log(s),f(((n=(r=s.response)==null?void 0:r.data)==null?void 0:n.message)||"服务器连接失败","NETWORK_ERROR"))}},async saveData(e,t){var r,n;try{if(j())return await x(async a=>(await w.post(`${a}/kv/${e}`,t,{headers:b()}),v(!0)));const s=d("server.domain");return await w.post(`${s}/kv/${e}`,t,{headers:b()}),v(!0)}catch(s){return console.log(s),f(((n=(r=s.response)==null?void 0:r.data)==null?void 0:n.message)||"保存失败","SAVE_ERROR")}},async loadKeys(e={}){var t,r,n,s,a;try{const{sortBy:o="key",sortDir:i="asc",limit:c=100,skip:u=0}=e,l=new URLSearchParams({sortBy:o,sortDir:i,limit:c.toString(),skip:u.toString()});if(j())return await x(async y=>{const m=await w.get(`${y}/kv/_keys?${l}`,{headers:b()});return v(m.data)});const g=d("server.domain"),h=await w.get(`${g}/kv/_keys?${l}`,{headers:b()});return v(h.data)}catch(o){return((t=o.response)==null?void 0:t.status)===404?f("命名空间不存在","NOT_FOUND"):((r=o.response)==null?void 0:r.status)===403?f("无权限访问此命名空间","PERMISSION_DENIED"):((n=o.response)==null?void 0:n.status)===401?f("认证失败","UNAUTHORIZED"):(console.log(o),f(((a=(s=o.response)==null?void 0:s.data)==null?void 0:a.message)||"获取键名列表失败","NETWORK_ERROR"))}}};function T(e){return{vc:{[e]:0},ts:0,deviceId:e,_fieldTs:{},lastSyncedData:null,lastSyncedTs:0,lastSyncedVc:{[e]:0}}}function se(e,t){const r={...e.vc};return r[t]=(r[t]||0)+1,{...e,vc:r,ts:Date.now(),deviceId:t}}function Ue(e,t){const r={...e};for(const[n,s]of Object.entries(t))r[n]=Math.max(r[n]||0,s);return r}function R(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Ve(e,t){if(!e&&!t)return{};if(!e)return{...t};if(!t)return{...e};const r={...e};for(const[n,s]of Object.entries(t)){const a=r[n];(!a||s.ts>a.ts||s.ts===a.ts&&s.deviceIdR(r)?r.id:JSON.stringify(r);if("name"in t)return r=>R(r)?r.name:JSON.stringify(r);if("key"in t)return r=>R(r)?r.key:JSON.stringify(r)}return null}function Qe(e,t,r){const n=ae(e)||ae(r)||(c=>JSON.stringify(c)),s=new Map,a=new Map;e.forEach(c=>{const u=n(c);s.has(u)||s.set(u,c)}),r.forEach(c=>{const u=n(c);a.has(u)||a.set(u,c)});const o=[],i=new Set;for(const[c,u]of s)i.has(c)||(i.add(c),o.push(u));for(const[c,u]of a)i.has(c)||(i.add(c),o.push(u));return o}function Je(e,t,r,n){var o,i;const s={},a=new Set([...Object.keys(e),...Object.keys(r)]);for(const c of a){const u=c in e,l=c in r;if(u&&!l)s[c]=e[c];else if(!u&&l)s[c]=r[c];else{const g=((o=t._fieldTs)==null?void 0:o[c])||{ts:t.ts,deviceId:t.deviceId},h=((i=n._fieldTs)==null?void 0:i[c])||{ts:n.ts,deviceId:n.deviceId};g.ts>h.ts?s[c]=e[c]:h.ts>g.ts?s[c]=r[c]:s[c]=g.deviceId<=h.deviceId?e[c]:r[c]}}return s}function Me(e,t,r,n){const s=Ue(t.vc||{},n.vc||{}),a=Math.max(t.ts||0,n.ts||0),o=Ve(t._fieldTs,n._fieldTs);let i;return R(e)&&R(r)?i=Je(e,t,r,n):Array.isArray(e)&&Array.isArray(r)?i=Qe(e,t,r):typeof e==typeof r&&typeof e!="object"?(t.ts||0)>(n.ts||0)?i=e:(n.ts||0)>(t.ts||0)?i=r:i=(t.deviceId||"")<=(n.deviceId||"")?e:r:i=(t.ts||0)>=(n.ts||0)?e:r,{data:i,meta:{vc:s,ts:a,deviceId:a===(t.ts||0)?t.deviceId:n.deviceId,_fieldTs:o,lastSyncedData:n.lastSyncedData??t.lastSyncedData??null,lastSyncedTs:Math.max(t.lastSyncedTs||0,n.lastSyncedTs||0),lastSyncedVc:s}}}const $="_cache:",We="ClassworksDB",ye=7*24*60*60*1e3,He=[{pattern:"*",ttl:ye}];async function Z(){return ue(We,void 0,{upgrade(e){e.objectStoreNames.contains("kv")||e.createObjectStore("kv"),e.objectStoreNames.contains("system")||e.createObjectStore("system"),e.objectStoreNames.contains("syncQueue")||e.createObjectStore("syncQueue")}})}function ze(e,t){const r="^"+e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*")+"$";return new RegExp(r).test(t)}function Ge(e){return e&&typeof e=="object"&&!("meta"in e)&&!("cacheTimestamp"in e)}function me(e){return e&&typeof e=="object"&&"meta"in e&&"cacheTimestamp"in e}function ve(e){for(const{pattern:t,ttl:r}of He)if(ze(t,e))return r;return ye}async function A(e){try{const t=await Z(),r=$+e,n=await t.get("kv",r);if(!n)return null;let s;try{s=typeof n=="string"?JSON.parse(n):n}catch{return null}if(Ge(s)){const a=d("device.uuid")||"unknown",o=T(a);o.ts=Date.now(),o.lastSyncedData=s;const i={data:s,meta:o,cacheTimestamp:Date.now(),cacheTTL:ve(e)};return await t.put("kv",JSON.stringify(i),r),{data:i.data,meta:i.meta}}return me(s)?Date.now()-s.cacheTimestamp>s.cacheTTL?(await t.delete("kv",r),null):{data:s.data,meta:s.meta}:null}catch(t){return console.warn("cacheManager.getCacheEntry 失败:",t),null}}async function N(e,t,r){try{const n=await Z(),s=$+e,a={data:t,meta:r,cacheTimestamp:Date.now(),cacheTTL:ve(e)};return await n.put("kv",JSON.stringify(a),s),!0}catch(n){return console.warn("cacheManager.setCacheEntry 失败:",n),!1}}async function we(){let e=0;try{const r=(await Z()).transaction("kv","readwrite"),n=r.objectStore("kv"),s=await n.getAllKeys();for(const a of s){if(!a.startsWith($))continue;const o=await n.get(a);if(!o)continue;let i;try{i=typeof o=="string"?JSON.parse(o):o}catch{continue}me(i)&&Date.now()-i.cacheTimestamp>i.cacheTTL&&(await n.delete(a),e++)}await r.done}catch(t){console.warn("cacheManager.cleanupExpiredEntries 失败:",t)}return e}let _=null,V=!1;async function C(e={}){var n;if(V)return{synced:0,failed:0};V=!0;let t=0,r=0;try{const s=await S.getSyncQueue();if(s.success===!1||!Array.isArray(s)||s.length===0)return{synced:0,failed:0};for(const a of s)try{const o=await I.saveData(a.key,a.data);if(o.success!==!1){if(await S.removeFromSyncQueue(a.key),a.meta){const i=d("device.uuid")||"unknown",c=await A(a.key);if(c){const u={...c.meta};u.lastSyncedData=a.data,u.lastSyncedTs=Date.now(),u.lastSyncedVc={...u.vc},await N(a.key,c.data,u)}else{const u=a.meta||T(i);u.lastSyncedData=a.data,u.lastSyncedTs=Date.now(),u.lastSyncedVc={...u.vc},await N(a.key,a.data,u)}}t++}else r++,e.silent||console.warn(`smartSync: 跳过 key=${a.key}, 服务器错误:`,(n=o.error)==null?void 0:n.message)}catch{r++;break}t>0&&we()}finally{V=!1}return!e.silent&&t>0&&console.log(`smartSync: 同步完成,成功 ${t} 条,失败 ${r} 条`),{synced:t,failed:r}}async function Xe(){try{const e=await S.getSyncQueue();if(e.success===!1||!Array.isArray(e)||e.length===0)return;C({silent:!0})}catch{}}function Ze(){_||(_=()=>C(),window.addEventListener("online",_),we(),navigator.onLine&&C())}function qe(){_&&(window.removeEventListener("online",_),_=null)}const v=e=>e,f=(e,t="UNKNOWN_ERROR")=>({success:!1,error:{code:t,message:e}});function Ye(e){return e&&e.success===!1}function oe(e){var t;return Ye(e)&&((t=e.error)==null?void 0:t.code)==="NETWORK_ERROR"}function ce(){return d("device.uuid")||"unknown"}function L(e){return e&&typeof e=="object"&&!Array.isArray(e)&&"value"in e?e.value:e}const st={init:Ze,destroy:qe,flushNow:C};function Q(){const e=d("server.provider");return e==="kv-server"||e==="classworkscloud"}const at={loadData:async e=>{if(!Q())return S.loadData(e);const t=await I.loadData(e),r=L(t);if(!oe(r)){if(r.success!==!1){const a=await A(e),o=ce();if(a){const i=L(a.data),c=JSON.stringify(i),u=JSON.stringify(r),l=JSON.stringify(L(a.meta.lastSyncedData)??null);if(u===c)return i;if(u!==l){const g=a.meta.vc||{},h=a.meta.lastSyncedVc||{};if((g[o]||0)>(h[o]||0)){const m=T("server");m.ts=Date.now();const k=Me(i,a.meta,r,m);return await N(e,k.data,k.meta),I.saveData(e,k.data),k.data}else{const m=T(o);return m.ts=Date.now(),m.lastSyncedData=r,m.lastSyncedTs=Date.now(),m.lastSyncedVc={...m.vc},await N(e,r,m),r}}else return i}else{const i=T(o);return i.ts=Date.now(),i.lastSyncedData=r,i.lastSyncedTs=Date.now(),i.lastSyncedVc={...i.vc},await N(e,r,i),r}}return r}const n=await A(e);if(n){const a=L(n.data);return typeof a=="object"&&a!==null&&(a.fromCache=!0),a}const s=await S.loadData($+e);return s.success!==!1?{...s,fromCache:!0}:r},saveData:async(e,t)=>{if(!Q())return S.saveData(e,t);const r=ce(),n=await A(e);let s;n?s=se(n.meta,r):s=se(T(r),r),await N(e,t,s);const a=await I.saveData(e,t);return a.success!==!1?(s.lastSyncedData=t,s.lastSyncedTs=Date.now(),s.lastSyncedVc={...s.vc},await N(e,t,s),await S.removeFromSyncQueue(e),Xe(),a):(await S.addToSyncQueue({key:e,data:t,timestamp:Date.now(),meta:s}),{success:!0,queuedForSync:!0})},loadKeys:async(e={})=>{if(!Q())return S.loadKeys(e);const t=await I.loadKeys(e);return oe(t)?S.loadKeys(e):t},async getKeyCloudUrl(e,t={}){var s;const{migrateFromLocal:r=!0,autoConfigureCloud:n=!0}=t;try{const a=d("server.provider");let o;a==="classworkscloud"?o=q():o=d("server.domain");let i=d("server.siteKey");const c=d("device.uuid");let u=!1;if(!o||!c)if(n){const y={"server.domain":"https://kv-service.houlang.cloud","server.siteKey":""};o||(B("server.domain",y["server.domain"]),o=y["server.domain"],u=!0),i||(B("server.siteKey",y["server.siteKey"]),i=y["server.siteKey"]),B("server.provider","classworkscloud"),o=q()}else return f("云端配置无效,请检查服务器域名和设备UUID","CONFIG_ERROR");let l=!1;if(r)try{const y=await S.loadData(e);if(y&&y.success!==!1){const m=await I.loadData(e);if(m&&m.success===!1&&((s=m.error)==null?void 0:s.code)==="NOT_FOUND"){const k=await I.saveData(e,y);k&&k.success!==!1&&(l=!0,console.log(`已成功将键 ${e} 的数据从本地迁移到云端`))}}}catch(y){console.warn(`迁移键 ${e} 的数据时出错:`,y)}const g=d("server.kvToken");return{success:!0,url:`${o}/kv/${e}?token=${g}`,migrated:l,configured:u}}catch(a){return console.error("获取键云端地址时出错:",a),f(a.message||"获取键云端地址失败","CLOUD_URL_ERROR")}}};export{w as a,S as b,nt as c,at as d,I as k,ue as o,st as s}; diff --git a/assets/debug-DCZMB0S_.js b/assets/debug-DkHlxsJi.js similarity index 75% rename from assets/debug-DCZMB0S_.js rename to assets/debug-DkHlxsJi.js index 243ec45..15ee07b 100644 --- a/assets/debug-DCZMB0S_.js +++ b/assets/debug-DkHlxsJi.js @@ -1 +1 @@ -import{getVisitorId as u,getFingerprintData as f}from"./visitorId-D_nwlNzA.js";import{aa as m}from"./vendor-vuetify-DsKlzgKp.js";import{e as c,c as p,F as g,d as V,l as v,h as C}from"./index-DGIAsv4W.js";import{V as b}from"./VContainer-DZyPrcqa.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-BiQC5iF7.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",loading:r.value,onClick:n},{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-D2J8zjxI.js";import{aa as m}from"./vendor-vuetify-rtu3DHX4.js";import{e as c,c as p,E as g,d as V,l as v,h as C}from"./index-Ceq_468-.js";import{V as b}from"./VContainer-BisEDTd3.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-BiQC5iF7.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",loading:r.value,onClick:n},{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-57thZXh2.js b/assets/debug-init-BXJK30rf.js similarity index 86% rename from assets/debug-init-57thZXh2.js rename to assets/debug-init-BXJK30rf.js index 176b890..17ed380 100644 --- a/assets/debug-init-57thZXh2.js +++ b/assets/debug-init-BXJK30rf.js @@ -1 +1 @@ -import{n as r,e as k,c as g,d as _,i as R,h as f,p as U,q as C,r as S,t as T,s}from"./index-DGIAsv4W.js";import{k as N}from"./dataProvider-GWPC-0Vt.js";import{V as B,a as D}from"./VRow-Cjhiymuu.js";import{V as G}from"./VForm-ObW_L7SS.js";import{V as n}from"./VTextField-BurlcggD.js";import{V as F}from"./VContainer-DZyPrcqa.js";import{b as i,a4 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-BiQC5iF7.js";import"./vendor-vuetify-DsKlzgKp.js";import"./vendor-utils-DwALrQNc.js";import"./serverRotation-BtcwvdZJ.js";const I="kvinit.redirecting",W={__name:"debug-init",setup(q){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{W as default}; +import{n as r,e as k,c as g,d as _,i as R,h as f,p as U,q as C,r as S,t as T,s}from"./index-Ceq_468-.js";import{k as N}from"./dataProvider-D5waPBEc.js";import{V as B,a as D}from"./VRow-BiiRXDj9.js";import{V as G}from"./VForm-vCieX1EY.js";import{V as n}from"./VTextField-DpXLMPq7.js";import{V as F}from"./VContainer-BisEDTd3.js";import{b as i,a4 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-BiQC5iF7.js";import"./vendor-vuetify-rtu3DHX4.js";import"./vendor-utils-2lvrqI0-.js";import"./serverRotation-Bs3NH0Jb.js";const I="kvinit.redirecting",W={__name:"debug-init",setup(q){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{W as default}; diff --git a/assets/debug-socket-iwz8uZ6l.js b/assets/debug-socket-Cawza1cL.js similarity index 92% rename from assets/debug-socket-iwz8uZ6l.js rename to assets/debug-socket-Cawza1cL.js index 1379c0b..873950f 100644 --- a/assets/debug-socket-iwz8uZ6l.js +++ b/assets/debug-socket-Cawza1cL.js @@ -1 +1 @@ -import{n as te,e as x,c as b,d as w,p as A,q as f,r as v,t as m,i as K,h as i,g as M,o as le}from"./index-DGIAsv4W.js";import{g as U,b as J,j as O,a as p,c as ne,l as ae}from"./socketClient-BKHEsaLg.js";import{s as oe,D as se}from"./deviceEvents-HN9RDua9.js";import{V as j,a as _}from"./VRow-Cjhiymuu.js";import{V as re}from"./VChip-mRzIPuM0.js";import{V as ue}from"./VTextField-BurlcggD.js";import{V as ie}from"./VTextarea-vGWmTJww.js";import{V as de}from"./VContainer-DZyPrcqa.js";import{b as d,D as ce,A as fe,a4 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-BiQC5iF7.js";import"./vendor-vuetify-DsKlzgKp.js";import"./vendor-socket-dm1FmSOd.js";import"./serverRotation-BtcwvdZJ.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"}},Ie={__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()),q=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 H(){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 X(){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 Z(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(),H(),X(),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(q.value),1)]),_:1})]),_:1})]),_:1}),t(K,{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=>Z(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(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(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(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(M),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{Ie as default}; +import{n as te,e as x,c as b,d as w,p as A,q as f,r as v,t as m,i as K,h as i,g as M,o as le}from"./index-Ceq_468-.js";import{g as U,b as J,j as O,a as p,c as ne,l as ae}from"./socketClient-DJ8u9nXv.js";import{s as oe,D as se}from"./deviceEvents-Wy8_E1wQ.js";import{V as j,a as _}from"./VRow-BiiRXDj9.js";import{V as re}from"./VChip-BdtDOEwz.js";import{V as ue}from"./VTextField-DpXLMPq7.js";import{V as ie}from"./VTextarea-UKN-Avq_.js";import{V as de}from"./VContainer-BisEDTd3.js";import{b as d,D as ce,A as fe,a4 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-BiQC5iF7.js";import"./vendor-vuetify-rtu3DHX4.js";import"./vendor-socket-dm1FmSOd.js";import"./serverRotation-Bs3NH0Jb.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"}},Ie={__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()),q=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 H(){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 X(){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 Z(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(),H(),X(),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(q.value),1)]),_:1})]),_:1})]),_:1}),t(K,{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=>Z(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(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(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(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(M),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{Ie as default}; diff --git a/assets/default-VxHjJPAZ.js b/assets/default-CGkACEC3.js similarity index 85% rename from assets/default-VxHjJPAZ.js rename to assets/default-CGkACEC3.js index 5ca57a4..c8118b3 100644 --- a/assets/default-VxHjJPAZ.js +++ b/assets/default-CGkACEC3.js @@ -1 +1 @@ -import{p as c,k as i,f as u,a7 as _,u as p}from"./vendor-vuetify-DsKlzgKp.js";import{m as d,a as f,u as v,b as k}from"./index-DGIAsv4W.js";import{j as l,N as y,n as B,k as V,Y as b,a4 as C,X as S,Z as g}from"./vendor-vue-BiQC5iF7.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-rtu3DHX4.js";import{m as d,a as f,u as v,b as k}from"./index-Ceq_468-.js";import{j as l,N as y,n as B,k as V,Y as b,a4 as C,X as S,Z as g}from"./vendor-vue-BiQC5iF7.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-HN9RDua9.js b/assets/deviceEvents-Wy8_E1wQ.js similarity index 97% rename from assets/deviceEvents-HN9RDua9.js rename to assets/deviceEvents-Wy8_E1wQ.js index db71387..512410b 100644 --- a/assets/deviceEvents-HN9RDua9.js +++ b/assets/deviceEvents-Wy8_E1wQ.js @@ -1 +1 @@ -import{s as E}from"./socketClient-BKHEsaLg.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-DJ8u9nXv.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-BZ-idwf4.js b/assets/examschedule-Bjj5pPD_.js similarity index 92% rename from assets/examschedule-BZ-idwf4.js rename to assets/examschedule-Bjj5pPD_.js index 1ddb5f8..ba05664 100644 --- a/assets/examschedule-BZ-idwf4.js +++ b/assets/examschedule-Bjj5pPD_.js @@ -1,4 +1,4 @@ -import A from"./ExamConfigEditor-BVwEXehR.js";import{d as C}from"./dataProvider-GWPC-0Vt.js";import{_ as F,e as y,c as V,f as g,F as J,d as v,h as u,p as R,q as z,r as O,t as H,o as L,k as S,l as T,g as k,n as P}from"./index-DGIAsv4W.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,ae as B}from"./vendor-vue-BiQC5iF7.js";import{V as W,a as q}from"./VRow-Cjhiymuu.js";import{V as N}from"./VAlert-BZ4-f-hy.js";import{V as M}from"./VChip-mRzIPuM0.js";import{V as K}from"./VSkeletonLoader-DwE_iqTb.js";import{V as Y}from"./VTextField-BurlcggD.js";import{V as G}from"./VTextarea-vGWmTJww.js";import{V as Z}from"./VContainer-DZyPrcqa.js";import"./VTooltip-2IUjfpCS.js";import"./vendor-vuetify-DsKlzgKp.js";import"./VSwitch-k6hfPfa2.js";import"./VAutocomplete-N0zTUlyj.js";import"./VSelect-oxA0t9CG.js";import"./VSheet-BBnSA_kJ.js";import"./VCheckboxBtn-BKcSogH0.js";import"./VDatePicker-CuGF0KeL.js";import"./VPicker-SM18M-iq.js";import"./VTimePicker-BApLLZ8X.js";import"./vendor-utils-DwALrQNc.js";import"./serverRotation-BtcwvdZJ.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}},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-o_7l6zek.js";import{d as C}from"./dataProvider-D5waPBEc.js";import{_ as J,e as y,c as V,f as g,E as R,d as v,h as u,p as z,q as F,r as O,t as H,o as L,k as S,l as T,g as k,n as P}from"./index-Ceq_468-.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,ae as B}from"./vendor-vue-BiQC5iF7.js";import{V as W,a as q}from"./VRow-BiiRXDj9.js";import{V as N}from"./VAlert-C02HdytA.js";import{V as M}from"./VChip-BdtDOEwz.js";import{V as K}from"./VSkeletonLoader-B0OOafGJ.js";import{V as Y}from"./VTextField-DpXLMPq7.js";import{V as G}from"./VTextarea-UKN-Avq_.js";import{V as Z}from"./VContainer-BisEDTd3.js";import"./VTooltip-CWhmSQeX.js";import"./vendor-vuetify-rtu3DHX4.js";import"./VSwitch-d4Yvphn0.js";import"./VAutocomplete-C-Az_ynh.js";import"./VSelect-OEnAsVY5.js";import"./VMenu-DqtPWEMI.js";import"./VSheet-MW0wxrpj.js";import"./VCheckboxBtn-snLiE5D5.js";import"./VDatePicker-C_lQuyln.js";import"./VPicker-DxbAs-x1.js";import"./VTimePicker-DXcm5dub.js";import"./vendor-utils-2lvrqI0-.js";import"./serverRotation-Bs3NH0Jb.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}},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:`}},async mounted(){await this.loadConfigs()},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(J,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(R,null,{default:i(()=>[(p(!0),U(X,null,j(t.configs,n=>(p(),h(z,{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: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(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(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:`{ "examName": "期末考试", "message": "考试信息", "room": "01", @@ -47,4 +47,4 @@ Now please generate the exam configuration based on the above rules:`}},async mo "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=F(Q,[["render",de],["__scopeId","data-v-812880c2"]]);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-812880c2"]]);export{Ae as default}; diff --git a/assets/index-7Awvo4-J.js b/assets/index-CVHPTbQ0.js similarity index 93% rename from assets/index-7Awvo4-J.js rename to assets/index-CVHPTbQ0.js index 6f8651b..94145e0 100644 --- a/assets/index-7Awvo4-J.js +++ b/assets/index-CVHPTbQ0.js @@ -1 +1 @@ -import{d}from"./dataProvider-GWPC-0Vt.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,ae as C,aa as L,$ as x}from"./vendor-vue-BiQC5iF7.js";import{_ as I,h as r,e as k,c as g,d as V,p as b,q as _,r as A,f as p,k as B,l as E,g as F}from"./index-DGIAsv4W.js";import{V as S,a as T}from"./VAppBarTitle-DheyIZnb.js";import{V as D}from"./VTextField-BurlcggD.js";import{V as K}from"./VContainer-DZyPrcqa.js";import"./vendor-utils-DwALrQNc.js";import"./serverRotation-BtcwvdZJ.js";import"./vendor-vuetify-DsKlzgKp.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 R=I(M,[["render",q]]);export{R as default}; +import{d}from"./dataProvider-D5waPBEc.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,ae as C,aa as L,$ as x}from"./vendor-vue-BiQC5iF7.js";import{_ as I,h as r,e as k,c as g,d as V,p as b,q as _,r as A,f as p,k as B,l as E,g as F}from"./index-Ceq_468-.js";import{V as S,a as T}from"./VAppBarTitle-q97S07ao.js";import{V as D}from"./VTextField-DpXLMPq7.js";import{V as K}from"./VContainer-BisEDTd3.js";import"./vendor-utils-2lvrqI0-.js";import"./serverRotation-Bs3NH0Jb.js";import"./vendor-vuetify-rtu3DHX4.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 R=I(M,[["render",q]]);export{R as default}; diff --git a/assets/index-CbUii4LM.js b/assets/index-CbUii4LM.js new file mode 100644 index 0000000..b606e28 --- /dev/null +++ b/assets/index-CbUii4LM.js @@ -0,0 +1,6 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-Ceq_468-.js","./vendor-vuetify-rtu3DHX4.js","./vendor-vue-BiQC5iF7.js","./index-Yfd4JoUB.css","./dataProvider-D5waPBEc.js","./vendor-utils-2lvrqI0-.js","./serverRotation-Bs3NH0Jb.js","./MessageLog-C_EKPx-f.js","./VAppBarTitle-q97S07ao.js","./VAppBarTitle-CczdD-Q2.css","./MessageLog-BGkFwivK.css","./RandomPicker-CZHJEJmO.js","./VTextField-DpXLMPq7.js","./VTextField-DTDEIDq0.css","./VTooltip-CWhmSQeX.js","./VTooltip-D7EaNDeY.css","./VChip-BdtDOEwz.js","./VChip-Dmz_1Lnv.css","./RandomPicker-CU-edGvg.css","./FloatingToolbar-Bh03SB2m.js","./VMenu-DqtPWEMI.js","./VMenu-C31D-C2L.css","./VDatePicker-C_lQuyln.js","./VPicker-DxbAs-x1.js","./VSheet-MW0wxrpj.js","./VSheet-DW_b51tO.css","./VPicker-Dm9DplUc.css","./VDatePicker-zglzEVGT.css","./FloatingToolbar-5gVX85mk.css","./ChatWidget-CdFpE857.js","./socketClient-DJ8u9nXv.js","./vendor-socket-dm1FmSOd.js","./soundList-D9U-Grcp.js","./deviceEvents-Wy8_E1wQ.js","./VRow-BiiRXDj9.js","./VRow-D2ArqUC2.css","./VPagination-BQZD6rf1.js","./VPagination-BF2MZmld.css","./VTextarea-UKN-Avq_.js","./VTextarea-_xVwaw_z.css","./ChatWidget-ChgL-O5B.css","./HomeworkEditDialog-CT_lOawC.js","./VAlert-C02HdytA.js","./VAlert-D_OX1cfW.css","./HomeworkEditDialog-DSAcf9mw.css","./UafTransferDialog-BiTNoR1z.js","./VCheckboxBtn-snLiE5D5.js","./VSwitch-d4Yvphn0.js","./VSwitch-Bk42mIwg.css","./VFileInput-D2ZU5WsA.js","./VFileInput-CRcZ0Lr3.css","./VExpansionPanels-DbwaqF41.js","./VExpansionPanels-kEj4ZJQK.css","./VSelect-OEnAsVY5.js","./VSelect-DHZViySU.css","./UafTransferDialog-zULs-G2u.css","./InitServiceChooser-jMiMsbAb.js","./InitServiceChooser-BSZJBnhr.css","./StudentNameManager-CfZ3q6RU.js","./VAutocomplete-C-Az_ynh.js","./VAutocomplete-Ygy_KjMW.css","./VCombobox-CjTuZar9.js","./VCombobox-r6cc1Iy_.css","./StudentNameManager-tn0RQdqM.css","./UrgentTestDialog-DIoDIryQ.js","./VContainer-BisEDTd3.js","./VContainer-B1KSavhG.css","./VForm-vCieX1EY.js","./VCheckbox-BM0AQhRG.js","./VCheckbox-ZL-u1kGB.css","./UrgentTestDialog-65OEJ5uz.css","./AttendanceSidebar-Cz4nwVcc.js","./AttendanceManagementDialog-CCCxW1vX.js","./AttendanceManagementDialog-D0prZwJd.css","./PwaInstallCard-CPjNY6NL.js","./ExamScheduleCard-BMCIwBI1.js","./VTabs-B7ztkrUN.js","./VTable-CJ8evfI8.js","./VTable-CNLJxQof.css","./VTabs-566n5b08.css","./ExamScheduleCard-BJuKYvRa.css","./ExamConfigEditor-o_7l6zek.js","./VSkeletonLoader-B0OOafGJ.js","./VSkeletonLoader-C11ZEozu.css","./VTimePicker-DXcm5dub.js","./VTimePicker-BkWY3_8P.css","./ExamConfigEditor-HgNV6CVV.css"])))=>i.map(i=>d[i]); +var et=Object.defineProperty;var tt=(t,e,i)=>e in t?et(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var C=(t,e,i)=>tt(t,typeof e!="symbol"?e+"":e,i);import{_ as H,V as Ce,c as I,d as T,e as _,S as ne,w as Te,f as x,g as E,h as b,i as F,j as re,k as B,l as j,s as q,n as D,o as st,p as J,q as G,r as oe,t as ae,v as it,x as N,y as nt,z as ot,A as Q}from"./index-Ceq_468-.js";import{X as c,_ as f,j as o,N as P,S as h,a6 as at,a7 as rt,a8 as lt,Y as v,Z as a,k as r,F as k,a2 as M,n as O,$ as w,a1 as u,a9 as A,aa as Re,P as dt,R as ct,V as ut,U as Ie,m as mt,e as ht,a4 as V}from"./vendor-vue-BiQC5iF7.js";import{d as R,a as ft,k as gt,s as Ve}from"./dataProvider-D5waPBEc.js";import{a as ye,g as Fe}from"./vendor-utils-2lvrqI0-.js";import{V as z}from"./VChip-BdtDOEwz.js";import{V as Be,a as $}from"./VTabs-B7ztkrUN.js";import{V as Oe,a as ee,b as pt}from"./VTable-CJ8evfI8.js";import{V as le}from"./VAlert-C02HdytA.js";import{V as yt,a as bt}from"./VTooltip-CWhmSQeX.js";import{V as se}from"./VTextField-DpXLMPq7.js";import{p as vt,d as wt}from"./soundList-D9U-Grcp.js";import{V as be}from"./VSwitch-d4Yvphn0.js";import{V as St}from"./VMenu-DqtPWEMI.js";import{a0 as De}from"./vendor-vuetify-rtu3DHX4.js";import{V as Ue}from"./VContainer-BisEDTd3.js";import{g as Dt,j as Ne,o as xt,a as Pe,l as kt}from"./socketClient-DJ8u9nXv.js";import{c as Ct}from"./deviceEvents-Wy8_E1wQ.js";import{V as Tt,a as _t}from"./VAppBarTitle-q97S07ao.js";import{V as Mt,a as Et}from"./VRow-BiiRXDj9.js";const Rt={__name:"AsyncLoadingPlaceholder",props:{height:{type:String,default:"120px"}},setup(t){return(e,i)=>(c(),f("div",{class:"async-loading-placeholder d-flex justify-center align-center",style:P({minHeight:t.height})},[o(Ce,{indeterminate:"",color:"primary",size:"28",width:"2"})],4))}},me=H(Rt,[["__scopeId","data-v-c297c78c"]]),It={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,i=new Date(t.getFullYear(),t.getMonth(),t.getDate()),l=new Date(e.getFullYear(),e.getMonth(),e.getDate()),s=i.getTime()-l.getTime(),n=Math.round(s/(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 d=l.getDay()||7,m=new Date(l);m.setDate(l.getDate()-d+1);const p=new Date(l);if(p.setDate(l.getDate()+(7-d)),i>=m&&i<=p)return["周日","周一","周二","周三","周四","周五","周六"][t.getDay()];const g=t.getMonth()+1,S=t.getDate();return`${g}月${S}日`}}};function Vt(t,e,i,l,s,n){return c(),f("span",null,h(n.displayTime),1)}const je=H(It,[["render",Vt]]),xe=at("exam",{state:()=>({examList:[],exams:{},loadingList:!1,loadingDetails:{}}),actions:{async fetchExamList(){if(!this.loadingList){this.loadingList=!0;try{const t=await R.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 R.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=[],i=new Date,l=new Date(i.getTime()+2*24*60*60*1e3),s=this.examList.slice(0,t);for(const n of s){let d=this.exams[n.id];d||(d=await this.fetchExam(n.id)),d&&d.examInfos&&Array.isArray(d.examInfos)&&d.examInfos.some(p=>{const g=new Date(p.start);return g>=i&&g<=l})&&e.push({id:n.id,...d})}return e}}}),Nt={name:"ConciseExamCard",components:{RelativeTimeDisplay:je},props:{examId:{type:String,required:!0},contentStyle:{type:Object,default:()=>({})},readonly:{type:Boolean,default:!1}},computed:{...lt(xe,["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((l,s)=>new Date(l.start)-new Date(s.start)),e=[];let i=null;return t.forEach(l=>{const n=new Date(l.start).toDateString();(!i||i.key!==n)&&(i={key:n,date:l.start,infos:[]},e.push(i)),i.infos.push(l)}),e}},mounted(){this.fetchExam(this.examId)},methods:{...rt(xe,["fetchExam"]),formatTimeOnly(t){if(!t)return"";try{const e=new Date(t),i=e.getHours().toString().padStart(2,"0"),l=e.getMinutes().toString().padStart(2,"0");return`${i}:${l}`}catch{return""}},isPast(t){return t?new Date(t)t.$emit("click"))},{default:a(()=>[o(I,{class:"d-flex align-center py-2 px-3 bg-primary-lighten-5 text-subtitle-1 font-weight-bold"},{default:a(()=>{var m;return[r("span",Pt,h(((m=n.exam)==null?void 0:m.examName)||"加载中..."),1)]}),_:1}),o(T,{class:"flex-grow-1 pa-4 overflow-y-auto",style:P(i.contentStyle)},{default:a(()=>[n.loading?(c(),f("div",At,[o(Ce,{indeterminate:"",size:"24",color:"primary"})])):n.exam?(c(),f("div",Lt,[(c(!0),f(k,null,M(n.groupedExamInfos,(m,p)=>(c(),f("div",{key:p,class:"mb-3"},[r("div",zt,[o(d,{time:m.date},null,8,["time"])]),(c(!0),f(k,null,M(m.infos,(g,S)=>(c(),f("div",{key:S,class:O(["d-flex align-center justify-space-between py-1 border-b-sm",{"border-none":S===m.infos.length-1,"text-grey":n.isPast(g.end)}])},[r("div",Ft,h(g.name),1),r("div",Bt,h(n.formatTimeOnly(g.start))+" - "+h(n.formatTimeOnly(g.end)),1)],2))),128))]))),128))])):(c(),f("div",Ot," 无法加载 "))]),_:1},8,["style"])]),_:1})}const He=H(Nt,[["render",Ut],["__scopeId","data-v-cb5c226a"]]),jt=["6IO4","5Lmz","6JCd6I6J","5rer","5aW4"],Ht=jt.map(t=>Fe.decode(t)),Ae=.75,Wt={name:"HitokotoCard",data(){return{enabled:!1,refreshInterval:60,kvConfig:{sources:["zhaoyu"],sensitiveWords:[],hitokotoCategories:[]},sentence:"",author:"",origin:"",loading:!1,timer:null,unwatch:null,fontSize:28}},computed:{contentStyle(){return{"font-size":`${this.fontSize*Ae}px`,"white-space":"pre-wrap","line-height":"1.6","text-align":"left"}},authorStyle(){return{"font-size":`${this.fontSize*Ae*.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=ne.getSetting("hitokoto.enabled"),this.refreshInterval=ne.getSetting("hitokoto.refreshInterval"),this.fontSize=ne.getSetting("font.size")},async loadKvSettings(){try{const t=await R.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(i=>i.trim()).filter(i=>i):[],jinrishiciToken:e.jinrishiciToken,hitokotoCategories:Array.isArray(e.hitokotoCategories)?e.hitokotoCategories:[]})}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 i=null,l="",s="",n="";if(e==="hitokoto"){const d=new URLSearchParams,m=this.kvConfig.hitokotoCategories;Array.isArray(m)&&m.length>0&&m.forEach(S=>d.append("c",S));const p="https://v1.hitokoto.cn/"+(d.toString()?"?"+d.toString():"");i=(await ye.get(p)).data,l=i.hitokoto,s=i.from_who,n=i.from}else if(e==="zhaoyu"){const d=await ye.get("https://hub.saintic.com/openservice/sentence/all.json");d.data.success&&(i=d.data.data,l=i.sentence||i.content||i.name,s=i.author,n=i.name||i.origin)}else if(e==="jinrishici")if(this.kvConfig.jinrishiciToken){const d=await ye.get("https://v2.jinrishici.com/one.json?client=npm-sdk/1.0&X-User-Token="+encodeURIComponent(this.kvConfig.jinrishiciToken),{});d.data.status==="success"&&(i=d.data.data,l=i.content,s=i.origin.author,n=i.origin.title)}else return console.warn("Jinrishici token missing. Please enable it in settings to generate a token."),this.loading=!1,this.fetchSentence();if(l){if([...Ht,...this.kvConfig.sensitiveWords].some(p=>p&&l.includes(p)))return this.loading=!1,this.fetchSentence();this.sentence=l,this.author=s||"",this.origin=n||"未知"}}catch(t){console.error("Failed to fetch sentence",t),this.sentence="获取失败",this.author="",this.origin=""}finally{this.loading=!1}}}}},Gt={key:0,class:"mr-2"},Kt={key:1};function qt(t,e,i,l,s,n){return c(),v(_,{class:"hitokoto-card",elevation:"2",border:"",rounded:"xl",loading:s.loading,height:"100%",onClick:n.fetchSentence},{default:a(()=>[o(T,{class:"pa-6 d-flex flex-column justify-center",style:{height:"100%"}},{default:a(()=>[r("div",{class:"font-weight-medium mb-4 serif-font",style:P(n.contentStyle)},h(s.sentence),5),r("div",{class:"text-medium-emphasis serif-font",style:P(n.authorStyle)},[s.author?(c(),f("span",Gt,h(s.author),1)):w("",!0),s.origin?(c(),f("span",Kt,"《"+h(s.origin)+"》",1)):w("",!0)],4)]),_:1})]),_:1},8,["loading","onClick"])}const We=H(Wt,[["render",qt],["__scopeId","data-v-84a0a110"]]),_e=30,Y=50,te=-50,he=500,de=6,ce=-100,Ge=0,Yt=-90,Jt=40;function Xt(t){let e=0,i=0;for(let s=0;si&&(i=d),e+=n*n}return{rms:Math.sqrt(e/Math.max(1,t.length)),peak:i}}function Zt(t){const e=Math.max(1e-12,t),i=20*Math.log10(e);return Math.max(ce,Math.min(Ge,i))}function ve(t){const e=Math.max(1e-12,t.rms),i=Math.max(1e-12,t.baselineRms),l=t.baselineDb+20*Math.log10(e/i);return Math.max(20,Math.min(100,l))}function Le(t){if(t.length===0)return ce;const i=t.reduce((s,n)=>s+Math.pow(10,n/10),0)/t.length,l=10*Math.log10(Math.max(i,1e-12));return Math.max(ce,Math.min(Ge,l))}function ie(t,e){if(t.length===0)return ce;const i=t.map(p=>Math.pow(10,p/20));i.sort((p,g)=>p-g);const l=(i.length-1)*e,s=Math.floor(l),n=Math.ceil(l),d=l-s,m=s===n?i[s]:i[s]*(1-d)+i[n]*d;return 20*Math.log10(Math.max(m,1e-12))}function we(t){return Math.max(0,Math.min(1,t))}const ke={maxLevelDb:55,baselineDb:Jt,showRealtimeDb:!0,avgWindowSec:1,sliceSec:_e,frameMs:Y,scoreThresholdDbfs:te,segmentMergeGapMs:he,maxSegmentsPerMin:de,alertSoundEnabled:!1},Me="noise-control-settings",ue="NoiseControlSettingsUpdated";function Ee(){try{const t=localStorage.getItem(Me);if(t)return{...ke,...JSON.parse(t)}}catch(t){console.warn("Failed to load settings",t)}return{...ke}}function Ke(t){const i={...Ee(),...t};i.sliceSec=_e,i.frameMs=Y,i.scoreThresholdDbfs=te,i.segmentMergeGapMs=he,i.maxSegmentsPerMin=de,localStorage.setItem(Me,JSON.stringify(i)),window.dispatchEvent(new CustomEvent(ue,{detail:i}))}function Qt(){localStorage.removeItem(Me),window.dispatchEvent(new CustomEvent(ue,{detail:ke}))}function $t(t){const e=i=>t(i);return window.addEventListener(ue,e),()=>window.removeEventListener(ue,e)}function ze(t,e){const i=Math.max(0,t.p50Dbfs-te),l=we(i/6),s=we(t.overRatioDbfs/.3),n=t.sampledDurationMs&&t.sampledDurationMs>0?t.sampledDurationMs:e,d=Math.max(1e-6,n/6e4),m=t.segmentCount/d,p=we(m/Math.max(1e-6,de)),S=100*(1-(.4*l+.3*s+.3*p));return{score:Math.max(0,Math.min(100,Math.round(S*10)/10)),scoreDetail:{sustainedPenalty:l,timePenalty:s,segmentPenalty:p,thresholdsUsed:{scoreThresholdDbfs:te,segmentMergeGapMs:he,maxSegmentsPerMin:de},sustainedLevelDbfs:t.p50Dbfs,overRatioDbfs:t.overRatioDbfs,segmentCount:t.segmentCount,minutes:d,durationMs:e,sampledDurationMs:t.sampledDurationMs,coverageRatio:t.sampledDurationMs?t.sampledDurationMs/e:1}}}const es=()=>Math.random().toString(36).substring(2,15);class ts{constructor(){C(this,"audioContext",null);C(this,"analyser",null);C(this,"stream",null);C(this,"sourceNode",null);C(this,"status","initializing");C(this,"listeners",new Set);C(this,"animationFrameId",null);C(this,"lastFrameTime",0);C(this,"baselineDb",40);C(this,"baselineRms",Math.pow(10,-60/20));C(this,"lastRms",0);C(this,"calibrationBuffer",[]);C(this,"isCalibrating",!1);C(this,"calibrationTargetDb",0);C(this,"calibrationCallback",null);C(this,"settingsUnsubscribe",null);C(this,"warmupFramesRemaining",0);C(this,"ringBuffer",[]);C(this,"ringBufferCapacity",200);C(this,"currentSliceStart",0);C(this,"sliceDbfsValues",[]);C(this,"sliceAboveThresholdDuration",0);C(this,"sliceFramesTotal",0);C(this,"sliceSampledDuration",0);C(this,"isAboveThreshold",!1);C(this,"segmentCount",0);C(this,"lastSegmentEndTs",0);C(this,"lastProcessedFrameTs",null);C(this,"gapCount",0);C(this,"maxGapMs",0);C(this,"cachedCurrentScore");C(this,"cachedCurrentScoreDetail");C(this,"lastScoreCalcTime",0);C(this,"lastCompletedSlice",null);C(this,"loop",()=>{if(this.status!=="active"||!this.analyser)return;const e=performance.now();e-this.lastFrameTime>=Y&&(this.processFrame(e),this.lastFrameTime=e),this.animationFrameId=requestAnimationFrame(this.loop)});this.status="paused";const e=Ee();this.updateLocalSettings(e),this.settingsUnsubscribe=$t(i=>{this.updateLocalSettings(i.detail)})}updateLocalSettings(e){this.baselineDb=e.baselineDb,e.baselineRms&&e.baselineRms>0&&(this.baselineRms=e.baselineRms)}calibrate(e,i){if(this.status!=="active"){i==null||i(!1,"请先启动监测");return}this.isCalibrating=!0,this.calibrationTargetDb=e,this.calibrationBuffer=[],this.calibrationCallback=i||null,console.log(`Starting calibration to ${e}dB...`)}processCalibrationFrame(e){var l;if(!this.isCalibrating)return;this.calibrationBuffer.push(e);const i=3e3/Y;if(this.calibrationBuffer.length>=i){const n=this.calibrationBuffer.reduce((d,m)=>d+m,0)/this.calibrationBuffer.length;this.isCalibrating=!1,this.baselineRms=n,this.baselineDb=this.calibrationTargetDb,Ke({baselineDb:this.calibrationTargetDb,baselineRms:n}),console.log(`Calibration complete: RMS ${n.toFixed(6)} -> ${this.calibrationTargetDb}dB`),(l=this.calibrationCallback)==null||l.call(this,!0,`校准完成!平均RMS: ${n.toFixed(6)}`),this.calibrationCallback=null}}subscribe(e){return this.listeners.add(e),this.emit(),()=>this.listeners.delete(e)}emit(){const e=this.ringBuffer.length>0?this.ringBuffer[this.ringBuffer.length-1]:null,i={status:this.status,currentDbfs:(e==null?void 0:e.dbfs)??-100,currentDisplayDb:(e==null?void 0:e.displayDb)??20,ringBuffer:[...this.ringBuffer],lastSlice:this.lastCompletedSlice,currentScore:this.cachedCurrentScore,currentScoreDetail:this.cachedCurrentScoreDetail};this.listeners.forEach(l=>l(i))}async start(){if(this.status!=="active")try{this.status="initializing",this.warmupFramesRemaining=10,this.emit(),this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.stream=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1}}),this.sourceNode=this.audioContext.createMediaStreamSource(this.stream);const e=this.audioContext.createBiquadFilter();e.type="highpass",e.frequency.value=80;const i=this.audioContext.createBiquadFilter();i.type="lowpass",i.frequency.value=8e3,this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=2048,this.analyser.smoothingTimeConstant=0,this.sourceNode.connect(e),e.connect(i),i.connect(this.analyser),this.status="active",this.resetSlice(),this.loop()}catch(e){console.error("Mic Error",e),this.status="permission-denied",this.emit()}}stop(){var e,i;this.status!=="paused"&&(this.sliceDbfsValues.length>0&&this.finalizeSlice(),this.status="paused",this.animationFrameId&&cancelAnimationFrame(this.animationFrameId),(e=this.stream)==null||e.getTracks().forEach(l=>l.stop()),(i=this.audioContext)==null||i.close(),this.audioContext=null,this.analyser=null,this.stream=null,this.emit())}processFrame(e){if(!this.analyser)return;if(this.warmupFramesRemaining>0){this.warmupFramesRemaining--;return}const i=new Float32Array(this.analyser.fftSize);this.analyser.getFloatTimeDomainData(i);const l=Date.now(),{rms:s}=Xt(i);this.lastRms=s,this.isCalibrating&&this.processCalibrationFrame(s);const n=Zt(s),d=ve({rms:s,baselineRms:this.baselineRms,baselineDb:this.baselineDb});this.ringBuffer.push({t:l,dbfs:n,displayDb:d}),this.ringBuffer.length>this.ringBufferCapacity&&this.ringBuffer.shift();let m=Y;if(this.lastProcessedFrameTs!==null){const p=l-this.lastProcessedFrameTs,g=Math.max(1e3,Y*5);p>g?(this.gapCount++,this.maxGapMs=Math.max(this.maxGapMs,p),m=Y):m=p}if(this.lastProcessedFrameTs=l,n>=Yt){this.sliceDbfsValues.push(n),this.sliceFramesTotal++,this.sliceSampledDuration+=m;const p=n>te;if(p&&(this.sliceAboveThresholdDuration+=m),p){if(!this.isAboveThreshold){const g=Date.now()-this.lastSegmentEndTs;(this.lastSegmentEndTs===0||g>he)&&this.segmentCount++,this.isAboveThreshold=!0}}else this.isAboveThreshold&&(this.isAboveThreshold=!1,this.lastSegmentEndTs=Date.now())}e-this.lastScoreCalcTime>250&&(this.updateInterimScore(),this.lastScoreCalcTime=e),this.emit(),Date.now()-this.currentSliceStart>=_e*1e3&&this.finalizeSlice()}updateInterimScore(){if(this.sliceDbfsValues.length<10){this.cachedCurrentScore=100,this.cachedCurrentScoreDetail=void 0;return}Le(this.sliceDbfsValues),Math.max(...this.sliceDbfsValues);const e=ie(this.sliceDbfsValues,.5);ie(this.sliceDbfsValues,.95);const i=this.sliceSampledDuration>0?this.sliceAboveThresholdDuration/this.sliceSampledDuration:0,l={p50Dbfs:e,overRatioDbfs:i,segmentCount:this.segmentCount,sampledDurationMs:this.sliceSampledDuration,gapCount:this.gapCount,maxGapMs:this.maxGapMs},s=Date.now()-this.currentSliceStart,{score:n,scoreDetail:d}=ze(l,s);this.cachedCurrentScore=n,this.cachedCurrentScoreDetail=d}resetSlice(){this.currentSliceStart=Date.now(),this.sliceDbfsValues=[],this.sliceAboveThresholdDuration=0,this.sliceFramesTotal=0,this.sliceSampledDuration=0,this.segmentCount=0,this.isAboveThreshold=!1,this.lastSegmentEndTs=0,this.gapCount=0,this.maxGapMs=0,this.lastProcessedFrameTs=null,this.cachedCurrentScore=100,this.cachedCurrentScoreDetail=void 0}finalizeSlice(){if(this.sliceDbfsValues.length===0){this.resetSlice();return}const e=Le(this.sliceDbfsValues),i=Math.max(...this.sliceDbfsValues),l=ie(this.sliceDbfsValues,.5),s=ie(this.sliceDbfsValues,.95),n=this.sliceSampledDuration>0?this.sliceAboveThresholdDuration/this.sliceSampledDuration:0,d=ve({rms:Math.pow(10,e/20),baselineRms:this.baselineRms,baselineDb:this.baselineDb}),m=ve({rms:Math.pow(10,s/20),baselineRms:this.baselineRms,baselineDb:this.baselineDb}),p={avgDbfs:e,maxDbfs:i,p50Dbfs:l,p95Dbfs:s,overRatioDbfs:n,segmentCount:this.segmentCount,sampledDurationMs:this.sliceSampledDuration,gapCount:this.gapCount,maxGapMs:this.maxGapMs},g=Date.now()-this.currentSliceStart,{score:S,scoreDetail:U}=ze(p,g),L={id:es(),start:this.currentSliceStart,end:Date.now(),frames:this.sliceFramesTotal,raw:p,display:{avgDb:d,p95Db:m},score:S,scoreDetail:U};this.lastCompletedSlice=L,this.saveSlice(L),this.resetSlice()}saveSlice(e){try{const i=localStorage.getItem("noise-slices-v2"),l=i?JSON.parse(i):[];l.push(e);const s=14*24*60*60*1e3,n=Date.now(),d=l.filter(m=>n-m.end1e3&&d.shift(),localStorage.setItem("noise-slices-v2",JSON.stringify(d))}catch(i){console.warn("Storage Full",i)}}getHistory(){try{const e=localStorage.getItem("noise-slices-v2");return e?JSON.parse(e):[]}catch{return[]}}clearHistory(){localStorage.removeItem("noise-slices-v2")}}const K=new ts,ss={name:"NoiseMonitorDetail",props:{modelValue:{type:Boolean,default:!1},status:{type:String,default:""},currentDb:{type:[Number,String],default:"--"},currentDbfs:{type:Number,default:0},noiseLevel:{type:String,default:"未知"},dbColor:{type:String,default:"grey"},currentScore:{type:Number,default:null},scoreDetail:{type:Object,default:null},ringBuffer:{type:Array,default:()=>[]},lastSlice:{type:Object,default:null},history:{type:Array,default:()=>[]},isMonitoring:{type:Boolean,default:!1},micPermissionState:{type:String,default:""},sessionActive:{type:Boolean,default:!1},sessionData:{type:Object,default:null},reportMeta:{type:Object,default:()=>({dates:{}})},selectedDate:{type:String,default:""},dateReports:{type:Array,default:()=>[]}},emits:["update:modelValue","start","stop","clear-history","select-date","clear-date-reports","clear-all-reports"],data(){return{activeTab:"realtime",confirmClearMode:"",waveformWidth:600,reportChartWidth:600,selectedReportIndex:0,showCalibrateDialog:!1,calibrationSettings:{},calibrateTargetDb:40,isCalibrating:!1,calibrateMessage:"",calibrateSuccess:!1,editBaselineDb:40,editBaselineRms:"",editMaxLevelDb:100}},computed:{scoreColor(){return this.currentScore===null?"grey":this.currentScore>=80?"success":this.currentScore>=60?"warning":"error"},scoreLabel(){return this.currentScore===null?"暂无评分":this.currentScore>=90?"非常安静":this.currentScore>=80?"环境良好":this.currentScore>=60?"需要注意":this.currentScore>=40?"比较嘈杂":"极度嘈杂"},alertThreshold(){var t;return((t=this.sessionConfig)==null?void 0:t.alertThresholdDb)||55},scorePenaltyItems(){if(!this.scoreDetail)return[];const t=100;return[{label:"持续",icon:"mdi-volume-high",color:"amber",percent:Math.round(this.scoreDetail.sustainedPenalty/t*100)},{label:"时长",icon:"mdi-clock-alert",color:"orange",percent:Math.round(this.scoreDetail.timePenalty/t*100)},{label:"打断",icon:"mdi-flash-alert",color:"pink",percent:Math.round(this.scoreDetail.segmentPenalty/t*100)}]},gridLines(){return[20,40,60,80].map(t=>({val:t,y:this.dbToY(t)}))},reportGridLines(){return[20,40,60,80].map(t=>({val:t,y:this.reportDbToY(t)}))},waveformPath(){if(!this.ringBuffer||this.ringBuffer.length<2)return null;const t=this.waveformWidth,e=this.ringBuffer.slice(-120),i=t/(e.length-1);return e.map((l,s)=>{const n=s*i,d=this.dbToY(l.displayDb??0);return`${s===0?"M":"L"}${n.toFixed(1)},${d.toFixed(1)}`}).join(" ")},waveformFillPath(){return this.waveformPath?`${this.waveformPath} L${this.waveformWidth},120 L0,120 Z`:null},showConfirmClear(){return this.confirmClearMode!==""},sortedDateKeys(){var t;return(t=this.reportMeta)!=null&&t.dates?Object.keys(this.reportMeta.dates).sort().reverse():[]},selectedReport(){return this.dateReports[this.selectedReportIndex]||null},reportCoverage(){var t,e,i;return!((e=(t=this.selectedReport)==null?void 0:t.samples)!=null&&e.length)||!((i=this.selectedReport)!=null&&i.duration)?0:(this.selectedReport.samples.length*2/(this.selectedReport.duration/1e3)*100).toFixed(1)},reportWaveformPath(){var l,s;if(!((s=(l=this.selectedReport)==null?void 0:l.samples)!=null&&s.length))return null;const t=this.selectedReport.samples;if(t.length<2)return null;const i=this.reportChartWidth/(t.length-1);return t.map((n,d)=>{const m=d*i,p=this.reportDbToY(n.db);return`${d===0?"M":"L"}${m.toFixed(1)},${p.toFixed(1)}`}).join(" ")},reportWaveformFillPath(){return this.reportWaveformPath?`${this.reportWaveformPath} L${this.reportChartWidth},140 L0,140 Z`:null},levelDistribution(){var d,m;if(!((m=(d=this.selectedReport)==null?void 0:d.samples)!=null&&m.length))return[{label:"安静",percent:0,color:"#4caf50"},{label:"正常",percent:0,color:"#8bc34a"},{label:"吵闹",percent:0,color:"#ff9800"},{label:"极吵",percent:0,color:"#f44336"}];const t=this.selectedReport.samples.map(p=>p.db),e=t.length;let i=0,l=0,s=0,n=0;return t.forEach(p=>{p<45?i++:p<60?l++:p<75?s++:n++}),[{label:"安静",percent:Math.round(i/e*100),color:"#4caf50"},{label:"正常",percent:Math.round(l/e*100),color:"#8bc34a"},{label:"吵闹",percent:Math.round(s/e*100),color:"#ff9800"},{label:"极吵",percent:Math.round(n/e*100),color:"#f44336"}]},reportPenaltyItems(){var e;if(!((e=this.selectedReport)!=null&&e.scorePenalties))return[];const t=this.selectedReport.scorePenalties;return[{label:"持续",color:"amber",percent:Math.min(100,Math.round(t.sustained/40*100))},{label:"时长",color:"orange",percent:Math.min(100,Math.round(t.time/30*100))},{label:"打断",color:"pink",percent:Math.min(100,Math.round(t.segment/30*100))}]}},watch:{modelValue(t){t&&this.$nextTick(()=>{this.updateWaveformWidth(),this.updateReportChartWidth()})},activeTab(){this.$nextTick(()=>{this.updateWaveformWidth(),this.updateReportChartWidth()})},selectedReportIndex(){this.$nextTick(()=>this.updateReportChartWidth())},selectedDate(){this.selectedReportIndex=0}},mounted(){this.updateWaveformWidth(),window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.updateWaveformWidth(),this.updateReportChartWidth()},updateWaveformWidth(){this.$refs.waveformContainer&&(this.waveformWidth=this.$refs.waveformContainer.offsetWidth||600)},updateReportChartWidth(){this.$refs.reportChartContainer&&(this.reportChartWidth=this.$refs.reportChartContainer.offsetWidth||600)},dbToY(t){return 120-Math.max(0,Math.min(100,t))/100*120},reportDbToY(t){return 140-Math.max(0,Math.min(100,t))/100*140},doClearReports(){this.confirmClearMode==="all"?this.$emit("clear-all-reports"):this.confirmClearMode==="date"&&this.$emit("clear-date-reports",this.selectedDate),this.confirmClearMode="",this.selectedReportIndex=0},formatDateLabel(t){if(!t)return"";const e=new Date,i=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,l=new Date(e);l.setDate(l.getDate()-1);const s=`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`;if(t===i)return"今天";if(t===s)return"昨天";const n=t.split("-");return`${parseInt(n[1])}月${parseInt(n[2])}日`},formatTime(t){const e=new Date(t);return`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`},metaScoreColor(t){return t>=80?"success":t>=60?"warning":"error"},formatFullTime(t){if(!t)return"--";const e=new Date(t);return`${e.getFullYear()}/${e.getMonth()+1}/${e.getDate()} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`},formatDuration(t){if(!t)return"0 分钟";const e=Math.floor(t/6e4),i=Math.floor(e/60),l=e%60;return i>0?`${i} 小时 ${l} 分钟`:`${l} 分钟`},formatSeconds(t){if(!t||t<0)return"0秒";const e=Math.floor(t/60),i=t%60;return e>0?`${e}分${i}秒`:`${i}秒`},reportScoreLabel(t){return t>=90?"优秀":t>=80?"良好":t>=60?"一般":t>=40?"较差":"极差"},openCalibrateDialog(){this.refreshCalibrationSettings(),this.showCalibrateDialog=!0},refreshCalibrationSettings(){const t=Ee();this.calibrationSettings=t,this.editBaselineDb=t.baselineDb,this.editBaselineRms=t.baselineRms!=null?String(t.baselineRms):"",this.editMaxLevelDb=t.maxLevelDb},doAutoCalibrate(){this.isCalibrating=!0,this.calibrateMessage="",K.calibrate(this.calibrateTargetDb,(t,e)=>{this.isCalibrating=!1,this.calibrateSuccess=t,this.calibrateMessage=e,t&&this.refreshCalibrationSettings(),setTimeout(()=>{this.calibrateMessage=""},5e3)})},saveManualCalibration(){const t={baselineDb:this.editBaselineDb,maxLevelDb:this.editMaxLevelDb},e=parseFloat(this.editBaselineRms);!isNaN(e)&&e>0&&(t.baselineRms=e),Ke(t),this.refreshCalibrationSettings()},resetCalibration(){Qt(),this.refreshCalibrationSettings()}}},is={class:"noise-dashboard pa-5"},ns={class:"d-flex align-center justify-center"},os={class:"text-center"},as={class:"noise-gauge-inner d-flex flex-column align-center justify-center"},rs={class:"noise-level-bar mt-5 mx-auto",style:{"max-width":"500px"}},ls={class:"noise-gradient-bar"},ds={class:"pa-5"},cs={class:"d-flex align-center mb-3"},us={class:"text-caption text-medium-emphasis"},ms={ref:"waveformContainer",class:"noise-waveform"},hs=["viewBox"],fs=["y1","x2","y2"],gs=["y1","x2","y2"],ps=["d"],ys=["d"],bs={class:"pa-5"},vs={class:"d-flex align-center mb-3"},ws={key:0,class:"d-flex flex-wrap ga-4"},Ss={class:"text-h6 font-weight-bold"},Ds={class:"text-subtitle-1 font-weight-bold"},xs={class:"d-flex align-center"},ks={class:"text-body-2"},Cs={class:"d-flex align-center",style:{"min-width":"140px"}},Ts={class:"text-caption font-weight-medium",style:{"min-width":"36px","text-align":"right"}},_s={key:1,class:"text-center text-medium-emphasis py-4"},Ms={class:"pa-4 d-flex align-center"},Es={key:0,class:"text-center text-medium-emphasis py-12"},Rs={class:"pa-4"},Is={class:"d-flex align-center flex-wrap ga-2 mb-3"},Vs={class:"d-flex flex-wrap ga-2"},Ns={key:0,class:"pa-4 pb-0"},Ps={class:"d-flex align-center ga-3 flex-wrap"},As={class:"text-h6 font-weight-bold"},Ls={key:1,class:"text-center text-medium-emphasis py-8"},zs={key:2,class:"pa-4 pt-3 d-flex flex-wrap ga-2"},Fs={class:"text-caption ml-1"},Bs={key:4,class:"report-content"},Os={class:"pa-5 pb-0"},Us={class:"text-h6 font-weight-bold d-flex align-center"},js={class:"pa-5"},Hs={class:"report-grid"},Ws={class:"report-stat-card"},Gs={class:"text-h6 font-weight-bold"},Ks={class:"report-stat-card"},qs={class:"text-h6 font-weight-bold"},Ys={class:"text-caption"},Js={class:"report-stat-card"},Xs={class:"text-h6 font-weight-bold"},Zs={class:"report-stat-card"},Qs={class:"text-h6 font-weight-bold"},$s={class:"report-stat-card"},ei={class:"text-h6 font-weight-bold"},ti={class:"report-stat-card"},si={class:"text-h6 font-weight-bold"},ii={class:"pa-5"},ni={ref:"reportChartContainer",class:"noise-waveform"},oi=["viewBox"],ai=["y1","x2","y2"],ri=["y1","x2","y2"],li=["d"],di=["d"],ci={class:"text-caption text-medium-emphasis mt-2"},ui={class:"pa-5"},mi={class:"d-flex flex-wrap ga-4"},hi={class:"noise-level-distribution"},fi={class:"d-flex",style:{height:"16px","border-radius":"8px",overflow:"hidden"}},gi={class:"d-flex flex-wrap ga-3 mt-3 justify-center"},pi={class:"text-caption text-medium-emphasis"},yi={class:"text-body-2 mr-3",style:{"min-width":"32px"}},bi={class:"text-body-2 font-weight-bold",style:{"min-width":"40px","text-align":"right"}},vi={class:"d-flex align-center ga-6 flex-wrap"},wi={class:"text-body-1 font-weight-bold"},Si={class:"text-body-1 font-weight-bold font-monospace"},Di={class:"text-body-1 font-weight-bold"},xi={class:"d-flex align-center mb-2"},ki={class:"d-flex align-center ga-3 mb-5 flex-wrap"},Ci={key:0,class:"text-caption text-warning"},Ti={class:"d-flex align-center mb-2"},_i={class:"d-flex align-center ga-3 mb-4 flex-wrap"};function Mi(t,e,i,l,s,n){return c(),v(B,{"model-value":i.modelValue,"max-width":"900",scrollable:"","onUpdate:modelValue":e[15]||(e[15]=d=>t.$emit("update:modelValue",d))},{default:a(()=>[o(_,{class:"rounded-xl noise-detail-card"},{default:a(()=>[o(I,{class:"d-flex align-center pa-4"},{default:a(()=>[o(x,{class:"mr-2",color:"primary"},{default:a(()=>[...e[16]||(e[16]=[u(" mdi-waveform ",-1)])]),_:1}),e[18]||(e[18]=r("span",{class:"text-h6 font-weight-bold"},"环境噪音监测",-1)),o(E),i.sessionActive?(c(),v(z,{key:0,color:"teal",size:"small",variant:"tonal",class:"mr-2"},{default:a(()=>{var d;return[o(x,{start:"",size:"12"},{default:a(()=>[...e[17]||(e[17]=[u(" mdi-record-circle ",-1)])]),_:1}),u(" "+h(((d=i.sessionData)==null?void 0:d.sessionName)||"自习中"),1)]}),_:1})):w("",!0),o(z,{color:i.isMonitoring?"success":"grey",size:"small",variant:"tonal",class:"mr-2"},{default:a(()=>[u(h(i.isMonitoring?"监测中":"已停止"),1)]),_:1},8,["color"]),o(b,{icon:"mdi-close",size:"small",variant:"text",onClick:e[0]||(e[0]=d=>t.$emit("update:modelValue",!1))})]),_:1}),o(Be,{modelValue:s.activeTab,"onUpdate:modelValue":e[1]||(e[1]=d=>s.activeTab=d),color:"primary",density:"compact",grow:""},{default:a(()=>[o($,{value:"realtime"},{default:a(()=>[o(x,{start:"",size:"18"},{default:a(()=>[...e[19]||(e[19]=[u(" mdi-pulse ",-1)])]),_:1}),e[20]||(e[20]=u(" 实时监测 ",-1))]),_:1}),o($,{value:"reports"},{default:a(()=>[o(x,{start:"",size:"18"},{default:a(()=>[...e[21]||(e[21]=[u(" mdi-chart-bar ",-1)])]),_:1}),e[22]||(e[22]=u(" 统计报告 ",-1))]),_:1})]),_:1},8,["modelValue"]),o(F),o(T,{class:"pa-0",style:{"max-height":"70vh"}},{default:a(()=>[o(Oe,{modelValue:s.activeTab,"onUpdate:modelValue":e[6]||(e[6]=d=>s.activeTab=d)},{default:a(()=>[o(ee,{value:"realtime"},{default:a(()=>[i.micPermissionState==="denied"?(c(),v(le,{key:0,type:"error",variant:"tonal",class:"ma-4 mb-0",prominent:""},{prepend:a(()=>[o(x,{icon:"mdi-microphone-off",size:"28"})]),default:a(()=>[e[23]||(e[23]=r("div",{class:"text-subtitle-2 font-weight-bold mb-1"}," 麦克风权限被拒绝 ",-1)),e[24]||(e[24]=r("div",{class:"text-body-2"}," 浏览器已拒绝麦克风访问,无法进行噪音监测。请在浏览器地址栏左侧的锁图标中重新授予麦克风权限,然后刷新页面。 ",-1))]),_:1})):i.micPermissionState==="unavailable"?(c(),v(le,{key:1,type:"warning",variant:"tonal",class:"ma-4 mb-0",prominent:""},{prepend:a(()=>[o(x,{icon:"mdi-microphone-question",size:"28"})]),default:a(()=>[e[25]||(e[25]=r("div",{class:"text-subtitle-2 font-weight-bold mb-1"}," 未检测到麦克风 ",-1)),e[26]||(e[26]=r("div",{class:"text-body-2"}," 当前设备未检测到麦克风硬件,无法进行噪音监测。请连接麦克风后刷新页面重试。 ",-1))]),_:1})):w("",!0),r("div",is,[r("div",ns,[r("div",os,[r("div",{class:O(["noise-gauge-ring",`ring-${i.dbColor}`])},[r("div",as,[r("span",{class:O(["noise-gauge-value font-weight-bold",`text-${i.dbColor}`])},h(i.currentDb),3),e[27]||(e[27]=r("span",{class:"text-caption text-medium-emphasis"},"dB",-1))])],2),r("div",{class:O(["text-subtitle-1 font-weight-medium mt-3",`text-${i.dbColor}`])},h(i.noiseLevel),3)])]),r("div",rs,[e[28]||(e[28]=r("div",{class:"d-flex justify-space-between text-caption text-medium-emphasis mb-1"},[r("span",null,"0 dB"),r("span",null,"50"),r("span",null,"100 dB")],-1)),r("div",ls,[i.isMonitoring&&typeof i.currentDb=="number"?(c(),f("div",{key:0,class:"noise-indicator",style:P({left:`${Math.min(100,Math.max(0,i.currentDb))}%`})},null,4)):w("",!0)])])]),o(F),r("div",ds,[r("div",cs,[o(x,{class:"mr-2",size:"18",color:"primary"},{default:a(()=>[...e[29]||(e[29]=[u(" mdi-chart-line ",-1)])]),_:1}),e[30]||(e[30]=r("span",{class:"text-subtitle-2 font-weight-medium"},"噪音走势",-1)),o(E),r("span",us," 最近 "+h(i.ringBuffer.length)+" 个采样 ",1)]),r("div",ms,[(c(),f("svg",{width:"100%",height:"120",viewBox:`0 0 ${s.waveformWidth} 120`,preserveAspectRatio:"none"},[(c(!0),f(k,null,M(n.gridLines,d=>(c(),f("line",{key:`grid-${d.val}`,x1:"0",y1:d.y,x2:s.waveformWidth,y2:d.y,stroke:"currentColor","stroke-opacity":"0.08","stroke-dasharray":"4,4"},null,8,fs))),128)),n.alertThreshold?(c(),f("line",{key:0,x1:"0",y1:n.dbToY(n.alertThreshold),x2:s.waveformWidth,y2:n.dbToY(n.alertThreshold),stroke:"rgb(var(--v-theme-error))","stroke-opacity":"0.5","stroke-dasharray":"6,3","stroke-width":"1.5"},null,8,gs)):w("",!0),n.waveformPath?(c(),f("path",{key:1,d:n.waveformFillPath,fill:"url(#waveGradient-rt)",opacity:"0.3"},null,8,ps)):w("",!0),n.waveformPath?(c(),f("path",{key:2,d:n.waveformPath,fill:"none",stroke:"rgb(var(--v-theme-primary))","stroke-width":"2","stroke-linejoin":"round","stroke-linecap":"round"},null,8,ys)):w("",!0),e[31]||(e[31]=r("defs",null,[r("linearGradient",{id:"waveGradient-rt",x1:"0",y1:"0",x2:"0",y2:"1"},[r("stop",{offset:"0%","stop-color":"rgb(var(--v-theme-primary))","stop-opacity":"0.4"}),r("stop",{offset:"100%","stop-color":"rgb(var(--v-theme-primary))","stop-opacity":"0.02"})])],-1))],8,hs))],512)]),o(F),r("div",bs,[r("div",vs,[o(x,{class:"mr-2",size:"18",color:"amber"},{default:a(()=>[...e[32]||(e[32]=[u(" mdi-star-circle ",-1)])]),_:1}),e[33]||(e[33]=r("span",{class:"text-subtitle-2 font-weight-medium"},"实时评分",-1))]),i.currentScore!==null?(c(),f("div",ws,[o(_,{variant:"tonal",color:n.scoreColor,rounded:"xl",class:"flex-grow-1","min-width":"200"},{default:a(()=>[o(T,{class:"d-flex align-center pa-4"},{default:a(()=>[o(Ce,{"model-value":i.currentScore,color:n.scoreColor,size:56,width:5,class:"mr-4"},{default:a(()=>[r("span",Ss,h(i.currentScore),1)]),_:1},8,["model-value","color"]),r("div",null,[r("div",Ds,h(n.scoreLabel),1),e[34]||(e[34]=r("div",{class:"text-caption text-medium-emphasis"}," 综合评分 (0-100) ",-1))])]),_:1})]),_:1},8,["color"]),i.scoreDetail?(c(),v(_,{key:0,variant:"outlined",rounded:"xl",class:"flex-grow-1","min-width":"200"},{default:a(()=>[o(T,{class:"pa-4"},{default:a(()=>[e[35]||(e[35]=r("div",{class:"text-subtitle-2 font-weight-medium mb-2"}," 扣分扣因 ",-1)),(c(!0),f(k,null,M(n.scorePenaltyItems,d=>(c(),f("div",{key:d.label,class:"d-flex align-center justify-space-between mb-1"},[r("div",xs,[o(x,{color:d.color,size:"14",class:"mr-2"},{default:a(()=>[u(h(d.icon),1)]),_:2},1032,["color"]),r("span",ks,h(d.label),1)]),r("div",Cs,[o(re,{"model-value":d.percent,color:d.color,height:"6",rounded:"",class:"mr-2"},null,8,["model-value","color"]),r("span",Ts,h(d.percent)+"% ",1)])]))),128))]),_:1})]),_:1})):w("",!0)])):(c(),f("div",_s,[o(x,{size:"32",class:"mb-2"},{default:a(()=>[...e[36]||(e[36]=[u(" mdi-chart-arc ",-1)])]),_:1}),e[37]||(e[37]=r("div",{class:"text-body-2"}," 开始监测后将显示评分 ",-1))]))]),o(F),r("div",Ms,[i.isMonitoring?(c(),v(b,{key:1,color:"error",variant:"tonal","prepend-icon":"mdi-stop",size:"large",class:"px-6",onClick:e[3]||(e[3]=d=>t.$emit("stop"))},{default:a(()=>[...e[39]||(e[39]=[u(" 停止监测 ",-1)])]),_:1})):(c(),v(b,{key:0,color:"success",variant:"elevated","prepend-icon":"mdi-play",size:"large",class:"px-6",disabled:i.micPermissionState==="denied"||i.micPermissionState==="unavailable",onClick:e[2]||(e[2]=d=>t.$emit("start"))},{default:a(()=>[...e[38]||(e[38]=[u(" 开始监测 ",-1)])]),_:1},8,["disabled"])),o(E),o(b,{variant:"tonal",color:"deep-purple","prepend-icon":"mdi-crosshairs-gps",onClick:n.openCalibrateDialog},{default:a(()=>[...e[40]||(e[40]=[u(" 校准 ",-1)])]),_:1},8,["onClick"])])]),_:1}),o(ee,{value:"reports"},{default:a(()=>[n.sortedDateKeys.length===0?(c(),f("div",Es,[o(x,{size:"48",class:"mb-3"},{default:a(()=>[...e[41]||(e[41]=[u(" mdi-chart-box-outline ",-1)])]),_:1}),e[42]||(e[42]=r("div",{class:"text-body-1"}," 暂无统计报告 ",-1)),e[43]||(e[43]=r("div",{class:"text-caption mt-1"}," 在配置的晚自习时间段内,系统会自动记录并生成报告 ",-1))])):(c(),f(k,{key:1},[r("div",Rs,[r("div",Is,[o(x,{size:"18",color:"teal",class:"mr-1"},{default:a(()=>[...e[44]||(e[44]=[u(" mdi-calendar ",-1)])]),_:1}),e[46]||(e[46]=r("span",{class:"text-subtitle-2 font-weight-medium"},"选择日期",-1)),o(E),o(b,{color:"error",size:"x-small",variant:"text","prepend-icon":"mdi-delete-sweep",onClick:e[4]||(e[4]=d=>s.confirmClearMode="all")},{default:a(()=>[...e[45]||(e[45]=[u(" 清空全部 ",-1)])]),_:1})]),r("div",Vs,[(c(!0),f(k,null,M(n.sortedDateKeys,d=>(c(),v(z,{key:d,color:i.selectedDate===d?"primary":void 0,variant:i.selectedDate===d?"elevated":"tonal",size:"small",onClick:m=>t.$emit("select-date",d)},{default:a(()=>[o(x,{start:"",size:"14"},{default:a(()=>[...e[47]||(e[47]=[u(" mdi-calendar-blank ",-1)])]),_:1}),u(" "+h(n.formatDateLabel(d))+" ",1),o(yt,{content:i.reportMeta.dates[d].count,color:"primary",inline:"",class:"ml-1"},null,8,["content"])]),_:2},1032,["color","variant","onClick"]))),128))])]),o(F),i.selectedDate&&i.reportMeta.dates[i.selectedDate]?(c(),f("div",Ns,[r("div",Ps,[r("div",As,h(n.formatDateLabel(i.selectedDate)),1),o(z,{size:"small",color:n.metaScoreColor(i.reportMeta.dates[i.selectedDate].avgScore),variant:"tonal"},{default:a(()=>[u(" 均分 "+h(i.reportMeta.dates[i.selectedDate].avgScore),1)]),_:1},8,["color"]),o(z,{size:"small",variant:"tonal"},{default:a(()=>[u(h(i.reportMeta.dates[i.selectedDate].count)+" 条记录 ",1)]),_:1}),o(E),o(b,{color:"error",size:"x-small",variant:"text","prepend-icon":"mdi-delete",onClick:e[5]||(e[5]=d=>s.confirmClearMode="date")},{default:a(()=>[...e[48]||(e[48]=[u(" 清空当日 ",-1)])]),_:1})])])):w("",!0),i.dateReports.length===0&&i.selectedDate?(c(),f("div",Ls,[o(x,{size:"32"},{default:a(()=>[...e[49]||(e[49]=[u(" mdi-file-document-outline ",-1)])]),_:1}),e[50]||(e[50]=r("div",{class:"text-body-2 mt-1"}," 该日期暂无报告数据 ",-1))])):w("",!0),i.dateReports.length>0?(c(),f("div",zs,[(c(!0),f(k,null,M(i.dateReports,(d,m)=>(c(),v(z,{key:d.startTime,color:s.selectedReportIndex===m?"teal":void 0,variant:s.selectedReportIndex===m?"elevated":"outlined",size:"small",onClick:p=>s.selectedReportIndex=m},{default:a(()=>[u(h(d.sessionName)+" ",1),r("span",Fs,h(n.formatTime(d.startTime)),1)]),_:2},1032,["color","variant","onClick"]))),128))])):w("",!0),n.selectedReport?(c(),v(F,{key:3})):w("",!0),n.selectedReport?(c(),f("div",Bs,[r("div",Os,[r("div",Us,h(n.selectedReport.sessionName)+" 统计报告 ",1)]),r("div",js,[e[57]||(e[57]=r("div",{class:"d-flex align-center mb-3"},[r("span",{class:"report-section-line bg-teal"}),r("span",{class:"text-subtitle-2 font-weight-bold ml-2"},"报告概览")],-1)),r("div",Hs,[r("div",Ws,[e[51]||(e[51]=r("div",{class:"text-caption text-medium-emphasis"}," 时长 ",-1)),r("div",Gs,h(n.formatDuration(n.selectedReport.duration)),1)]),r("div",Ks,[e[52]||(e[52]=r("div",{class:"text-caption text-medium-emphasis"}," 表现 ",-1)),r("div",qs,[u(h(n.selectedReport.score)+" 分 ",1),r("span",Ys,"("+h(n.reportScoreLabel(n.selectedReport.score))+")",1)])]),r("div",Js,[e[53]||(e[53]=r("div",{class:"text-caption text-medium-emphasis"}," 峰值 ",-1)),r("div",Xs,h(n.selectedReport.maxDb)+" dB ",1)]),r("div",Zs,[e[54]||(e[54]=r("div",{class:"text-caption text-medium-emphasis"}," 平均 ",-1)),r("div",Qs,h(n.selectedReport.avgDb)+" dB ",1)]),r("div",$s,[e[55]||(e[55]=r("div",{class:"text-caption text-medium-emphasis"}," 超阈时长 ",-1)),r("div",ei,h(n.formatSeconds(n.selectedReport.overThresholdDuration)),1)]),r("div",ti,[e[56]||(e[56]=r("div",{class:"text-caption text-medium-emphasis"}," 打断次数 ",-1)),r("div",si,h(n.selectedReport.segmentCount),1)])])]),r("div",ii,[e[59]||(e[59]=r("div",{class:"d-flex align-center mb-3"},[r("span",{class:"report-section-line bg-teal"}),r("span",{class:"text-subtitle-2 font-weight-bold ml-2"},"噪音走势")],-1)),r("div",ni,[(c(),f("svg",{width:"100%",height:"140",viewBox:`0 0 ${s.reportChartWidth} 140`,preserveAspectRatio:"none"},[(c(!0),f(k,null,M(n.reportGridLines,d=>(c(),f("line",{key:`rg-${d.val}`,x1:"0",y1:d.y,x2:s.reportChartWidth,y2:d.y,stroke:"currentColor","stroke-opacity":"0.1","stroke-dasharray":"4,4"},null,8,ai))),128)),r("line",{x1:"0",y1:n.reportDbToY(n.selectedReport.alertThresholdDb||55),x2:s.reportChartWidth,y2:n.reportDbToY(n.selectedReport.alertThresholdDb||55),stroke:"rgb(var(--v-theme-error))","stroke-opacity":"0.6","stroke-dasharray":"6,3","stroke-width":"1.5"},null,8,ri),n.reportWaveformPath?(c(),f("path",{key:0,d:n.reportWaveformFillPath,fill:"url(#reportGrad)",opacity:"0.3"},null,8,li)):w("",!0),n.reportWaveformPath?(c(),f("path",{key:1,d:n.reportWaveformPath,fill:"none",stroke:"rgb(var(--v-theme-primary))","stroke-width":"1.5","stroke-linejoin":"round"},null,8,di)):w("",!0),e[58]||(e[58]=r("defs",null,[r("linearGradient",{id:"reportGrad",x1:"0",y1:"0",x2:"0",y2:"1"},[r("stop",{offset:"0%","stop-color":"rgb(var(--v-theme-primary))","stop-opacity":"0.3"}),r("stop",{offset:"100%","stop-color":"rgb(var(--v-theme-primary))","stop-opacity":"0.02"})])],-1))],8,oi))],512),r("div",ci," 统计范围:"+h(n.formatFullTime(n.selectedReport.startTime))+" - "+h(n.formatFullTime(n.selectedReport.endTime))+"; 噪音报警阈值: "+h(n.selectedReport.alertThresholdDb||55)+" dB; 覆盖率: "+h(n.reportCoverage)+"% ",1)]),r("div",ui,[e[62]||(e[62]=r("div",{class:"d-flex align-center mb-3"},[r("span",{class:"report-section-line bg-teal"}),r("span",{class:"text-subtitle-2 font-weight-bold ml-2"},"更多统计")],-1)),r("div",mi,[o(_,{variant:"outlined",rounded:"xl",class:"flex-grow-1","min-width":"280"},{default:a(()=>[o(T,{class:"pa-4"},{default:a(()=>[e[60]||(e[60]=r("div",{class:"text-subtitle-2 font-weight-medium mb-3"}," 噪音等级分布 ",-1)),r("div",hi,[r("div",fi,[(c(!0),f(k,null,M(n.levelDistribution,d=>(c(),f("div",{key:d.label,style:P({width:`${d.percent}%`,backgroundColor:d.color,minWidth:d.percent>0?"4px":"0"})},null,4))),128))]),r("div",gi,[(c(!0),f(k,null,M(n.levelDistribution,d=>(c(),f("div",{key:`leg-${d.label}`,class:"d-flex align-center"},[r("span",{class:"d-inline-block mr-1",style:P({width:"10px",height:"10px",borderRadius:"2px",backgroundColor:d.color})},null,4),r("span",pi,h(d.label)+" ("+h(d.percent)+"%) ",1)]))),128))])])]),_:1})]),_:1}),o(_,{variant:"outlined",rounded:"xl",class:"flex-grow-1","min-width":"280"},{default:a(()=>[o(T,{class:"pa-4"},{default:a(()=>[e[61]||(e[61]=r("div",{class:"text-subtitle-2 font-weight-medium mb-3"}," 扣分扣因 (越长扣分越多) ",-1)),(c(!0),f(k,null,M(n.reportPenaltyItems,d=>(c(),f("div",{key:d.label,class:"d-flex align-center mb-2"},[r("span",yi,h(d.label),1),o(re,{"model-value":d.percent,color:d.color,height:"10",rounded:"",class:"flex-grow-1 mr-2"},null,8,["model-value","color"]),r("span",bi,h(d.percent)+"%",1)]))),128))]),_:1})]),_:1})])])])):w("",!0)],64))]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(B,{modelValue:s.showCalibrateDialog,"onUpdate:modelValue":e[12]||(e[12]=d=>s.showCalibrateDialog=d),"max-width":"560",scrollable:""},{default:a(()=>[o(_,{class:"rounded-xl"},{default:a(()=>[o(I,{class:"d-flex align-center pa-4"},{default:a(()=>[o(x,{class:"mr-2",color:"deep-purple"},{default:a(()=>[...e[63]||(e[63]=[u(" mdi-crosshairs-gps ",-1)])]),_:1}),e[64]||(e[64]=r("span",{class:"text-h6 font-weight-bold"},"分贝校准",-1)),o(E),o(b,{icon:"mdi-close",size:"small",variant:"text",onClick:e[7]||(e[7]=d=>s.showCalibrateDialog=!1)})]),_:1}),o(F),o(T,{class:"pa-5"},{default:a(()=>[o(_,{variant:"outlined",class:"mb-5"},{default:a(()=>[o(T,{class:"py-3"},{default:a(()=>[e[68]||(e[68]=r("div",{class:"text-caption text-medium-emphasis mb-1"}," 当前校准值 ",-1)),r("div",vi,[r("div",null,[e[65]||(e[65]=r("span",{class:"text-body-2 text-medium-emphasis"},"基准分贝:",-1)),r("span",wi,h(s.calibrationSettings.baselineDb)+" dB ",1)]),r("div",null,[e[66]||(e[66]=r("span",{class:"text-body-2 text-medium-emphasis"},"基准 RMS:",-1)),r("span",Si,h(s.calibrationSettings.baselineRms!=null?s.calibrationSettings.baselineRms.toFixed(6):"未校准"),1)]),r("div",null,[e[67]||(e[67]=r("span",{class:"text-body-2 text-medium-emphasis"},"最大分贝:",-1)),r("span",Di,h(s.calibrationSettings.maxLevelDb)+" dB ",1)])])]),_:1})]),_:1}),r("div",xi,[o(x,{size:"18",class:"mr-2",color:"primary"},{default:a(()=>[...e[69]||(e[69]=[u(" mdi-auto-fix ",-1)])]),_:1}),e[70]||(e[70]=r("span",{class:"text-subtitle-2 font-weight-medium"},"自动校准",-1))]),e[74]||(e[74]=r("div",{class:"text-caption text-medium-emphasis mb-3"}," 在已知环境分贝的场景下,输入当前环境的真实分贝值,点击开始后保持环境安静 3 秒。 ",-1)),r("div",ki,[o(se,{modelValue:s.calibrateTargetDb,"onUpdate:modelValue":e[8]||(e[8]=d=>s.calibrateTargetDb=d),modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"目标分贝",suffix:"dB","hide-details":"",style:{"max-width":"160px"},min:20,max:80},null,8,["modelValue"]),o(b,{color:"deep-purple",variant:"tonal","prepend-icon":"mdi-crosshairs-gps",loading:s.isCalibrating,disabled:!i.isMonitoring,onClick:n.doAutoCalibrate},{default:a(()=>[...e[71]||(e[71]=[u(" 开始校准 ",-1)])]),_:1},8,["loading","disabled","onClick"]),i.isMonitoring?w("",!0):(c(),f("span",Ci," 需先开启监测 ")),s.calibrateMessage?(c(),f("span",{key:1,class:O(["text-caption",s.calibrateSuccess?"text-success":"text-error"])},h(s.calibrateMessage),3)):w("",!0)]),o(F,{class:"mb-5"}),r("div",Ti,[o(x,{size:"18",class:"mr-2",color:"orange"},{default:a(()=>[...e[72]||(e[72]=[u(" mdi-pencil-ruler ",-1)])]),_:1}),e[73]||(e[73]=r("span",{class:"text-subtitle-2 font-weight-medium"},"手动校准 / 参数调整",-1))]),e[75]||(e[75]=r("div",{class:"text-caption text-medium-emphasis mb-3"}," 直接输入校准参数。修改后点击保存生效。 ",-1)),r("div",_i,[o(se,{modelValue:s.editBaselineDb,"onUpdate:modelValue":e[9]||(e[9]=d=>s.editBaselineDb=d),modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"基准分贝",suffix:"dB","hide-details":"",style:{"max-width":"160px"},min:20,max:80},null,8,["modelValue"]),o(se,{modelValue:s.editBaselineRms,"onUpdate:modelValue":e[10]||(e[10]=d=>s.editBaselineRms=d),density:"compact",variant:"outlined",label:"基准 RMS","hide-details":"",style:{"max-width":"200px"},placeholder:"如 0.003200"},null,8,["modelValue"]),o(se,{modelValue:s.editMaxLevelDb,"onUpdate:modelValue":e[11]||(e[11]=d=>s.editMaxLevelDb=d),modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"最大显示分贝",suffix:"dB","hide-details":"",style:{"max-width":"180px"},min:40,max:120},null,8,["modelValue"])])]),_:1}),o(j,{class:"px-4 pb-4"},{default:a(()=>[o(b,{variant:"text","prepend-icon":"mdi-restore",onClick:n.resetCalibration},{default:a(()=>[...e[76]||(e[76]=[u(" 恢复默认 ",-1)])]),_:1},8,["onClick"]),o(E),o(b,{color:"primary",variant:"elevated","prepend-icon":"mdi-content-save",onClick:n.saveManualCalibration},{default:a(()=>[...e[77]||(e[77]=[u(" 保存校准 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(B,{modelValue:n.showConfirmClear,"onUpdate:modelValue":e[14]||(e[14]=d=>n.showConfirmClear=d),"max-width":"360"},{default:a(()=>[o(_,null,{default:a(()=>[o(I,null,{default:a(()=>[...e[78]||(e[78]=[u("确认清空",-1)])]),_:1}),o(T,null,{default:a(()=>[u(h(s.confirmClearMode==="all"?"确定要清空所有日期的统计报告吗?此操作不可撤销。":`确定要清空 ${n.formatDateLabel(i.selectedDate)} 的统计报告吗?此操作不可撤销。`),1)]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{variant:"text",onClick:e[13]||(e[13]=d=>s.confirmClearMode="")},{default:a(()=>[...e[79]||(e[79]=[u(" 取消 ",-1)])]),_:1}),o(b,{color:"error",onClick:n.doClearReports},{default:a(()=>[...e[80]||(e[80]=[u(" 确认清空 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["model-value"])}const qe=H(ss,[["render",Mi],["__scopeId","data-v-5d732295"]]),Ei=Object.freeze(Object.defineProperty({__proto__:null,default:qe},Symbol.toStringTag,{value:"Module"})),Ri=A(()=>N(()=>Promise.resolve().then(()=>Ei),void 0,import.meta.url)),Ii=2,Vi=.9,Ni=.6,Pi={name:"TimeCard",components:{NoiseMonitorDetail:Ri},data(){return{now:new Date,timer:null,unwatch:null,fontSize:28,showFullscreen:!1,showSettings:!1,timeCardEnabled:!0,use12hClock:!1,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}],countdownEndedDialog:!1,overtimeElapsed:0,overtimeTimer:null,overtimeLastTick:null,stopwatchRunning:!1,stopwatchElapsed:0,stopwatchTimer:null,stopwatchLastTick:null,laps:[],lastLapElapsed:0,noiseEnabled:!1,noiseMonitoring:!1,noiseStatus:"initializing",noiseCurrentDbfs:-100,noiseCurrentDisplayDb:0,noiseSmoothedDb:0,noiseScore:null,noiseScoreDetail:null,noiseRingBuffer:[],noiseLastSlice:null,noiseHistory:[],noiseUnsubscribe:null,showNoiseDetail:!1,noiseSessionConfig:null,noiseSessionActive:!1,noiseSessionData:null,noiseSessionCheckTimer:null,noiseReportMeta:{},noiseSelectedDate:"",noiseCurrentDateReports:[],showMicPermissionDialog:!1,micPermissionState:""}},computed:{timeString(){const t=this.now.getHours(),e=String(this.now.getMinutes()).padStart(2,"0");return this.use12hClock?`${t%12||12}:${e}`:`${String(t).padStart(2,"0")}:${e}`},amPmString(){return this.now.getHours()<12?"AM":"PM"},secondsString(){return`:${String(this.now.getSeconds()).padStart(2,"0")}`},dateString(){const t=this.now.getFullYear(),e=this.now.getMonth()+1,i=this.now.getDate();return`${t}年${e}月${i}日`},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(),i=this.now.getSeconds();return((t*3600+e*60+i)/86400*100).toFixed(1)},timeStyle(){return{"font-size":`${this.fontSize*Ii}px`,"font-weight":"700","line-height":"1","letter-spacing":"4px","font-variant-numeric":"tabular-nums"}},secondsStyle(){return{"font-size":`${this.fontSize*Vi}px`,"font-variant-numeric":"tabular-nums","vertical-align":"baseline","margin-left":"4px",opacity:"0.6"}},dateStyle(){return{"font-size":`${this.fontSize*Ni}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),i=Math.floor(t%3600/60),l=t%60;return e>0?`${String(e).padStart(2,"0")}:${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}`:`${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}`},countdownProgressPercent(){return this.countdownTotal<=0?0:(this.countdownTotal-this.countdownRemaining)/this.countdownTotal*100},overtimeDisplay(){const t=Math.floor(this.overtimeElapsed/1e3),e=Math.floor(t/3600),i=Math.floor(t%3600/60),l=t%60;return e>0?`${e}小时${i}分${l}秒`:i>0?`${i}分${l}秒`:`${l}秒`},stopwatchDisplay(){const t=this.stopwatchElapsed,e=Math.floor(t/1e3),i=Math.floor(e/3600),l=Math.floor(e%3600/60),s=e%60,n=Math.floor(t%1e3/10);return i>0?`${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}:${String(s).padStart(2,"0")}.${String(n).padStart(2,"0")}`:`${String(l).padStart(2,"0")}:${String(s).padStart(2,"0")}.${String(n).padStart(2,"0")}`},noiseDisplayDb(){return!this.noiseMonitoring||this.noiseStatus!=="active"?"--":Math.round(this.noiseSmoothedDb)},noiseDbColor(){const t=typeof this.noiseDisplayDb=="number"?this.noiseDisplayDb:0;return t<40?"success":t<55?"light-green":t<70?"warning":t<85?"orange":"error"},noiseIconColor(){return this.noiseMonitoring?this.noiseDbColor:"grey"},noiseStatusText(){if(!this.noiseMonitoring||this.noiseStatus!=="active")return"未监测";const t=typeof this.noiseDisplayDb=="number"?this.noiseDisplayDb:0;return t<30?"极其安静":t<40?"非常安静":t<50?"安静":t<60?"正常交谈":t<70?"较为嘈杂":t<80?"嘈杂":t<90?"非常嘈杂":"极度嘈杂"}},watch:{showFullscreen(t){t?(this.handleKeydown=e=>{e.key==="Escape"&&(this.showSettings?this.showSettings=!1:this.countdownEndedDialog&&this.dismissCountdownDialog(),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())}},async mounted(){if(this.loadSettings(),this.startTimer(),this.unwatch=Te(()=>{this.loadSettings()}),this.noiseEnabled=D("noiseMonitor.enabled"),this.noiseEnabled){this.noiseHistory=K.getHistory();const t=await this.checkMicPermission();this.micPermissionState=t,t==="granted"?this.loadNoiseSessionConfig().then(()=>{this.startSessionCheck(),D("noiseMonitor.autoStart")&&!this.noiseMonitoring&&this.startNoise()}):t==="prompt"&&(D("noiseMonitor.permissionDismissed")||(this.showMicPermissionDialog=!0))}},beforeUnmount(){this.stopTimer(),this.clearCountdownTimer(),this.clearStopwatchTimer(),this.clearToolbarTimer(),this.dismissCountdownDialog(),this.stopNoise(),this.stopSessionCheck(),this.unwatch&&this.unwatch(),this.handleKeydown&&window.removeEventListener("keydown",this.handleKeydown,!0)},methods:{loadSettings(){this.fontSize=ne.getSetting("font.size"),this.timeCardEnabled=D("timeCard.enabled"),this.use12hClock=D("timeCard.use12h"),this.noiseEnabled=D("noiseMonitor.enabled")},setTimeCardEnabled(t){this.timeCardEnabled=t,q("timeCard.enabled",t)},setUse12hClock(t){this.use12hClock=t,q("timeCard.use12h",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(),vt(wt),this.showCountdownEndedDialog())},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(),this.dismissCountdownDialog()},showCountdownEndedDialog(){this.countdownEndedDialog=!0,this.overtimeElapsed=0,this.overtimeLastTick=Date.now(),this.overtimeTimer=setInterval(()=>{const t=Date.now();this.overtimeElapsed+=t-this.overtimeLastTick,this.overtimeLastTick=t},200)},dismissCountdownDialog(){this.countdownEndedDialog=!1,this.overtimeElapsed=0,this.overtimeTimer&&(clearInterval(this.overtimeTimer),this.overtimeTimer=null)},formatCountdownTotal(t){const e=Math.round(t/1e3),i=Math.floor(e/3600),l=Math.floor(e%3600/60),s=e%60,n=[];return i>0&&n.push(`${i}小时`),l>0&&n.push(`${l}分钟`),s>0&&n.push(`${s}秒`),n.join("")||"0秒"},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),i=Math.floor(e/60),l=e%60,s=Math.floor(t%1e3/10);return`${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}.${String(s).padStart(2,"0")}`},async checkMicPermission(){try{return navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices&&!(await navigator.mediaDevices.enumerateDevices()).some(l=>l.kind==="audioinput")?"unavailable":!navigator.permissions||!navigator.permissions.query?"granted":(await navigator.permissions.query({name:"microphone"})).state}catch{return"prompt"}},async grantMicPermission(){this.showMicPermissionDialog=!1,await this.loadNoiseSessionConfig(),this.startSessionCheck(),await this.startNoise(),this.micPermissionState=await this.checkMicPermission()},dismissMicPermission(){this.showMicPermissionDialog=!1,q("noiseMonitor.permissionDismissed",!0)},onPermissionDialogToggle(t){this.noiseEnabled=t,q("noiseMonitor.enabled",t),t||(this.showMicPermissionDialog=!1,q("noiseMonitor.permissionDismissed",!0))},async startNoise(){try{await K.start(),this.noiseMonitoring=!0,this.noiseUnsubscribe=K.subscribe(t=>{this.noiseStatus=t.status,this.noiseCurrentDbfs=t.currentDbfs,this.noiseCurrentDisplayDb=t.currentDisplayDb;const e=.25,i=t.currentDisplayDb;this.noiseSmoothedDb=this.noiseSmoothedDb===0?i:this.noiseSmoothedDb*(1-e)+i*e,this.noiseRingBuffer=t.ringBuffer||[],this.noiseLastSlice=t.lastSlice||null,this.noiseScore=t.currentScore??null,this.noiseScoreDetail=t.currentScoreDetail??null,this.noiseHistory=K.getHistory(),this.noiseSessionActive&&this.noiseSessionData&&this.collectSessionSample(t)})}catch(t){console.error("噪音监测启动失败:",t),this.noiseStatus="error"}},stopNoise(){this.noiseUnsubscribe&&(this.noiseUnsubscribe(),this.noiseUnsubscribe=null),this.noiseMonitoring&&K.stop(),this.noiseMonitoring=!1,this.noiseStatus="initializing",this.noiseSmoothedDb=0,this.noiseScore=null,this.noiseScoreDetail=null},clearNoiseHistory(){K.clearHistory(),this.noiseHistory=[]},onNoiseClick(){if(this.micPermissionState==="denied"||this.micPermissionState==="unavailable"){this.showNoiseDetail=!0;return}this.noiseMonitoring?this.showNoiseDetail=!0:this.startNoise()},async loadNoiseSessionConfig(){try{const t=await R.loadData("noise-session-config"),e=(t==null?void 0:t.data)||t;e&&e.sessions?this.noiseSessionConfig=e:this.noiseSessionConfig={sessions:[{name:"第1节晚自习",start:"19:20",duration:70,enabled:!0},{name:"第2节晚自习",start:"20:20",duration:110,enabled:!0}],alertThresholdDb:55},await this.loadSessionReports()}catch(t){console.error("加载噪音会话配置失败:",t),this.noiseSessionConfig={sessions:[{name:"第1节晚自习",start:"19:20",duration:70,enabled:!0},{name:"第2节晚自习",start:"20:20",duration:110,enabled:!0}],alertThresholdDb:55}}},async saveNoiseSessionConfig(){try{await R.saveData("noise-session-config",this.noiseSessionConfig)}catch(t){console.error("保存噪音会话配置失败:",t)}},formatDateKey(t){const e=new Date(t);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`},async loadReportMeta(){try{const t=await R.loadData("noise-reports-meta"),e=(t==null?void 0:t.data)||t;if(e&&e.dates){const i=new Date;i.setDate(i.getDate()-30);const l=this.formatDateKey(i.getTime()),s={};for(const[n,d]of Object.entries(e.dates))n>=l&&(s[n]=d);this.noiseReportMeta={dates:s}}else this.noiseReportMeta={dates:{}}}catch{this.noiseReportMeta={dates:{}}}},async saveReportMeta(){try{await R.saveData("noise-reports-meta",this.noiseReportMeta)}catch{console.error("保存报告元数据失败")}},async loadReportsForDate(t){this.noiseSelectedDate=t;try{const e=await R.loadData(`noise-reports-${t}`),i=(e==null?void 0:e.data)||e;this.noiseCurrentDateReports=Array.isArray(i)?i:[]}catch{this.noiseCurrentDateReports=[]}},async saveReportToDate(t){const e=this.formatDateKey(t.startTime);let i=[];try{const s=await R.loadData(`noise-reports-${e}`),n=(s==null?void 0:s.data)||s;Array.isArray(n)&&(i=n)}catch{}i.push(t),await R.saveData(`noise-reports-${e}`,i),this.noiseReportMeta.dates||(this.noiseReportMeta.dates={});const l=i.map(s=>s.score);this.noiseReportMeta.dates[e]={count:i.length,avgScore:Math.round(l.reduce((s,n)=>s+n,0)/l.length),sessions:i.map(s=>s.sessionName),lastUpdated:Date.now()},await this.saveReportMeta(),this.noiseSelectedDate===e&&(this.noiseCurrentDateReports=i)},async loadSessionReports(){await this.loadReportMeta();const t=this.formatDateKey(Date.now());await this.loadReportsForDate(t)},startSessionCheck(){this.checkSessionTime(),this.noiseSessionCheckTimer=setInterval(()=>{this.checkSessionTime()},3e4)},stopSessionCheck(){this.noiseSessionCheckTimer&&(clearInterval(this.noiseSessionCheckTimer),this.noiseSessionCheckTimer=null)},checkSessionTime(){var l;if(!((l=this.noiseSessionConfig)!=null&&l.sessions))return;const t=new Date,e=t.getHours()*60+t.getMinutes(),i=this.noiseSessionConfig.sessions.find(s=>{if(!s.enabled)return!1;const[n,d]=s.start.split(":").map(Number),m=n*60+d,p=m+(s.duration||70);return e>=m&&e0){const i=this.noiseSessionData.samples,l=i.length>0?i[i.length-1].t:0;Date.now()-l>=2e3&&i.push({t:Date.now(),db:Math.round(e*10)/10})}},generateSessionReport(t){const e=t.samples,i=e.map(W=>W.db),l=t.alertThresholdDb,s=t.endTime-t.startTime;if(i.length===0)return{sessionName:t.sessionName,startTime:t.startTime,endTime:t.endTime,duration:s,avgDb:0,maxDb:0,score:100,overThresholdDuration:0,overThresholdRatio:0,segmentCount:0,samples:[],scorePenalties:{sustained:0,time:0,segment:0}};const n=Math.round(i.reduce((W,ge)=>W+ge,0)/i.length*10)/10,d=Math.round(Math.max(...i)*10)/10;let m=0;i.forEach(W=>{W>l&&m++});const p=m/i.length,g=Math.round(p*s/1e3);let S=0,U=!1;i.forEach(W=>{W>l&&!U&&(S++,U=!0),W<=l&&(U=!1)});const L=Math.min(40,Math.max(0,(n-l)/30*40)),X=Math.min(30,p*30),Z=Math.min(30,S/Math.max(1,s/6e4)/6*30),fe=Math.max(0,Math.round(100-L-X-Z));return{sessionName:t.sessionName,startTime:t.startTime,endTime:t.endTime,duration:s,avgDb:n,maxDb:d,score:fe,overThresholdDuration:g,overThresholdRatio:Math.round(p*1e3)/10,segmentCount:S,samples:e.length>500?this.downsampleArray(e,500):e,scorePenalties:{sustained:Math.round(L),time:Math.round(X),segment:Math.round(Z)},alertThresholdDb:l}},downsampleArray(t,e){const i=t.length/e,l=[];for(let s=0;ss.showFullscreen=!0)},{default:a(()=>[o(T,{class:"pa-6 d-flex flex-column",style:{height:"100%"}},{default:a(()=>[r("div",Ai,[r("div",Li,[r("div",{class:"time-display",style:P(n.timeStyle)},[u(h(n.timeString),1),r("span",{class:"seconds-text",style:P(n.secondsStyle)},h(n.secondsString),5),s.use12hClock?(c(),f("span",{key:0,class:"ampm-text",style:P(n.secondsStyle)},h(n.amPmString),5)):w("",!0)],4),r("div",{class:"date-line mt-3",style:P(n.dateStyle)},h(n.dateString)+" "+h(n.weekdayString)+" "+h(n.periodOfDay),5)]),s.noiseEnabled?(c(),f("div",{key:0,class:"d-flex flex-column align-center justify-center",style:{"min-width":"80px"},onClick:e[0]||(e[0]=Re((...m)=>n.onNoiseClick&&n.onNoiseClick(...m),["stop"]))},[s.micPermissionState==="denied"?(c(),f(k,{key:0},[o(x,{color:"error",size:"24"},{default:a(()=>[...e[18]||(e[18]=[u(" mdi-microphone-off ",-1)])]),_:1}),e[19]||(e[19]=r("div",{class:"text-caption text-error mt-1",style:{"white-space":"nowrap","font-size":"10px"}}," 权限被拒绝 ",-1))],64)):s.micPermissionState==="unavailable"?(c(),f(k,{key:1},[o(x,{color:"warning",size:"24"},{default:a(()=>[...e[20]||(e[20]=[u(" mdi-microphone-question ",-1)])]),_:1}),e[21]||(e[21]=r("div",{class:"text-caption text-warning mt-1",style:{"white-space":"nowrap","font-size":"10px"}}," 无麦克风 ",-1))],64)):(c(),f(k,{key:2},[r("div",{class:O(["noise-side-db font-weight-bold",`text-${n.noiseDbColor}`]),style:P({fontSize:`${s.fontSize*.9}px`,lineHeight:1,fontVariantNumeric:"tabular-nums"})},h(n.noiseDisplayDb),7),r("div",{class:O(["text-caption mt-1",`text-${n.noiseDbColor}`]),style:{"white-space":"nowrap","font-size":"11px"}},h(n.noiseStatusText),3),s.noiseMonitoring?w("",!0):(c(),f("div",zi," 点击开启 "))],64))])):w("",!0)])]),_:1}),s.noiseEnabled?(c(),v(d,{key:0,modelValue:s.showNoiseDetail,"onUpdate:modelValue":e[1]||(e[1]=m=>s.showNoiseDetail=m),status:s.noiseStatus,"current-db":n.noiseDisplayDb,"current-dbfs":s.noiseCurrentDbfs,"noise-level":n.noiseStatusText,"db-color":n.noiseDbColor,"current-score":s.noiseScore,"score-detail":s.noiseScoreDetail,"ring-buffer":s.noiseRingBuffer,"last-slice":s.noiseLastSlice,history:s.noiseHistory,"is-monitoring":s.noiseMonitoring,"mic-permission-state":s.micPermissionState,"session-active":s.noiseSessionActive,"session-data":s.noiseSessionData,"report-meta":s.noiseReportMeta,"selected-date":s.noiseSelectedDate,"date-reports":s.noiseCurrentDateReports,onStart:n.startNoise,onStop:n.stopNoise,onClearHistory:n.clearNoiseHistory,onSelectDate:n.onSelectReportDate,onClearDateReports:n.onClearDateReports,onClearAllReports:n.onClearAllReports},null,8,["modelValue","status","current-db","current-dbfs","noise-level","db-color","current-score","score-detail","ring-buffer","last-slice","history","is-monitoring","mic-permission-state","session-active","session-data","report-meta","selected-date","date-reports","onStart","onStop","onClearHistory","onSelectDate","onClearDateReports","onClearAllReports"])):w("",!0),o(B,{modelValue:s.showMicPermissionDialog,"onUpdate:modelValue":e[2]||(e[2]=m=>s.showMicPermissionDialog=m),"max-width":"480",persistent:""},{default:a(()=>[o(_,{rounded:"xl"},{default:a(()=>[r("div",Fi,[o(st,{color:"primary",size:"72"},{default:a(()=>[o(x,{icon:"mdi-microphone-outline",size:"36"})]),_:1})]),o(I,{class:"text-center text-h6 pt-4"},{default:a(()=>[...e[22]||(e[22]=[u(" 开启环境噪音监测 ",-1)])]),_:1}),o(T,{class:"text-body-2 text-medium-emphasis px-6"},{default:a(()=>[e[27]||(e[27]=r("p",{class:"mb-3"}," 该功能可以实时监测教室环境噪音,帮助营造安静的学习氛围: ",-1)),r("div",Bi,[o(x,{icon:"mdi-chart-line",size:"18",color:"primary",class:"mr-2 mt-1 flex-shrink-0"}),e[23]||(e[23]=r("span",null,"实时显示环境分贝数与噪音等级评估",-1))]),r("div",Oi,[o(x,{icon:"mdi-clock-check-outline",size:"18",color:"primary",class:"mr-2 mt-1 flex-shrink-0"}),e[24]||(e[24]=r("span",null,"在晚自习时段自动记录并生成统计报告",-1))]),r("div",Ui,[o(x,{icon:"mdi-shield-check-outline",size:"18",color:"primary",class:"mr-2 mt-1 flex-shrink-0"}),e[25]||(e[25]=r("span",null,"音频数据仅在本地处理,不会上传或存储录音",-1))]),o(le,{type:"info",variant:"tonal",density:"compact",class:"mb-2"},{default:a(()=>[...e[26]||(e[26]=[u(" 需要授予麦克风权限才能使用此功能。浏览器将弹出权限请求,请点击「允许」。 ",-1)])]),_:1})]),_:1}),o(F),o(T,{class:"px-6 py-3"},{default:a(()=>[o(J,{density:"compact",class:"pa-0"},{default:a(()=>[o(G,{class:"px-0"},{prepend:a(()=>[o(x,{icon:"mdi-microphone",class:"mr-3"})]),append:a(()=>[o(be,{"model-value":s.noiseEnabled,"hide-details":"",density:"comfortable","onUpdate:modelValue":n.onPermissionDialogToggle},null,8,["model-value","onUpdate:modelValue"])]),default:a(()=>[o(oe,null,{default:a(()=>[...e[28]||(e[28]=[u("启用噪音监测",-1)])]),_:1}),o(ae,{class:"text-caption"},{default:a(()=>[...e[29]||(e[29]=[u(" 关闭后将不再提醒 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),o(j,{class:"px-6 pb-5"},{default:a(()=>[o(b,{variant:"text",onClick:n.dismissMicPermission},{default:a(()=>[...e[30]||(e[30]=[u(" 暂不开启 ",-1)])]),_:1},8,["onClick"]),o(E),o(b,{color:"primary",variant:"elevated","prepend-icon":"mdi-microphone",disabled:!s.noiseEnabled,onClick:n.grantMicPermission},{default:a(()=>[...e[31]||(e[31]=[u(" 授权并开始 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(B,{modelValue:s.showFullscreen,"onUpdate:modelValue":e[14]||(e[14]=m=>s.showFullscreen=m),fullscreen:"",scrim:!1,persistent:"",transition:"dialog-bottom-transition"},{default:a(()=>[o(_,{class:"fullscreen-time-card d-flex flex-column",onMousemove:n.showToolbar,onTouchstart:n.showToolbar},{default:a(()=>[o(dt,{name:"toolbar-fade"},{default:a(()=>[ct(r("div",ji,[o(Be,{modelValue:s.fullscreenMode,"onUpdate:modelValue":e[4]||(e[4]=m=>s.fullscreenMode=m),density:"comfortable",color:"primary","align-tabs":"center",class:"fullscreen-tabs"},{default:a(()=>[o($,{value:"clock"},{default:a(()=>[o(x,{start:"",icon:"mdi-clock-outline"}),e[32]||(e[32]=u(" 时钟 ",-1))]),_:1}),o($,{value:"countdown"},{default:a(()=>[o(x,{start:"",icon:"mdi-timer-sand"}),e[33]||(e[33]=u(" 倒计时 ",-1))]),_:1}),o($,{value:"stopwatch"},{default:a(()=>[o(x,{start:"",icon:"mdi-timer-outline"}),e[34]||(e[34]=u(" 秒表 ",-1))]),_:1})]),_:1},8,["modelValue"])],512),[[ut,s.toolbarVisible]])]),_:1}),r("div",Hi,[o(Oe,{modelValue:s.fullscreenMode,"onUpdate:modelValue":e[11]||(e[11]=m=>s.fullscreenMode=m),class:"fullscreen-tabs-window"},{default:a(()=>[o(ee,{value:"clock"},{default:a(()=>[r("div",Wi,[r("div",Gi,[u(h(n.timeString),1),r("span",Ki,h(n.secondsString),1),s.use12hClock?(c(),f("span",qi,h(n.amPmString),1)):w("",!0)]),r("div",Yi,h(n.dateString)+" "+h(n.weekdayString)+" "+h(n.periodOfDay),1),r("div",Ji,[r("div",Xi," 今日已过 "+h(n.dayProgressPercent)+"% ",1),o(re,{"model-value":n.dayProgressPercent,color:"primary",height:"6",rounded:"",style:{"max-width":"400px",width:"80vw"}},null,8,["model-value"])]),e[35]||(e[35]=r("div",{class:"fullscreen-extra mt-8 text-medium-emphasis d-flex ga-8"},null,-1))])]),_:1}),o(ee,{value:"countdown"},{default:a(()=>[r("div",Zi,[!s.countdownRunning&&s.countdownRemaining<=0?(c(),f(k,{key:0},[r("div",Qi,[r("div",$i,[o(b,{icon:"mdi-chevron-up",variant:"text",size:"small",onClick:e[5]||(e[5]=m=>s.countdownHours=Math.min(s.countdownHours+1,99))}),r("div",en,h(String(s.countdownHours).padStart(2,"0")),1),o(b,{icon:"mdi-chevron-down",variant:"text",size:"small",onClick:e[6]||(e[6]=m=>s.countdownHours=Math.max(s.countdownHours-1,0))}),e[36]||(e[36]=r("div",{class:"text-caption text-medium-emphasis"}," 时 ",-1))]),e[39]||(e[39]=r("div",{class:"countdown-sep"}," : ",-1)),r("div",tn,[o(b,{icon:"mdi-chevron-up",variant:"text",size:"small",onClick:e[7]||(e[7]=m=>s.countdownMinutes=Math.min(s.countdownMinutes+1,59))}),r("div",sn,h(String(s.countdownMinutes).padStart(2,"0")),1),o(b,{icon:"mdi-chevron-down",variant:"text",size:"small",onClick:e[8]||(e[8]=m=>s.countdownMinutes=Math.max(s.countdownMinutes-1,0))}),e[37]||(e[37]=r("div",{class:"text-caption text-medium-emphasis"}," 分 ",-1))]),e[40]||(e[40]=r("div",{class:"countdown-sep"}," : ",-1)),r("div",nn,[o(b,{icon:"mdi-chevron-up",variant:"text",size:"small",onClick:e[9]||(e[9]=m=>s.countdownSeconds=Math.min(s.countdownSeconds+1,59))}),r("div",on,h(String(s.countdownSeconds).padStart(2,"0")),1),o(b,{icon:"mdi-chevron-down",variant:"text",size:"small",onClick:e[10]||(e[10]=m=>s.countdownSeconds=Math.max(s.countdownSeconds-1,0))}),e[38]||(e[38]=r("div",{class:"text-caption text-medium-emphasis"}," 秒 ",-1))])]),r("div",an,[(c(!0),f(k,null,M(s.countdownPresets,m=>(c(),v(b,{key:m.label,variant:"tonal",rounded:"xl",onClick:p=>n.applyCountdownPreset(m)},{default:a(()=>[u(h(m.label),1)]),_:2},1032,["onClick"]))),128))]),r("div",rn,[o(b,{color:"primary",size:"x-large",rounded:"xl",disabled:n.countdownTotalSetSeconds<=0,"prepend-icon":"mdi-play",onClick:n.startCountdown},{default:a(()=>[...e[41]||(e[41]=[u(" 开始 ",-1)])]),_:1},8,["disabled","onClick"])])],64)):(c(),f(k,{key:1},[r("div",{class:O(["fullscreen-time-display",{"countdown-ended":s.countdownRemaining<=0&&!s.countdownRunning}])},h(n.countdownDisplay),3),r("div",ln,h(s.countdownRunning?"倒计时进行中":s.countdownRemaining<=0?"时间到!":"已暂停"),1),o(re,{"model-value":n.countdownProgressPercent,color:s.countdownRemaining<=0?"error":"primary",class:"mt-8",height:"6",rounded:"",style:{"max-width":"400px",width:"80vw"}},null,8,["model-value","color"]),r("div",dn,[s.countdownRemaining>0?(c(),v(b,{key:0,icon:s.countdownRunning?"mdi-pause":"mdi-play",color:s.countdownRunning?"warning":"primary",size:"x-large",variant:"tonal",onClick:n.toggleCountdown},null,8,["icon","color","onClick"])):w("",!0),o(b,{icon:"mdi-stop",color:"error",size:"x-large",variant:"tonal",onClick:n.resetCountdown},null,8,["onClick"])])],64))])]),_:1}),o(ee,{value:"stopwatch"},{default:a(()=>[r("div",cn,[r("div",un,h(n.stopwatchDisplay),1),r("div",mn,h(s.stopwatchRunning?"计时中":s.stopwatchElapsed>0?"已暂停":"秒表"),1),r("div",hn,[o(b,{icon:s.stopwatchRunning?"mdi-pause":"mdi-play",color:s.stopwatchRunning?"warning":"primary",size:"x-large",variant:"tonal",onClick:n.toggleStopwatch},null,8,["icon","color","onClick"]),s.stopwatchRunning?(c(),v(b,{key:0,icon:"mdi-flag",color:"info",size:"x-large",variant:"tonal",onClick:n.addLap},null,8,["onClick"])):w("",!0),!s.stopwatchRunning&&s.stopwatchElapsed>0?(c(),v(b,{key:1,icon:"mdi-stop",color:"error",size:"x-large",variant:"tonal",onClick:n.resetStopwatch},null,8,["onClick"])):w("",!0)]),o(it,null,{default:a(()=>[s.laps.length>0?(c(),f("div",fn,[o(pt,{density:"compact",class:"stopwatch-laps-table"},{default:a(()=>[e[42]||(e[42]=r("thead",null,[r("tr",null,[r("th",null," # "),r("th",null," 计次 "),r("th",null," 总计 ")])],-1)),r("tbody",null,[(c(!0),f(k,null,M(s.laps,(m,p)=>(c(),f("tr",{key:p},[r("td",null,h(s.laps.length-p),1),r("td",null,h(n.formatMs(m.split)),1),r("td",null,h(n.formatMs(m.total)),1)]))),128))])]),_:1})])):w("",!0)]),_:1})])]),_:1})]),_:1},8,["modelValue"])]),r("div",gn,[o(b,{icon:"mdi-cog",variant:"text",size:"large",onClick:e[12]||(e[12]=Re(m=>s.showSettings=!0,["stop"]))}),o(b,{icon:"mdi-close",variant:"text",size:"large",class:"ml-2",onClick:e[13]||(e[13]=m=>s.showFullscreen=!1)})])]),_:1},8,["onMousemove","onTouchstart"])]),_:1},8,["modelValue"]),o(B,{modelValue:s.countdownEndedDialog,"onUpdate:modelValue":e[15]||(e[15]=m=>s.countdownEndedDialog=m),"max-width":"480",persistent:""},{default:a(()=>[o(_,{rounded:"xl"},{default:a(()=>[o(I,{class:"d-flex align-center justify-center pt-6"},{default:a(()=>[o(x,{color:"error",size:"32",class:"mr-2",icon:"mdi-alarm"}),e[43]||(e[43]=u(" 时间到! ",-1))]),_:1}),o(T,{class:"text-center pb-2"},{default:a(()=>[r("div",pn,h(n.formatCountdownTotal(s.countdownTotal)),1),e[44]||(e[44]=r("div",{class:"text-body-1 text-medium-emphasis"}," 设定的倒计时已结束 ",-1)),s.overtimeElapsed>0?(c(),f("div",yn,[o(z,{color:"error",variant:"tonal",size:"large","prepend-icon":"mdi-clock-alert-outline"},{default:a(()=>[u(" 已超时 "+h(n.overtimeDisplay),1)]),_:1})])):w("",!0)]),_:1}),o(j,{class:"justify-center pb-6"},{default:a(()=>[o(b,{color:"primary",variant:"tonal",size:"large",rounded:"xl","prepend-icon":"mdi-check",onClick:n.dismissCountdownDialog},{default:a(()=>[...e[45]||(e[45]=[u(" 知道了 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(B,{modelValue:s.showSettings,"onUpdate:modelValue":e[17]||(e[17]=m=>s.showSettings=m),"max-width":"420",scrim:!0},{default:a(()=>[o(_,{rounded:"xl"},{default:a(()=>[o(I,{class:"d-flex align-center"},{default:a(()=>[o(x,{class:"mr-2",icon:"mdi-cog"}),e[46]||(e[46]=u(" 时间卡片设置 ",-1))]),_:1}),o(T,null,{default:a(()=>[o(J,null,{default:a(()=>[o(G,null,{prepend:a(()=>[o(x,{class:"mr-3",icon:"mdi-clock-outline"})]),append:a(()=>[o(be,{"model-value":s.timeCardEnabled,"hide-details":"",density:"comfortable","onUpdate:modelValue":n.setTimeCardEnabled},null,8,["model-value","onUpdate:modelValue"])]),default:a(()=>[o(oe,null,{default:a(()=>[...e[47]||(e[47]=[u("显示时间卡片",-1)])]),_:1}),o(ae,null,{default:a(()=>[...e[48]||(e[48]=[u("在首页显示时间卡片,刷新后生效。",-1)])]),_:1})]),_:1}),o(G,null,{prepend:a(()=>[o(x,{class:"mr-3",icon:"mdi-clock-time-six-outline"})]),append:a(()=>[o(be,{"model-value":s.use12hClock,"hide-details":"",density:"comfortable","onUpdate:modelValue":n.setUse12hClock},null,8,["model-value","onUpdate:modelValue"])]),default:a(()=>[o(oe,null,{default:a(()=>[...e[49]||(e[49]=[u("12 小时制",-1)])]),_:1}),o(ae,null,{default:a(()=>[...e[50]||(e[50]=[u("以 12 小时制(AM/PM)显示时间。",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{variant:"text",onClick:e[16]||(e[16]=m=>s.showSettings=!1)},{default:a(()=>[...e[51]||(e[51]=[u(" 完成 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])],64)}const Ye=H(Pi,[["render",bn],["__scopeId","data-v-d5fb9d74"]]),vn={name:"HomeworkGrid",components:{HitokotoCard:We,TimeCard:Ye,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}},computed:{settings(){return settings}},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:D,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 N(async()=>{const{getSetting:l}=await import("./index-Ceq_468-.js").then(s=>s.aI);return{getSetting:l}},__vite__mapDeps([0,1,2,3]),import.meta.url),i=e("server.kvToken");if(i){const{default:l}=await N(async()=>{const{default:n}=await import("./dataProvider-D5waPBEc.js").then(d=>d.c);return{default:n}},__vite__mapDeps([4,5,0,1,2,3,6]),import.meta.url),s=e("server.domain");if(s)try{const n=await l.get(`${s}/kv/_token`,{headers:{Authorization:`Bearer ${i}`}});n.data&&typeof n.data.isReadOnly<"u"&&(this.isReadOnlyToken=n.data.isReadOnly)}catch(n){console.error("获取Token信息失败:",n)}}}}catch(t){console.error("检查只读状态失败:",t)}},resizeGridItem(t){const e=this.$refs.gridContainer;if(!e)return;const i=parseInt(window.getComputedStyle(e).getPropertyValue("grid-auto-rows")),l=parseInt(window.getComputedStyle(e).getPropertyValue("gap")),s=t.firstElementChild;if(!s)return;const n=s.getBoundingClientRect().height,d=Math.ceil((n+l)/(i+l));t.style.gridRowEnd=`span ${d}`},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,i=e.getBoundingClientRect(),l=(t.clientX-i.left)/i.width*100,s=(t.clientY-i.top)/i.height*100;e.style.setProperty("--x",`${l}%`),e.style.setProperty("--y",`${s}%`)},handleTouchMove(t){if(t.touches.length===1){const e=t.touches[0],i=t.currentTarget,l=i.getBoundingClientRect(),s=(e.clientX-l.left)/l.width*100,n=(e.clientY-l.top)/l.height*100;i.style.setProperty("--x",`${s}%`),i.style.setProperty("--y",`${n}%`)}}}},wn={ref:"gridContainer",class:"grid-masonry"},Sn=["data-key"],Dn={key:0,style:{height:"100%"}},xn={key:1,style:{height:"100%"}},kn={key:2,style:{height:"100%"}},Cn={class:"d-flex justify-space-between align-center mb-2"},Tn={class:"text-h6"},_n={key:0,class:"mb-2"},Mn={class:"text-error text-caption mb-1"},En={class:"d-flex flex-wrap",style:{gap:"4px"}},Rn={key:1,class:"mb-2"},In={class:"text-warning text-caption mb-1"},Vn={class:"d-flex flex-wrap",style:{gap:"4px"}},Nn={key:2,class:"mb-2"},Pn={class:"text-grey text-caption mb-1"},An={class:"d-flex flex-wrap",style:{gap:"4px"}},Ln={key:3,class:"text-success text-center mt-2"},zn={class:"empty-subjects mt-4"},Fn={key:0,class:"d-flex flex-wrap justify-center"},Bn={key:2,class:"empty-subjects-grid"};function On(t,e,i,l,s,n){const d=Ye,m=We,p=He;return c(),f(k,null,[r("div",wn,[o(Ie,{name:"grid"},{default:a(()=>[(c(!0),f(k,null,M(i.sortedItems,g=>(c(),f("div",{key:g.key,ref_for:!0,ref:"items","data-key":g.key,style:P({order:g.order}),class:"grid-item"},[g.type==="time"?(c(),f("div",Dn,[o(d)])):g.type==="hitokoto"?(c(),f("div",xn,[o(m)])):g.type==="exam"?(c(),f("div",kn,[o(p,{"exam-id":g.data.examId,"content-style":i.contentStyle,onClick:S=>t.$emit("open-exam-detail",g.data.examId)},null,8,["exam-id","content-style","onClick"])])):g.type==="attendance"?(c(),v(_,{key:3,class:O([{"glow-highlight":i.highlightedCards[g.key],"cursor-not-allowed":i.isEditingDisabled,"cursor-pointer":!i.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:e[0]||(e[0]=S=>n.handleCardClick("attendance",null)),onMousemove:n.handleMouseMove,onTouchmove:n.handleTouchMove},{default:a(()=>[o(I,{class:"d-flex align-center"},{default:a(()=>[o(x,{class:"mr-2",color:"primary",icon:"mdi-account-group"}),e[1]||(e[1]=u(" 出勤统计 ",-1))]),_:1}),o(T,null,{default:a(()=>[r("div",Cn,[e[2]||(e[2]=r("span",null,"应到/实到",-1)),r("span",Tn,h(g.data.total-g.data.exclude.length)+"/"+h(g.data.total-g.data.absent.length-!n.getSetting("display.lateStudentsArePresent")*g.data.late.length-g.data.exclude.length),1)]),o(F,{class:"mb-2"}),g.data.absent.length>0?(c(),f("div",_n,[r("div",Mn," 请假 ("+h(g.data.absent.length)+") ",1),r("div",En,[(c(!0),f(k,null,M(g.data.absent,S=>(c(),v(z,{key:S,color:"error",size:"x-small",variant:"flat"},{default:a(()=>[u(h(S),1)]),_:2},1024))),128))])])):w("",!0),g.data.late.length>0?(c(),f("div",Rn,[r("div",In," 迟到 ("+h(g.data.late.length)+") ",1),r("div",Vn,[(c(!0),f(k,null,M(g.data.late,S=>(c(),v(z,{key:S,color:"warning",size:"x-small",variant:"flat"},{default:a(()=>[u(h(S),1)]),_:2},1024))),128))])])):w("",!0),g.data.exclude.length>0?(c(),f("div",Nn,[r("div",Pn," 不参与 ("+h(g.data.exclude.length)+") ",1),r("div",An,[(c(!0),f(k,null,M(g.data.exclude,S=>(c(),v(z,{key:S,color:"grey",size:"x-small",variant:"flat"},{default:a(()=>[u(h(S),1)]),_:2},1024))),128))])])):w("",!0),g.data.absent.length===0&&g.data.late.length===0&&g.data.exclude.length===0?(c(),f("div",Ln," 全勤 ")):w("",!0)]),_:2},1024)]),_:2},1032,["class","onMousemove","onTouchmove"])):g.type==="custom"?(c(),v(_,{key:4,class:O([{"glow-highlight":i.highlightedCards[g.key],"cursor-not-allowed":i.isEditingDisabled,"cursor-pointer":!i.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:S=>n.handleCardClick("dialog",g.key),onMousemove:n.handleMouseMove,onTouchmove:n.handleTouchMove},{default:a(()=>[o(I,{class:"text-primary"},{default:a(()=>[o(x,{class:"mr-2",icon:"mdi-card-text-outline",size:"small"}),u(" "+h(g.name),1)]),_:2},1024),o(T,{style:P(i.contentStyle)},{default:a(()=>[u(h(g.content),1)]),_:2},1032,["style"])]),_:2},1032,["class","onClick","onMousemove","onTouchmove"])):(c(),v(_,{key:5,class:O([{"glow-highlight":i.highlightedCards[g.key],"cursor-not-allowed":i.isEditingDisabled,"cursor-pointer":!i.isEditingDisabled},"glow-track"]),border:"",height:"100%",rounded:"xl",onClick:S=>n.handleCardClick("dialog",g.key),onMousemove:n.handleMouseMove,onTouchmove:n.handleTouchMove},{default:a(()=>[o(I,null,{default:a(()=>[u(h(g.name),1)]),_:2},1024),o(T,{style:P(i.contentStyle)},{default:a(()=>[o(J,null,{default:a(()=>[(c(!0),f(k,null,M(n.splitPoint(g.content),S=>(c(),v(G,{key:S},{default:a(()=>[u(h(S),1)]),_:2},1024))),128))]),_:2},1024)]),_:2},1032,["style"])]),_:2},1032,["class","onClick","onMousemove","onTouchmove"]))],12,Sn))),128))]),_:1})],512),r("div",zn,[i.isMobile?(c(),f("div",Fn,[(c(!0),f(k,null,M(i.unusedSubjects,g=>(c(),v(z,{key:g.name,class:"ma-1",color:"primary",variant:"tonal",onClick:S=>n.handleCardClick("dialog",g.name)},{default:a(()=>[o(x,{start:"",size:"small"},{default:a(()=>[u(h(s.isReadOnlyToken?"mdi-cancel":"mdi-plus"),1)]),_:1}),u(" "+h(g.name),1)]),_:2},1032,["onClick"]))),128))])):i.emptySubjectDisplay==="button"?(c(),v(nt,{key:1,divided:"",variant:"tonal"},{default:a(()=>[(c(!0),f(k,null,M(i.unusedSubjects,g=>(c(),v(b,{key:g.name,onClick:S=>n.handleCardClick("dialog",g.name)},{default:a(()=>[o(x,{start:""},{default:a(()=>[u(h(s.isReadOnlyToken?"mdi-cancel":"mdi-plus"),1)]),_:1}),u(" "+h(g.name),1)]),_:2},1032,["onClick"]))),128))]),_:1})):(c(),f("div",Bn,[o(Ie,{name:"v-list"},{default:a(()=>[(c(!0),f(k,null,M(i.unusedSubjects,g=>(c(),v(_,{key:g.name,border:"",rounded:"xl",class:"empty-subject-card",onClick:S=>n.handleCardClick("dialog",g.name)},{default:a(()=>[o(I,{class:"text-subtitle-1"},{default:a(()=>[u(h(g.name),1)]),_:2},1024),o(T,{class:"text-center"},{default:a(()=>[s.isReadOnlyToken?(c(),f(k,{key:0},[o(x,{color:"grey",size:"small"},{default:a(()=>[...e[3]||(e[3]=[u(" mdi-cancel ",-1)])]),_:1}),e[4]||(e[4]=r("div",{class:"text-caption text-grey"}," 当日无作业 ",-1))],64)):(c(),f(k,{key:1},[o(x,{color:"grey",size:"small"},{default:a(()=>[...e[5]||(e[5]=[u(" mdi-plus ",-1)])]),_:1}),e[6]||(e[6]=r("div",{class:"text-caption text-grey"}," 点击添加作业 ",-1))],64))]),_:1})]),_:2},1032,["onClick"]))),128))]),_:1})]))])],64)}const Un=H(vn,[["render",On],["__scopeId","data-v-65991b74"]]),jn={name:"HomeActions",props:{synced:Boolean,loadingUpload:Boolean,showRandomPickerButton:Boolean,showExamScheduleButton:Boolean,showListCardButton:Boolean,showFullscreenButton:Boolean,isFullscreen:Boolean,showAntiScreenBurnCard:Boolean,showTestCardButton:Boolean,showUafTransferButton:Boolean,uafTransferLoading:Boolean},emits:["upload","show-sync-message","open-random-picker","toggle-fullscreen","add-test-card","add-exam-card","open-uaf-export","open-uaf-import"]},Hn={class:"d-flex flex-wrap align-center mt-4"};function Wn(t,e,i,l,s,n){return c(),f(k,null,[r("div",Hn,[i.synced?(c(),v(b,{key:1,color:"success",size:"large",rounded:"xl",onClick:e[1]||(e[1]=d=>t.$emit("show-sync-message"))},{default:a(()=>[...e[10]||(e[10]=[u(" 同步完成 ",-1)])]),_:1})):(c(),v(b,{key:0,loading:i.loadingUpload,class:"ml-2",color:"error",size:"large",rounded:"xl",onClick:e[0]||(e[0]=d=>t.$emit("upload"))},{default:a(()=>[...e[9]||(e[9]=[u(" 上传 ",-1)])]),_:1},8,["loading"])),i.showUafTransferButton?(c(),v(St,{key:2,location:"bottom end"},{activator:a(({props:d})=>[o(b,mt(d,{disabled:i.uafTransferLoading,loading:i.uafTransferLoading,class:"ml-2",color:"indigo",size:"large",rounded:"xl"}),{default:a(()=>[o(x,{icon:"mdi-swap-vertical-bold"})]),_:1},16,["disabled","loading"])]),default:a(()=>[o(J,{density:"comfortable"},{default:a(()=>[o(G,{"prepend-icon":"mdi-file-export-outline",title:"导出 UAF",onClick:e[2]||(e[2]=d=>t.$emit("open-uaf-export"))}),o(G,{"prepend-icon":"mdi-file-import-outline",title:"导入 UAF",onClick:e[3]||(e[3]=d=>t.$emit("open-uaf-import"))})]),_:1})]),_:1})):w("",!0),e[15]||(e[15]=u()),i.showFullscreenButton?(c(),v(b,{key:3,color:i.isFullscreen?"blue-grey":"blue","prepend-icon":i.isFullscreen?"mdi-fullscreen-exit":"mdi-fullscreen",rounded:"xl",class:"ml-2",size:"large",onClick:e[4]||(e[4]=d=>t.$emit("toggle-fullscreen"))},{default:a(()=>[u(h(i.isFullscreen?"退出全屏":"全屏"),1)]),_:1},8,["color","prepend-icon"])):w("",!0),i.showRandomPickerButton?(c(),v(b,{key:4,"append-icon":"mdi-dice-multiple",class:"ml-2",color:"amber","prepend-icon":"mdi-account-question",size:"large",onClick:e[5]||(e[5]=d=>t.$emit("open-random-picker"))},{default:a(()=>[...e[11]||(e[11]=[u(" 随机点名 ",-1)])]),_:1})):w("",!0),i.showExamScheduleButton?(c(),v(b,{key:5,"prepend-icon":"mdi-calendar-check",size:"large",onClick:e[6]||(e[6]=d=>t.$emit("add-exam-card")),class:"ml-2",color:"green"},{default:a(()=>[...e[12]||(e[12]=[u(" 考试看板 ",-1)])]),_:1})):w("",!0),i.showListCardButton?(c(),v(b,{key:6,class:"ml-2",color:"primary-darken-1","prepend-icon":"mdi-list-box",size:"large",onClick:e[7]||(e[7]=d=>t.$router.push("/list"))},{default:a(()=>[...e[13]||(e[13]=[u(" 列表 ",-1)])]),_:1})):w("",!0),i.showTestCardButton?(c(),v(b,{key:7,class:"ml-2",color:"purple","prepend-icon":"mdi-test-tube",size:"large",onClick:e[8]||(e[8]=d=>t.$emit("add-test-card"))},{default:a(()=>[...e[14]||(e[14]=[u(" 添加测试卡片 ",-1)])]),_:1})):w("",!0)]),i.showAntiScreenBurnCard?(c(),v(_,{key:0,border:"",class:"mt-4 anti-burn-card",color:"primary",variant:"tonal"},{default:a(()=>[o(I,{class:"text-subtitle-1"},{default:a(()=>[o(x,{icon:"mdi-shield-check",size:"small",start:""}),e[16]||(e[16]=u(" 屏幕保护技术已启用 ",-1))]),_:1}),o(T,{class:"text-body-2"},{default:a(()=>[...e[17]||(e[17]=[r("p",null," 为防止OLED/LCD屏幕烧屏,界面元素会定期微调位置。 ",-1),r("p",{class:"text-caption text-grey"}," 此功能不会影响正常使用,仅在长时间静止显示时生效。 ",-1),r("p",{class:"text-caption text-grey"}," 建议在放学后关闭显示器以节约能源。 ",-1)])]),_:1})]),_:1})):w("",!0)],64)}const Gn=H(jn,[["render",Wn]]),Kn={name:"FloatingICP"},qn={"aria-label":"xICP备x号",class:"floating-icp-link",href:"https://beian.miit.gov.cn/",rel:"noopener noreferrer",target:"_blank",style:{display:"none"}};function Yn(t,e,i,l,s,n){return c(),f("a",qn," xICP备x号 ")}const Jn=H(Kn,[["render",Yn],["__scopeId","data-v-fa73670f"]]),Xn={class:"skeleton-grid"},Zn={__name:"HomeSkeleton",setup(t){const{mobile:e}=De(),i=ht(()=>e.value?3:6);return(l,s)=>(c(),v(Ue,{class:"main-window",fluid:""},{default:a(()=>[r("div",Xn,[(c(!0),f(k,null,M(i.value,n=>(c(),f("div",{key:n,class:"skeleton-card"},[...s[0]||(s[0]=[r("div",{class:"skeleton-heading skeleton-pulse"},null,-1),r("div",{class:"skeleton-line skeleton-pulse"},null,-1),r("div",{class:"skeleton-line skeleton-line--short skeleton-pulse"},null,-1)])]))),128))]),s[1]||(s[1]=r("div",{class:"d-flex justify-center mt-6 ga-3"},[r("div",{class:"skeleton-btn skeleton-pulse"}),r("div",{class:"skeleton-btn skeleton-pulse"})],-1))]),_:1}))}},Qn=H(Zn,[["__scopeId","data-v-c545dbe3"]]);function Se(t,e){let i=null;return function(...l){i&&clearTimeout(i),i=setTimeout(()=>{t.apply(this,l)},e)}}function $n(t,e){let i=null,l=0;return function(...s){const n=Date.now();n-l{l=n,t.apply(this,s)},e)):(l=n,t.apply(this,s))}}const eo=A({loader:()=>N(()=>import("./MessageLog-C_EKPx-f.js").then(t=>t.M),__vite__mapDeps([7,0,1,2,3,8,9,10]),import.meta.url),loadingComponent:me,delay:200}),to=A({loader:()=>N(()=>import("./RandomPicker-CZHJEJmO.js"),__vite__mapDeps([11,0,1,2,3,12,13,14,15,16,17,18]),import.meta.url),delay:0}),so=A({loader:()=>N(()=>import("./FloatingToolbar-Bh03SB2m.js"),__vite__mapDeps([19,0,1,2,3,20,21,22,14,15,23,24,25,26,27,28]),import.meta.url),delay:200}),io=A({loader:()=>N(()=>import("./ChatWidget-CdFpE857.js").then(t=>t.C),__vite__mapDeps([29,30,31,0,1,2,3,6,32,16,17,33,14,15,34,35,36,37,38,12,13,39,40]),import.meta.url),delay:0}),no=A({loader:()=>N(()=>import("./HomeworkEditDialog-CT_lOawC.js"),__vite__mapDeps([41,4,5,0,1,2,3,6,38,12,13,39,16,17,42,43,44]),import.meta.url),delay:0}),oo=A({loader:()=>N(()=>import("./UafTransferDialog-BiTNoR1z.js"),__vite__mapDeps([45,4,5,0,1,2,3,6,12,13,42,43,46,47,48,16,17,49,50,51,52,53,20,21,24,25,54,55]),import.meta.url),delay:0}),ao=A({loader:()=>N(()=>import("./InitServiceChooser-jMiMsbAb.js"),__vite__mapDeps([56,0,1,2,3,4,5,6,12,13,42,43,38,39,16,17,51,52,34,35,57]),import.meta.url),loadingComponent:me,delay:200}),ro=A({loader:()=>N(()=>import("./StudentNameManager-CfZ3q6RU.js"),__vite__mapDeps([58,0,1,2,3,4,5,6,59,12,13,53,20,21,24,25,46,47,48,16,17,54,60,61,62,42,43,63]),import.meta.url),delay:200}),lo=A({loader:()=>N(()=>import("./UrgentTestDialog-DIoDIryQ.js"),__vite__mapDeps([64,29,30,31,0,1,2,3,6,32,16,17,33,14,15,34,35,36,37,38,12,13,39,40,4,5,8,9,65,66,67,47,48,68,46,69,70]),import.meta.url),delay:0}),co=A({loader:()=>N(()=>import("./AttendanceSidebar-Cz4nwVcc.js"),__vite__mapDeps([71,0,1,2,3,34,35,63]),import.meta.url),loadingComponent:me,delay:200}),uo=A({loader:()=>N(()=>import("./AttendanceManagementDialog-CCCxW1vX.js"),__vite__mapDeps([72,0,1,2,3,16,17,34,35,12,13,73]),import.meta.url),delay:0}),mo=A({loader:()=>N(()=>import("./PwaInstallCard-CPjNY6NL.js"),__vite__mapDeps([74,2,0,1,3,16,17]),import.meta.url),delay:200}),ho=A({loader:()=>N(()=>import("./ExamScheduleCard-BMCIwBI1.js"),__vite__mapDeps([75,2,0,1,3,42,43,4,5,6,16,17,76,77,78,79,14,15,12,13,32,47,48,20,21,65,66,30,31,33,8,9,34,35,80]),import.meta.url),loadingComponent:me,delay:200}),fo=A({loader:()=>N(()=>import("./ExamConfigEditor-o_7l6zek.js"),__vite__mapDeps([81,4,5,0,1,2,3,6,42,43,82,83,14,15,16,17,34,35,12,13,38,39,47,48,59,53,20,21,24,25,46,54,60,22,23,26,27,84,85,86]),import.meta.url),delay:0}),go={name:"Classworks 作业板",components:{MessageLog:eo,RandomPicker:to,FloatingToolbar:so,FloatingICP:Jn,HomeworkEditDialog:no,InitServiceChooser:ao,ChatWidget:io,StudentNameManager:ro,UrgentTestDialog:lo,AttendanceSidebar:co,AttendanceManagementDialog:uo,HomeworkGrid:Un,HomeActions:Gn,PwaInstallCard:mo,ExamScheduleCard:ho,ExamConfigEditor:fo,HomeSkeleton:Qn,UafTransferDialog:oo},setup(){const{mobile:t}=De(),e=xe();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:De,state:{classNumber:"",namespaceInfo:null,deviceName:"",studentList:[],boardData:{homework:{},attendance:{absent:[],late:[],exclude:[]}},dialogVisible:!1,dialogTitle:"",textarea:"",dateString:"",synced:!1,attendDialogVisible:!1,contentStyle:{"font-size":`${D("font.size")}px`},uploadLoading:!1,downloadLoading:!1,snackbar:!1,snackbarText:"",fontSize:D("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,exportUaf:!1},uafTransfer:{show:!1,mode:"export"},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 D("display.forceDesktopMode")?!1:this.mobile},titleText(){var p,g,S;const t=D("server.provider"),e=t==="kv-server"||t==="classworkscloud";let i;e&&this.state.namespaceInfo?i=((p=this.state.namespaceInfo)==null?void 0:p.name)||((S=(g=this.state.namespaceInfo)==null?void 0:g.device)==null?void 0:S.name)||this.state.classNumber||"高三八班":i=this.state.classNumber||"高三八班";const l=this.getToday(),s=new Date(l);s.setDate(s.getDate()-1);const n=this.state.dateString,d=this.formatDate(l),m=this.formatDate(s);return n===d?i+" - 今天的作业":n===m?i+" - 昨天的作业":`${i} - ${n}的作业`},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 i=this.state.boardData.homework[e];t.push({key:e,name:"考试安排",type:"exam",data:{examId:i.examId},order:-100,rowSpan:200})}for(const e of this.state.availableSubjects){const i=e.name,l=this.state.boardData.homework[i];if(l&&l.content){const n=100+l.content.split(` +`).filter(d=>d.trim()).length*24;t.push({key:i,name:i,type:"homework",content:l.content,tags:Array.isArray(l.tags)?l.tags:[],order:e.order,rowSpan:n})}}D("timeCard.enabled")&&t.push({key:"time-card",name:"时间",type:"time",order:9997,rowSpan:150}),D("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 i=this.state.boardData.homework[e],s=100+i.content.split(` +`).filter(n=>n.trim()).length*24;t.push({key:e,name:i.name,type:"custom",content:i.content,tags:Array.isArray(i.tags)?i.tags:[],order:9999,rowSpan:s})}return t.sort((e,i)=>e.order-i.order),t},unusedSubjects(){const t=Object.keys(this.state.boardData.homework).filter(e=>{var i;return(i=this.state.boardData.homework[e].content)==null?void 0:i.trim()});return this.state.availableSubjects.filter(e=>!t.includes(e.name)).sort((e,i)=>e.order-i.order)},emptySubjects(){return this.emptySubjectDisplay!=="button"?[]:this.unusedSubjects},autoSave(){return D("edit.autoSave")},blockNonTodayAutoSave(){return D("edit.blockNonTodayAutoSave")},isToday(){const t=(()=>{const e=new Date,i=e.getFullYear(),l=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${i}${l}${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 D("edit.refreshBeforeEdit")},emptySubjectDisplay(){return D("display.emptySubjectDisplay")},dynamicSort(){return D("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 D("randomPicker.enabled")},showListCardButton(){return D("display.showListCard")},confirmNonTodaySave(){return D("edit.confirmNonTodaySave")},blockPastDataEdit(){return D("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 D("display.showFullscreenButton")},showExamScheduleButton(){return D("display.showExamScheduleButton")},showAntiScreenBurnCard(){return D("display.showAntiScreenBurnCard")},showTestCardButton(){return D("developer.enabled")},showUafTransferButton(){return D("display.showUafTransfer")},shouldShowInit(){var s;const t=D("server.provider"),e=t==="kv-server"||t==="classworkscloud",i=D("server.kvToken"),l=((s=this.$route)==null?void 0:s.path)==="/";return this.settingsTick,l&&e&&(!i||i==="")},hasExamCard(){for(const t in this.state.boardData.homework)if(t.startsWith("exam-"))return!0;return!1},shouldShowUrgentTestButton(){const t=D("server.provider");return!(t==="kv-server"||t==="classworkscloud")||!D("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=Se(this.uploadData,2e3),this.debouncedAttendanceSave=Se(async()=>{this.autoSave&&await this.trySave(!0)},2e3),this.throttledReflow=$n(()=>{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 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(),Ve.init(),this.$nextTick(()=>{this.updateTokenDisplayInfo()}),await this.loadTokenInfo(),this.loadPersistentNotifications()}catch(t){console.error("初始化失败:",t),this.showError("初始化失败,请刷新页面重试")}},beforeUnmount(){Ve.destroy(),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),kt()}catch(t){console.warn("主页面事件清理失败:",t)}},methods:{async loadDeviceInfo(){var t;try{const e=D("server.provider");if(!(e==="kv-server"||e==="classworkscloud"))return;const l=await gt.loadNamespaceInfo();if(l&&l.success===!1)return;this.state.namespaceInfo=l||null,this.state.deviceName=((t=l==null?void 0:l.account)==null?void 0:t.deviceName)||""}catch(e){console.warn("加载设备信息失败:",e)}},async loadTokenInfo(){try{const t=D("server.provider");if(!(t==="kv-server"||t==="classworkscloud"))return;const i=D("server.kvToken");if(!i)return;const l=D("server.domain");if(!l)return;const s=await ft.get(`${l}/kv/_token`,{headers:{Authorization:`Bearer ${i}`}});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,i=t.isReadOnly,l=t.isStudentToken,s=t.isTeacherToken;if(this.tokenDisplayInfo.readonly=i,!l&&!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=i,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),i=e.getFullYear(),l=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${i}${l}${s}`},formatTime(t){return t?new Date(t).toLocaleString():""},getToday(){return new Date},async initializeData(){this.parsePreconfigData();const t=await this.parseUrlConfig(),i=new URLSearchParams(window.location.search).get("date"),l=this.getToday();let s=l;if(i){if(/^\d{8}$/.test(i)){const n=i.substring(0,4),d=i.substring(4,6),m=i.substring(6,8);s=new Date(`${n}-${d}-${m}`)}else s=new Date(i);isNaN(s.getTime())&&(s=l)}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(l),!t){this.provider=D("server.provider");const n=D("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(t,e=!1,i=!1){const l=`exam-${t}`;!e&&this.state.boardData.homework[l]?delete this.state.boardData.homework[l]:this.state.boardData.homework[l]={type:"exam",examId:t,name:"考试安排",content:""},this.state.synced=!1,i||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,i,l;if(!this.loading.download)try{this.loading.download=!0;const s=await R.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:((i=s.attendance)==null?void 0:i.late)||[],exclude:((l=s.attendance)==null?void 0:l.exclude)||[]}},this.state.synced=!0,this.state.showNoDataMessage=!1,s.fromCache?this.$message.warning("离线模式","显示缓存数据,联网后将自动同步"):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 i;if(!this.currentEditSubject)return;const t=this.state.textarea.trim(),e=((i=this.state.boardData.homework[this.currentEditSubject])==null?void 0:i.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]={...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 R.saveData("classworks-data-"+this.state.dateString,this.state.boardData);if(t.success==!1)throw new Error(t.error.message);this.state.synced=!0,t.queuedForSync?this.$message.warning("已保存到本地","网络恢复后将自动同步到服务器"):this.$message.success(t.message||"保存成功")}finally{this.loading.upload=!1}},async loadConfig(){try{try{const t=await R.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 R.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 i=this.$refs.studentNameManager;i!=null&&i.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(i){console.error("刷新数据失败:",i),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(i=>i.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]={...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`},q("font.size",this.state.fontSize)},updateBackendUrl(){const t=D("server.provider"),e=D("server.classNumber");this.provider=t,this.state.classNumber=e},setupAutoRefresh(){const t=D("refresh.auto"),e=D("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=D("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),i=this.formatDate(e);if(i===this.state.dateString)return;this.state.dateString=i,this.state.selectedDate=i,this.state.selectedDateObj=e,this.state.isToday=i===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=D("server.kvToken");if(!t){console.warn("未配置 KV Token,无法加入实时频道");return}Dt(),Ne(t),this.$offConnect=xt(()=>Ne(t)),this.debouncedRealtimeRefresh||(this.debouncedRealtimeRefresh=Se(async()=>{var g,S,U;const l=JSON.parse(JSON.stringify(this.state.boardData.homework));await this.downloadData();const s=new Date,n=String(s.getHours()).padStart(2,"0"),d=String(s.getMinutes()).padStart(2,"0"),m=String(s.getSeconds()).padStart(2,"0");(g=this.$message)==null||g.info("数据已更新",`已于 ${n}:${d}:${m} 自动刷新`);const p={};for(const L in this.state.boardData.homework){const X=((S=l[L])==null?void 0:S.content)||"",Z=((U=this.state.boardData.homework[L])==null?void 0:U.content)||"";X!==Z&&(p[L]=!0)}for(const L in l)this.state.boardData.homework[L]||(p[L]=!0);this.highlightedCards=p,setTimeout(()=>{this.highlightedCards={}},1e4)},800));const e=l=>{var n;if(!l)return;if(l.key==="notification-list"){this.loadPersistentNotifications();return}const s=`classworks-data-${this.state.dateString}`;l.key===s&&(l.action!=="upsert"&&l.action!=="delete"||(n=this.debouncedRealtimeRefresh)==null||n.call(this,l.key))},i=l=>{let s=l;l.content&&l.timestamp&&(s={uuid:l.senderId||"realtime",key:l.content.key,action:l.content.action,created:l.content.created,updatedAt:l.content.updatedAt||l.timestamp,deletedAt:l.content.deletedAt,batch:l.content.batch}),e(s)};this.$offKvChanged=Pe("kv-key-changed",i),this.deviceEventHandler=Ct({onKvChanged:e,enableLegacySupport:!0}),this.$offDeviceEvent=Pe("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="",i="success"){this.$message[i](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},openUafTransfer(t){this.uafTransfer.mode=t,this.uafTransfer.show=!0},handleUafSuccess(t,e){this.$message.success(t,e)},handleUafError(t,e){this.$message.error(t,e)},async handleUafImported(t){t.savedDates.includes(this.state.dateString)&&await this.downloadData(!0)},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 i=atob(e),l=Uint8Array.from(i,g=>g.charCodeAt(0)),s=new TextDecoder().decode(l),n=JSON.parse(s);console.log("从URL读取配置:",n);const d=[],m={},p={};return this.processSpecialSettings(n,d,m),this.processStandardSettings(n,d,m,p),Object.keys(m).length===0?(console.log("URL配置与当前配置相同,无需应用"),!1):new Promise(g=>{this.urlConfigDialog={show:!0,config:n,changes:d,validSettings:m,icons:p,confirmHandler:()=>{this.urlConfigDialog.show=!1,this.applyUrlConfig(m),g(!0)},cancelHandler:()=>{this.urlConfigDialog.show=!1,g(!1)}}})}catch(i){return console.error("解析URL配置错误:",i),this.$message.error("URL配置错误","无法解析配置数据"),!1}}catch(t){return console.error("处理URL配置错误:",t),!1}},processSpecialSettings(t,e,i){var l,s;if(t.classNumber!==void 0){const n=D("server.classNumber");t.classNumber!==n&&(e.push({key:"server.classNumber",name:"班级",oldValue:n,newValue:t.classNumber,description:((l=Q["server.classNumber"])==null?void 0:l.description)||"班级编号",icon:((s=Q["server.classNumber"])==null?void 0:s.icon)||"mdi-account-group"}),i["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"}),i.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"}),i.subjects=t.subjects)},processStandardSettings(t,e,i,l){Object.entries(t).forEach(([s,n])=>{if(["classNumber","date","subjects"].includes(s))return;let d=s,m=Q[s];if(!m&&!s.includes(".")){const p=["server.","display.","theme.","edit.","refresh.","font.","randomPicker."];for(const g of p){const S=`${g}${s}`;if(Q[S]){d=S,m=Q[S];break}}}if(m){let p=this.convertValueToCorrectType(n,m.type);if(m.validate&&!m.validate(p)){console.warn(`URL配置项 ${d} 的值无效: ${n}`);return}const g=D(d);p!==g&&(e.push({key:d,name:this.getSettingDisplayName(d),oldValue:this.formatSettingValue(g),newValue:this.formatSettingValue(p),description:m.description||d,icon:m.icon||"mdi-cog"}),i[d]=p,l[d]=m.icon||"mdi-cog")}else e.push({key:s,name:this.getSettingDisplayName(s),oldValue:"未知",newValue:this.formatSettingValue(n),description:"自定义配置项",icon:"mdi-cog-outline"}),i[s]=n,l[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("."),i=e[e.length-1];return{provider:"数据提供方",domain:"服务器域名",classNumber:"班级编号",emptySubjectDisplay:"空科目显示方式",dynamicSort:"动态排序",showRandomButton:"随机按钮",showFullscreenButton:"全屏按钮",cardHoverEffect:"卡片悬浮效果",enhancedTouchMode:"增强触摸模式",showAntiScreenBurnCard:"防烧屏卡片",showUafTransfer:"UAF导入导出",mode:"主题模式",size:"字体大小",autoSave:"自动保存",blockNonTodayAutoSave:"禁止自动保存非当日",refreshBeforeEdit:"编辑前刷新",confirmNonTodaySave:"非当日保存确认",auto:"自动刷新",interval:"刷新间隔"}[i]||i},safeBase64Decode(t){try{return Fe.decode(t)}catch(e){throw console.error("Base64解码错误:",e),new Error("无法解码配置数据")}},applyUrlConfig(t){for(const[e,i]of Object.entries(t)){if(e==="date"){this.handleDateSelect(i);continue}if(e==="subjects"){this.state.availableSubjects=i;continue}q(e,i),e==="server.classNumber"&&(this.state.classNumber=i)}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)),i=this.getToday(),l=this.formatDate(i);this.state.dateString=l,await this.downloadData();const s={};for(const d in e)e[d]&&e[d].content&&(e[d].type==="custom"?s[d]=JSON.parse(JSON.stringify(e[d])):s[d]={content:e[d].content,tags:Array.isArray(e[d].tags)?[...e[d].tags]:[]});this.state.boardData.homework=s,this.state.synced=!1,await this.uploadData(),this.state.selectedDate=l,this.state.selectedDateObj=i,this.state.isToday=!0;const n=new URL(window.location);n.searchParams.delete("date"),window.history.pushState({},"",n),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"),i=t.get("authCode")||t.get("auth_code"),l=t.get("autoExecute")||t.get("auto_execute");e&&(this.preconfigData.namespace=e,this.preconfigData.authCode=i,this.preconfigData.autoOpen=!0,this.preconfigData.autoExecute=this.parseBoolean(l),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 i=!1;t.forEach(l=>{e.searchParams.has(l)&&(e.searchParams.delete(l),i=!0)}),i&&window.history.replaceState({},document.title,e.toString())}catch(e){console.error("清理URL参数失败:",e)}},async loadPersistentNotifications(){try{const t=await R.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(i=>i.id!==t);const e=this.persistentNotifications.length>0?this.persistentNotifications:{};await R.saveData("notification-list",e),this.notificationDetailDialog=!1}}},po={key:3,class:"d-flex"},yo={class:"text-h6 text-truncate font-weight-bold"},bo={class:"text-h4 font-weight-medium mb-4",style:{"line-height":"1.5"}},vo={class:"text-subtitle-1 text-grey"},wo={class:"d-flex align-center flex-wrap"},So={class:"text-subtitle-1"},Do={class:"text-grey-darken-1"},xo={class:"text-primary font-weight-medium"},ko={key:1,class:"text-center py-4 text-grey"};function Co(t,e,i,l,s,n){const d=V("init-service-chooser"),m=V("StudentNameManager"),p=V("HomeSkeleton"),g=V("homework-grid"),S=V("home-actions"),U=V("uaf-transfer-dialog"),L=V("pwa-install-card"),X=V("attendance-sidebar"),Z=V("homework-edit-dialog"),fe=V("attendance-management-dialog"),W=V("message-log"),ge=V("floating-toolbar"),Je=V("FloatingICP"),Xe=V("ChatWidget"),Ze=V("UrgentTestDialog"),Qe=V("random-picker"),$e=V("exam-config-editor");return c(),f(k,null,[o(_t,{class:"no-select"},{append:a(()=>[s.tokenDisplayInfo.readonly?(c(),v(z,{key:0,class:"mx-2",color:"warning","prepend-icon":"mdi-lock-alert",variant:"tonal"},{default:a(()=>[...e[33]||(e[33]=[u(" 只读 ",-1)])]),_:1})):w("",!0),s.tokenDisplayInfo.show?(c(),v(z,{key:1,style:P({cursor:s.tokenDisplayInfo.disabled?"default":"pointer"}),class:"mx-2",color:"primary","prepend-icon":"mdi-account",variant:"tonal",onClick:n.handleTokenChipClick},{default:a(()=>[u(h(s.tokenDisplayInfo.text),1)]),_:1},8,["style","onClick"])):w("",!0),n.shouldShowUrgentTestButton?(c(),v(b,{key:2,"prepend-icon":"mdi-chat",variant:"tonal",onClick:e[0]||(e[0]=y=>s.urgentTestDialog=!0)},{default:a(()=>[...e[34]||(e[34]=[u(" 发送通知 ",-1)])]),_:1})):w("",!0),o(b,{icon:"mdi-chat",variant:"text",onClick:e[1]||(e[1]=y=>s.isChatOpen=!0)}),o(b,{badge:n.unreadCount||void 0,"badge-color":n.unreadCount?"error":void 0,icon:"mdi-bell",variant:"text",onClick:e[2]||(e[2]=y=>t.$refs.messageLog.drawer=!0)},null,8,["badge","badge-color"]),o(b,{icon:"mdi-cog",variant:"text",onClick:e[3]||(e[3]=y=>t.$router.push("/settings"))})]),default:a(()=>[o(Tt,null,{default:a(()=>[u(h(n.titleText),1)]),_:1}),o(E)]),_:1}),n.shouldShowInit?(c(),v(d,{key:0,preconfig:s.preconfigData,onDone:e[4]||(e[4]=y=>s.settingsTick++)},null,8,["preconfig"])):w("",!0),n.shouldShowInit?w("",!0):(c(),v(m,{key:1,ref:"studentNameManager",onTokenInfoUpdated:n.updateTokenDisplayInfo},null,8,["onTokenInfoUpdated"])),!n.shouldShowInit&&!s.dataReady?(c(),v(p,{key:2})):w("",!0),!n.shouldShowInit&&s.dataReady?(c(),f("div",po,[o(Ue,{class:"main-window flex-grow-1 no-select bloom-container",fluid:""},{default:a(()=>[s.persistentNotifications.length>0?(c(),v(Mt,{key:0,class:"mb-4"},{default:a(()=>[o(Et,{cols:"12"},{default:a(()=>[(c(!0),f(k,null,M(s.persistentNotifications,y=>(c(),v(_,{key:y.id,color:y.isUrgent?"error":"primary",class:"mb-2 cursor-pointer",variant:"tonal",onClick:pe=>n.showNotificationDetail(y)},{default:a(()=>[o(T,{class:"d-flex align-center py-3"},{default:a(()=>[r("span",yo,h(y.message),1),o(E),o(b,{icon:"mdi-chevron-right",variant:"text"})]),_:2},1024)]),_:2},1032,["color","onClick"]))),128))]),_:1})]),_:1})):w("",!0),o(B,{modelValue:s.notificationDetailDialog,"onUpdate:modelValue":e[8]||(e[8]=y=>s.notificationDetailDialog=y),"max-width":"700",scrollable:""},{default:a(()=>[s.currentNotification?(c(),v(_,{key:0,class:"rounded-xl"},{default:a(()=>[o(I,{class:"d-flex align-center pa-4 text-h5"},{default:a(()=>[r("span",{class:O([s.currentNotification.isUrgent?"text-error":"","font-weight-bold"])},h(s.currentNotification.isUrgent?"强调通知":"通知详情"),3),o(E),o(b,{icon:"mdi-close",variant:"text",onClick:e[5]||(e[5]=y=>s.notificationDetailDialog=!1)})]),_:1}),o(F),o(T,{class:"pa-6"},{default:a(()=>[r("div",bo,h(s.currentNotification.message),1),r("div",vo," 发布时间:"+h(n.formatTime(s.currentNotification.timestamp)),1)]),_:1}),o(F),o(j,{class:"pa-4"},{default:a(()=>[o(b,{color:"error","prepend-icon":"mdi-delete",size:"x-large",variant:"tonal",class:"px-6",onClick:e[6]||(e[6]=y=>n.removePersistentNotification(s.currentNotification.id))},{default:a(()=>[...e[35]||(e[35]=[u(" 删除通知 ",-1)])]),_:1}),o(E),o(b,{color:"primary",size:"x-large",variant:"elevated",class:"px-8",onClick:e[7]||(e[7]=y=>s.notificationDetailDialog=!1)},{default:a(()=>[...e[36]||(e[36]=[u(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):w("",!0)]),_:1},8,["modelValue"]),o(g,{"sorted-items":n.sortedItems,"unused-subjects":n.unusedSubjects,"empty-subject-display":n.emptySubjectDisplay,"is-mobile":n.isMobile,"is-editing-disabled":n.isEditingDisabled,"content-style":s.state.contentStyle,"highlighted-cards":s.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"]),o(S,{synced:s.state.synced,"loading-upload":s.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":s.state.isFullscreen,"show-anti-screen-burn-card":n.showAntiScreenBurnCard,"show-test-card-button":n.showTestCardButton,"show-uaf-transfer-button":n.showUafTransferButton,"uaf-transfer-loading":s.loading.exportUaf,onUpload:n.manualUpload,onShowSyncMessage:n.showSyncMessage,onOpenRandomPicker:n.openRandomPicker,onToggleFullscreen:n.toggleFullscreen,onAddTestCard:n.addTestCard,onAddExamCard:e[9]||(e[9]=y=>s.showAddExamDialog=!0),onOpenUafExport:e[10]||(e[10]=y=>n.openUafTransfer("export")),onOpenUafImport:e[11]||(e[11]=y=>n.openUafTransfer("import"))},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","show-uaf-transfer-button","uaf-transfer-loading","onUpload","onShowSyncMessage","onOpenRandomPicker","onToggleFullscreen","onAddTestCard"]),o(U,{modelValue:s.uafTransfer.show,"onUpdate:modelValue":e[12]||(e[12]=y=>s.uafTransfer.show=y),mode:s.uafTransfer.mode,"current-date":s.state.dateString,"current-items":n.sortedItems,"current-board-data":s.state.boardData,subjects:s.state.availableSubjects,onSuccess:n.handleUafSuccess,onError:n.handleUafError,onImported:n.handleUafImported},null,8,["modelValue","mode","current-date","current-items","current-board-data","subjects","onSuccess","onError","onImported"]),o(L),s.upcomingExams.length>0&&!n.hasExamCard?(c(),v(le,{key:1,class:"mt-4",color:"info",variant:"tonal",closable:"",icon:"mdi-calendar-clock",title:"近期有考试安排"},{append:a(()=>[o(b,{color:"primary",variant:"text",onClick:n.addAllUpcomingExams},{default:a(()=>[...e[38]||(e[38]=[u(" 一键添加 ",-1)])]),_:1},8,["onClick"])]),default:a(()=>[r("div",wo,[e[37]||(e[37]=r("span",{class:"mr-2"},"检测到未来两天内有以下考试:",-1)),(c(!0),f(k,null,M(s.upcomingExams,y=>(c(),v(z,{key:y.id,size:"small",class:"mr-1 mb-1",color:"primary"},{default:a(()=>[u(h(y.examName),1)]),_:2},1024))),128))])]),_:1})):w("",!0)]),_:1}),n.isMobile?w("",!0):(c(),v(X,{key:0,"student-list":s.state.studentList,attendance:s.state.boardData.attendance,"is-editing-disabled":n.isEditingDisabled,onClick:n.setAttendanceArea,onDisabledClick:n.handleDisabledClick},null,8,["student-list","attendance","is-editing-disabled","onClick","onDisabledClick"]))])):w("",!0),o(Z,{modelValue:s.state.dialogVisible,"onUpdate:modelValue":e[13]||(e[13]=y=>s.state.dialogVisible=y),"auto-save":n.autoSave,"initial-content":s.state.textarea,title:s.state.dialogTitle,"is-editing-past-data":n.isEditingPastData,"current-date-string":s.state.dateString,onSave:n.handleHomeworkSave},null,8,["modelValue","auto-save","initial-content","title","is-editing-past-data","current-date-string","onSave"]),o(ot,{modelValue:s.state.snackbar,"onUpdate:modelValue":e[14]||(e[14]=y=>s.state.snackbar=y),timeout:2e3},{default:a(()=>[u(h(s.state.snackbarText),1)]),_:1},8,["modelValue"]),o(fe,{modelValue:s.state.attendanceDialog,"onUpdate:modelValue":e[15]||(e[15]=y=>s.state.attendanceDialog=y),"student-list":s.state.studentList,attendance:s.state.boardData.attendance,"date-string":s.state.dateString,onSave:n.saveAttendance,onChange:n.handleAttendanceChange},null,8,["modelValue","student-list","attendance","date-string","onSave","onChange"]),o(W,{ref:"messageLog"},null,512),o(ge,{"is-today":n.isToday,loading:s.loading.download,"copy-to-today-loading":s.loading.copyToToday,"selected-date":s.state.selectedDateObj,"unread-count":n.unreadCount,onRefresh:n.downloadData,onZoom:n.zoom,onOpenMessages:e[16]||(e[16]=y=>t.$refs.messageLog.drawer=!0),onOpenSettings:e[17]||(e[17]=y=>t.$router.push("/settings")),onDateSelect:n.handleDateSelect,onPrevDay:e[18]||(e[18]=y=>n.navigateDay(-1)),onNextDay:e[19]||(e[19]=y=>n.navigateDay(1)),onCopyToToday:n.copyHomeworkToToday},null,8,["is-today","loading","copy-to-today-loading","selected-date","unread-count","onRefresh","onZoom","onDateSelect","onCopyToToday"]),o(Je),o(Xe,{modelValue:s.isChatOpen,"onUpdate:modelValue":e[20]||(e[20]=y=>s.isChatOpen=y),"show-button":!1},null,8,["modelValue"]),o(Ze,{modelValue:s.urgentTestDialog,"onUpdate:modelValue":e[21]||(e[21]=y=>s.urgentTestDialog=y)},null,8,["modelValue"]),o(B,{modelValue:s.confirmDialog.show,"onUpdate:modelValue":e[22]||(e[22]=y=>s.confirmDialog.show=y),"max-width":"400"},{default:a(()=>[o(_,null,{default:a(()=>[o(I,{class:"text-h6"},{default:a(()=>[...e[39]||(e[39]=[u(" 确认保存 ",-1)])]),_:1}),o(T,null,{default:a(()=>[u(" 您正在修改 "+h(s.state.dateString)+" 的数据,确定要保存吗? ",1)]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{color:"grey",variant:"text",onClick:s.confirmDialog.reject},{default:a(()=>[...e[40]||(e[40]=[u(" 取消 ",-1)])]),_:1},8,["onClick"]),o(b,{color:"primary",onClick:s.confirmDialog.resolve},{default:a(()=>[...e[41]||(e[41]=[u(" 确认保存 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(Qe,{ref:"randomPicker",attendance:s.state.boardData.attendance,"student-list":s.state.studentList},null,8,["attendance","student-list"]),o(B,{modelValue:s.urlConfigDialog.show,"onUpdate:modelValue":e[23]||(e[23]=y=>s.urlConfigDialog.show=y),"max-width":"500"},{default:a(()=>[o(_,null,{default:a(()=>[o(I,{class:"text-h6"},{default:a(()=>[...e[42]||(e[42]=[u(" 确认应用URL配置 ",-1)])]),_:1}),o(T,null,{default:a(()=>[e[43]||(e[43]=r("p",null,"以下配置将应用于当前班级:",-1)),o(J,{density:"compact"},{default:a(()=>[(c(!0),f(k,null,M(s.urlConfigDialog.changes,y=>(c(),v(G,{key:y.key},{prepend:a(()=>[o(x,{icon:y.icon,class:"mr-2",size:"small"},null,8,["icon"])]),default:a(()=>[o(oe,{class:"d-flex align-center"},{default:a(()=>[r("span",So,h(y.name),1),o(bt,{activator:"parent",location:"top"},{default:a(()=>[u(h(y.description||y.key),1)]),_:2},1024)]),_:2},1024),o(ae,null,{default:a(()=>[r("span",Do,h(y.oldValue),1),o(x,{class:"mx-1",icon:"mdi-arrow-right",size:"small"}),r("span",xo,h(y.newValue),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{color:"grey",variant:"text",onClick:s.urlConfigDialog.cancelHandler},{default:a(()=>[...e[44]||(e[44]=[u(" 取消 ",-1)])]),_:1},8,["onClick"]),o(b,{color:"primary",onClick:s.urlConfigDialog.confirmHandler},{default:a(()=>[...e[45]||(e[45]=[u(" 确认应用 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(B,{modelValue:s.showExamDetailDialog,"onUpdate:modelValue":e[26]||(e[26]=y=>s.showExamDetailDialog=y),persistent:"",fullscreen:""},{default:a(()=>[s.selectedExamId?(c(),v(_,{key:0},{default:a(()=>[o(I,{class:"d-flex align-center pa-4"},{default:a(()=>[e[46]||(e[46]=u(" 编辑考试配置 ",-1)),o(E),o(b,{icon:"mdi-close",variant:"text",onClick:e[24]||(e[24]=y=>s.showExamDetailDialog=!1)})]),_:1}),o(T,{class:"pa-4",style:{"max-height":"70vh","overflow-y":"auto"}},{default:a(()=>[o($e,{"config-id":s.selectedExamId,"dialog-mode":!0,onSaved:n.onExamConfigSaved,onDeleted:n.onExamConfigDeleted},null,8,["config-id","onSaved","onDeleted"])]),_:1}),o(F),o(j,{class:"pa-4"},{default:a(()=>[o(b,{color:"error","prepend-icon":"mdi-delete",variant:"tonal",onClick:n.removeCurrentExamCard},{default:a(()=>[...e[47]||(e[47]=[u(" 移除卡片 ",-1)])]),_:1},8,["onClick"]),o(E),o(b,{color:"primary",variant:"text",onClick:e[25]||(e[25]=y=>s.showExamDetailDialog=!1)},{default:a(()=>[...e[48]||(e[48]=[u(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):w("",!0)]),_:1},8,["modelValue"]),o(B,{modelValue:s.showAddExamDialog,"onUpdate:modelValue":e[29]||(e[29]=y=>s.showAddExamDialog=y),"max-width":"500"},{default:a(()=>[o(_,null,{default:a(()=>[o(I,{class:"text-h6"},{default:a(()=>[...e[49]||(e[49]=[u(" 考试看板 ",-1)])]),_:1}),o(T,null,{default:a(()=>[o(J,null,{default:a(()=>[o(G,{active:"",color:"green",onClick:e[27]||(e[27]=y=>t.$router.push("/examschedule")),"append-icon":"mdi-arrow-right"},{default:a(()=>[...e[50]||(e[50]=[u("打开考试看板",-1)])]),_:1})]),_:1}),l.examStore.examList.length>0?(c(),v(J,{key:0},{default:a(()=>[(c(!0),f(k,null,M(l.examStore.examList,y=>{var pe;return c(),v(G,{key:y.id,title:((pe=l.examStore.exams[y.id])==null?void 0:pe.examName)||y.id,subtitle:y.id,onClick:_o=>n.addExamCard(y.id)},{prepend:a(()=>[o(x,{color:"primary"},{default:a(()=>[...e[51]||(e[51]=[u(" mdi-calendar-text ",-1)])]),_:1})]),append:a(()=>[o(b,{icon:n.isExamCardAdded(y.id)?"mdi-check":"mdi-plus",color:n.isExamCardAdded(y.id)?"success":"grey",variant:"text"},null,8,["icon","color"])]),_:2},1032,["title","subtitle","onClick"])}),128))]),_:1})):(c(),f("div",ko," 暂无考试配置 "))]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{color:"primary",variant:"text",onClick:e[28]||(e[28]=y=>s.showAddExamDialog=!1)},{default:a(()=>[...e[52]||(e[52]=[u(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(B,{modelValue:s.notificationDetailDialog,"onUpdate:modelValue":e[32]||(e[32]=y=>s.notificationDetailDialog=y),"max-width":"600"},{default:a(()=>[s.currentNotification?(c(),v(_,{key:0},{default:a(()=>[o(I,{class:O(["headline",s.currentNotification.isUrgent?"text-error":"text-primary"])},{default:a(()=>[u(h(s.currentNotification.isUrgent?"强调通知":"通知详情"),1)]),_:1},8,["class"]),o(T,{class:"text-h5 py-4"},{default:a(()=>[u(h(s.currentNotification.message),1)]),_:1}),o(j,null,{default:a(()=>[o(b,{color:"error",variant:"text",onClick:e[30]||(e[30]=y=>n.removePersistentNotification(s.currentNotification.id))},{default:a(()=>[...e[53]||(e[53]=[u(" 删除 ",-1)])]),_:1}),o(E),o(b,{color:"primary",onClick:e[31]||(e[31]=y=>s.notificationDetailDialog=!1)},{default:a(()=>[...e[54]||(e[54]=[u(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):w("",!0)]),_:1},8,["modelValue"]),e[55]||(e[55]=r("br",null,null,-1)),e[56]||(e[56]=r("br",null,null,-1)),e[57]||(e[57]=r("br",null,null,-1))],64)}const To=H(go,[["render",Co]]),Yo=Object.freeze(Object.defineProperty({__proto__:null,default:To},Symbol.toStringTag,{value:"Module"}));export{Yo as i,xe as u}; diff --git a/assets/index-Ceq_468-.js b/assets/index-Ceq_468-.js new file mode 100644 index 0000000..382bf12 --- /dev/null +++ b/assets/index-Ceq_468-.js @@ -0,0 +1,2 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./default-CGkACEC3.js","./vendor-vuetify-rtu3DHX4.js","./vendor-vue-BiQC5iF7.js","./default-CmdaPMSp.css","./index-CbUii4LM.js","./dataProvider-D5waPBEc.js","./vendor-utils-2lvrqI0-.js","./serverRotation-Bs3NH0Jb.js","./VChip-BdtDOEwz.js","./VChip-Dmz_1Lnv.css","./VTabs-B7ztkrUN.js","./VTable-CJ8evfI8.js","./VTable-CNLJxQof.css","./VTabs-566n5b08.css","./VAlert-C02HdytA.js","./VAlert-D_OX1cfW.css","./VTooltip-CWhmSQeX.js","./VTooltip-D7EaNDeY.css","./VTextField-DpXLMPq7.js","./VTextField-DTDEIDq0.css","./soundList-D9U-Grcp.js","./VSwitch-d4Yvphn0.js","./VSwitch-Bk42mIwg.css","./VMenu-DqtPWEMI.js","./VMenu-C31D-C2L.css","./VContainer-BisEDTd3.js","./VContainer-B1KSavhG.css","./socketClient-DJ8u9nXv.js","./vendor-socket-dm1FmSOd.js","./deviceEvents-Wy8_E1wQ.js","./VAppBarTitle-q97S07ao.js","./VAppBarTitle-CczdD-Q2.css","./VRow-BiiRXDj9.js","./VRow-D2ArqUC2.css","./index-BFmbztHq.css","./404-BC-9JvcA.js","./authorize-LEIDOvih.js","./CacheManagement-D69xlD6i.js","./VExpansionPanels-DbwaqF41.js","./VExpansionPanels-kEj4ZJQK.css","./VSkeletonLoader-B0OOafGJ.js","./VSkeletonLoader-C11ZEozu.css","./cses2wakeup-CYA5ZLcv.js","./VTextarea-UKN-Avq_.js","./VTextarea-_xVwaw_z.css","./VFileInput-D2ZU5WsA.js","./VFileInput-CRcZ0Lr3.css","./VDataTable-BtP49-4R.js","./VPagination-BQZD6rf1.js","./VPagination-BF2MZmld.css","./VSelect-OEnAsVY5.js","./VSheet-MW0wxrpj.js","./VSheet-DW_b51tO.css","./VCheckboxBtn-snLiE5D5.js","./VSelect-DHZViySU.css","./VDataTable-Cl7qiDOP.css","./VCheckbox-BM0AQhRG.js","./VCheckbox-ZL-u1kGB.css","./cses2wakeup-Qc4GsQy3.css","./debug-DkHlxsJi.js","./visitorId-D2J8zjxI.js","./debug-CbS14biG.css","./debug-init-BXJK30rf.js","./VForm-vCieX1EY.js","./debug-socket-Cawza1cL.js","./_id_-C03QyIMT.js","./ExamConfigEditor-o_7l6zek.js","./VAutocomplete-C-Az_ynh.js","./VAutocomplete-Ygy_KjMW.css","./VDatePicker-C_lQuyln.js","./VPicker-DxbAs-x1.js","./VPicker-Dm9DplUc.css","./VDatePicker-zglzEVGT.css","./VTimePicker-DXcm5dub.js","./VTimePicker-BkWY3_8P.css","./ExamConfigEditor-HgNV6CVV.css","./examschedule-Bjj5pPD_.js","./examschedule-D7wPNFui.css","./index-CVHPTbQ0.js","./_id_-Dw-jkNll.js","./settings-CDDXJDZW.js","./MessageLog-C_EKPx-f.js","./MessageLog-BGkFwivK.css","./VCombobox-CjTuZar9.js","./VCombobox-r6cc1Iy_.css","./settings-BxfdCqX7.css","./socket-debugger-CKswW_PL.js","./socket-debugger-B22H3Il3.css"])))=>i.map(i=>d[i]); +import{c as bi,g as qe,p as T,d as bn,i as jn,a as pi,b as Si,e as wi,f as G,h as ye,j as Ft,u as Z,m as fe,k as ee,l as Ee,n as Pe,o as Je,w as pn,q as ki,r as Ci,s as B,t as Sa,v as _i,x as xi,I as oe,S as Sn,y as wa,P as Tt,z as et,A as zt,B as an,C as ht,D as Gn,E as Ae,F as sn,G as Et,H as wn,J as Ei,K as Ii,L as Ot,M as Pi,N as Un,O as Kn,Q as Kt,R as Xt,T as ka,U as Xn,V as Ai,W as Vi,X as Yn,Y as Li,Z as Ti,_ as Oi,$ as It,a0 as Bi,a1 as Ri,a2 as Ca,a3 as Ni,a4 as Fe,a5 as at,a6 as on,a7 as $i,a8 as Di,a9 as Mi,aa as kn,ab as Jn,ac as Qn,ad as Fi,ae as zi,af as Wi,ag as ft,ah as ln,ai as ke,aj as _a,ak as qi,al as Hi,am as ji}from"./vendor-vuetify-rtu3DHX4.js";import{J as Gi,K as Ui,L as Ki,e as C,t as k,M as rn,l as se,k as I,n as j,F as Ve,j as S,N as X,E as Cn,p as He,d as Le,A as je,o as W,D as it,O as Xi,r as vt,u as Yi,m as Q,y as Ji,T as Qi,s as z,q as ve,b as M,w as Ne,P as $e,Q as xa,I as de,R as We,S as _e,v as Ea,x as ne,B as Ia,U as _n,h as xn,V as En,W as Zi,X as Ce,Y as ze,Z as ie,f as es,_ as In,$ as Bt,a0 as Pn,a1 as Ct,a2 as ts,a3 as ns,a4 as as,a5 as is}from"./vendor-vue-BiQC5iF7.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 o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&a(o)}).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 ss="modulepreload",os=function(e,t){return new URL(e,t).href},Zn={},ae=function(t,n,a){let i=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),r=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));i=Promise.allSettled(n.map(u=>{if(u=os(u,a),u in Zn)return;Zn[u]=!0;const c=u.endsWith(".css"),m=c?'[rel="stylesheet"]':"";if(!!a)for(let g=o.length-1;g>=0;g--){const f=o[g];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":ss,c||(d.as="script"),d.crossOrigin="",d.href=u,r&&d.setAttribute("nonce",r),document.head.appendChild(d),c)return new Promise((g,f)=>{d.addEventListener("load",g),d.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${u}`)))})}))}function s(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return i.then(o=>{for(const l of o||[])l.status==="rejected"&&s(l.reason);return t().catch(s)})},ls=bi({theme:{defaultTheme:"dark"}}),rs=Gi(),us=e=>{const t={};Object.entries(Object.assign({"/src/layouts/default.vue":()=>ae(()=>import("./default-CGkACEC3.js"),__vite__mapDeps([0,1,2,3]),import.meta.url)})).forEach(([i,s])=>{let o=i.replace("/src/layouts/","").replace(".vue","");t[o]=s});function a(i,s=!0){return i.map(o=>{var l,r,u,c,m,v;if(((l=o.children)==null?void 0:l.length)>0&&(o.children=a(o.children,!1)),s){if(!o.component&&((r=o.children)==null?void 0:r.find(g=>{var f;return(g.path===""||g.path==="/")&&((f=g.meta)==null?void 0:f.isLayout)})))return o;if(((u=o.meta)==null?void 0:u.layout)!==!1)return{path:o.path,component:t[((c=o.meta)==null?void 0:c.layout)||"default"],children:o.path==="/"?[o]:[{...o,path:""}],meta:{isLayout:!0}}}return(m=o.meta)!=null&&m.layout?{path:o.path,component:t[(v=o.meta)==null?void 0:v.layout],children:[{...o,path:""}],meta:{isLayout:!0}}:o})}return a(e)},cs=[{path:"/",name:"/",component:()=>ae(()=>import("./index-CbUii4LM.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,24,25,26,27,28,29,30,31,32,33,34]),import.meta.url)},{path:"/404",name:"/404",component:()=>ae(()=>import("./404-BC-9JvcA.js"),__vite__mapDeps([35,32,1,2,33,25,26]),import.meta.url)},{path:"/authorize",name:"/authorize",component:()=>ae(()=>import("./authorize-LEIDOvih.js"),__vite__mapDeps([36,2,32,1,33,25,26]),import.meta.url)},{path:"/CacheManagement",name:"/CacheManagement",component:()=>ae(()=>import("./CacheManagement-D69xlD6i.js"),__vite__mapDeps([37,14,1,2,15,38,39,8,9,40,41,32,33,25,26]),import.meta.url)},{path:"/cses2wakeup",name:"/cses2wakeup",component:()=>ae(()=>import("./cses2wakeup-CYA5ZLcv.js"),__vite__mapDeps([42,32,1,2,33,14,15,10,11,12,8,9,13,16,17,43,18,19,44,45,46,21,22,40,41,47,48,49,50,23,24,51,52,53,54,55,56,57,25,26,58]),import.meta.url)},{path:"/debug",name:"/debug",component:()=>ae(()=>import("./debug-DkHlxsJi.js"),__vite__mapDeps([59,60,1,2,25,26,61]),import.meta.url)},{path:"/debug-init",name:"/debug-init",component:()=>ae(()=>import("./debug-init-BXJK30rf.js"),__vite__mapDeps([62,5,6,7,32,1,2,33,63,18,19,25,26]),import.meta.url)},{path:"/debug-socket",name:"/debug-socket",component:()=>ae(()=>import("./debug-socket-Cawza1cL.js"),__vite__mapDeps([64,27,28,7,29,32,1,2,33,8,9,18,19,43,44,25,26]),import.meta.url)},{path:"/exam-editor",children:[{path:":id",name:"/exam-editor/[id]",component:()=>ae(()=>import("./_id_-C03QyIMT.js"),__vite__mapDeps([65,66,5,6,7,2,14,1,15,40,41,16,17,8,9,32,33,18,19,43,44,21,22,67,50,23,24,51,52,53,54,68,69,70,71,72,73,74,75,30,31,25,26]),import.meta.url)}]},{path:"/examschedule",name:"/examschedule",component:()=>ae(()=>import("./examschedule-Bjj5pPD_.js"),__vite__mapDeps([76,66,5,6,7,2,14,1,15,40,41,16,17,8,9,32,33,18,19,43,44,21,22,67,50,23,24,51,52,53,54,68,69,70,71,72,73,74,75,25,26,77]),import.meta.url)},{path:"/list",children:[{path:"",name:"/list/",component:()=>ae(()=>import("./index-CVHPTbQ0.js"),__vite__mapDeps([78,5,6,7,2,30,1,31,18,19,25,26]),import.meta.url)},{path:":id",name:"/list/[id]",component:()=>ae(()=>import("./_id_-Dw-jkNll.js"),__vite__mapDeps([79,5,6,7,2,30,1,31,18,19,53,21,22,8,9,43,44,25,26]),import.meta.url)}]},{path:"/settings",name:"/settings",component:()=>ae(()=>import("./settings-CDDXJDZW.js"),__vite__mapDeps([80,81,30,1,2,31,82,8,9,21,18,19,22,50,23,24,51,52,53,54,14,15,5,6,7,32,33,25,26,56,57,43,44,20,40,41,73,70,71,74,63,38,39,47,48,49,11,12,55,83,84,60,85]),import.meta.url)},{path:"/socket-debugger",name:"/socket-debugger",component:()=>ae(()=>import("./socket-debugger-CKswW_PL.js"),__vite__mapDeps([86,27,28,7,32,1,2,33,8,9,18,19,43,44,21,22,14,15,25,26,87]),import.meta.url)}],An=Ui({history:Ki("./"),routes:us(cs)});An.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)});An.isReady().then(()=>{localStorage.removeItem("vuetify:dynamic-reload")});function ds(e){e.use(ls).use(An).use(rs)}async function fs(){return typeof Notification<"u"&&Notification.requestPermission?await Notification.requestPermission()==="granted"?(console.log("通知权限已授予"),!0):(console.warn("通知权限被拒绝"),!1):(console.warn("浏览器不支持通知权限请求"),!1)}async function vs(){var e;try{return(e=navigator.storage)!=null&&e.persist?await navigator.storage.persist():!1}catch(t){return console.warn("请求持久性存储失败:",t),!1}}const Yt="Classworks_settings",_t="classworks:settings:changed",ea={"server.domain":"https://kv-service.houlang.cloud","server.siteKey":""},Re={"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"},"noiseMonitor.enabled":{type:"boolean",default:!0,description:"启用环境噪音监测",icon:"mdi-microphone"},"noiseMonitor.autoStart":{type:"boolean",default:!0,description:"打开页面时自动开始监测",icon:"mdi-play-circle-outline"},"noiseMonitor.permissionDismissed":{type:"boolean",default:!1,description:"已跳过麦克风权限引导(不再弹出介绍弹框)",icon:"mdi-microphone-off"},"timeCard.enabled":{type:"boolean",default:!0,description:"启用时间卡片",icon:"mdi-clock-outline"},"timeCard.use12h":{type:"boolean",default:!1,description:"使用 12 小时制显示时间",icon:"mdi-clock-time-six-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.showUafTransfer":{type:"boolean",default:!0,description:"是否显示UAF作业导入导出",icon:"mdi-swap-vertical-bold"},"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"},"background.enabled":{type:"boolean",default:!1,description:"启用自定义背景",icon:"mdi-image"},"background.url":{type:"string",default:"",description:"背景图片地址",icon:"mdi-link"},"background.imageData":{type:"string",default:"",description:"本地背景图片(Base64)",icon:"mdi-image-area"},"background.blur":{type:"number",default:10,validate:e=>e>=0&&e<=50,description:"毛玻璃模糊幅度(px)",icon:"mdi-blur"},"background.opacity":{type:"number",default:30,validate:e=>e>=0&&e<=80,description:"遮罩暗色程度(%)",icon:"mdi-circle-half-full"},"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 ms{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(Yt):null;t&&(this.settingsCache=JSON.parse(t))}catch(t){console.error("加载设置失败:",t)}for(const[t,n]of Object.entries(Re))t in this.settingsCache||(this.settingsCache[t]=n.default);return this.settingsCache}saveSettings(){if(!(typeof localStorage>"u"))try{localStorage.setItem(Yt,JSON.stringify(this.settingsCache))}catch(t){console.error("保存设置失败:",t)}}getSetting(t){this.isInitialized||this.init();const n=Re[t];if(!n)return console.warn(`未定义的设置项: ${t}`),null;if(n.requireDeveloper&&!this.settingsCache["developer.enabled"])return n.default;if(this.settingsCache["server.provider"]==="classworkscloud"&&ea[t]!==void 0)return ea[t];const a=this.settingsCache[t];return a!==void 0?a:n.default}setSetting(t,n){this.isInitialized||this.init();const a=Re[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),typeof window<"u"&&window.dispatchEvent(new CustomEvent(_t,{detail:{key:t,value: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=Re[t];if(!n){console.warn(`未定义的设置项: ${t}`);return}this.settingsCache[t]=n.default,this.saveSettings(),typeof window<"u"&&window.dispatchEvent(new CustomEvent(_t,{detail:{key:t,value:n.default}}))}resetAllSettings(){this.settingsCache={};for(const[t,n]of Object.entries(Re))this.settingsCache[t]=n.default;this.saveSettings()}watchSettings(t){if(typeof window>"u")return()=>{};const n=i=>{i.key===Yt&&(this.settingsCache=JSON.parse(i.newValue),t(this.settingsCache,null))},a=i=>{t(this.settingsCache,i)};return window.addEventListener("storage",n),window.addEventListener(_t,a),()=>{window.removeEventListener("storage",n),window.removeEventListener(_t,a)}}getSettingDefinition(t){return Re[t]||null}exportSettingsAsKeyValue(){this.isInitialized||this.init();const t={};for(const n in Re)t[n]=this.getSetting(n);return t}}const Te=new ms;typeof window<"u"&&Te.init();const Ie=e=>Te.getSetting(e),gs=(e,t)=>Te.setSetting(e,t),ys=e=>Te.resetSetting(e),hs=()=>Te.resetAllSettings(),Pa=e=>Te.watchSettings(e),bs=e=>Te.getSettingDefinition(e),ps=()=>Te.exportSettingsAsKeyValue(),zl=Object.freeze(Object.defineProperty({__proto__:null,SettingsManager:Te,exportSettingsAsKeyValue:ps,getSetting:Ie,getSettingDefinition:bs,requestNotificationPermission:fs,requestPersistentStorage:vs,resetAllSettings:hs,resetSetting:ys,setSetting:gs,settingsDefinitions:Re,watchSettings:Pa},Symbol.toStringTag,{value:"Module"}));class Ss{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 Pt=new Ss,we=[];let At=null,Se=null;const ct={SUCCESS:"success",ERROR:"error",INFO:"info",WARNING:"warning"},ws={timeout:3e3,showSnackbar:!0,addToLog:!0};async function xt(e,t,n="",a={}){const i={...ws,...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 Pt.addLog(s),we.unshift(s);we.length>Ie("message.maxActiveMessages");)we.pop();Se==null||Se(we)}catch(o){console.error("保存日志失败:",o)}return i.showSnackbar&&(At==null||At(s)),s}function ks(e,t){let n=null;return function(...a){n&&clearTimeout(n),n=setTimeout(()=>{e.apply(this,a)},t)}}const Xe={install:e=>{e.config.globalProperties.$message={success:(t,n,a)=>xt(ct.SUCCESS,t,n,a),error:(t,n,a)=>xt(ct.ERROR,t,n,a),info:(t,n,a)=>xt(ct.INFO,t,n,a),warning:(t,n,a)=>xt(ct.WARNING,t,n,a)}},onSnackbar:e=>{At=e},onLog:e=>{Se=e},getMessages:async()=>{try{return await Pt.getLogs()}catch(e){return console.error("获取日志失败:",e),[...we]}},clearMessages:async()=>{try{await Pt.clearLogs(),we.length=0,Se==null||Se(we)}catch(e){console.error("清除日志失败:",e)}},MessageType:ct,markAsRead:()=>{},deleteMessage:async e=>{try{await Pt.deleteLog(e);const t=we.findIndex(n=>n.id===e);t!==-1&&we.splice(t,1),Se==null||Se(we)}catch(t){console.error("删除消息失败:",t)}},getUnreadCount:()=>0,debounce:ks},Aa=(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 ot(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return{borderClasses:C(()=>{const a=e.border;return a===!0||a===""?`${t}--border`:typeof a=="string"||a===0?String(a).split(" ").map(i=>`border-${i}`):[]})}}const Cs=[null,"default","comfortable","compact"],Ge=T({density:{type:String,default:"default",validator:e=>Cs.includes(e)}},"density");function lt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();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 pt(e){return{elevationClasses:k(()=>{const n=rn(e)?e.value:e.elevation;return n==null?[]:[`elevation-${n}`]})}}const Oe=T({rounded:{type:[Boolean,Number,String],default:void 0},tile:Boolean},"rounded");function Be(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return{roundedClasses:C(()=>{const a=rn(e)?e.value:e.rounded,i=rn(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 o of String(a).split(" "))s.push(`rounded-${o}`);return s})}}const le=T({tag:{type:[String,Object,Function],default:"div"}},"tag");function Vn(e){return bn(()=>{const{class:t,style:n}=xs(e);return{colorClasses:t,colorStyles:n}})}function tt(e){const{colorClasses:t,colorStyles:n}=Vn(()=>({text:se(e)}));return{textColorClasses:t,textColorStyles:n}}function Qe(e){const{colorClasses:t,colorStyles:n}=Vn(()=>({background:se(e)}));return{backgroundColorClasses:t,backgroundColorStyles:n}}function _s(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 xs(e){const t=_s(se(e)),n=[],a={};if(t.background)if(jn(t.background)){if(a.backgroundColor=t.background,!t.text&&pi(t.background)){const i=Si(t.background);if(i.a==null||i.a===1){const s=wi(i);a.color=s,a.caretColor=s}}}else n.push(`bg-${t.background}`);return t.text&&(jn(t.text)?(a.color=t.text,a.caretColor=t.text):n.push(`text-${t.text}`)),{class:n,style:a}}const Es=["elevated","flat","tonal","outlined","text","plain"];function St(e,t){return I(Ve,null,[e&&I("span",{key:"overlay",class:j(`${t}__overlay`)},null),I("span",{key:"underlay",class:j(`${t}__underlay`)},null)])}const Ue=T({color:String,variant:{type:String,default:"elevated",validator:e=>Es.includes(e)}},"variant");function wt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();const n=k(()=>{const{variant:s}=se(e);return`${t}--variant-${s}`}),{colorClasses:a,colorStyles:i}=Vn(()=>{const{variant:s,color:o}=se(e);return{[["elevated","flat"].includes(s)?"background":"text"]:o}});return{colorClasses:a,colorStyles:i,variantClasses:n}}const Va=T({baseColor:String,divided:Boolean,direction:{type:String,default:"horizontal"},...st(),...ee(),...Ge(),...bt(),...Oe(),...le(),...fe(),...Ue()},"VBtnGroup"),ta=G()({name:"VBtnGroup",props:Va(),setup(e,t){let{slots:n}=t;const{themeClasses:a}=ye(e),{densityClasses:i}=lt(e),{borderClasses:s}=ot(e),{elevationClasses:o}=pt(e),{roundedClasses:l}=Be(e);Ft({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)}}),Z(()=>S(e.tag,{class:j(["v-btn-group",`v-btn-group--${e.direction}`,{"v-btn-group--divided":e.divided},a.value,s.value,i.value,o.value,l.value,e.class]),style:X(e.style)},n))}}),Is=T({modelValue:{type:null,default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String,disabled:Boolean},"group"),Ps=T({value:null,disabled:Boolean,selectedClass:String},"group-item");function As(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const a=Ee("useGroupItem");if(!a)throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");const i=Cn();He(Symbol.for(`${t.description}:id`),i);const s=Le(t,null);if(!s){if(!n)return s;throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`)}const o=k(()=>e.value),l=C(()=>!!(s.disabled.value||e.disabled));function r(){s==null||s.register({id:i,value:o,disabled:l},a)}function u(){s==null||s.unregister(i)}r(),je(()=>u());const c=C(()=>s.isSelected(i)),m=C(()=>s.items.value[0].id===i),v=C(()=>s.items.value[s.items.value.length-1].id===i),d=C(()=>c.value&&[s.selectedClass.value,e.selectedClass]);return W(c,g=>{a.emit("group:selected",{value:g})},{flush:"sync"}),{id:i,isSelected:c,isFirst:m,isLast:v,toggle:()=>s.select(i,!c.value),select:g=>s.select(i,g),selectedClass:d,value:o,disabled:l,group:s,register:r,unregister:u}}function Vs(e,t){let n=!1;const a=vt([]),i=Pe(e,"modelValue",[],v=>v===void 0?[]:La(a,v===null?[null]:pn(v)),v=>{const d=Ts(a,v);return e.multiple?d:d[0]}),s=Ee("useGroup");function o(v,d){const g=v,f=Symbol.for(`${t.description}:id`),b=ki(f,s==null?void 0:s.vnode).indexOf(d);Yi(g.value)===void 0&&(g.value=b,g.useIndexAsValue=!0),b>-1?a.splice(b,0,g):a.push(g)}function l(v){if(n)return;r();const d=a.findIndex(g=>g.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}),Xi(()=>{for(let v=0;vf.id===v);if(!(d&&(g!=null&&g.disabled)))if(e.multiple){const f=i.value.slice(),p=f.findIndex(x=>x===v),b=~p;if(d=d??!b,b&&e.mandatory&&f.length<=1||!b&&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],g=a.findIndex(b=>b.id===d);let f=(g+v)%a.length,p=a[f];for(;p.disabled&&f!==g;)f=(f+v)%a.length,p=a[f];if(p.disabled)return;i.value=[a[f].id]}else{const d=a.find(g=>!g.disabled);d&&(i.value=[d.id])}}const m={register:o,unregister:l,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=>Ls(a,v)};return He(t,m),m}function Ls(e,t){const n=La(e,[t]);return n.length?e.findIndex(a=>a.id===n[0]):-1}function La(e,t){const n=[];return t.forEach(a=>{const i=e.find(o=>Je(a,o.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 Ts(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 Ta=Symbol.for("vuetify:v-btn-toggle"),Os=T({...Va(),...Is()},"VBtnToggle"),Wl=G()({name:"VBtnToggle",props:Os(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isSelected:a,next:i,prev:s,select:o,selected:l}=Vs(e,Ta);return Z(()=>{const r=ta.filterProps(e);return S(ta,Q({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:o,selected:l})]}})}),{next:i,prev:s,select:o}}}),Bs=T({defaults:Object,disabled:Boolean,reset:[Number,String],root:[Boolean,String],scoped:Boolean},"VDefaultsProvider"),ge=G(!1)({name:"VDefaultsProvider",props:Bs(),setup(e,t){let{slots:n}=t;const{defaults:a,disabled:i,reset:s,root:o,scoped:l}=Ji(e);return Ft(a,{reset:s,root:o,scoped:l,disabled:i}),()=>{var r;return(r=n.default)==null?void 0:r.call(n)}}}),Rs=["x-small","small","default","large","x-large"],Wt=T({size:{type:[String,Number],default:"default"}},"size");function qt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return bn(()=>{const n=e.size;let a,i;return Ci(Rs,n)?a=`${t}--size-${n}`:n&&(i={width:B(n),height:B(n)}),{sizeClasses:a,sizeStyles:i}})}const Ns=T({color:String,disabled:Boolean,start:Boolean,end:Boolean,icon:oe,opacity:[String,Number],...ee(),...Wt(),...le({tag:"i"}),...fe()},"VIcon"),xe=G()({name:"VIcon",props:Ns(),setup(e,t){let{attrs:n,slots:a}=t;const i=z(),{themeClasses:s}=Sa(),{iconData:o}=_i(()=>i.value||e.icon),{sizeClasses:l}=qt(e),{textColorClasses:r,textColorStyles:u}=tt(()=>e.color);return Z(()=>{var v,d;const c=(v=a.default)==null?void 0:v.call(a);c&&(i.value=(d=xi(c).filter(g=>g.type===Qi&&g.children&&typeof g.children=="string")[0])==null?void 0:d.children);const m=!!(n.onClick||n.onClickOnce);return S(o.value.component,{tag:e.tag,icon:o.value.icon,class:j(["v-icon","notranslate",s.value,l.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:X([{"--v-icon-opacity":e.opacity},l.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 Oa(e,t){const n=M(),a=z(!1);if(Sn){const i=new IntersectionObserver(s=>{a.value=!!s.find(o=>o.isIntersecting)},t);ve(()=>{i.disconnect()}),W(n,(s,o)=>{o&&(i.unobserve(o),a.value=!1),s&&i.observe(s)},{flush:"post"})}return{intersectionRef:n,isIntersecting:a}}const $s=T({reveal:{type:[Boolean,Object],default:!1}},"reveal");function Ds(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 Ms=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(),...$s(),...Wt(),...le({tag:"div"}),...fe()},"VProgressCircular"),Fs=G()({name:"VProgressCircular",props:Ms(),setup(e,t){let{slots:n}=t;const a=20,i=2*Math.PI*a,s=M(),{themeClasses:o}=ye(e),{sizeClasses:l,sizeStyles:r}=qt(e),{textColorClasses:u,textColorStyles:c}=tt(()=>e.color),{textColorClasses:m,textColorStyles:v}=tt(()=>e.bgColor),{intersectionRef:d,isIntersecting:g}=Oa(),{resizeRef:f,contentRect:p}=wa(),{state:b,duration:x}=Ds(e),L=k(()=>b.value==="initial"?0:et(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)),_=k(()=>a/(1-w.value/h.value)*2),E=k(()=>w.value/h.value*_.value),y=k(()=>{const F=(100-L.value)/100*i;return e.rounded&&L.value>0&&L.value<100?B(Math.min(i-.01,F+E.value)):B(F)}),R=C(()=>{const F=Number(e.rotate);return e.rounded?F+E.value/2/i*360:F});return Ne(()=>{d.value=s.value,f.value=s.value}),Z(()=>S(e.tag,{ref:s,class:j(["v-progress-circular",{"v-progress-circular--indeterminate":!!e.indeterminate,"v-progress-circular--visible":g.value,"v-progress-circular--disable-shrink":e.indeterminate&&(e.indeterminate==="disable-shrink"||Tt()),"v-progress-circular--revealing":["initial","pending"].includes(b.value)},o.value,l.value,u.value,e.class]),style:X([r.value,c.value,{"--progress-reveal-duration":`${x.value}ms`},e.style]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.indeterminate?void 0:L.value},{default:()=>[I("svg",{style:{transform:`rotate(calc(-90deg + ${R.value}deg))`},xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${_.value} ${_.value}`},[I("circle",{class:j(["v-progress-circular__underlay",m.value]),style:X(v.value),fill:"transparent",cx:"50%",cy:"50%",r:a,"stroke-width":E.value,"stroke-dasharray":i,"stroke-dashoffset":0},null),I("circle",{class:"v-progress-circular__overlay",fill:"transparent",cx:"50%",cy:"50%",r:a,"stroke-width":E.value,"stroke-dasharray":i,"stroke-dashoffset":y.value,"stroke-linecap":e.rounded?"round":void 0},null)]),n.default&&I("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:C(()=>{const n={},a=B(e.height),i=B(e.maxHeight),s=B(e.maxWidth),o=B(e.minHeight),l=B(e.minWidth),r=B(e.width);return a!=null&&(n.height=a),i!=null&&(n.maxHeight=i),s!=null&&(n.maxWidth=s),o!=null&&(n.minHeight=o),l!=null&&(n.minWidth=l),r!=null&&(n.width=r),n})}}const na={center:"center",top:"bottom",bottom:"top",left:"right",right:"left"},Ht=T({location:String},"location");function Ln(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2?arguments[2]:void 0;const{isRtl:a}=zt();return{locationStyles:C(()=>{if(!e.location)return{};const{side:s,align:o}=an(e.location.split(" ").length>1?e.location:`${e.location} center`,a.value);function l(u){return n?n(u):0}const r={};return s!=="center"&&(t?r[na[s]]=`calc(100% - ${l(s)}px)`:r[s]=0),o!=="center"?t?r[na[o]]=`calc(100% - ${l(o)}px)`:r[o]=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 zs=T({chunkCount:{type:[Number,String],default:null},chunkWidth:{type:[Number,String],default:null},chunkGap:{type:[Number,String],default:4}},"chunks");function Ws(e,t){const n=k(()=>!!e.chunkCount||!!e.chunkWidth),a=C(()=>{const l=se(t);if(!l)return 0;if(!e.chunkCount)return Number(e.chunkWidth);const r=Number(e.chunkCount);return(l-Number(e.chunkGap)*(r-1))/r}),i=k(()=>Number(e.chunkGap)),s=C(()=>{if(!n.value)return{};const l=B(i.value),r=B(a.value);return{maskRepeat:"repeat-x",maskImage:`linear-gradient(90deg, #000, #000 ${r}, transparent ${r}, transparent)`,maskSize:`calc(${r} + ${l}) 100%`}});function o(l){const r=se(t);if(!r)return l;const u=100*i.value/r,c=100*(a.value+i.value)/r,m=Math.floor((l+u)/c+1e-9);return et(m*c-u/2,0,100)}return{hasChunks:n,chunksMaskStyles:s,snapValueToChunk:o}}const qs=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,...zs(),...ee(),...Ht({location:"top"}),...Oe(),...le(),...fe()},"VProgressLinear"),Ba=G()({name:"VProgressLinear",props:qs(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const a=M(),i=Pe(e,"modelValue"),{isRtl:s,rtlClasses:o}=zt(),{themeClasses:l}=ye(e),{locationStyles:r}=Ln(e),{textColorClasses:u,textColorStyles:c}=tt(()=>e.color),{backgroundColorClasses:m,backgroundColorStyles:v}=Qe(()=>e.bgColor||e.color),{backgroundColorClasses:d,backgroundColorStyles:g}=Qe(()=>e.bufferColor||e.bgColor||e.color),{backgroundColorClasses:f,backgroundColorStyles:p}=Qe(()=>e.color),{roundedClasses:b}=Be(e),{intersectionRef:x,isIntersecting:L}=Oa(),w=C(()=>parseFloat(e.max)),h=C(()=>parseFloat(e.height)),_=C(()=>et(parseFloat(e.bufferValue)/w.value*100,0,100)),E=C(()=>et(parseFloat(i.value)/w.value*100,0,100)),y=C(()=>s.value!==e.reverse),R=C(()=>e.indeterminate?"fade-transition":"slide-x-transition"),F=z(0),{hasChunks:A,chunksMaskStyles:V,snapValueToChunk:P}=Ws(e,F);ht(A,()=>{const{resizeRef:Y}=wa(te=>F.value=te[0].contentRect.width);Ne(()=>Y.value=a.value)});const N=C(()=>A.value?P(_.value):_.value),O=C(()=>A.value?P(E.value):E.value);function U(Y){if(!x.value)return;const{left:te,right:he,width:K}=x.value.getBoundingClientRect(),$=y.value?K-Y.clientX+(he-K):Y.clientX-te;i.value=Math.round($/K*w.value)}return Ne(()=>{x.value=a.value}),Z(()=>S(e.tag,{ref:a,class:j(["v-progress-linear",{"v-progress-linear--absolute":e.absolute,"v-progress-linear--active":e.active&&L.value,"v-progress-linear--reverse":y.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},b.value,l.value,o.value,e.class]),style:X([{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&&I("div",{key:"stream",class:j(["v-progress-linear__stream",u.value]),style:{...c.value,[y.value?"left":"right"]:B(-h.value),borderTop:`${B(h.value/2)} dotted`,opacity:e.bufferOpacity!=null?parseFloat(e.bufferOpacity):void 0,top:`calc(50% - ${B(h.value/4)})`,width:B(100-_.value,"%"),"--v-progress-linear-stream-to":B(h.value*(y.value?1:-1))}},null),I("div",{class:j(["v-progress-linear__background",m.value]),style:X([v.value,{opacity:e.bgOpacity!=null?parseFloat(e.bgOpacity):void 0,width:e.stream?0:void 0}])},null),I("div",{class:j(["v-progress-linear__buffer",d.value]),style:X([g.value,{opacity:e.bufferOpacity!=null?parseFloat(e.bufferOpacity):void 0,width:B(N.value,"%")}])},null),S($e,{name:R.value},{default:()=>[e.indeterminate?I("div",{class:"v-progress-linear__indeterminate"},[["long","short"].map(Y=>I("div",{key:Y,class:j(["v-progress-linear__indeterminate",Y,f.value]),style:X(p.value)},null))]):I("div",{class:j(["v-progress-linear__determinate",f.value]),style:X([p.value,{width:B(O.value,"%")}])},null)]}),n.default&&I("div",{class:"v-progress-linear__content"},[n.default({value:E.value,buffer:_.value})])]})),{}}}),Ra=T({loading:[Boolean,String]},"loader");function Na(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return{loaderClasses:k(()=>({[`${t}--loading`]:e.loading}))}}function Hs(e,t){var a;let{slots:n}=t;return I("div",{class:j(`${e.name}__loader`)},[((a=n.default)==null?void 0:a.call(n,{color:e.color,isActive:e.active}))||S(Ba,{absolute:e.absolute,active:e.active,color:e.color,height:"2",indeterminate:!0},null)])}const js=["static","relative","fixed","absolute","sticky"],Tn=T({position:{type:String,validator:e=>js.includes(e)}},"position");function On(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return{positionClasses:k(()=>e.position?`${t}--${e.position}`:void 0)}}function Gs(){const e=Ee("useRoute");return C(()=>{var t;return(t=e==null?void 0:e.proxy)==null?void 0:t.$route})}function Us(){var e,t;return(t=(e=Ee("useRouter"))==null?void 0:e.proxy)==null?void 0:t.$router}function Bn(e,t){const n=xa("RouterLink"),a=k(()=>!!(e.href||e.to)),i=C(()=>(a==null?void 0:a.value)||Gn(t,"click")||Gn(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)}),o=C(()=>e.to?s:void 0),l=Gs(),r=C(()=>{var m,v,d;return o.value?e.exact?l.value?((d=o.value.isExactActive)==null?void 0:d.value)&&Je(o.value.route.value.query,l.value.query):((v=o.value.isExactActive)==null?void 0:v.value)??!1:((m=o.value.isActive)==null?void 0:m.value)??!1:!1}),u=C(()=>{var m;return e.to?(m=o.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=o.value)==null?void 0:m.route.value}),navigate:k(()=>{var m;return(m=o.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 Rn=T({href:String,replace:Boolean,to:[String,Object],exact:Boolean},"router");let Jt=!1;function Ks(e,t){let n=!1,a,i;Ae&&(e!=null&&e.beforeEach)&&(de(()=>{window.addEventListener("popstate",s),a=e.beforeEach(()=>Jt?n?t():void 0:(Jt=!0,new Promise(o=>{setTimeout(()=>o(n?t():void 0))}))),i=e==null?void 0:e.afterEach(()=>{Jt=!1})}),ve(()=>{window.removeEventListener("popstate",s),a==null||a(),i==null||i()}));function s(o){var l;(l=o.state)!=null&&l.replaced||(n=!0,setTimeout(()=>n=!1))}}function Xs(e,t){W(()=>{var n;return(n=e.isActive)==null?void 0:n.value},n=>{e.isLink.value&&n!=null&&t&&de(()=>{t(n)})},{immediate:!0})}const un=Symbol("rippleStop"),Ys=80;function aa(e,t){e.style.transform=t,e.style.webkitTransform=t}function cn(e){return e.constructor.name==="TouchEvent"}function $a(e){return e.constructor.name==="KeyboardEvent"}const Js=function(e,t){var m;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=0,i=0;if(!$a(e)){const v=new Et(t),d=cn(e)?e.touches[e.touches.length-1]:e,g=wn([d.clientX,d.clientY]);a=g.x-v.left,i=g.y-v.top}let s=0,o=.3;(m=t._ripple)!=null&&m.circle?(o=.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 l=`${(t.clientWidth-s*2)/2}px`,r=`${(t.clientHeight-s*2)/2}px`,u=n.center?l:`${a-s}px`,c=n.center?r:`${i-s}px`;return{radius:s,scale:o,x:u,y:c,centerX:l,centerY:r}},Rt={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:o,x:l,y:r,centerX:u,centerY:c}=Js(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"),aa(i,`translate(${l}, ${r}) scale3d(${o},${o},${o})`),i.dataset.activated=String(performance.now()),requestAnimationFrame(()=>{requestAnimationFrame(()=>{i.classList.remove("v-ripple__animation--enter"),i.classList.add("v-ripple__animation--in"),aa(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(o=>!o.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 l;e.getElementsByClassName("v-ripple__animation").length===1&&e.dataset.previousPosition&&(e.style.position=e.dataset.previousPosition,delete e.dataset.previousPosition),((l=n.parentNode)==null?void 0:l.parentNode)===e&&e.removeChild(n.parentNode)},300)},i)}};function Da(e){return typeof e>"u"||!!e}function mt(e){const t={},n=e.currentTarget;if(!(!(n!=null&&n._ripple)||n._ripple.touched||e[un])){if(e[un]=!0,cn(e))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(t.center=n._ripple.centered||$a(e),n._ripple.class&&(t.class=n._ripple.class),cn(e)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=()=>{Rt.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)},Ys)}else Rt.show(e,n,t)}}function Nt(e){e[un]=!0}function ce(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(()=>{ce(e)});return}window.setTimeout(()=>{t._ripple&&(t._ripple.touched=!1)}),Rt.hide(t)}}function Ma(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 Qs(e,t){!gt&&t.includes(e.key)&&(gt=!0,mt(e))}function Fa(e){gt=!1,ce(e)}function za(e){gt&&(gt=!1,ce(e))}function Wa(e,t,n){const{value:a,modifiers:i}=t,s=Da(a);s||Rt.hide(e),e._ripple=e._ripple??{},e._ripple.enabled=s,e._ripple.centered=i.center,e._ripple.circle=i.circle;const o=sn(a)?a:{};o.class&&(e._ripple.class=o.class);const l=o.keys??["Enter","Space"];if(e._ripple.keyDownHandler=r=>Qs(r,l),s&&!n){if(i.stop){e.addEventListener("touchstart",Nt,{passive:!0}),e.addEventListener("mousedown",Nt);return}e.addEventListener("touchstart",mt,{passive:!0}),e.addEventListener("touchend",ce,{passive:!0}),e.addEventListener("touchmove",Ma,{passive:!0}),e.addEventListener("touchcancel",ce),e.addEventListener("mousedown",mt),e.addEventListener("mouseup",ce),e.addEventListener("mouseleave",ce),e.addEventListener("keydown",e._ripple.keyDownHandler),e.addEventListener("keyup",Fa),e.addEventListener("blur",za),e.addEventListener("dragstart",ce,{passive:!0})}else!s&&n&&qa(e)}function qa(e){var t;e.removeEventListener("touchstart",Nt),e.removeEventListener("mousedown",Nt),e.removeEventListener("touchstart",mt),e.removeEventListener("touchend",ce),e.removeEventListener("touchmove",Ma),e.removeEventListener("touchcancel",ce),e.removeEventListener("mousedown",mt),e.removeEventListener("mouseup",ce),e.removeEventListener("mouseleave",ce),(t=e._ripple)!=null&&t.keyDownHandler&&e.removeEventListener("keydown",e._ripple.keyDownHandler),e.removeEventListener("keyup",Fa),e.removeEventListener("blur",za),e.removeEventListener("dragstart",ce)}function Zs(e,t){Wa(e,t,!1)}function eo(e){qa(e),delete e._ripple}function to(e,t){if(t.value===t.oldValue)return;const n=Da(t.oldValue);Wa(e,t,n)}const yt={mounted:Zs,unmounted:eo,updated:to},no=T({active:{type:Boolean,default:void 0},activeColor:String,baseColor:String,symbol:{type:null,default:Ta},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:oe,appendIcon:oe,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(),...Ge(),...rt(),...bt(),...Ps(),...Ra(),...Ht(),...Tn(),...Oe(),...Rn(),...Wt(),...le({tag:"button"}),...fe(),...Ue({variant:"elevated"})},"VBtn"),Ha=G()({name:"VBtn",props:no(),emits:{"group:selected":e=>!0},setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{borderClasses:s}=ot(e),{densityClasses:o}=lt(e),{dimensionStyles:l}=ut(e),{elevationClasses:r}=pt(e),{loaderClasses:u}=Na(e),{locationStyles:c}=Ln(e),{positionClasses:m}=On(e),{roundedClasses:v}=Be(e),{sizeClasses:d,sizeStyles:g}=qt(e),f=As(e,e.symbol,!1),p=Bn(e,n),b=C(()=>{var A;return e.active!==void 0?e.active:p.isRouterLink.value?(A=p.isActive)==null?void 0:A.value:f==null?void 0:f.isSelected.value}),x=k(()=>b.value?e.activeColor??e.color:e.color),L=C(()=>{var V,P;return{color:(f==null?void 0:f.isSelected.value)&&(!p.isLink.value||((V=p.isActive)==null?void 0:V.value))||!f||((P=p.isActive)==null?void 0:P.value)?x.value??e.baseColor:e.baseColor,variant:e.variant}}),{colorClasses:w,colorStyles:h,variantClasses:_}=wt(L),E=C(()=>(f==null?void 0:f.disabled.value)||e.disabled),y=k(()=>e.variant==="elevated"&&!(e.disabled||e.flat||e.border)),R=C(()=>{if(!(e.value===void 0||typeof e.value=="symbol"))return Object(e.value)===e.value?JSON.stringify(e.value,null,0):e.value});function F(A){var V,P;E.value||p.isLink.value&&(A.metaKey||A.ctrlKey||A.shiftKey||A.button!==0||n.target==="_blank")||(p.isRouterLink.value?(P=(V=p.navigate).value)==null||P.call(V,A):f==null||f.toggle())}return Xs(p,f==null?void 0:f.select),Z(()=>{const A=p.isLink.value?"a":e.tag,V=!!(e.prependIcon||a.prepend),P=!!(e.appendIcon||a.append),N=!!(e.icon&&e.icon!==!0);return We(S(A,Q(p.linkProps,{type:A==="a"?void 0:"button",class:["v-btn",f==null?void 0:f.selectedClass.value,{"v-btn--active":b.value,"v-btn--block":e.block,"v-btn--disabled":E.value,"v-btn--elevated":y.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,o.value,r.value,u.value,m.value,v.value,d.value,_.value,e.class],style:[h.value,l.value,c.value,g.value,e.style],"aria-busy":e.loading?!0:void 0,disabled:E.value&&A!=="a"||void 0,tabindex:e.loading||e.readonly?-1:void 0,onClick:F,value:R.value}),{default:()=>{var O;return[St(!0,"v-btn"),!e.icon&&V&&I("span",{key:"prepend",class:"v-btn__prepend"},[a.prepend?S(ge,{key:"prepend-defaults",disabled:!e.prependIcon,defaults:{VIcon:{icon:e.prependIcon}}},a.prepend):S(xe,{key:"prepend-icon",icon:e.prependIcon},null)]),I("span",{class:"v-btn__content","data-no-activator":""},[!a.default&&N?S(xe,{key:"content-icon",icon:e.icon},null):S(ge,{key:"content-defaults",disabled:!N,defaults:{VIcon:{icon:e.icon}}},{default:()=>{var U;return[((U=a.default)==null?void 0:U.call(a))??_e(e.text)]}})]),!e.icon&&P&&I("span",{key:"append",class:"v-btn__append"},[a.append?S(ge,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VIcon:{icon:e.appendIcon}}},a.append):S(xe,{key:"append-icon",icon:e.appendIcon},null)]),!!e.loading&&I("span",{key:"loader",class:"v-btn__loader"},[((O=a.loader)==null?void 0:O.call(a))??S(Fs,{color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0,width:"2"},null)])]}}),[[yt,!E.value&&e.ripple,"",{center:!!e.icon}]])}),{group:f}}});function Qt(e,t){return{x:e.x+t.x,y:e.y+t.y}}function ao(e,t){return{x:e.x-t.x,y:e.y-t.y}}function ia(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 Qt({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 Qt({x:i,y:s},t)}return Qt({x:t.width/2,y:t.height/2},t)}const ja={static:oo,connected:ro},io=T({locationStrategy:{type:[String,Function],default:"static",validator:e=>typeof e=="function"||e in ja},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 so(e,t){const n=M({}),a=M();Ae&&ht(()=>!!(t.isActive.value&&e.locationStrategy),l=>{var r,u;W(()=>e.locationStrategy,l),ve(()=>{window.removeEventListener("resize",i),visualViewport==null||visualViewport.removeEventListener("resize",s),visualViewport==null||visualViewport.removeEventListener("scroll",o),a.value=void 0}),window.addEventListener("resize",i,{passive:!0}),visualViewport==null||visualViewport.addEventListener("resize",s,{passive:!0}),visualViewport==null||visualViewport.addEventListener("scroll",o,{passive:!0}),typeof e.locationStrategy=="function"?a.value=(r=e.locationStrategy(t,e,n))==null?void 0:r.updateLocation:a.value=(u=ja[e.locationStrategy](t,e,n))==null?void 0:u.updateLocation});function i(l){var r;(r=a.value)==null||r.call(a,l)}function s(l){var r;(r=a.value)==null||r.call(a,l)}function o(l){var r;(r=a.value)==null||r.call(a,l)}return{contentStyles:n,updateLocation:a}}function oo(){}function lo(e,t){const n=ka(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 ro(e,t,n){(Array.isArray(e.target.value)||Ei(e.target.value))&&Object.assign(n.value,{position:"fixed",top:0,[e.isRtl.value?"right":"left"]:0});const{preferredAnchor:i,preferredOrigin:s}=bn(()=>{const b=an(t.location,e.isRtl.value),x=t.origin==="overlap"?b:t.origin==="auto"?Xt(b):an(t.origin,e.isRtl.value);return b.side===x.side&&b.align===Kt(x).align?{preferredAnchor:Xn(b),preferredOrigin:Xn(x)}:{preferredAnchor:b,preferredOrigin:x}}),[o,l,r,u]=["minWidth","minHeight","maxWidth","maxHeight"].map(b=>C(()=>{const x=parseFloat(t[b]);return isNaN(x)?1/0:x})),c=C(()=>{if(Array.isArray(t.offset))return t.offset;if(typeof t.offset=="string"){const b=t.offset.split(" ").map(parseFloat);return b.length<2&&b.push(0),b}return typeof t.offset=="number"?[t.offset,0]:[0,0]});let m=!1,v=-1;const d=new Ii(4),g=new ResizeObserver(()=>{if(!m)return;if(requestAnimationFrame(x=>{x!==v&&d.clear(),requestAnimationFrame(L=>{v=L})}),d.isFull){const x=d.values();if(Je(x.at(-1),x.at(-3))&&!Je(x.at(-1),x.at(-2)))return}const b=p();b&&d.push(b.flipped)});let f=new Et({x:0,y:0,width:0,height:0});W(e.target,(b,x)=>{x&&!Array.isArray(x)&&g.unobserve(x),Array.isArray(b)?Je(b,x)||p():b&&g.observe(b)},{immediate:!0}),W(e.contentEl,(b,x)=>{x&&g.unobserve(x),b&&g.observe(b)},{immediate:!0}),ve(()=>{g.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=wn(e.target.value));const b=lo(e.contentEl.value,e.isRtl.value),x=Ot(e.contentEl.value),L=Number(t.viewportMargin);x.length||(x.push(document.documentElement),e.contentEl.value.style.top&&e.contentEl.value.style.left||(b.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),b.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const w=x.reduce((P,N)=>{const O=Pi(N);return P?new Et({x:Math.max(P.left,O.left),y:Math.max(P.top,O.top),width:Math.min(P.right,O.right)-Math.max(P.left,O.left),height:Math.min(P.bottom,O.bottom)-Math.max(P.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 _(P){const N=new Et(b),O=ia(P.anchor,f),U=ia(P.origin,N);let{x:Y,y:te}=ao(O,U);switch(P.anchor.side){case"top":te-=c.value[0];break;case"bottom":te+=c.value[0];break;case"left":Y-=c.value[0];break;case"right":Y+=c.value[0];break}switch(P.anchor.align){case"top":te-=c.value[1];break;case"bottom":te+=c.value[1];break;case"left":Y-=c.value[1];break;case"right":Y+=c.value[1];break}return N.x+=Y,N.y+=te,N.width=Math.min(N.width,r.value),N.height=Math.min(N.height,u.value),{overflows:Kn(N,w),x:Y,y:te}}let E=0,y=0;const R={x:0,y:0},F={x:!1,y:!1};let A=-1;for(;!(A++>10);){const{x:P,y:N,overflows:O}=_(h);E+=P,y+=N,b.x+=P,b.y+=N;{const U=Un(h.anchor),Y=O.x.before||O.x.after,te=O.y.before||O.y.after;let he=!1;if(["x","y"].forEach(K=>{if(K==="x"&&Y&&!F.x||K==="y"&&te&&!F.y){const $={anchor:{...h.anchor},origin:{...h.origin}},J=K==="x"?U==="y"?Kt:Xt:U==="y"?Xt:Kt;$.anchor=J($.anchor),$.origin=J($.origin);const{overflows:q}=_($);(q[K].before<=O[K].before&&q[K].after<=O[K].after||q[K].before+q[K].after<(O[K].before+O[K].after)/2)&&(h=$,he=F[K]=!0)}}),he)continue}O.x.before&&(E+=O.x.before,b.x+=O.x.before),O.x.after&&(E-=O.x.after,b.x-=O.x.after),O.y.before&&(y+=O.y.before,b.y+=O.y.before),O.y.after&&(y-=O.y.after,b.y-=O.y.after);{const U=Kn(b,w);R.x=w.width-U.x.before-U.x.after,R.y=w.height-U.y.before-U.y.after,E+=U.x.before,b.x+=U.x.before,y+=U.y.before,b.y+=U.y.before}break}const V=Un(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(Zt(y)),left:e.isRtl.value?void 0:B(Zt(E)),right:e.isRtl.value?B(Zt(-E)):void 0,minWidth:B(V==="y"?Math.min(o.value,f.width):o.value),maxWidth:B(sa(et(R.x,o.value===1/0?0:o.value,r.value))),maxHeight:B(sa(et(R.y,l.value===1/0?0:l.value,u.value)))}),{available:R,contentBox:b,flipped:F}}return W(()=>[i.value,s.value,t.offset,t.minWidth,t.minHeight,t.maxWidth,t.maxHeight],()=>p()),de(()=>{const b=p();if(!b)return;const{available:x,contentBox:L}=b;L.height>x.y&&requestAnimationFrame(()=>{p(),requestAnimationFrame(()=>{p()})})}),{updateLocation:p}}function Zt(e){return Math.round(e*devicePixelRatio)/devicePixelRatio}function sa(e){return Math.ceil(e*devicePixelRatio)/devicePixelRatio}let dn=!0;const $t=[];function uo(e){!dn||$t.length?($t.push(e),fn()):(dn=!1,e(),fn())}let oa=-1;function fn(){cancelAnimationFrame(oa),oa=requestAnimationFrame(()=>{const e=$t.shift();e&&e(),$t.length?fn():dn=!0})}const Vt={none:null,close:vo,block:mo,reposition:go},co=T({scrollStrategy:{type:[String,Function],default:"block",validator:e=>typeof e=="function"||e in Vt}},"VOverlay-scroll-strategies");function fo(e,t){if(!Ae)return;let n;Ne(async()=>{n==null||n.stop(),t.isActive.value&&e.scrollStrategy&&(n=Ea(),await new Promise(a=>setTimeout(a)),n.active&&n.run(()=>{var a;typeof e.scrollStrategy=="function"?e.scrollStrategy(t,e,n):(a=Vt[e.scrollStrategy])==null||a.call(Vt,t,e,n)}))}),ve(()=>{n==null||n.stop()})}function vo(e){function t(n){e.isActive.value=!1}Ga(Nn(e.target.value,e.contentEl.value),t)}function mo(e,t){var l;const n=(l=e.root.value)==null?void 0:l.offsetParent,a=Nn(e.target.value,e.contentEl.value),i=[...new Set([...Ot(a,t.contained?n:void 0),...Ot(e.contentEl.value,t.contained?n:void 0)])].filter(r=>!r.classList.contains("v-overlay-scroll-blocked")),s=window.innerWidth-document.documentElement.offsetWidth,o=(r=>Ai(r)&&r)(n||document.documentElement);o&&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}),o&&e.root.value.classList.remove("v-overlay--scroll-blocked")})}function go(e,t,n){let a=!1,i=-1,s=-1;function o(l){uo(()=>{var c,m;const r=performance.now();(m=(c=e.updateLocation).value)==null||m.call(c,l),a=(performance.now()-r)/(1e3/60)>2})}s=(typeof requestIdleCallback>"u"?l=>l():requestIdleCallback)(()=>{n.run(()=>{Ga(Nn(e.target.value,e.contentEl.value),l=>{a?(cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=requestAnimationFrame(()=>{o(l)})})):o(l)})})}),ve(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(s),cancelAnimationFrame(i)})}function Nn(e,t){return Array.isArray(e)?document.elementsFromPoint(...e).find(n=>!(t!=null&&t.contains(n))):e??t}function Ga(e,t){const n=[document,...Ot(e)];n.forEach(a=>{a.addEventListener("scroll",t,{passive:!0})}),ve(()=>{n.forEach(a=>{a.removeEventListener("scroll",t)})})}const yo=Symbol.for("vuetify:v-menu"),ho=T({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function bo(e,t){let n=()=>{};function a(o,l){n==null||n();const r=o?e.openDelay:e.closeDelay,u=Math.max((l==null?void 0:l.minDelay)??0,Number(r??0));return new Promise(c=>{n=Vi(u,()=>{t==null||t(o),c(o)})})}function i(){return a(!0)}function s(o){return a(!1,o)}return{clearDelay:n,runOpenDelay:i,runCloseDelay:s}}const po=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,...ho()},"VOverlay-activator");function So(e,t){let{isActive:n,isTop:a,contentEl:i}=t;const s=Ee("useActivator"),o=M();let l=!1,r=!1,u=!0;const c=C(()=>e.openOnFocus||e.openOnFocus==null&&e.openOnHover),m=C(()=>e.openOnClick||e.openOnClick==null&&!e.openOnHover&&!c.value),{runOpenDelay:v,runCloseDelay:d}=bo(e,y=>{y===(e.openOnHover&&l||c.value&&r)&&!(e.openOnHover&&n.value&&!a.value)&&(n.value!==y&&(u=!0),n.value=y)}),g=M(),f={onClick:y=>{y.stopPropagation(),o.value=y.currentTarget||y.target,n.value||(g.value=[y.clientX,y.clientY]),n.value=!n.value},onMouseenter:y=>{l=!0,o.value=y.currentTarget||y.target,v()},onMouseleave:y=>{l=!1,d()},onFocus:y=>{Oi(y.target,":focus-visible")!==!1&&(r=!0,y.stopPropagation(),o.value=y.currentTarget||y.target,v())},onBlur:y=>{r=!1,y.stopPropagation(),d({minDelay:1})}},p=C(()=>{const y={};return m.value&&(y.onClick=f.onClick),e.openOnHover&&(y.onMouseenter=f.onMouseenter,y.onMouseleave=f.onMouseleave),c.value&&(y.onFocus=f.onFocus,y.onBlur=f.onBlur),y}),b=C(()=>{const y={};if(e.openOnHover&&(y.onMouseenter=()=>{l=!0,v()},y.onMouseleave=()=>{l=!1,d()}),c.value&&(y.onFocusin=R=>{R.target.matches(":focus-visible")&&(r=!0,v())},y.onFocusout=()=>{r=!1,d({minDelay:1})}),e.closeOnContentClick){const R=Le(yo,null);y.onClick=()=>{n.value=!1,R==null||R.closeParents()}}return y}),x=C(()=>{const y={};return e.openOnHover&&(y.onMouseenter=()=>{u&&(l=!0,u=!1,v())},y.onMouseleave=()=>{l=!1,d()}),y});W(a,y=>{var R;y&&(e.openOnHover&&!l&&(!c.value||!r)||c.value&&!r&&(!e.openOnHover||!l))&&!((R=i.value)!=null&&R.contains(document.activeElement))&&d()}),W(n,y=>{y||setTimeout(()=>{g.value=void 0})},{flush:"post"});const L=Yn();Ne(()=>{L.value&&de(()=>{o.value=L.el})});const w=Yn(),h=C(()=>e.target==="cursor"&&g.value?g.value:w.value?w.el:Ua(e.target,s)||o.value),_=C(()=>Array.isArray(h.value)?void 0:h.value);let E;return W(()=>!!e.activator,y=>{y&&Ae?(E=Ea(),E.run(()=>{wo(e,s,{activatorEl:o,activatorEvents:p})})):E&&E.stop()},{flush:"post",immediate:!0}),ve(()=>{E==null||E.stop()}),{activatorEl:o,activatorRef:L,target:h,targetEl:_,targetRef:w,activatorEvents:p,contentEvents:b,scrimEvents:x}}function wo(e,t,n){let{activatorEl:a,activatorEvents:i}=n;W(()=>e.activator,(r,u)=>{if(u&&r!==u){const c=l(u);c&&o(c)}r&&de(()=>s())},{immediate:!0}),W(()=>e.activatorProps,()=>{s()}),ve(()=>{o()});function s(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:l(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;r&&Li(r,Q(i.value,u))}function o(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:l(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;r&&Ti(r,Q(i.value,u))}function l(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activator;const u=Ua(r,t);return a.value=(u==null?void 0:u.nodeType)===Node.ELEMENT_NODE?u:void 0,a.value}}function Ua(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 ko=T({retainFocus:Boolean,captureFocus:Boolean,disableInitialFocus:Boolean},"focusTrap"),Lt=new Map;let la=0;function ra(e){const t=document.activeElement;if(e.key!=="Tab"||!t)return;const n=Array.from(Lt.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=It(a).filter(u=>u.tabIndex>=0);if(!s.length)return;const o=document.activeElement;if(s.length===1&&s[0].classList.contains("v-list")&&s[0].contains(o)){e.preventDefault();return}const l=s[0],r=s[s.length-1];e.shiftKey&&(o===l||l.classList.contains("v-list")&&l.contains(o))&&(e.preventDefault(),r.focus()),!e.shiftKey&&(o===r||r.classList.contains("v-list")&&r.contains(o))&&(e.preventDefault(),l.focus())}function Co(e,t){let{isActive:n,localTop:a,activatorEl:i,contentEl:s}=t;const o=Symbol("trap");let l=!1,r=-1;async function u(){l=!0,r=window.setTimeout(()=>{l=!1},100)}async function c(d){var p;const g=d.relatedTarget,f=d.target;document.removeEventListener("pointerdown",u),document.removeEventListener("keydown",m),await new Promise(b=>requestAnimationFrame(b)),n.value&&!l&&g!==f&&s.value&&se(a)&&![document,s.value].includes(f)&&!s.value.contains(f)&&((p=It(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 g=It(document.documentElement);if(d.shiftKey&&d.target===g.at(0)||!d.shiftKey&&d.target===g.at(-1)){const f=It(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?Lt.set(o,{isActive:n,contentEl:s}):Lt.delete(o)},{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}),la++<1&&document.addEventListener("keydown",ra)),ve(()=>{Lt.delete(o),clearTimeout(r),document.removeEventListener("pointerdown",u),document.removeEventListener("focusin",c),document.removeEventListener("keydown",m),--la<1&&document.removeEventListener("keydown",ra)})}function _o(){if(!Ae)return z(!1);const{ssr:e}=Bi();if(e){const t=z(!1);return it(()=>{t.value=!0}),t}else return z(!0)}const xo=T({eager:Boolean},"lazy");function Eo(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 $n(){const t=Ee("useScopeId").vnode.scopeId;return{scopeId:t?{[t]:""}:void 0}}const ua=Symbol.for("vuetify:stack"),dt=vt([]);function Io(e,t,n){const a=Ee("useStack"),i=!n,s=Le(ua,void 0),o=vt({activeChildren:new Set});He(ua,o);const l=z(Number(se(t)));ht(e,()=>{var m;const c=(m=dt.at(-1))==null?void 0:m[1];l.value=c?c+10:Number(se(t)),i&&dt.push([a.uid,l.value]),s==null||s.activeChildren.add(a.uid),ve(()=>{if(i){const v=ne(dt).findIndex(d=>d[0]===a.uid);dt.splice(v,1)}s==null||s.activeChildren.delete(a.uid)})});const r=z(!0);i&&Ne(()=>{var m;const c=((m=dt.at(-1))==null?void 0:m[0])===a.uid;setTimeout(()=>r.value=c)});const u=k(()=>!o.activeChildren.size);return{globalTop:Ia(r),localTop:u,stackStyles:k(()=>({zIndex:l.value}))}}function Po(e){return{teleportTarget:C(()=>{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 Ka=T({transition:{type:null,default:"fade-transition",validator:e=>e!==!0}},"transition"),Ye=(e,t)=>{let{slots:n}=t;const{transition:a,disabled:i,group:s,...o}=e,{component:l=s?_n:$e,...r}=sn(a)?a:{};let u;return sn(a)?u=Q(r,Ri({disabled:i,group:s}),o):u=Q({name:i||!a?"":a},o),xn(l,u,n)};function Ao(){return!0}function Xa(e,t,n){if(!e||Ya(e,n)===!1)return!1;const a=Ca(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 Ya(e,t){return(typeof t.value=="object"&&t.value.closeConditional||Ao)(e)}function Vo(e,t,n){const a=typeof n.value=="function"?n.value:n.value.handler;e.shadowTarget=e.target,t._clickOutside.lastMousedownWasOutside&&Xa(e,t,n)&&setTimeout(()=>{Ya(e,n)&&a&&a(e)},0)}function ca(e,t){const n=Ca(e);t(document),typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&t(n)}const da={mounted(e,t){const n=i=>Vo(i,e,t),a=i=>{e._clickOutside.lastMousedownWasOutside=Xa(i,e,t)};ca(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&&(ca(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 Lo(e){const{modelValue:t,color:n,...a}=e;return S($e,{name:"fade-transition",appear:!0},{default:()=>[e.modelValue&&I("div",Q({class:["v-overlay__scrim",e.color.backgroundColorClasses.value],style:e.color.backgroundColorStyles.value},a),null)]})}const Dn=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},...po(),...ee(),...rt(),...xo(),...io(),...co(),...ko(),...fe(),...Ka()},"VOverlay"),Dt=G()({name:"VOverlay",directives:{vClickOutside:da},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...at(Dn(),["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=Ee("VOverlay"),o=M(),l=M(),r=M(),u=Pe(e,"modelValue"),c=C({get:()=>u.value,set:H=>{H&&e.disabled||(u.value=H)}}),{themeClasses:m}=ye(e),{rtlClasses:v,isRtl:d}=zt(),{hasContent:g,onAfterLeave:f}=Eo(e,c),p=Qe(()=>typeof e.scrim=="string"?e.scrim:null),{globalTop:b,localTop:x,stackStyles:L}=Io(c,()=>e.zIndex,e._disableGlobalStack),{activatorEl:w,activatorRef:h,target:_,targetEl:E,targetRef:y,activatorEvents:R,contentEvents:F,scrimEvents:A}=So(e,{isActive:c,isTop:x,contentEl:r}),{teleportTarget:V}=Po(()=>{var Me,D,re;const H=e.attach||e.contained;if(H)return H;const ue=((Me=w==null?void 0:w.value)==null?void 0:Me.getRootNode())||((re=(D=s.proxy)==null?void 0:D.$el)==null?void 0:re.getRootNode());return ue instanceof ShadowRoot?ue:!1}),{dimensionStyles:P}=ut(e),N=_o(),{scopeId:O}=$n();W(()=>e.disabled,H=>{H&&(c.value=!1)});const{contentStyles:U,updateLocation:Y}=so(e,{isRtl:d,contentEl:r,target:_,isActive:c});fo(e,{root:o,contentEl:r,targetEl:E,target:_,isActive:c,updateLocation:Y});function te(H){i("click:outside",H),e.persistent?be():c.value=!1}function he(H){return c.value&&x.value&&(!e.scrim||H.target===l.value||H instanceof MouseEvent&&H.shadowTarget===l.value)}Co(e,{isActive:c,localTop:x,contentEl:r,activatorEl:w}),Ae&&W(c,H=>{H?window.addEventListener("keydown",K):window.removeEventListener("keydown",K)},{immediate:!0}),je(()=>{Ae&&window.removeEventListener("keydown",K)});function K(H){var ue,Me,D;H.key==="Escape"&&b.value&&((ue=r.value)!=null&&ue.contains(document.activeElement)||i("keydown",H),e.persistent?be():(c.value=!1,(Me=r.value)!=null&&Me.contains(document.activeElement)&&((D=w.value)==null||D.focus())))}function $(H){H.key==="Escape"&&!b.value||i("keydown",H)}const J=Us();ht(()=>e.closeOnBack,()=>{Ks(J,()=>{if(b.value&&c.value)return e.persistent?be():c.value=!1,!1})});const q=M();W(()=>c.value&&(e.absolute||e.contained)&&V.value==null,H=>{if(H){const ue=Ni(o.value);ue&&ue!==document.scrollingElement&&(q.value=ue.scrollTop)}});function be(){e.noClickAnimation||r.value&&Fe(r.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:on})}function Ke(){i("afterEnter")}function De(){f(),i("afterLeave")}return Z(()=>{var H;return I(Ve,null,[(H=n.activator)==null?void 0:H.call(n,{isActive:c.value,targetRef:y,props:Q({ref:h},R.value,e.activatorProps)}),N.value&&g.value&&S(Zi,{disabled:!V.value,to:V.value},{default:()=>[I("div",Q({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(q.value)},e.style],ref:o,onKeydown:$},O,a),[S(Lo,Q({color:p,modelValue:c.value&&!!e.scrim,ref:l},A.value),null),S(Ye,{appear:!0,persisted:!0,transition:e.transition,target:_.value,onAfterEnter:Ke,onAfterLeave:De},{default:()=>{var ue;return[We(I("div",Q({ref:r,class:["v-overlay__content",e.contentClass],style:[P.value,U.value]},F.value,e.contentProps),[(ue=n.default)==null?void 0:ue.call(n,{isActive:c})]),[[En,c.value],[da,{handler:te,closeConditional:he,include:()=>[w.value]}]])]}})])]})])}),{activatorEl:w,scrimEl:l,target:_,animateClick:be,contentEl:r,rootEl:o,globalTop:b,localTop:x,updateLocation:Y}}}),en=Symbol("Forwarded refs");function tn(e,t){let n=e;for(;n;){const a=Reflect.getOwnPropertyDescriptor(n,t);if(a)return a;n=Object.getPrototypeOf(n)}}function Ja(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;at.value=e())}function s(o){const l=o?getComputedStyle(o):{transitionDuration:.2},r=parseFloat(l.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 Oo=T({multiLine:Boolean,text:String,timer:[Boolean,String],timeout:{type:[Number,String],default:5e3},vertical:Boolean,...Ht({location:"bottom"}),...Tn(),...Oe(),...Ue(),...fe(),...at(Dn({transition:"v-snackbar-transition"}),["persistent","noClickAnimation","retainFocus","captureFocus","disableInitialFocus","scrim","scrollStrategy","stickToTarget","viewportMargin"])},"VSnackbar"),Bo=G()({name:"VSnackbar",props:Oo(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const a=Pe(e,"modelValue"),{positionClasses:i}=On(e),{scopeId:s}=$n(),{themeClasses:o}=ye(e),{colorClasses:l,colorStyles:r,variantClasses:u}=wt(e),{roundedClasses:c}=Be(e),m=To(()=>Number(e.timeout)),v=M(),d=M(),g=z(!1),f=z(0),p=M(),b=Le(Mi,void 0);ht(()=>!!b,()=>{const A=$i();Ne(()=>{p.value=A.mainStyles.value})}),W(a,L),W(()=>e.timeout,L),it(()=>{a.value&&L()});let x=-1;function L(){m.reset(),window.clearTimeout(x);const A=Number(e.timeout);if(!a.value||A===-1)return;const V=Di(d.value);m.start(V),x=window.setTimeout(()=>{a.value=!1},A)}function w(){m.reset(),window.clearTimeout(x)}function h(){g.value=!0,w()}function _(){g.value=!1,L()}function E(A){f.value=A.touches[0].clientY}function y(A){Math.abs(f.value-A.changedTouches[0].clientY)>50&&(a.value=!1)}function R(){g.value&&_()}const F=C(()=>e.location.split(" ").reduce((A,V)=>(A[`v-snackbar--${V}`]=!0,A),{}));return Z(()=>{const A=Dt.filterProps(e),V=!!(n.default||n.text||e.text);return S(Dt,Q({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},F.value,i.value,e.class],style:[p.value,e.style]},A,{modelValue:a.value,"onUpdate:modelValue":P=>a.value=P,contentProps:Q({class:["v-snackbar__wrapper",o.value,l.value,c.value,u.value],style:[r.value],onPointerenter:h,onPointerleave:_},A.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",_disableGlobalStack:!0,onTouchstartPassive:E,onTouchend:y,onAfterLeave:R},s),{default:()=>{var P,N;return[St(!1,"v-snackbar"),e.timer&&!g.value&&I("div",{key:"timer",class:"v-snackbar__timer"},[S(Ba,{ref:d,color:typeof e.timer=="string"?e.timer:"info",max:e.timeout,modelValue:m.time.value},null)]),V&&I("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[((P=n.text)==null?void 0:P.call(n))??e.text,(N=n.default)==null?void 0:N.call(n)]),n.actions&&S(ge,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[I("div",{class:"v-snackbar__actions"},[n.actions({isActive:a})])]})]},activator:n.activator})}),Ja({},v)}}),Ro=es({name:"GlobalMessage",setup(){var s;const e=M(!1),t=M(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=Xe==null?void 0:Xe.onSnackbar)==null?void 0:s.call(Xe,async o=>{o&&(e.value&&(e.value=!1,await de()),t.value=o,e.value=!0)});return je(()=>i==null?void 0:i()),{snackbar:e,message:t,icons:n,colors:a}}}),No={class:"d-flex align-center"},$o={class:"text-subtitle-2 font-weight-medium"},Do={key:0,class:"text-body-2"};function Mo(e,t,n,a,i,s){var o;return Ce(),ze(Bo,{modelValue:e.snackbar,"onUpdate:modelValue":t[1]||(t[1]=l=>e.snackbar=l),color:e.colors[(o=e.message)==null?void 0:o.type]||e.colors.info,timeout:2e3,location:"top right","multi-line":"",variant:"tonal"},{actions:ie(()=>[S(Ha,{icon:"mdi-close",variant:"text",onClick:t[0]||(t[0]=l=>e.snackbar=!1)})]),default:ie(()=>{var l,r,u,c;return[I("div",No,[S(xe,{icon:e.icons[(l=e.message)==null?void 0:l.type]||e.icons.info,class:"mr-2"},null,8,["icon"]),I("div",null,[I("div",$o,_e((r=e.message)==null?void 0:r.title),1),(u=e.message)!=null&&u.content?(Ce(),In("div",Do,_e((c=e.message)==null?void 0:c.content),1)):Bt("",!0)])])]}),_:1},8,["modelValue","color"])}const Qa=Aa(Ro,[["render",Mo]]),Fo=T({...ee(),...le()},"VCardActions"),Za=G()({name:"VCardActions",props:Fo(),setup(e,t){let{slots:n}=t;return Ft({VBtn:{slim:!0,variant:"text"}}),Z(()=>S(e.tag,{class:j(["v-card-actions",e.class]),style:X(e.style)},n)),{}}}),zo=T({opacity:[Number,String],...ee(),...le()},"VCardSubtitle"),Wo=G()({name:"VCardSubtitle",props:zo(),setup(e,t){let{slots:n}=t;return Z(()=>S(e.tag,{class:j(["v-card-subtitle",e.class]),style:X([{"--v-card-subtitle-opacity":e.opacity},e.style])},n)),{}}}),ei=kn("v-card-title");function qo(e){return{aspectStyles:C(()=>{const t=Number(e.aspectRatio);return t?{paddingBottom:String(1/t*100)+"%"}:void 0})}}const ti=T({aspectRatio:[String,Number],contentClass:null,inline:Boolean,...ee(),...rt()},"VResponsive"),fa=G()({name:"VResponsive",props:ti(),setup(e,t){let{slots:n}=t;const{aspectStyles:a}=qo(e),{dimensionStyles:i}=ut(e);return Z(()=>{var s;return I("div",{class:j(["v-responsive",{"v-responsive--inline":e.inline},e.class]),style:X([i.value,e.style])},[I("div",{class:"v-responsive__sizer",style:X(a.value)},null),(s=n.additional)==null?void 0:s.call(n),n.default&&I("div",{class:j(["v-responsive__content",e.contentClass])},[n.default()])])}),{}}});function va(e,t){if(!Sn)return;const n=t.modifiers||{},a=t.value,{handler:i,options:s}=typeof a=="object"?a:{handler:a,options:{}},o=new IntersectionObserver(function(){var m;let l=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=l.some(v=>v.isIntersecting);i&&(!n.quiet||u.init)&&(!n.once||c||u.init)&&i(c,l,r),c&&n.once?vn(e,t):u.init=!0},s);e._observe=Object(e._observe),e._observe[t.instance.$.uid]={init:!1,observer:o},o.observe(e)}function vn(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 ma={mounted:va,unmounted:vn,updated:(e,t)=>{var n;(n=e._observe)!=null&&n[t.instance.$.uid]&&(vn(e,t),va(e,t))}},Ho=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,...ti(),...ee(),...Oe(),...Ka()},"VImg"),ni=G()({name:"VImg",directives:{vIntersect:ma},props:Ho(),emits:{loadstart:e=>!0,load:e=>!0,error:e=>!0},setup(e,t){let{emit:n,slots:a}=t;const{backgroundColorClasses:i,backgroundColorStyles:s}=Qe(()=>e.color),{roundedClasses:o}=Be(e),l=Ee("VImg"),r=z(""),u=M(),c=z(e.eager?"loading":"idle"),m=z(),v=z(),d=C(()=>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)}),g=C(()=>d.value.aspect||m.value/v.value||0);W(()=>e.src,()=>{f(c.value!=="idle")}),W(g,(V,P)=>{!V&&P&&u.value&&w(u.value)}),Pn(()=>f());function f(V){if(!(e.eager&&V)&&!(Sn&&!V&&!e.eager)){if(c.value="loading",d.value.lazySrc){const P=new Image;P.src=d.value.lazySrc,w(P,null)}d.value.src&&de(()=>{var P;n("loadstart",((P=u.value)==null?void 0:P.currentSrc)||d.value.src),setTimeout(()=>{var N;if(!l.isUnmounted)if((N=u.value)!=null&&N.complete){if(u.value.naturalWidth||b(),c.value==="error")return;g.value||w(u.value,null),c.value==="loading"&&p()}else g.value||w(u.value),x()})})}}function p(){var V;l.isUnmounted||(x(),w(u.value),c.value="loaded",n("load",((V=u.value)==null?void 0:V.currentSrc)||d.value.src))}function b(){var V;l.isUnmounted||(c.value="error",n("error",((V=u.value)==null?void 0:V.currentSrc)||d.value.src))}function x(){const V=u.value;V&&(r.value=V.currentSrc||V.src)}let L=-1;je(()=>{clearTimeout(L)});function w(V){let P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100;const N=()=>{if(clearTimeout(L),l.isUnmounted)return;const{naturalHeight:O,naturalWidth:U}=V;O||U?(m.value=U,v.value=O):!V.complete&&c.value==="loading"&&P!=null?L=window.setTimeout(N,P):(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})),_=()=>{var N;if(!d.value.src||c.value==="idle")return null;const V=I("img",{class:j(["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:b},null),P=(N=a.sources)==null?void 0:N.call(a);return S(Ye,{transition:e.transition,appear:!0},{default:()=>[We(P?I("picture",{class:"v-img__picture"},[P,V]):V,[[En,c.value==="loaded"]])]})},E=()=>S(Ye,{transition:e.transition},{default:()=>[d.value.lazySrc&&c.value!=="loaded"&&I("img",{class:j(["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)]}),y=()=>a.placeholder?S(Ye,{transition:e.transition,appear:!0},{default:()=>[(c.value==="loading"||c.value==="error"&&!a.error)&&I("div",{class:"v-img__placeholder"},[a.placeholder()])]}):null,R=()=>a.error?S(Ye,{transition:e.transition,appear:!0},{default:()=>[c.value==="error"&&I("div",{class:"v-img__error"},[a.error()])]}):null,F=()=>e.gradient?I("div",{class:"v-img__gradient",style:{backgroundImage:`linear-gradient(${e.gradient})`}},null):null,A=z(!1);{const V=W(g,P=>{P&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{A.value=!0})}),V())})}return Z(()=>{const V=fa.filterProps(e);return We(S(fa,Q({class:["v-img",{"v-img--absolute":e.absolute,"v-img--booting":!A.value,"v-img--fit-content":e.width==="fit-content"},i.value,o.value,e.class],style:[{width:B(e.width==="auto"?m.value:e.width)},s.value,e.style]},V,{aspectRatio:g.value,"aria-label":e.alt,role:e.alt?"img":void 0}),{additional:()=>I(Ve,null,[S(_,null,null),S(E,null,null),S(F,null,null),S(y,null,null),S(R,null,null)]),default:a.default}),[[ma,{handler:f,options:e.options},null,{once:!0}]])}),{currentSrc:r,image:u,state:c,naturalWidth:m,naturalHeight:v}}}),jo=T({start:Boolean,end:Boolean,icon:oe,image:String,text:String,...st(),...ee(),...Ge(),...Oe(),...Wt(),...le(),...fe(),...Ue({variant:"flat"})},"VAvatar"),Mt=G()({name:"VAvatar",props:jo(),setup(e,t){let{slots:n}=t;const{themeClasses:a}=ye(e),{borderClasses:i}=ot(e),{colorClasses:s,colorStyles:o,variantClasses:l}=wt(e),{densityClasses:r}=lt(e),{roundedClasses:u}=Be(e),{sizeClasses:c,sizeStyles:m}=qt(e);return Z(()=>S(e.tag,{class:j(["v-avatar",{"v-avatar--start":e.start,"v-avatar--end":e.end},a.value,i.value,s.value,r.value,u.value,c.value,l.value,e.class]),style:X([o.value,m.value,e.style])},{default:()=>[n.default?S(ge,{key:"content-defaults",defaults:{VImg:{cover:!0,src:e.image},VIcon:{icon:e.icon}}},{default:()=>[n.default()]}):e.image?S(ni,{key:"image",src:e.image,alt:"",cover:!0},null):e.icon?S(xe,{key:"icon",icon:e.icon},null):e.text,St(!1,"v-avatar")]})),{}}}),Go=T({appendAvatar:String,appendIcon:oe,prependAvatar:String,prependIcon:oe,subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...ee(),...Ge(),...le()},"VCardItem"),Uo=G()({name:"VCardItem",props:Go(),setup(e,t){let{slots:n}=t;return Z(()=>{const a=!!(e.prependAvatar||e.prependIcon),i=!!(a||n.prepend),s=!!(e.appendAvatar||e.appendIcon),o=!!(s||n.append),l=!!(e.title!=null||n.title),r=!!(e.subtitle!=null||n.subtitle);return S(e.tag,{class:j(["v-card-item",e.class]),style:X(e.style)},{default:()=>{var u;return[i&&I("div",{key:"prepend",class:"v-card-item__prepend"},[n.prepend?S(ge,{key:"prepend-defaults",disabled:!a,defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon}}},n.prepend):I(Ve,null,[e.prependAvatar&&S(Mt,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&S(xe,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)])]),I("div",{class:"v-card-item__content"},[l&&S(ei,{key:"title"},{default:()=>{var c;return[((c=n.title)==null?void 0:c.call(n))??_e(e.title)]}}),r&&S(Wo,{key:"subtitle"},{default:()=>{var c;return[((c=n.subtitle)==null?void 0:c.call(n))??_e(e.subtitle)]}}),(u=n.default)==null?void 0:u.call(n)]),o&&I("div",{key:"append",class:"v-card-item__append"},[n.append?S(ge,{key:"append-defaults",disabled:!s,defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon}}},n.append):I(Ve,null,[e.appendIcon&&S(xe,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&S(Mt,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)])])]}})}),{}}}),Ko=T({opacity:[Number,String],...ee(),...le()},"VCardText"),mn=G()({name:"VCardText",props:Ko(),setup(e,t){let{slots:n}=t;return Z(()=>S(e.tag,{class:j(["v-card-text",e.class]),style:X([{"--v-card-text-opacity":e.opacity},e.style])},n)),{}}}),Xo=T({appendAvatar:String,appendIcon:oe,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:oe,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(),...Ge(),...rt(),...bt(),...Ra(),...Ht(),...Tn(),...Oe(),...Rn(),...le(),...fe(),...Ue({variant:"elevated"})},"VCard"),ga=G()({name:"VCard",directives:{vRipple:yt},props:Xo(),setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{borderClasses:s}=ot(e),{colorClasses:o,colorStyles:l,variantClasses:r}=wt(e),{densityClasses:u}=lt(e),{dimensionStyles:c}=ut(e),{elevationClasses:m}=pt(e),{loaderClasses:v}=Na(e),{locationStyles:d}=Ln(e),{positionClasses:g}=On(e),{roundedClasses:f}=Be(e),p=Bn(e,n),b=z(void 0);return W(()=>e.loading,(x,L)=>{b.value=!x&&typeof L=="string"?L:typeof x=="boolean"?void 0:x},{immediate:!0}),Z(()=>{const x=e.link!==!1&&p.isLink.value,L=!e.disabled&&e.link!==!1&&(e.link||p.isClickable.value),w=x?"a":e.tag,h=!!(a.title||e.title!=null),_=!!(a.subtitle||e.subtitle!=null),E=h||_,y=!!(a.append||e.appendAvatar||e.appendIcon),R=!!(a.prepend||e.prependAvatar||e.prependIcon),F=!!(a.image||e.image),A=E||R||y,V=!!(a.text||e.text!=null);return We(S(w,Q(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,o.value,u.value,m.value,v.value,g.value,f.value,r.value,e.class],style:[l.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 P;return[F&&I("div",{key:"image",class:"v-card__image"},[a.image?S(ge,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},a.image):S(ni,{key:"image-img",cover:!0,src:e.image},null)]),S(Hs,{name:"v-card",active:!!e.loading,color:b.value},{default:a.loader}),A&&S(Uo,{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&&S(mn,{key:"text"},{default:()=>{var N;return[((N=a.text)==null?void 0:N.call(a))??e.text]}}),(P=a.default)==null?void 0:P.call(a),a.actions&&S(Za,null,{default:a.actions}),St(L,"v-card")]}}),[[yt,L&&e.ripple]])}),{}}}),Yo=T({disabled:Boolean,group:Boolean,hideOnLeave:Boolean,leaveAbsolute:Boolean,mode:String,origin:String},"transition");function me(e,t,n){return G()({name:e,props:Yo({mode:n,origin:t}),setup(a,i){let{slots:s}=i;const o={onBeforeEnter(l){a.origin&&(l.style.transformOrigin=a.origin)},onLeave(l){if(a.leaveAbsolute){const{offsetTop:r,offsetLeft:u,offsetWidth:c,offsetHeight:m}=l;l._transitionInitialStyles={position:l.style.position,top:l.style.top,left:l.style.left,width:l.style.width,height:l.style.height},l.style.position="absolute",l.style.top=`${r}px`,l.style.left=`${u}px`,l.style.width=`${c}px`,l.style.height=`${m}px`}a.hideOnLeave&&l.style.setProperty("display","none","important")},onAfterLeave(l){if(a.leaveAbsolute&&(l!=null&&l._transitionInitialStyles)){const{position:r,top:u,left:c,width:m,height:v}=l._transitionInitialStyles;delete l._transitionInitialStyles,l.style.position=r||"",l.style.top=u||"",l.style.left=c||"",l.style.width=m||"",l.style.height=v||""}}};return()=>{const l=a.group?_n:$e;return xn(l,{name:a.disabled?"":e,css:!a.disabled,...a.group?void 0:{mode:a.mode},...a.disabled?{}:o},s.default)}}})}function Mn(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:Tt()},group:Boolean,hideOnLeave:Boolean},setup(a,i){let{slots:s}=i;const o=a.group?_n:$e;return()=>xn(o,{name:a.disabled?"":e,css:!a.disabled,...a.disabled?{}:{...t,onLeave:l=>{var r;a.hideOnLeave?l.style.setProperty("display","none","important"):(r=t.onLeave)==null||r.call(t,l)}}},s.default)}})}function Fn(){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 o=`${i.offsetWidth}px`,l=`${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=o),["y","both"].includes(t)&&(i.style.height=l)})},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:o}=i._initialStyle;i.style.overflow=i._initialStyle.overflow,s!=null&&["x","both"].includes(t)&&(i.style.width=s),o!=null&&["y","both"].includes(t)&&(i.style.height=o),delete i._initialStyle}}const Jo=T({target:[Object,Array]},"v-dialog-transition"),nn=new WeakMap,Qo=G()({name:"VDialogTransition",props:Jo(),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 o=ha(e.target,i),{x:l,y:r,sx:u,sy:c,speed:m}=o;if(nn.set(i,o),Tt())Fe(i,[{opacity:0},{}],{duration:125*m,easing:Qn}).finished.then(()=>s());else{const d=Fe(i,[{transform:`translate(${l}px, ${r}px) scale(${u}, ${c})`,opacity:0},{}],{duration:225*m,easing:Qn});(v=ya(i))==null||v.forEach(g=>{Fe(g,[{opacity:0},{opacity:0,offset:.33},{}],{duration:225*2*m,easing:on})}),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 o;!nn.has(i)||Array.isArray(e.target)||e.target.offsetParent||e.target.getClientRects().length?o=ha(e.target,i):o=nn.get(i);const{x:l,y:r,sx:u,sy:c,speed:m}=o;Tt()?Fe(i,[{},{opacity:0}],{duration:85*m,easing:Jn}).finished.then(()=>s()):(Fe(i,[{},{transform:`translate(${l}px, ${r}px) scale(${u}, ${c})`,opacity:0}],{duration:125*m,easing:Jn}).finished.then(()=>s()),(v=ya(i))==null||v.forEach(g=>{Fe(g,[{},{opacity:0,offset:.2},{opacity:0}],{duration:125*2*m,easing:on})}))},onAfterLeave(i){i.style.removeProperty("pointer-events")}};return()=>e.target?S($e,Q({name:"dialog-transition"},a,{css:!1}),n):S($e,{name:"dialog-transition"},n)}});function ya(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 ha(e,t){const n=wn(e),a=ka(t),[i,s]=getComputedStyle(t).transformOrigin.split(" ").map(b=>parseFloat(b)),[o,l]=getComputedStyle(t).getPropertyValue("--v-overlay-anchor-origin").split(" ");let r=n.left+n.width/2;o==="left"||l==="left"?r-=n.width/2:(o==="right"||l==="right")&&(r+=n.width/2);let u=n.top+n.height/2;o==="top"||l==="top"?u-=n.height/2:(o==="bottom"||l==="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,g=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:g,speed:p}}me("fab-transition","center center","out-in");me("dialog-bottom-transition");me("dialog-top-transition");const ql=me("fade-transition"),Hl=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 jl=me("slide-x-reverse-transition"),Gl=me("slide-y-transition");me("slide-y-reverse-transition");const Zo=Mn("expand-transition",Fn()),Ul=Mn("expand-x-transition",Fn("","x"));Mn("expand-both-transition",Fn("","both"));const el=T({fullscreen:Boolean,scrollable:Boolean,...at(Dn({captureFocus:!0,origin:"center center",scrollStrategy:"block",transition:{component:Qo},zIndex:2400,retainFocus:!0}),["disableInitialFocus"])},"VDialog"),tl=G()({name:"VDialog",props:el(),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}=$n(),o=M();function l(){var u;n("afterEnter"),(e.scrim||e.retainFocus)&&((u=o.value)!=null&&u.contentEl)&&!o.value.contentEl.contains(document.activeElement)&&o.value.contentEl.focus({preventScroll:!0})}function r(){n("afterLeave")}return W(i,async u=>{var c;u||(await de(),(c=o.value.activatorEl)==null||c.focus({preventScroll:!0}))}),Z(()=>{const u=Dt.filterProps(e),c=Q({"aria-haspopup":"dialog"},e.activatorProps),m=Q({tabindex:-1},e.contentProps);return S(Dt,Q({ref:o,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:l,onAfterLeave:r},s),{activator:a.activator,default:function(){for(var v=arguments.length,d=new Array(v),g=0;g{var f;return[(f=a.default)==null?void 0:f.call(a,...d)]}})}})}),Ja({},o)}}),nl=["dotted","dashed","solid","double"],al=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=>nl.includes(e)},...ee(),...fe()},"VDivider"),ai=G()({name:"VDivider",props:al(),setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{textColorClasses:s,textColorStyles:o}=tt(()=>e.color),l=C(()=>{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 Z(()=>{const u=I("hr",{class:j([{"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:X([l.value,o.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?I("div",{class:j(["v-divider__wrapper",{"v-divider__wrapper--gradient":e.gradient,"v-divider__wrapper--inset":e.inset,"v-divider__wrapper--vertical":e.vertical}])},[u,I("div",{class:"v-divider__content",style:X(r.value)},[a.default()]),u]):u}),{}}}),il=kn("v-spacer","div","VSpacer"),gn=Symbol.for("vuetify:list");function ii(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{filterable:!1};const t=Le(gn,{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||Cn()}=e,o={filterable:t.filterable||n,hasPrepend:z(!1),updateHasPrepend:l=>{l&&(o.hasPrepend.value=l)},trackingIndex:a,navigationStrategy:i,uid:s};return He(gn,o),t}function si(){return Le(gn,null)}const zn=e=>{const t={activate:n=>{let{id:a,value:i,activated:s}=n;return a=ne(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 o of pn(n))s=t.activate({id:o,value:!0,activated:new Set(s),children:a,parents:i});return s},out:n=>Array.from(n)};return t},oi=e=>{const t=zn(e);return{activate:a=>{let{activated:i,id:s,...o}=a;s=ne(s);const l=i.has(s)?new Set([s]):new Set;return t.activate({...o,id:s,activated:l})},in:(a,i,s)=>{let o=new Set;if(a!=null){const l=pn(a);l.length&&(o=t.in(l.slice(0,1),i,s))}return o},out:(a,i,s)=>t.out(a,i,s)}},sl=e=>{const t=zn(e);return{activate:a=>{let{id:i,activated:s,children:o,...l}=a;return i=ne(i),o.has(i)?s:t.activate({id:i,activated:s,children:o,...l})},in:t.in,out:t.out}},ol=e=>{const t=oi(e);return{activate:a=>{let{id:i,activated:s,children:o,...l}=a;return i=ne(i),o.has(i)?s:t.activate({id:i,activated:s,children:o,...l})},in:t.in,out:t.out}},ll={open:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(n){const s=new Set;s.add(t);let o=i.get(t);for(;o!=null;)s.add(o),o=i.get(o);return s}else return a.delete(t),a},select:()=>null},li={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},rl={open:li.open,select:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(!n)return a;const s=[];let o=i.get(t);for(;o!=null;)s.push(o),o=i.get(o);return new Set(s)}},Wn=e=>{const t={select:n=>{let{id:a,value:i,selected:s}=n;if(a=ne(a),e&&!i){const o=Array.from(s.entries()).reduce((l,r)=>{let[u,c]=r;return c==="on"&&l.push(u),l},[]);if(o.length===1&&o[0]===a)return s}return s.set(a,i?"on":"off"),s},in:(n,a,i,s)=>{const o=new Map;for(const l of n||[])t.select({id:l,value:!0,selected:o,children:a,parents:i,disabled:s});return o},out:n=>{const a=[];for(const[i,s]of n.entries())s==="on"&&a.push(i);return a}};return t},ri=e=>{const t=Wn(e);return{select:a=>{let{selected:i,id:s,...o}=a;s=ne(s);const l=i.has(s)?new Map([[s,i.get(s)]]):new Map;return t.select({...o,id:s,selected:l})},in:(a,i,s,o)=>a!=null&&a.length?t.in(a.slice(0,1),i,s,o):new Map,out:(a,i,s)=>t.out(a,i,s)}},ul=e=>{const t=Wn(e);return{select:a=>{let{id:i,selected:s,children:o,...l}=a;return i=ne(i),o.has(i)?s:t.select({id:i,selected:s,children:o,...l})},in:t.in,out:t.out}},cl=e=>{const t=ri(e);return{select:a=>{let{id:i,selected:s,children:o,...l}=a;return i=ne(i),o.has(i)?s:t.select({id:i,selected:s,children:o,...l})},in:t.in,out:t.out}},qn=e=>{const t={select:n=>{let{id:a,value:i,selected:s,children:o,parents:l,disabled:r}=n;a=ne(a);const u=new Map(s),c=[a];for(;c.length;){const v=c.shift();r.has(v)||s.set(ne(v),i?"on":"off"),o.has(v)&&c.push(...o.get(v))}let m=ne(l.get(a));for(;m;){let v=!0,d=!0;for(const g of o.get(m)){const f=ne(g);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=ne(l.get(m))}return e&&!i&&Array.from(s.entries()).reduce((d,g)=>{let[f,p]=g;return p==="on"&&d.push(f),d},[]).length===0?u:s},in:(n,a,i)=>{let s=new Map;for(const o of n||[])s=t.select({id:o,value:!0,selected:s,children:a,parents:i,disabled:new Set});return s},out:(n,a)=>{const i=[];for(const[s,o]of n.entries())o==="on"&&!a.has(s)&&i.push(s);return i}};return t},dl=e=>{const t=qn(e);return{select:t.select,in:t.in,out:(a,i,s)=>{const o=[];for(const[l,r]of a.entries())if(r==="on"){if(s.has(l)){const u=s.get(l);if(a.get(u)==="on")continue}o.push(l)}return o}}},fl=e=>{const n={select:qn(e).select,in:(a,i,s,o)=>{let l=new Map;for(const r of a||[])i.has(r)||(l=n.select({id:r,value:!0,selected:l,children:i,parents:s,disabled:o}));return l},out:a=>{const i=[];for(const[s,o]of a.entries())(o==="on"||o==="indeterminate")&&i.push(s);return i}};return n},nt=Symbol.for("vuetify:nested"),ui={id:z(),root:{itemsRegistration:M("render"),register:()=>null,unregister:()=>null,updateDisabled:()=>null,children:M(new Map),parents:M(new Map),disabled:M(new Set),open:()=>null,openOnSelect:()=>null,activate:()=>null,select:()=>null,activatable:M(!1),scrollToActive:M(!1),selectable:M(!1),opened:M(new Set),activated:M(new Set),selected:M(new Map),selectedValues:M([]),getPath:()=>[]}},vl=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"),ml=(e,t)=>{let{items:n,returnObject:a,scrollToActive:i}=t,s=!1;const o=z(new Map),l=z(new Map),r=z(new Set),u=Pe(e,"opened",e.opened,h=>new Set(Array.isArray(h)?h.map(_=>ne(_)):h),h=>[...h.values()]),c=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 sl(e.mandatory);case"single-leaf":return ol(e.mandatory);case"independent":return zn(e.mandatory);case"single-independent":default:return oi(e.mandatory)}}),m=C(()=>{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 cl(e.mandatory);case"leaf":return ul(e.mandatory);case"independent":return Wn(e.mandatory);case"single-independent":return ri(e.mandatory);case"trunk":return dl(e.mandatory);case"branch":return fl(e.mandatory);case"classic":default:return qn(e.mandatory)}}),v=C(()=>{if(typeof e.openStrategy=="object")return e.openStrategy;switch(e.openStrategy){case"list":return rl;case"single":return ll;case"multiple":default:return li}}),d=Pe(e,"activated",e.activated,h=>c.value.in(h,o.value,l.value),h=>c.value.out(h,o.value,l.value)),g=Pe(e,"selected",e.selected,h=>m.value.in(h,o.value,l.value,r.value),h=>m.value.out(h,o.value,l.value));je(()=>{s=!0});function f(h){const _=[];let E=ne(h);for(;E!==void 0;)_.unshift(E),E=l.value.get(E);return _}const p=Ee("nested"),b=new Set,x=Fi(()=>{de(()=>{o.value=new Map(o.value),l.value=new Map(l.value)})},100);W(()=>[n.value,se(a)],()=>{e.itemsRegistration==="props"&&L()},{immediate:!0});function L(){const h=new Map,_=new Map,E=new Set,y=se(a)?A=>ne(A.raw):A=>A.value,R=[...n.value];let F=0;for(;Fe.activatable),scrollToActive:k(()=>se(i)),selectable:k(()=>e.selectable),activated:d,selected:g,selectedValues:C(()=>{const h=[];for(const[_,E]of g.value.entries())E==="on"&&h.push(_);return h}),itemsRegistration:k(()=>e.itemsRegistration),register:(h,_,E,y)=>{if(b.has(h)){f(h).map(String).join(" -> "),f(_).concat(h).map(String).join(" -> ");return}else b.add(h);_&&h!==_&&l.value.set(h,_),E&&r.value.add(h),y&&o.value.set(h,[]),_!=null&&o.value.set(_,[...o.value.get(_)||[],h]),x()},unregister:h=>{if(s)return;b.delete(h),o.value.delete(h),r.value.delete(h);const _=l.value.get(h);if(_){const E=o.value.get(_)??[];o.value.set(_,E.filter(y=>y!==h))}l.value.delete(h),x()},updateDisabled:(h,_)=>{_?r.value.add(h):r.value.delete(h)},open:(h,_,E)=>{p.emit("click:open",{id:h,value:_,path:f(h),event:E});const y=v.value.open({id:h,value:_,opened:new Set(u.value),children:o.value,parents:l.value,event:E});y&&(u.value=y)},openOnSelect:(h,_,E)=>{const y=v.value.select({id:h,value:_,selected:new Map(g.value),opened:new Set(u.value),children:o.value,parents:l.value,event:E});y&&(u.value=y)},select:(h,_,E)=>{p.emit("click:select",{id:h,value:_,path:f(h),event:E});const y=m.value.select({id:h,value:_,selected:new Map(g.value),children:o.value,parents:l.value,disabled:r.value,event:E});y&&(g.value=y),w.root.openOnSelect(h,_,E)},activate:(h,_,E)=>{if(!e.activatable)return w.root.select(h,!0,E);p.emit("click:activate",{id:h,value:_,path:f(h),event:E});const y=c.value.activate({id:h,value:_,activated:new Set(d.value),children:o.value,parents:l.value,event:E});if(y.size!==d.value.size)d.value=y;else{for(const R of y)if(!d.value.has(R)){d.value=y;return}for(const R of d.value)if(!y.has(R)){d.value=y;return}}},children:o,parents:l,disabled:r,getPath:f}};return He(nt,w),w.root},ci=(e,t,n)=>{const a=Le(nt,ui),i=Symbol("nested item"),s=C(()=>{const l=ne(se(e));return l!==void 0?l:i}),o={...a,id:s,open:(l,r)=>a.root.open(s.value,l,r),openOnSelect:(l,r)=>a.root.openOnSelect(s.value,l,r),isOpen:C(()=>a.root.opened.value.has(s.value)),parent:C(()=>a.root.parents.value.get(s.value)),activate:(l,r)=>a.root.activate(s.value,l,r),isActivated:C(()=>a.root.activated.value.has(s.value)),scrollToActive:a.root.scrollToActive,select:(l,r)=>a.root.select(s.value,l,r),isSelected:C(()=>a.root.selected.value.get(s.value)==="on"),isIndeterminate:C(()=>a.root.selected.value.get(s.value)==="indeterminate"),isLeaf:C(()=>!a.root.children.value.get(s.value)),isGroupActivator:a.isGroupActivator};return Pn(()=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||de(()=>{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,(l,r)=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||(a.root.unregister(r),de(()=>{a.root.register(l,a.id.value,se(t),n)}))}),W(()=>se(t),l=>{a.root.updateDisabled(s.value,l)}),n&&He(nt,o),o},gl=()=>{const e=Le(nt,ui);He(nt,{...e,isGroupActivator:!0})};function yl(){const e=z(!1);return it(()=>{window.requestAnimationFrame(()=>{e.value=!0})}),{ssrBootStyles:k(()=>e.value?void 0:{transition:"none !important"}),isBooted:Ia(e)}}const hl=zi({name:"VListGroupActivator",setup(e,t){let{slots:n}=t;return gl(),()=>{var a;return(a=n.default)==null?void 0:a.call(n)}}}),bl=T({activeColor:String,baseColor:String,color:String,collapseIcon:{type:oe,default:"$collapse"},disabled:Boolean,expandIcon:{type:oe,default:"$expand"},rawId:[String,Number],prependIcon:oe,appendIcon:oe,fluid:Boolean,subgroup:Boolean,title:String,value:null,...ee(),...le()},"VListGroup"),ba=G()({name:"VListGroup",props:bl(),setup(e,t){let{slots:n}=t;const{isOpen:a,open:i,id:s}=ci(()=>e.value,()=>e.disabled,!0),o=C(()=>`v-list-group--id-${String(e.rawId??s.value)}`),l=si(),{isBooted:r}=yl(),u=Le(nt),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=C(()=>({onClick:m,class:"v-list-group__header",id:o.value})),d=C(()=>a.value?e.collapseIcon:e.expandIcon),g=C(()=>({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 Z(()=>S(e.tag,{class:j(["v-list-group",{"v-list-group--prepend":l==null?void 0:l.hasPrepend.value,"v-list-group--fluid":e.fluid,"v-list-group--subgroup":e.subgroup,"v-list-group--open":a.value},e.class]),style:X(e.style)},{default:()=>[n.activator&&S(ge,{defaults:g.value},{default:()=>[S(hl,null,{default:()=>[n.activator({props:v.value,isOpen:a.value})]})]}),S(Ye,{transition:{component:Zo},disabled:!r.value},{default:()=>{var f,p;return[c.value?We(I("div",{class:"v-list-group__items",role:"group","aria-labelledby":o.value},[(f=n.default)==null?void 0:f.call(n)]),[[En,a.value]]):a.value&&I("div",{class:"v-list-group__items",role:"group","aria-labelledby":o.value},[(p=n.default)==null?void 0:p.call(n)])]}})]})),{isOpen:a}}}),pl=T({opacity:[Number,String],...ee(),...le()},"VListItemSubtitle"),di=G()({name:"VListItemSubtitle",props:pl(),setup(e,t){let{slots:n}=t;return Z(()=>S(e.tag,{class:j(["v-list-item-subtitle",e.class]),style:X([{"--v-list-item-subtitle-opacity":e.opacity},e.style])},n)),{}}}),fi=kn("v-list-item-title"),Sl=T({active:{type:Boolean,default:void 0},activeClass:String,activeColor:String,appendAvatar:String,appendIcon:oe,baseColor:String,disabled:Boolean,lines:[Boolean,String],link:{type:Boolean,default:void 0},nav:Boolean,prependAvatar:String,prependIcon:oe,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(),...Ge(),...rt(),...bt(),...Oe(),...Rn(),...le(),...fe(),...Ue({variant:"text"})},"VListItem"),yn=G()({name:"VListItem",directives:{vRipple:yt},props:Sl(),emits:{click:e=>!0},setup(e,t){let{attrs:n,slots:a,emit:i}=t;const s=Bn(e,n),o=M(),l=C(()=>e.value===void 0?s.href.value:e.value),{activate:r,isActivated:u,select:c,isOpen:m,isSelected:v,isIndeterminate:d,isGroupActivator:g,root:f,parent:p,openOnSelect:b,scrollToActive:x,id:L}=ci(l,()=>e.disabled,!1),w=si(),h=C(()=>{var D;return e.active!==!1&&(e.active||((D=s.isActive)==null?void 0:D.value)||(f.activatable.value?u.value:v.value))}),_=k(()=>e.link!==!1&&s.isLink.value),E=C(()=>!!w&&(f.selectable.value||f.activatable.value||e.value!=null)),y=C(()=>!e.disabled&&e.link!==!1&&(e.link||s.isClickable.value||E.value)),R=C(()=>w&&w.navigationStrategy.value==="track"&&e.index!==void 0&&w.trackingIndex.value===e.index),F=C(()=>w?_.value?"link":E.value?"option":"listitem":void 0),A=C(()=>{if(E.value)return f.activatable.value?u.value:f.selectable.value?v.value:h.value}),V=k(()=>e.rounded||e.nav),P=k(()=>e.color??e.activeColor),N=k(()=>({color:h.value?P.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||!x||(re=o.value)==null||re.scrollIntoView({block:"nearest",behavior:"instant"})}),W(R,D=>{var re;D&&((re=o.value)==null||re.scrollIntoView({block:"nearest",behavior:"instant"}))}),Pn(()=>{var D;(D=s.isActive)!=null&&D.value&&de(()=>O())});function O(){p.value!=null&&f.open(p.value,!0),b(!0)}const{themeClasses:U}=ye(e),{borderClasses:Y}=ot(e),{colorClasses:te,colorStyles:he,variantClasses:K}=wt(N),{densityClasses:$}=lt(e),{dimensionStyles:J}=ut(e),{elevationClasses:q}=pt(e),{roundedClasses:be}=Be(V),Ke=k(()=>e.lines?`v-list-item--${e.lines}-line`:void 0),De=k(()=>e.ripple!==void 0&&e.ripple&&(w!=null&&w.filterable)?{keys:["Enter"]}:e.ripple),H=C(()=>({isActive:h.value,select:c,isOpen:m.value,isSelected:v.value,isIndeterminate:d.value,isDisabled:e.disabled}));function ue(D){var re,kt,Gt;i("click",D),!["INPUT","TEXTAREA"].includes((re=D.target)==null?void 0:re.tagName)&&y.value&&((Gt=(kt=s.navigate).value)==null||Gt.call(kt,D),!g&&(f.activatable.value?r(!u.value,D):(f.selectable.value||e.value!=null&&!_.value)&&c(!v.value,D)))}function Me(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 Z(()=>{const D=_.value?"a":e.tag,re=a.title||e.title!=null,kt=a.subtitle||e.subtitle!=null,hi=!!(!!(e.appendAvatar||e.appendIcon)||a.append),Ut=!!(!!(e.prependAvatar||e.prependIcon)||a.prepend);return w==null||w.updateHasPrepend(Ut),e.activeColor&&Wi("active-color",["color","base-color"]),We(S(D,Q(s.linkProps,{ref:o,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":y.value,"v-list-item--nav":e.nav,"v-list-item--prepend":!Ut&&(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,Y.value,te.value,$.value,q.value,Ke.value,be.value,K.value,e.class],style:[{"--v-list-prepend-gap":B(e.prependGap)},he.value,J.value,e.style],tabindex:e.tabindex??(y.value?w?-2:0:void 0),"aria-selected":A.value,role:F.value,onClick:ue,onKeydown:y.value&&!_.value&&Me}),{default:()=>{var Hn;return[St(y.value||h.value,"v-list-item"),Ut&&I("div",{key:"prepend",class:"v-list-item__prepend"},[a.prepend?S(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 pe;return[(pe=a.prepend)==null?void 0:pe.call(a,H.value)]}}):I(Ve,null,[e.prependAvatar&&S(Mt,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&S(xe,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)]),I("div",{class:"v-list-item__spacer"},null)]),I("div",{class:"v-list-item__content","data-no-activator":""},[re&&S(fi,{key:"title"},{default:()=>{var pe;return[((pe=a.title)==null?void 0:pe.call(a,{title:e.title}))??_e(e.title)]}}),kt&&S(di,{key:"subtitle"},{default:()=>{var pe;return[((pe=a.subtitle)==null?void 0:pe.call(a,{subtitle:e.subtitle}))??_e(e.subtitle)]}}),(Hn=a.default)==null?void 0:Hn.call(a,H.value)]),hi&&I("div",{key:"append",class:"v-list-item__append"},[a.append?S(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 pe;return[(pe=a.append)==null?void 0:pe.call(a,H.value)]}}):I(Ve,null,[e.appendIcon&&S(xe,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&S(Mt,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)]),I("div",{class:"v-list-item__spacer"},null)])]}}),[[yt,y.value&&De.value]])}),{activate:r,isActivated:u,isGroupActivator:g,isSelected:v,list:w,select:c,root:f,id:L,link:s}}}),wl=T({color:String,inset:Boolean,sticky:Boolean,title:String,...ee(),...le()},"VListSubheader"),kl=G()({name:"VListSubheader",props:wl(),setup(e,t){let{slots:n}=t;const{textColorClasses:a,textColorStyles:i}=tt(()=>e.color);return Z(()=>{const s=!!(n.default||e.title);return S(e.tag,{class:j(["v-list-subheader",{"v-list-subheader--inset":e.inset,"v-list-subheader--sticky":e.sticky},a.value,e.class]),style:X([{textColorStyles:i},e.style])},{default:()=>{var o;return[s&&I("div",{class:"v-list-subheader__text"},[((o=n.default)==null?void 0:o.call(n))??e.title])]}})}),{}}}),Cl=T({items:Array,returnObject:Boolean},"VListChildren"),vi=G()({name:"VListChildren",props:Cl(),setup(e,t){let{slots:n}=t;return ii(),()=>{var a,i;return((a=n.default)==null?void 0:a.call(n))??((i=e.items)==null?void 0:i.map((s,o)=>{var d,g;let{children:l,props:r,type:u,raw:c}=s;if(u==="divider")return((d=n.divider)==null?void 0:d.call(n,{props:r}))??S(ai,r,null);if(u==="subheader")return((g=n.subheader)==null?void 0:g.call(n,{props:r}))??S(kl,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=ba.filterProps(r);return l?S(ba,Q(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 b=Q(r,p,{value:e.returnObject?c:r.value});return n.header?n.header({props:b}):S(yn,Q(b,{index:o}),m)},default:()=>S(vi,{items:l,returnObject:e.returnObject},n)}):n.item?n.item({props:{...r,index:o}}):S(yn,Q(r,{index:o,value:e.returnObject?c:r.value}),m)}))}}}),_l=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"),xl=new Set(["item","divider","subheader"]);function Ze(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 o=ke(t,e.itemType,"item");xl.has(o)||(o="item");const l={title:n,value:a,...s};return{type:o,title:String(l.title??""),value:l.value,props:l,children:o==="item"&&Array.isArray(i)?mi(e,i):void 0,raw:t}}Ze.neededProps=["itemTitle","itemValue","itemChildren","itemProps","itemType"];function mi(e,t){const n=_a(e,Ze.neededProps),a=[];for(const i of t)a.push(Ze(n,i));return a}function Kl(e){const t=C(()=>mi(e,e.items)),n=C(()=>t.value.some(l=>l.value===null)),a=z(new Map),i=z([]);Ne(()=>{const l=t.value,r=new Map,u=[];for(let c=0;c{let{raw:u}=r;return u}):l.map(r=>{let{value:u}=r;return u})}return{items:t,transformIn:s,transformOut:o}}const El=new Set(["item","divider","subheader"]);function Il(e,t){const n=ln(t)?t:ke(t,e.itemTitle),a=ln(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 o=ke(t,e.itemType,"item");El.has(o)||(o="item");const l={title:n,value:a,...s};return{type:o,title:l.title,value:l.value,props:l,children:o==="item"&&i?gi(e,i):void 0,raw:t}}function gi(e,t){const n=[];for(const a of t)n.push(Il(e,a));return n}function Pl(e){return{items:C(()=>gi(e,e.items))}}const Al=T({baseColor:String,activeColor:String,activeClass:String,bgColor:String,disabled:Boolean,filterable:Boolean,expandIcon:oe,collapseIcon:oe,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(),...vl({selectStrategy:"single-leaf",openStrategy:"list"}),...st(),...ee(),...Ge(),...rt(),...bt(),..._l(),...Oe(),...le(),...fe(),...Ue({variant:"text"})},"VList"),Vl=G()({name:"VList",props:Al(),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}=Pl(e),{themeClasses:o}=ye(e),{backgroundColorClasses:l,backgroundColorStyles:r}=Qe(()=>e.bgColor),{borderClasses:u}=ot(e),{densityClasses:c}=lt(e),{dimensionStyles:m}=ut(e),{elevationClasses:v}=pt(e),{roundedClasses:d}=Be(e),{children:g,open:f,parents:p,select:b,getPath:x}=ml(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),_=k(()=>e.color),E=k(()=>e.selectable||e.activatable),y=Pe(e,"navigationIndex",-1,$=>$??-1),R=Cn();ii({filterable:e.filterable,trackingIndex:y,navigationStrategy:k(()=>e.navigationStrategy),uid:R}),W(s,()=>{e.navigationStrategy==="track"&&(y.value=-1)}),Ft({VListGroup:{activeColor:w,baseColor:h,color:_,expandIcon:k(()=>e.expandIcon),collapseIcon:k(()=>e.collapseIcon)},VListItem:{activeClass:k(()=>e.activeClass),activeColor:w,baseColor:h,color:_,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 F=z(!1),A=M();function V($){F.value=!0}function P($){F.value=!1}function N($){var J;e.navigationStrategy==="track"?~y.value||(y.value=Y("first")):!F.value&&!($.relatedTarget&&((J=A.value)!=null&&J.contains($.relatedTarget)))&&K()}function O(){e.navigationStrategy==="track"&&(y.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 Y($){const J=s.value.length;if(J===0)return-1;let q;$==="first"?q=0:$==="last"?q=J-1:(q=y.value+($==="next"?1:-1),q<0&&(q=J-1),q>=J&&(q=0));const be=q;let Ke=0;for(;Ke=J&&(q=0),q===be)return-1;Ke++}return-1}function te($){const J=$.target;if(!A.value||J.tagName==="INPUT"&&["Home","End"].includes($.key)||J.tagName==="TEXTAREA")return;const q=U($.key);if(q!==null)if($.preventDefault(),e.navigationStrategy==="track"){const be=Y(q);be!==-1&&(y.value=be)}else K(q)}function he($){F.value=!0}function K($,J){if(A.value)return qi(A.value,$,J)}return Z(()=>{const $=e.indent??(e.prependGap?Number(e.prependGap)+24:void 0),J=E.value?n.ariaMultiselectable??!String(e.selectStrategy).startsWith("single-"):void 0;return S(e.tag,{ref:A,class:j(["v-list",{"v-list--disabled":e.disabled,"v-list--nav":e.nav,"v-list--slim":e.slim},o.value,l.value,u.value,c.value,v.value,L.value,d.value,e.class]),style:X([{"--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:E.value?"listbox":"list","aria-activedescendant":e.navigationStrategy==="track"&&y.value>=0?`v-list-item-${R}-${y.value}`:void 0,"aria-multiselectable":J,onFocusin:V,onFocusout:P,onFocus:N,onBlur:O,onKeydown:te,onMousedown:he},{default:()=>[S(vi,{items:s.value,returnObject:e.returnObject},a)]})}),{open:f,select:b,focus:K,children:g,parents:p,getPath:x,navigationIndex:y}}});let hn=null;const yi={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(){hn=this}};yi.show=function(e,t,n){hn&&hn.show(e,t,n)};const Ll=yi,Tl={class:"text-primary font-weight-bold"};function Ol(e,t,n,a,i,s){return Ce(),ze(tl,{modelValue:e.isVisible,"onUpdate:modelValue":t[0]||(t[0]=o=>e.isVisible=o),"max-width":"500",persistent:""},{default:ie(()=>[S(ga,{class:"rate-limit-modal"},{default:ie(()=>[S(ei,{class:"text-center pa-4 bg-error text-white"},{default:ie(()=>[S(xe,{class:"mr-2",icon:"mdi-clock-alert-outline",size:"large"}),t[1]||(t[1]=Ct(" 请求频率超限 ",-1))]),_:1}),S(mn,{class:"pa-6"},{default:ie(()=>[t[3]||(t[3]=I("div",{class:"text-body-1 mb-4"}," 您的请求过于频繁,请稍后再试。 ",-1)),e.activeRequests.length>0?(Ce(),ze(ga,{key:0,class:"mb-4",flat:""},{default:ie(()=>[S(mn,null,{default:ie(()=>[(Ce(!0),In(Ve,null,ts(e.activeRequests,(o,l)=>(Ce(),ze(Vl,{key:l,class:"mb-4"},{default:ie(()=>[S(yn,{color:"primary","prepend-icon":"mdi-web"},{default:ie(()=>[S(fi,null,{default:ie(()=>[t[2]||(t[2]=Ct(" 等待时间: ",-1)),I("span",Tl,_e(o.remainingSeconds),1)]),_:2},1024),S(di,null,{default:ie(()=>[Ct(_e(o.method)+" "+_e(o.path),1)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128)),e.index[S(il),S(Ha,{color:"primary",variant:"tonal",onClick:e.close},{default:ie(()=>[...t[5]||(t[5]=[Ct(" 我知道了 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])}const Bl=Aa(Ll,[["render",Ol]]),Rl=T({...ee(),...at(ji(),["fullHeight"]),...fe()},"VApp"),Nl=G()({name:"VApp",props:Rl(),setup(e,t){let{slots:n}=t;const a=ye(e),{layoutClasses:i,getLayoutItem:s,items:o,layoutRef:l}=Hi({...e,fullHeight:!0}),{rtlClasses:r}=zt();return Z(()=>{var u;return I("div",{ref:l,class:j(["v-application",a.themeClasses.value,i.value,r.value,e.class]),style:X([e.style])},[I("div",{class:"v-application__wrap"},[(u=n.default)==null?void 0:u.call(n)])])}),{getLayoutItem:s,items:o,theme:a}}}),$l={__name:"App",setup(e){const t=Sa(),n=M(!1),a=M(""),i=M(10),s=M(30);function o(){n.value=Ie("background.enabled")||!1;const d=Ie("background.imageData")||"",g=Ie("background.url")||"";a.value=d||g,i.value=Ie("background.blur")??10,s.value=Ie("background.opacity")??30}const l=C(()=>!n.value||!a.value?{}:{background:"transparent"}),r=C(()=>({backgroundImage:`url(${a.value})`,backgroundSize:"cover",backgroundPosition:"center",filter:`blur(${i.value}px)`,transform:"scale(1.05)"})),u=C(()=>({background:`rgba(0, 0, 0, ${s.value/100})`}));let c=null;const m=d=>{d.preventDefault(),window.deferredPwaPrompt=d,window.dispatchEvent(new Event("pwa-prompt-ready"))},v=()=>{window.deferredPwaPrompt=null,window.dispatchEvent(new Event("pwa-installed"))};return it(()=>{const d=Ie("theme.mode");t.global.name.value=d,o(),c=Pa((g,f)=>{var b;const p=(b=f==null?void 0:f.detail)==null?void 0:b.key;(!p||p.startsWith("background.")||p==="theme.mode")&&(o(),t.global.name.value=Ie("theme.mode"))}),window.addEventListener("beforeinstallprompt",m),window.addEventListener("appinstalled",v)}),ns(()=>{c&&c(),window.removeEventListener("beforeinstallprompt",m),window.removeEventListener("appinstalled",v)}),(d,g)=>{const f=as("router-view"),p=Qa;return Ce(),ze(Nl,{style:X(l.value)},{default:ie(()=>[n.value?(Ce(),In(Ve,{key:0},[I("div",{class:"app-background-image",style:X(r.value)},null,4),I("div",{class:"app-background-overlay",style:X(u.value)},null,4)],64)):Bt("",!0),S(f,null,{default:ie(({Component:b,route:x})=>[S($e,{mode:"out-in",name:"md3"},{default:ie(()=>[(Ce(),ze(xa(b),{key:x.path}))]),_:2},1024)]),_:1}),S(p),S(Bl)]),_:1},8,["style"])}}},jt=is($l);ds(jt);jt.use(Xe);jt.component("GlobalMessage",Qa);jt.mount("#app");const pa=async()=>{try{const{getVisitorId:e}=await ae(async()=>{const{getVisitorId:a}=await import("./visitorId-D2J8zjxI.js");return{getVisitorId:a}},__vite__mapDeps([60,1,2]),import.meta.url),t=(await ae(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"?pa():window.addEventListener("load",pa,{once:!0});export{bt as $,Re as A,fa as B,ni as C,Dt as D,Wo as E,Wl as F,tt as G,Qe as H,Ja as I,no as J,lt as K,$n as L,Ge as M,Be as N,Ln as O,Ye as P,Ka as Q,Oe as R,Te as S,Ht as T,Dn as U,Fs as V,Uo as W,ys as X,bs as Y,ps as Z,Aa as _,rt as a,yt as a0,Hl as a1,pt as a2,bo as a3,ho as a4,Zo as a5,kl as a6,Na as a7,Hs as a8,Ra as a9,ko as aA,Xe as aB,jl as aC,Kl as aD,Ze as aE,_l as aF,fs as aG,vs as aH,zl as aI,Vs as aa,As as ab,Eo as ac,xo as ad,Ps as ae,yo as af,ge as ag,Qo as ah,ot as ai,st as aj,Bl as ak,wt as al,On as am,St as an,Ue as ao,Tn as ap,ql as aq,Is as ar,qt as as,Bn as at,Ul as au,Wt as av,Rn as aw,ma as ax,Us as ay,Co as az,ut as b,ei as c,mn as d,ga as e,xe as f,il as g,Ha as h,ai as i,Ba as j,tl as k,Za as l,le as m,Ie as n,Mt as o,Vl as p,yn as q,fi as r,gs as s,di as t,yl as u,Gl as v,Pa as w,ae as x,ta as y,Bo as z}; diff --git a/assets/index-DCuIjJC4.js b/assets/index-DCuIjJC4.js deleted file mode 100644 index 2f96c53..0000000 --- a/assets/index-DCuIjJC4.js +++ /dev/null @@ -1,6 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./index-DGIAsv4W.js","./vendor-vuetify-DsKlzgKp.js","./vendor-vue-BiQC5iF7.js","./index-Yfd4JoUB.css","./dataProvider-GWPC-0Vt.js","./vendor-utils-DwALrQNc.js","./serverRotation-BtcwvdZJ.js","./MessageLog-CZsTVP4i.js","./VAppBarTitle-DheyIZnb.js","./VAppBarTitle-CczdD-Q2.css","./MessageLog-BGkFwivK.css","./RandomPicker-CsXS_sbB.js","./VTextField-BurlcggD.js","./VTextField-DTDEIDq0.css","./VTooltip-2IUjfpCS.js","./VTooltip-D7EaNDeY.css","./VChip-mRzIPuM0.js","./VChip-Dmz_1Lnv.css","./RandomPicker-CU-edGvg.css","./FloatingToolbar-BZD3ZR8B.js","./VSheet-BBnSA_kJ.js","./VSheet-DxsDksIw.css","./VDatePicker-CuGF0KeL.js","./VPicker-SM18M-iq.js","./VPicker-Dm9DplUc.css","./VDatePicker-zglzEVGT.css","./FloatingToolbar-5gVX85mk.css","./ChatWidget-BXhjl6gS.js","./socketClient-BKHEsaLg.js","./vendor-socket-dm1FmSOd.js","./soundList-D9U-Grcp.js","./deviceEvents-HN9RDua9.js","./VRow-Cjhiymuu.js","./VRow-D2ArqUC2.css","./VPagination-DLzhjdaP.js","./VPagination-BF2MZmld.css","./VTextarea-vGWmTJww.js","./VTextarea-_xVwaw_z.css","./ChatWidget-ChgL-O5B.css","./HomeworkEditDialog-BpaBTmY_.js","./VAlert-BZ4-f-hy.js","./VAlert-D_OX1cfW.css","./HomeworkEditDialog-DSAcf9mw.css","./InitServiceChooser-Cm36vuZZ.js","./VExpansionPanels-BDI8gHu5.js","./VExpansionPanels-kEj4ZJQK.css","./InitServiceChooser-BSZJBnhr.css","./StudentNameManager-DB-P5C67.js","./VAutocomplete-N0zTUlyj.js","./VSelect-oxA0t9CG.js","./VCheckboxBtn-BKcSogH0.js","./VSwitch-k6hfPfa2.js","./VSwitch-Bk42mIwg.css","./VSelect-DHZViySU.css","./VAutocomplete-Ygy_KjMW.css","./VCombobox-BGa7K58w.js","./VCombobox-r6cc1Iy_.css","./StudentNameManager-tn0RQdqM.css","./UrgentTestDialog-BqTcJt8c.js","./VContainer-DZyPrcqa.js","./VContainer-B1KSavhG.css","./VForm-ObW_L7SS.js","./VCheckbox-BRi_fHJs.js","./VCheckbox-ZL-u1kGB.css","./UrgentTestDialog-65OEJ5uz.css","./AttendanceSidebar-DmtvE998.js","./AttendanceManagementDialog-BpjEre5P.js","./AttendanceManagementDialog-D0prZwJd.css","./PwaInstallCard-DM1cBO1c.js","./ExamScheduleCard-DhbbmO7J.js","./VTabs-DqmvmKGK.js","./VTable-Cq72iBVc.js","./VTable-CNLJxQof.css","./VTabs-566n5b08.css","./ExamScheduleCard-BJuKYvRa.css","./ExamConfigEditor-BVwEXehR.js","./VSkeletonLoader-DwE_iqTb.js","./VSkeletonLoader-C11ZEozu.css","./VTimePicker-BApLLZ8X.js","./VTimePicker-BkWY3_8P.css","./ExamConfigEditor-HgNV6CVV.css"])))=>i.map(i=>d[i]); -var et=Object.defineProperty;var tt=(t,e,i)=>e in t?et(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var C=(t,e,i)=>tt(t,typeof e!="symbol"?e+"":e,i);import{_ as H,V as Ce,c as I,d as T,e as _,S as ne,w as Te,f as x,g as E,h as b,i as F,j as re,k as B,l as j,s as K,n as D,o as st,p as ee,q as X,r as oe,t as ae,v as it,x as P,y as Fe,z as nt,A as Z}from"./index-DGIAsv4W.js";import{X as c,_ as f,j as o,N,S as m,a6 as ot,a7 as at,a8 as rt,Y as v,Z as a,k as r,F as k,a2 as M,n as O,$ as w,a1 as u,a9 as z,aa as Re,P as lt,R as dt,V as ct,U as Ie,e as ut,a4 as V}from"./vendor-vue-BiQC5iF7.js";import{d as R,a as ht,k as mt,s as Ve}from"./dataProvider-GWPC-0Vt.js";import{a as ye,g as Be}from"./vendor-utils-DwALrQNc.js";import{V as L}from"./VChip-mRzIPuM0.js";import{V as Oe,a as Q}from"./VTabs-DqmvmKGK.js";import{V as Ue,a as $,b as ft}from"./VTable-Cq72iBVc.js";import{V as le}from"./VAlert-BZ4-f-hy.js";import{V as gt,a as pt}from"./VTooltip-2IUjfpCS.js";import{V as se}from"./VTextField-BurlcggD.js";import{p as yt,d as bt}from"./soundList-D9U-Grcp.js";import{V as be}from"./VSwitch-k6hfPfa2.js";import{a0 as De}from"./vendor-vuetify-DsKlzgKp.js";import{V as je}from"./VContainer-DZyPrcqa.js";import{g as vt,j as Ne,o as wt,a as Pe,l as St}from"./socketClient-BKHEsaLg.js";import{c as Dt}from"./deviceEvents-HN9RDua9.js";import{V as xt,a as kt}from"./VAppBarTitle-DheyIZnb.js";import{V as Ct,a as Tt}from"./VRow-Cjhiymuu.js";const _t={__name:"AsyncLoadingPlaceholder",props:{height:{type:String,default:"120px"}},setup(t){return(e,i)=>(c(),f("div",{class:"async-loading-placeholder d-flex justify-center align-center",style:N({minHeight:t.height})},[o(Ce,{indeterminate:"",color:"primary",size:"28",width:"2"})],4))}},he=H(_t,[["__scopeId","data-v-c297c78c"]]),Mt={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,i=new Date(t.getFullYear(),t.getMonth(),t.getDate()),l=new Date(e.getFullYear(),e.getMonth(),e.getDate()),s=i.getTime()-l.getTime(),n=Math.round(s/(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 d=l.getDay()||7,h=new Date(l);h.setDate(l.getDate()-d+1);const p=new Date(l);if(p.setDate(l.getDate()+(7-d)),i>=h&&i<=p)return["周日","周一","周二","周三","周四","周五","周六"][t.getDay()];const g=t.getMonth()+1,S=t.getDate();return`${g}月${S}日`}}};function Et(t,e,i,l,s,n){return c(),f("span",null,m(n.displayTime),1)}const He=H(Mt,[["render",Et]]),xe=ot("exam",{state:()=>({examList:[],exams:{},loadingList:!1,loadingDetails:{}}),actions:{async fetchExamList(){if(!this.loadingList){this.loadingList=!0;try{const t=await R.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 R.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=[],i=new Date,l=new Date(i.getTime()+2*24*60*60*1e3),s=this.examList.slice(0,t);for(const n of s){let d=this.exams[n.id];d||(d=await this.fetchExam(n.id)),d&&d.examInfos&&Array.isArray(d.examInfos)&&d.examInfos.some(p=>{const g=new Date(p.start);return g>=i&&g<=l})&&e.push({id:n.id,...d})}return e}}}),Rt={name:"ConciseExamCard",components:{RelativeTimeDisplay:He},props:{examId:{type:String,required:!0},contentStyle:{type:Object,default:()=>({})},readonly:{type:Boolean,default:!1}},computed:{...rt(xe,["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((l,s)=>new Date(l.start)-new Date(s.start)),e=[];let i=null;return t.forEach(l=>{const n=new Date(l.start).toDateString();(!i||i.key!==n)&&(i={key:n,date:l.start,infos:[]},e.push(i)),i.infos.push(l)}),e}},mounted(){this.fetchExam(this.examId)},methods:{...at(xe,["fetchExam"]),formatTimeOnly(t){if(!t)return"";try{const e=new Date(t),i=e.getHours().toString().padStart(2,"0"),l=e.getMinutes().toString().padStart(2,"0");return`${i}:${l}`}catch{return""}},isPast(t){return t?new Date(t)t.$emit("click"))},{default:a(()=>[o(I,{class:"d-flex align-center py-2 px-3 bg-primary-lighten-5 text-subtitle-1 font-weight-bold"},{default:a(()=>{var h;return[r("span",It,m(((h=n.exam)==null?void 0:h.examName)||"加载中..."),1)]}),_:1}),o(T,{class:"flex-grow-1 pa-4 overflow-y-auto",style:N(i.contentStyle)},{default:a(()=>[n.loading?(c(),f("div",Vt,[o(Ce,{indeterminate:"",size:"24",color:"primary"})])):n.exam?(c(),f("div",Nt,[(c(!0),f(k,null,M(n.groupedExamInfos,(h,p)=>(c(),f("div",{key:p,class:"mb-3"},[r("div",Pt,[o(d,{time:h.date},null,8,["time"])]),(c(!0),f(k,null,M(h.infos,(g,S)=>(c(),f("div",{key:S,class:O(["d-flex align-center justify-space-between py-1 border-b-sm",{"border-none":S===h.infos.length-1,"text-grey":n.isPast(g.end)}])},[r("div",At,m(g.name),1),r("div",Lt,m(n.formatTimeOnly(g.start))+" - "+m(n.formatTimeOnly(g.end)),1)],2))),128))]))),128))])):(c(),f("div",zt," 无法加载 "))]),_:1},8,["style"])]),_:1})}const We=H(Rt,[["render",Ft],["__scopeId","data-v-cb5c226a"]]),Bt=["6IO4","5Lmz","6JCd6I6J","5rer","5aW4"],Ot=Bt.map(t=>Be.decode(t)),Ae=.75,Ut={name:"HitokotoCard",data(){return{enabled:!1,refreshInterval:60,kvConfig:{sources:["zhaoyu"],sensitiveWords:[],hitokotoCategories:[]},sentence:"",author:"",origin:"",loading:!1,timer:null,unwatch:null,fontSize:28}},computed:{contentStyle(){return{"font-size":`${this.fontSize*Ae}px`,"white-space":"pre-wrap","line-height":"1.6","text-align":"left"}},authorStyle(){return{"font-size":`${this.fontSize*Ae*.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=ne.getSetting("hitokoto.enabled"),this.refreshInterval=ne.getSetting("hitokoto.refreshInterval"),this.fontSize=ne.getSetting("font.size")},async loadKvSettings(){try{const t=await R.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(i=>i.trim()).filter(i=>i):[],jinrishiciToken:e.jinrishiciToken,hitokotoCategories:Array.isArray(e.hitokotoCategories)?e.hitokotoCategories:[]})}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 i=null,l="",s="",n="";if(e==="hitokoto"){const d=new URLSearchParams,h=this.kvConfig.hitokotoCategories;Array.isArray(h)&&h.length>0&&h.forEach(S=>d.append("c",S));const p="https://v1.hitokoto.cn/"+(d.toString()?"?"+d.toString():"");i=(await ye.get(p)).data,l=i.hitokoto,s=i.from_who,n=i.from}else if(e==="zhaoyu"){const d=await ye.get("https://hub.saintic.com/openservice/sentence/all.json");d.data.success&&(i=d.data.data,l=i.sentence||i.content||i.name,s=i.author,n=i.name||i.origin)}else if(e==="jinrishici")if(this.kvConfig.jinrishiciToken){const d=await ye.get("https://v2.jinrishici.com/one.json?client=npm-sdk/1.0&X-User-Token="+encodeURIComponent(this.kvConfig.jinrishiciToken),{});d.data.status==="success"&&(i=d.data.data,l=i.content,s=i.origin.author,n=i.origin.title)}else return console.warn("Jinrishici token missing. Please enable it in settings to generate a token."),this.loading=!1,this.fetchSentence();if(l){if([...Ot,...this.kvConfig.sensitiveWords].some(p=>p&&l.includes(p)))return this.loading=!1,this.fetchSentence();this.sentence=l,this.author=s||"",this.origin=n||"未知"}}catch(t){console.error("Failed to fetch sentence",t),this.sentence="获取失败",this.author="",this.origin=""}finally{this.loading=!1}}}}},jt={key:0,class:"mr-2"},Ht={key:1};function Wt(t,e,i,l,s,n){return c(),v(_,{class:"hitokoto-card",elevation:"2",border:"",rounded:"xl",loading:s.loading,height:"100%",onClick:n.fetchSentence},{default:a(()=>[o(T,{class:"pa-6 d-flex flex-column justify-center",style:{height:"100%"}},{default:a(()=>[r("div",{class:"font-weight-medium mb-4 serif-font",style:N(n.contentStyle)},m(s.sentence),5),r("div",{class:"text-medium-emphasis serif-font",style:N(n.authorStyle)},[s.author?(c(),f("span",jt,m(s.author),1)):w("",!0),s.origin?(c(),f("span",Ht,"《"+m(s.origin)+"》",1)):w("",!0)],4)]),_:1})]),_:1},8,["loading","onClick"])}const Ge=H(Ut,[["render",Wt],["__scopeId","data-v-84a0a110"]]),_e=30,q=50,te=-50,me=500,de=6,ce=-100,Ke=0,Gt=-90,Kt=40;function qt(t){let e=0,i=0;for(let s=0;si&&(i=d),e+=n*n}return{rms:Math.sqrt(e/Math.max(1,t.length)),peak:i}}function Yt(t){const e=Math.max(1e-12,t),i=20*Math.log10(e);return Math.max(ce,Math.min(Ke,i))}function ve(t){const e=Math.max(1e-12,t.rms),i=Math.max(1e-12,t.baselineRms),l=t.baselineDb+20*Math.log10(e/i);return Math.max(20,Math.min(100,l))}function Le(t){if(t.length===0)return ce;const i=t.reduce((s,n)=>s+Math.pow(10,n/10),0)/t.length,l=10*Math.log10(Math.max(i,1e-12));return Math.max(ce,Math.min(Ke,l))}function ie(t,e){if(t.length===0)return ce;const i=t.map(p=>Math.pow(10,p/20));i.sort((p,g)=>p-g);const l=(i.length-1)*e,s=Math.floor(l),n=Math.ceil(l),d=l-s,h=s===n?i[s]:i[s]*(1-d)+i[n]*d;return 20*Math.log10(Math.max(h,1e-12))}function we(t){return Math.max(0,Math.min(1,t))}const ke={maxLevelDb:55,baselineDb:Kt,showRealtimeDb:!0,avgWindowSec:1,sliceSec:_e,frameMs:q,scoreThresholdDbfs:te,segmentMergeGapMs:me,maxSegmentsPerMin:de,alertSoundEnabled:!1},Me="noise-control-settings",ue="NoiseControlSettingsUpdated";function Ee(){try{const t=localStorage.getItem(Me);if(t)return{...ke,...JSON.parse(t)}}catch(t){console.warn("Failed to load settings",t)}return{...ke}}function qe(t){const i={...Ee(),...t};i.sliceSec=_e,i.frameMs=q,i.scoreThresholdDbfs=te,i.segmentMergeGapMs=me,i.maxSegmentsPerMin=de,localStorage.setItem(Me,JSON.stringify(i)),window.dispatchEvent(new CustomEvent(ue,{detail:i}))}function Jt(){localStorage.removeItem(Me),window.dispatchEvent(new CustomEvent(ue,{detail:ke}))}function Xt(t){const e=i=>t(i);return window.addEventListener(ue,e),()=>window.removeEventListener(ue,e)}function ze(t,e){const i=Math.max(0,t.p50Dbfs-te),l=we(i/6),s=we(t.overRatioDbfs/.3),n=t.sampledDurationMs&&t.sampledDurationMs>0?t.sampledDurationMs:e,d=Math.max(1e-6,n/6e4),h=t.segmentCount/d,p=we(h/Math.max(1e-6,de)),S=100*(1-(.4*l+.3*s+.3*p));return{score:Math.max(0,Math.min(100,Math.round(S*10)/10)),scoreDetail:{sustainedPenalty:l,timePenalty:s,segmentPenalty:p,thresholdsUsed:{scoreThresholdDbfs:te,segmentMergeGapMs:me,maxSegmentsPerMin:de},sustainedLevelDbfs:t.p50Dbfs,overRatioDbfs:t.overRatioDbfs,segmentCount:t.segmentCount,minutes:d,durationMs:e,sampledDurationMs:t.sampledDurationMs,coverageRatio:t.sampledDurationMs?t.sampledDurationMs/e:1}}}const Zt=()=>Math.random().toString(36).substring(2,15);class Qt{constructor(){C(this,"audioContext",null);C(this,"analyser",null);C(this,"stream",null);C(this,"sourceNode",null);C(this,"status","initializing");C(this,"listeners",new Set);C(this,"animationFrameId",null);C(this,"lastFrameTime",0);C(this,"baselineDb",40);C(this,"baselineRms",Math.pow(10,-60/20));C(this,"lastRms",0);C(this,"calibrationBuffer",[]);C(this,"isCalibrating",!1);C(this,"calibrationTargetDb",0);C(this,"calibrationCallback",null);C(this,"settingsUnsubscribe",null);C(this,"warmupFramesRemaining",0);C(this,"ringBuffer",[]);C(this,"ringBufferCapacity",200);C(this,"currentSliceStart",0);C(this,"sliceDbfsValues",[]);C(this,"sliceAboveThresholdDuration",0);C(this,"sliceFramesTotal",0);C(this,"sliceSampledDuration",0);C(this,"isAboveThreshold",!1);C(this,"segmentCount",0);C(this,"lastSegmentEndTs",0);C(this,"lastProcessedFrameTs",null);C(this,"gapCount",0);C(this,"maxGapMs",0);C(this,"cachedCurrentScore");C(this,"cachedCurrentScoreDetail");C(this,"lastScoreCalcTime",0);C(this,"lastCompletedSlice",null);C(this,"loop",()=>{if(this.status!=="active"||!this.analyser)return;const e=performance.now();e-this.lastFrameTime>=q&&(this.processFrame(e),this.lastFrameTime=e),this.animationFrameId=requestAnimationFrame(this.loop)});this.status="paused";const e=Ee();this.updateLocalSettings(e),this.settingsUnsubscribe=Xt(i=>{this.updateLocalSettings(i.detail)})}updateLocalSettings(e){this.baselineDb=e.baselineDb,e.baselineRms&&e.baselineRms>0&&(this.baselineRms=e.baselineRms)}calibrate(e,i){if(this.status!=="active"){i==null||i(!1,"请先启动监测");return}this.isCalibrating=!0,this.calibrationTargetDb=e,this.calibrationBuffer=[],this.calibrationCallback=i||null,console.log(`Starting calibration to ${e}dB...`)}processCalibrationFrame(e){var l;if(!this.isCalibrating)return;this.calibrationBuffer.push(e);const i=3e3/q;if(this.calibrationBuffer.length>=i){const n=this.calibrationBuffer.reduce((d,h)=>d+h,0)/this.calibrationBuffer.length;this.isCalibrating=!1,this.baselineRms=n,this.baselineDb=this.calibrationTargetDb,qe({baselineDb:this.calibrationTargetDb,baselineRms:n}),console.log(`Calibration complete: RMS ${n.toFixed(6)} -> ${this.calibrationTargetDb}dB`),(l=this.calibrationCallback)==null||l.call(this,!0,`校准完成!平均RMS: ${n.toFixed(6)}`),this.calibrationCallback=null}}subscribe(e){return this.listeners.add(e),this.emit(),()=>this.listeners.delete(e)}emit(){const e=this.ringBuffer.length>0?this.ringBuffer[this.ringBuffer.length-1]:null,i={status:this.status,currentDbfs:(e==null?void 0:e.dbfs)??-100,currentDisplayDb:(e==null?void 0:e.displayDb)??20,ringBuffer:[...this.ringBuffer],lastSlice:this.lastCompletedSlice,currentScore:this.cachedCurrentScore,currentScoreDetail:this.cachedCurrentScoreDetail};this.listeners.forEach(l=>l(i))}async start(){if(this.status!=="active")try{this.status="initializing",this.warmupFramesRemaining=10,this.emit(),this.audioContext=new(window.AudioContext||window.webkitAudioContext),this.stream=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:!1,noiseSuppression:!1,autoGainControl:!1}}),this.sourceNode=this.audioContext.createMediaStreamSource(this.stream);const e=this.audioContext.createBiquadFilter();e.type="highpass",e.frequency.value=80;const i=this.audioContext.createBiquadFilter();i.type="lowpass",i.frequency.value=8e3,this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=2048,this.analyser.smoothingTimeConstant=0,this.sourceNode.connect(e),e.connect(i),i.connect(this.analyser),this.status="active",this.resetSlice(),this.loop()}catch(e){console.error("Mic Error",e),this.status="permission-denied",this.emit()}}stop(){var e,i;this.status!=="paused"&&(this.sliceDbfsValues.length>0&&this.finalizeSlice(),this.status="paused",this.animationFrameId&&cancelAnimationFrame(this.animationFrameId),(e=this.stream)==null||e.getTracks().forEach(l=>l.stop()),(i=this.audioContext)==null||i.close(),this.audioContext=null,this.analyser=null,this.stream=null,this.emit())}processFrame(e){if(!this.analyser)return;if(this.warmupFramesRemaining>0){this.warmupFramesRemaining--;return}const i=new Float32Array(this.analyser.fftSize);this.analyser.getFloatTimeDomainData(i);const l=Date.now(),{rms:s}=qt(i);this.lastRms=s,this.isCalibrating&&this.processCalibrationFrame(s);const n=Yt(s),d=ve({rms:s,baselineRms:this.baselineRms,baselineDb:this.baselineDb});this.ringBuffer.push({t:l,dbfs:n,displayDb:d}),this.ringBuffer.length>this.ringBufferCapacity&&this.ringBuffer.shift();let h=q;if(this.lastProcessedFrameTs!==null){const p=l-this.lastProcessedFrameTs,g=Math.max(1e3,q*5);p>g?(this.gapCount++,this.maxGapMs=Math.max(this.maxGapMs,p),h=q):h=p}if(this.lastProcessedFrameTs=l,n>=Gt){this.sliceDbfsValues.push(n),this.sliceFramesTotal++,this.sliceSampledDuration+=h;const p=n>te;if(p&&(this.sliceAboveThresholdDuration+=h),p){if(!this.isAboveThreshold){const g=Date.now()-this.lastSegmentEndTs;(this.lastSegmentEndTs===0||g>me)&&this.segmentCount++,this.isAboveThreshold=!0}}else this.isAboveThreshold&&(this.isAboveThreshold=!1,this.lastSegmentEndTs=Date.now())}e-this.lastScoreCalcTime>250&&(this.updateInterimScore(),this.lastScoreCalcTime=e),this.emit(),Date.now()-this.currentSliceStart>=_e*1e3&&this.finalizeSlice()}updateInterimScore(){if(this.sliceDbfsValues.length<10){this.cachedCurrentScore=100,this.cachedCurrentScoreDetail=void 0;return}Le(this.sliceDbfsValues),Math.max(...this.sliceDbfsValues);const e=ie(this.sliceDbfsValues,.5);ie(this.sliceDbfsValues,.95);const i=this.sliceSampledDuration>0?this.sliceAboveThresholdDuration/this.sliceSampledDuration:0,l={p50Dbfs:e,overRatioDbfs:i,segmentCount:this.segmentCount,sampledDurationMs:this.sliceSampledDuration,gapCount:this.gapCount,maxGapMs:this.maxGapMs},s=Date.now()-this.currentSliceStart,{score:n,scoreDetail:d}=ze(l,s);this.cachedCurrentScore=n,this.cachedCurrentScoreDetail=d}resetSlice(){this.currentSliceStart=Date.now(),this.sliceDbfsValues=[],this.sliceAboveThresholdDuration=0,this.sliceFramesTotal=0,this.sliceSampledDuration=0,this.segmentCount=0,this.isAboveThreshold=!1,this.lastSegmentEndTs=0,this.gapCount=0,this.maxGapMs=0,this.lastProcessedFrameTs=null,this.cachedCurrentScore=100,this.cachedCurrentScoreDetail=void 0}finalizeSlice(){if(this.sliceDbfsValues.length===0){this.resetSlice();return}const e=Le(this.sliceDbfsValues),i=Math.max(...this.sliceDbfsValues),l=ie(this.sliceDbfsValues,.5),s=ie(this.sliceDbfsValues,.95),n=this.sliceSampledDuration>0?this.sliceAboveThresholdDuration/this.sliceSampledDuration:0,d=ve({rms:Math.pow(10,e/20),baselineRms:this.baselineRms,baselineDb:this.baselineDb}),h=ve({rms:Math.pow(10,s/20),baselineRms:this.baselineRms,baselineDb:this.baselineDb}),p={avgDbfs:e,maxDbfs:i,p50Dbfs:l,p95Dbfs:s,overRatioDbfs:n,segmentCount:this.segmentCount,sampledDurationMs:this.sliceSampledDuration,gapCount:this.gapCount,maxGapMs:this.maxGapMs},g=Date.now()-this.currentSliceStart,{score:S,scoreDetail:U}=ze(p,g),A={id:Zt(),start:this.currentSliceStart,end:Date.now(),frames:this.sliceFramesTotal,raw:p,display:{avgDb:d,p95Db:h},score:S,scoreDetail:U};this.lastCompletedSlice=A,this.saveSlice(A),this.resetSlice()}saveSlice(e){try{const i=localStorage.getItem("noise-slices-v2"),l=i?JSON.parse(i):[];l.push(e);const s=14*24*60*60*1e3,n=Date.now(),d=l.filter(h=>n-h.end1e3&&d.shift(),localStorage.setItem("noise-slices-v2",JSON.stringify(d))}catch(i){console.warn("Storage Full",i)}}getHistory(){try{const e=localStorage.getItem("noise-slices-v2");return e?JSON.parse(e):[]}catch{return[]}}clearHistory(){localStorage.removeItem("noise-slices-v2")}}const G=new Qt,$t={name:"NoiseMonitorDetail",props:{modelValue:{type:Boolean,default:!1},status:{type:String,default:""},currentDb:{type:[Number,String],default:"--"},currentDbfs:{type:Number,default:0},noiseLevel:{type:String,default:"未知"},dbColor:{type:String,default:"grey"},currentScore:{type:Number,default:null},scoreDetail:{type:Object,default:null},ringBuffer:{type:Array,default:()=>[]},lastSlice:{type:Object,default:null},history:{type:Array,default:()=>[]},isMonitoring:{type:Boolean,default:!1},micPermissionState:{type:String,default:""},sessionActive:{type:Boolean,default:!1},sessionData:{type:Object,default:null},reportMeta:{type:Object,default:()=>({dates:{}})},selectedDate:{type:String,default:""},dateReports:{type:Array,default:()=>[]}},emits:["update:modelValue","start","stop","clear-history","select-date","clear-date-reports","clear-all-reports"],data(){return{activeTab:"realtime",confirmClearMode:"",waveformWidth:600,reportChartWidth:600,selectedReportIndex:0,showCalibrateDialog:!1,calibrationSettings:{},calibrateTargetDb:40,isCalibrating:!1,calibrateMessage:"",calibrateSuccess:!1,editBaselineDb:40,editBaselineRms:"",editMaxLevelDb:100}},computed:{scoreColor(){return this.currentScore===null?"grey":this.currentScore>=80?"success":this.currentScore>=60?"warning":"error"},scoreLabel(){return this.currentScore===null?"暂无评分":this.currentScore>=90?"非常安静":this.currentScore>=80?"环境良好":this.currentScore>=60?"需要注意":this.currentScore>=40?"比较嘈杂":"极度嘈杂"},alertThreshold(){var t;return((t=this.sessionConfig)==null?void 0:t.alertThresholdDb)||55},scorePenaltyItems(){if(!this.scoreDetail)return[];const t=100;return[{label:"持续",icon:"mdi-volume-high",color:"amber",percent:Math.round(this.scoreDetail.sustainedPenalty/t*100)},{label:"时长",icon:"mdi-clock-alert",color:"orange",percent:Math.round(this.scoreDetail.timePenalty/t*100)},{label:"打断",icon:"mdi-flash-alert",color:"pink",percent:Math.round(this.scoreDetail.segmentPenalty/t*100)}]},gridLines(){return[20,40,60,80].map(t=>({val:t,y:this.dbToY(t)}))},reportGridLines(){return[20,40,60,80].map(t=>({val:t,y:this.reportDbToY(t)}))},waveformPath(){if(!this.ringBuffer||this.ringBuffer.length<2)return null;const t=this.waveformWidth,e=this.ringBuffer.slice(-120),i=t/(e.length-1);return e.map((l,s)=>{const n=s*i,d=this.dbToY(l.displayDb??0);return`${s===0?"M":"L"}${n.toFixed(1)},${d.toFixed(1)}`}).join(" ")},waveformFillPath(){return this.waveformPath?`${this.waveformPath} L${this.waveformWidth},120 L0,120 Z`:null},showConfirmClear(){return this.confirmClearMode!==""},sortedDateKeys(){var t;return(t=this.reportMeta)!=null&&t.dates?Object.keys(this.reportMeta.dates).sort().reverse():[]},selectedReport(){return this.dateReports[this.selectedReportIndex]||null},reportCoverage(){var t,e,i;return!((e=(t=this.selectedReport)==null?void 0:t.samples)!=null&&e.length)||!((i=this.selectedReport)!=null&&i.duration)?0:(this.selectedReport.samples.length*2/(this.selectedReport.duration/1e3)*100).toFixed(1)},reportWaveformPath(){var l,s;if(!((s=(l=this.selectedReport)==null?void 0:l.samples)!=null&&s.length))return null;const t=this.selectedReport.samples;if(t.length<2)return null;const i=this.reportChartWidth/(t.length-1);return t.map((n,d)=>{const h=d*i,p=this.reportDbToY(n.db);return`${d===0?"M":"L"}${h.toFixed(1)},${p.toFixed(1)}`}).join(" ")},reportWaveformFillPath(){return this.reportWaveformPath?`${this.reportWaveformPath} L${this.reportChartWidth},140 L0,140 Z`:null},levelDistribution(){var d,h;if(!((h=(d=this.selectedReport)==null?void 0:d.samples)!=null&&h.length))return[{label:"安静",percent:0,color:"#4caf50"},{label:"正常",percent:0,color:"#8bc34a"},{label:"吵闹",percent:0,color:"#ff9800"},{label:"极吵",percent:0,color:"#f44336"}];const t=this.selectedReport.samples.map(p=>p.db),e=t.length;let i=0,l=0,s=0,n=0;return t.forEach(p=>{p<45?i++:p<60?l++:p<75?s++:n++}),[{label:"安静",percent:Math.round(i/e*100),color:"#4caf50"},{label:"正常",percent:Math.round(l/e*100),color:"#8bc34a"},{label:"吵闹",percent:Math.round(s/e*100),color:"#ff9800"},{label:"极吵",percent:Math.round(n/e*100),color:"#f44336"}]},reportPenaltyItems(){var e;if(!((e=this.selectedReport)!=null&&e.scorePenalties))return[];const t=this.selectedReport.scorePenalties;return[{label:"持续",color:"amber",percent:Math.min(100,Math.round(t.sustained/40*100))},{label:"时长",color:"orange",percent:Math.min(100,Math.round(t.time/30*100))},{label:"打断",color:"pink",percent:Math.min(100,Math.round(t.segment/30*100))}]}},watch:{modelValue(t){t&&this.$nextTick(()=>{this.updateWaveformWidth(),this.updateReportChartWidth()})},activeTab(){this.$nextTick(()=>{this.updateWaveformWidth(),this.updateReportChartWidth()})},selectedReportIndex(){this.$nextTick(()=>this.updateReportChartWidth())},selectedDate(){this.selectedReportIndex=0}},mounted(){this.updateWaveformWidth(),window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.updateWaveformWidth(),this.updateReportChartWidth()},updateWaveformWidth(){this.$refs.waveformContainer&&(this.waveformWidth=this.$refs.waveformContainer.offsetWidth||600)},updateReportChartWidth(){this.$refs.reportChartContainer&&(this.reportChartWidth=this.$refs.reportChartContainer.offsetWidth||600)},dbToY(t){return 120-Math.max(0,Math.min(100,t))/100*120},reportDbToY(t){return 140-Math.max(0,Math.min(100,t))/100*140},doClearReports(){this.confirmClearMode==="all"?this.$emit("clear-all-reports"):this.confirmClearMode==="date"&&this.$emit("clear-date-reports",this.selectedDate),this.confirmClearMode="",this.selectedReportIndex=0},formatDateLabel(t){if(!t)return"";const e=new Date,i=`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,l=new Date(e);l.setDate(l.getDate()-1);const s=`${l.getFullYear()}-${String(l.getMonth()+1).padStart(2,"0")}-${String(l.getDate()).padStart(2,"0")}`;if(t===i)return"今天";if(t===s)return"昨天";const n=t.split("-");return`${parseInt(n[1])}月${parseInt(n[2])}日`},formatTime(t){const e=new Date(t);return`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`},metaScoreColor(t){return t>=80?"success":t>=60?"warning":"error"},formatFullTime(t){if(!t)return"--";const e=new Date(t);return`${e.getFullYear()}/${e.getMonth()+1}/${e.getDate()} ${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}:${String(e.getSeconds()).padStart(2,"0")}`},formatDuration(t){if(!t)return"0 分钟";const e=Math.floor(t/6e4),i=Math.floor(e/60),l=e%60;return i>0?`${i} 小时 ${l} 分钟`:`${l} 分钟`},formatSeconds(t){if(!t||t<0)return"0秒";const e=Math.floor(t/60),i=t%60;return e>0?`${e}分${i}秒`:`${i}秒`},reportScoreLabel(t){return t>=90?"优秀":t>=80?"良好":t>=60?"一般":t>=40?"较差":"极差"},openCalibrateDialog(){this.refreshCalibrationSettings(),this.showCalibrateDialog=!0},refreshCalibrationSettings(){const t=Ee();this.calibrationSettings=t,this.editBaselineDb=t.baselineDb,this.editBaselineRms=t.baselineRms!=null?String(t.baselineRms):"",this.editMaxLevelDb=t.maxLevelDb},doAutoCalibrate(){this.isCalibrating=!0,this.calibrateMessage="",G.calibrate(this.calibrateTargetDb,(t,e)=>{this.isCalibrating=!1,this.calibrateSuccess=t,this.calibrateMessage=e,t&&this.refreshCalibrationSettings(),setTimeout(()=>{this.calibrateMessage=""},5e3)})},saveManualCalibration(){const t={baselineDb:this.editBaselineDb,maxLevelDb:this.editMaxLevelDb},e=parseFloat(this.editBaselineRms);!isNaN(e)&&e>0&&(t.baselineRms=e),qe(t),this.refreshCalibrationSettings()},resetCalibration(){Jt(),this.refreshCalibrationSettings()}}},es={class:"noise-dashboard pa-5"},ts={class:"d-flex align-center justify-center"},ss={class:"text-center"},is={class:"noise-gauge-inner d-flex flex-column align-center justify-center"},ns={class:"noise-level-bar mt-5 mx-auto",style:{"max-width":"500px"}},os={class:"noise-gradient-bar"},as={class:"pa-5"},rs={class:"d-flex align-center mb-3"},ls={class:"text-caption text-medium-emphasis"},ds={ref:"waveformContainer",class:"noise-waveform"},cs=["viewBox"],us=["y1","x2","y2"],hs=["y1","x2","y2"],ms=["d"],fs=["d"],gs={class:"pa-5"},ps={class:"d-flex align-center mb-3"},ys={key:0,class:"d-flex flex-wrap ga-4"},bs={class:"text-h6 font-weight-bold"},vs={class:"text-subtitle-1 font-weight-bold"},ws={class:"d-flex align-center"},Ss={class:"text-body-2"},Ds={class:"d-flex align-center",style:{"min-width":"140px"}},xs={class:"text-caption font-weight-medium",style:{"min-width":"36px","text-align":"right"}},ks={key:1,class:"text-center text-medium-emphasis py-4"},Cs={class:"pa-4 d-flex align-center"},Ts={key:0,class:"text-center text-medium-emphasis py-12"},_s={class:"pa-4"},Ms={class:"d-flex align-center flex-wrap ga-2 mb-3"},Es={class:"d-flex flex-wrap ga-2"},Rs={key:0,class:"pa-4 pb-0"},Is={class:"d-flex align-center ga-3 flex-wrap"},Vs={class:"text-h6 font-weight-bold"},Ns={key:1,class:"text-center text-medium-emphasis py-8"},Ps={key:2,class:"pa-4 pt-3 d-flex flex-wrap ga-2"},As={class:"text-caption ml-1"},Ls={key:4,class:"report-content"},zs={class:"pa-5 pb-0"},Fs={class:"text-h6 font-weight-bold d-flex align-center"},Bs={class:"pa-5"},Os={class:"report-grid"},Us={class:"report-stat-card"},js={class:"text-h6 font-weight-bold"},Hs={class:"report-stat-card"},Ws={class:"text-h6 font-weight-bold"},Gs={class:"text-caption"},Ks={class:"report-stat-card"},qs={class:"text-h6 font-weight-bold"},Ys={class:"report-stat-card"},Js={class:"text-h6 font-weight-bold"},Xs={class:"report-stat-card"},Zs={class:"text-h6 font-weight-bold"},Qs={class:"report-stat-card"},$s={class:"text-h6 font-weight-bold"},ei={class:"pa-5"},ti={ref:"reportChartContainer",class:"noise-waveform"},si=["viewBox"],ii=["y1","x2","y2"],ni=["y1","x2","y2"],oi=["d"],ai=["d"],ri={class:"text-caption text-medium-emphasis mt-2"},li={class:"pa-5"},di={class:"d-flex flex-wrap ga-4"},ci={class:"noise-level-distribution"},ui={class:"d-flex",style:{height:"16px","border-radius":"8px",overflow:"hidden"}},hi={class:"d-flex flex-wrap ga-3 mt-3 justify-center"},mi={class:"text-caption text-medium-emphasis"},fi={class:"text-body-2 mr-3",style:{"min-width":"32px"}},gi={class:"text-body-2 font-weight-bold",style:{"min-width":"40px","text-align":"right"}},pi={class:"d-flex align-center ga-6 flex-wrap"},yi={class:"text-body-1 font-weight-bold"},bi={class:"text-body-1 font-weight-bold font-monospace"},vi={class:"text-body-1 font-weight-bold"},wi={class:"d-flex align-center mb-2"},Si={class:"d-flex align-center ga-3 mb-5 flex-wrap"},Di={key:0,class:"text-caption text-warning"},xi={class:"d-flex align-center mb-2"},ki={class:"d-flex align-center ga-3 mb-4 flex-wrap"};function Ci(t,e,i,l,s,n){return c(),v(B,{"model-value":i.modelValue,"max-width":"900",scrollable:"","onUpdate:modelValue":e[15]||(e[15]=d=>t.$emit("update:modelValue",d))},{default:a(()=>[o(_,{class:"rounded-xl noise-detail-card"},{default:a(()=>[o(I,{class:"d-flex align-center pa-4"},{default:a(()=>[o(x,{class:"mr-2",color:"primary"},{default:a(()=>[...e[16]||(e[16]=[u(" mdi-waveform ",-1)])]),_:1}),e[18]||(e[18]=r("span",{class:"text-h6 font-weight-bold"},"环境噪音监测",-1)),o(E),i.sessionActive?(c(),v(L,{key:0,color:"teal",size:"small",variant:"tonal",class:"mr-2"},{default:a(()=>{var d;return[o(x,{start:"",size:"12"},{default:a(()=>[...e[17]||(e[17]=[u(" mdi-record-circle ",-1)])]),_:1}),u(" "+m(((d=i.sessionData)==null?void 0:d.sessionName)||"自习中"),1)]}),_:1})):w("",!0),o(L,{color:i.isMonitoring?"success":"grey",size:"small",variant:"tonal",class:"mr-2"},{default:a(()=>[u(m(i.isMonitoring?"监测中":"已停止"),1)]),_:1},8,["color"]),o(b,{icon:"mdi-close",size:"small",variant:"text",onClick:e[0]||(e[0]=d=>t.$emit("update:modelValue",!1))})]),_:1}),o(Oe,{modelValue:s.activeTab,"onUpdate:modelValue":e[1]||(e[1]=d=>s.activeTab=d),color:"primary",density:"compact",grow:""},{default:a(()=>[o(Q,{value:"realtime"},{default:a(()=>[o(x,{start:"",size:"18"},{default:a(()=>[...e[19]||(e[19]=[u(" mdi-pulse ",-1)])]),_:1}),e[20]||(e[20]=u(" 实时监测 ",-1))]),_:1}),o(Q,{value:"reports"},{default:a(()=>[o(x,{start:"",size:"18"},{default:a(()=>[...e[21]||(e[21]=[u(" mdi-chart-bar ",-1)])]),_:1}),e[22]||(e[22]=u(" 统计报告 ",-1))]),_:1})]),_:1},8,["modelValue"]),o(F),o(T,{class:"pa-0",style:{"max-height":"70vh"}},{default:a(()=>[o(Ue,{modelValue:s.activeTab,"onUpdate:modelValue":e[6]||(e[6]=d=>s.activeTab=d)},{default:a(()=>[o($,{value:"realtime"},{default:a(()=>[i.micPermissionState==="denied"?(c(),v(le,{key:0,type:"error",variant:"tonal",class:"ma-4 mb-0",prominent:""},{prepend:a(()=>[o(x,{icon:"mdi-microphone-off",size:"28"})]),default:a(()=>[e[23]||(e[23]=r("div",{class:"text-subtitle-2 font-weight-bold mb-1"}," 麦克风权限被拒绝 ",-1)),e[24]||(e[24]=r("div",{class:"text-body-2"}," 浏览器已拒绝麦克风访问,无法进行噪音监测。请在浏览器地址栏左侧的锁图标中重新授予麦克风权限,然后刷新页面。 ",-1))]),_:1})):i.micPermissionState==="unavailable"?(c(),v(le,{key:1,type:"warning",variant:"tonal",class:"ma-4 mb-0",prominent:""},{prepend:a(()=>[o(x,{icon:"mdi-microphone-question",size:"28"})]),default:a(()=>[e[25]||(e[25]=r("div",{class:"text-subtitle-2 font-weight-bold mb-1"}," 未检测到麦克风 ",-1)),e[26]||(e[26]=r("div",{class:"text-body-2"}," 当前设备未检测到麦克风硬件,无法进行噪音监测。请连接麦克风后刷新页面重试。 ",-1))]),_:1})):w("",!0),r("div",es,[r("div",ts,[r("div",ss,[r("div",{class:O(["noise-gauge-ring",`ring-${i.dbColor}`])},[r("div",is,[r("span",{class:O(["noise-gauge-value font-weight-bold",`text-${i.dbColor}`])},m(i.currentDb),3),e[27]||(e[27]=r("span",{class:"text-caption text-medium-emphasis"},"dB",-1))])],2),r("div",{class:O(["text-subtitle-1 font-weight-medium mt-3",`text-${i.dbColor}`])},m(i.noiseLevel),3)])]),r("div",ns,[e[28]||(e[28]=r("div",{class:"d-flex justify-space-between text-caption text-medium-emphasis mb-1"},[r("span",null,"0 dB"),r("span",null,"50"),r("span",null,"100 dB")],-1)),r("div",os,[i.isMonitoring&&typeof i.currentDb=="number"?(c(),f("div",{key:0,class:"noise-indicator",style:N({left:`${Math.min(100,Math.max(0,i.currentDb))}%`})},null,4)):w("",!0)])])]),o(F),r("div",as,[r("div",rs,[o(x,{class:"mr-2",size:"18",color:"primary"},{default:a(()=>[...e[29]||(e[29]=[u(" mdi-chart-line ",-1)])]),_:1}),e[30]||(e[30]=r("span",{class:"text-subtitle-2 font-weight-medium"},"噪音走势",-1)),o(E),r("span",ls," 最近 "+m(i.ringBuffer.length)+" 个采样 ",1)]),r("div",ds,[(c(),f("svg",{width:"100%",height:"120",viewBox:`0 0 ${s.waveformWidth} 120`,preserveAspectRatio:"none"},[(c(!0),f(k,null,M(n.gridLines,d=>(c(),f("line",{key:`grid-${d.val}`,x1:"0",y1:d.y,x2:s.waveformWidth,y2:d.y,stroke:"currentColor","stroke-opacity":"0.08","stroke-dasharray":"4,4"},null,8,us))),128)),n.alertThreshold?(c(),f("line",{key:0,x1:"0",y1:n.dbToY(n.alertThreshold),x2:s.waveformWidth,y2:n.dbToY(n.alertThreshold),stroke:"rgb(var(--v-theme-error))","stroke-opacity":"0.5","stroke-dasharray":"6,3","stroke-width":"1.5"},null,8,hs)):w("",!0),n.waveformPath?(c(),f("path",{key:1,d:n.waveformFillPath,fill:"url(#waveGradient-rt)",opacity:"0.3"},null,8,ms)):w("",!0),n.waveformPath?(c(),f("path",{key:2,d:n.waveformPath,fill:"none",stroke:"rgb(var(--v-theme-primary))","stroke-width":"2","stroke-linejoin":"round","stroke-linecap":"round"},null,8,fs)):w("",!0),e[31]||(e[31]=r("defs",null,[r("linearGradient",{id:"waveGradient-rt",x1:"0",y1:"0",x2:"0",y2:"1"},[r("stop",{offset:"0%","stop-color":"rgb(var(--v-theme-primary))","stop-opacity":"0.4"}),r("stop",{offset:"100%","stop-color":"rgb(var(--v-theme-primary))","stop-opacity":"0.02"})])],-1))],8,cs))],512)]),o(F),r("div",gs,[r("div",ps,[o(x,{class:"mr-2",size:"18",color:"amber"},{default:a(()=>[...e[32]||(e[32]=[u(" mdi-star-circle ",-1)])]),_:1}),e[33]||(e[33]=r("span",{class:"text-subtitle-2 font-weight-medium"},"实时评分",-1))]),i.currentScore!==null?(c(),f("div",ys,[o(_,{variant:"tonal",color:n.scoreColor,rounded:"xl",class:"flex-grow-1","min-width":"200"},{default:a(()=>[o(T,{class:"d-flex align-center pa-4"},{default:a(()=>[o(Ce,{"model-value":i.currentScore,color:n.scoreColor,size:56,width:5,class:"mr-4"},{default:a(()=>[r("span",bs,m(i.currentScore),1)]),_:1},8,["model-value","color"]),r("div",null,[r("div",vs,m(n.scoreLabel),1),e[34]||(e[34]=r("div",{class:"text-caption text-medium-emphasis"}," 综合评分 (0-100) ",-1))])]),_:1})]),_:1},8,["color"]),i.scoreDetail?(c(),v(_,{key:0,variant:"outlined",rounded:"xl",class:"flex-grow-1","min-width":"200"},{default:a(()=>[o(T,{class:"pa-4"},{default:a(()=>[e[35]||(e[35]=r("div",{class:"text-subtitle-2 font-weight-medium mb-2"}," 扣分扣因 ",-1)),(c(!0),f(k,null,M(n.scorePenaltyItems,d=>(c(),f("div",{key:d.label,class:"d-flex align-center justify-space-between mb-1"},[r("div",ws,[o(x,{color:d.color,size:"14",class:"mr-2"},{default:a(()=>[u(m(d.icon),1)]),_:2},1032,["color"]),r("span",Ss,m(d.label),1)]),r("div",Ds,[o(re,{"model-value":d.percent,color:d.color,height:"6",rounded:"",class:"mr-2"},null,8,["model-value","color"]),r("span",xs,m(d.percent)+"% ",1)])]))),128))]),_:1})]),_:1})):w("",!0)])):(c(),f("div",ks,[o(x,{size:"32",class:"mb-2"},{default:a(()=>[...e[36]||(e[36]=[u(" mdi-chart-arc ",-1)])]),_:1}),e[37]||(e[37]=r("div",{class:"text-body-2"}," 开始监测后将显示评分 ",-1))]))]),o(F),r("div",Cs,[i.isMonitoring?(c(),v(b,{key:1,color:"error",variant:"tonal","prepend-icon":"mdi-stop",size:"large",class:"px-6",onClick:e[3]||(e[3]=d=>t.$emit("stop"))},{default:a(()=>[...e[39]||(e[39]=[u(" 停止监测 ",-1)])]),_:1})):(c(),v(b,{key:0,color:"success",variant:"elevated","prepend-icon":"mdi-play",size:"large",class:"px-6",disabled:i.micPermissionState==="denied"||i.micPermissionState==="unavailable",onClick:e[2]||(e[2]=d=>t.$emit("start"))},{default:a(()=>[...e[38]||(e[38]=[u(" 开始监测 ",-1)])]),_:1},8,["disabled"])),o(E),o(b,{variant:"tonal",color:"deep-purple","prepend-icon":"mdi-crosshairs-gps",onClick:n.openCalibrateDialog},{default:a(()=>[...e[40]||(e[40]=[u(" 校准 ",-1)])]),_:1},8,["onClick"])])]),_:1}),o($,{value:"reports"},{default:a(()=>[n.sortedDateKeys.length===0?(c(),f("div",Ts,[o(x,{size:"48",class:"mb-3"},{default:a(()=>[...e[41]||(e[41]=[u(" mdi-chart-box-outline ",-1)])]),_:1}),e[42]||(e[42]=r("div",{class:"text-body-1"}," 暂无统计报告 ",-1)),e[43]||(e[43]=r("div",{class:"text-caption mt-1"}," 在配置的晚自习时间段内,系统会自动记录并生成报告 ",-1))])):(c(),f(k,{key:1},[r("div",_s,[r("div",Ms,[o(x,{size:"18",color:"teal",class:"mr-1"},{default:a(()=>[...e[44]||(e[44]=[u(" mdi-calendar ",-1)])]),_:1}),e[46]||(e[46]=r("span",{class:"text-subtitle-2 font-weight-medium"},"选择日期",-1)),o(E),o(b,{color:"error",size:"x-small",variant:"text","prepend-icon":"mdi-delete-sweep",onClick:e[4]||(e[4]=d=>s.confirmClearMode="all")},{default:a(()=>[...e[45]||(e[45]=[u(" 清空全部 ",-1)])]),_:1})]),r("div",Es,[(c(!0),f(k,null,M(n.sortedDateKeys,d=>(c(),v(L,{key:d,color:i.selectedDate===d?"primary":void 0,variant:i.selectedDate===d?"elevated":"tonal",size:"small",onClick:h=>t.$emit("select-date",d)},{default:a(()=>[o(x,{start:"",size:"14"},{default:a(()=>[...e[47]||(e[47]=[u(" mdi-calendar-blank ",-1)])]),_:1}),u(" "+m(n.formatDateLabel(d))+" ",1),o(gt,{content:i.reportMeta.dates[d].count,color:"primary",inline:"",class:"ml-1"},null,8,["content"])]),_:2},1032,["color","variant","onClick"]))),128))])]),o(F),i.selectedDate&&i.reportMeta.dates[i.selectedDate]?(c(),f("div",Rs,[r("div",Is,[r("div",Vs,m(n.formatDateLabel(i.selectedDate)),1),o(L,{size:"small",color:n.metaScoreColor(i.reportMeta.dates[i.selectedDate].avgScore),variant:"tonal"},{default:a(()=>[u(" 均分 "+m(i.reportMeta.dates[i.selectedDate].avgScore),1)]),_:1},8,["color"]),o(L,{size:"small",variant:"tonal"},{default:a(()=>[u(m(i.reportMeta.dates[i.selectedDate].count)+" 条记录 ",1)]),_:1}),o(E),o(b,{color:"error",size:"x-small",variant:"text","prepend-icon":"mdi-delete",onClick:e[5]||(e[5]=d=>s.confirmClearMode="date")},{default:a(()=>[...e[48]||(e[48]=[u(" 清空当日 ",-1)])]),_:1})])])):w("",!0),i.dateReports.length===0&&i.selectedDate?(c(),f("div",Ns,[o(x,{size:"32"},{default:a(()=>[...e[49]||(e[49]=[u(" mdi-file-document-outline ",-1)])]),_:1}),e[50]||(e[50]=r("div",{class:"text-body-2 mt-1"}," 该日期暂无报告数据 ",-1))])):w("",!0),i.dateReports.length>0?(c(),f("div",Ps,[(c(!0),f(k,null,M(i.dateReports,(d,h)=>(c(),v(L,{key:d.startTime,color:s.selectedReportIndex===h?"teal":void 0,variant:s.selectedReportIndex===h?"elevated":"outlined",size:"small",onClick:p=>s.selectedReportIndex=h},{default:a(()=>[u(m(d.sessionName)+" ",1),r("span",As,m(n.formatTime(d.startTime)),1)]),_:2},1032,["color","variant","onClick"]))),128))])):w("",!0),n.selectedReport?(c(),v(F,{key:3})):w("",!0),n.selectedReport?(c(),f("div",Ls,[r("div",zs,[r("div",Fs,m(n.selectedReport.sessionName)+" 统计报告 ",1)]),r("div",Bs,[e[57]||(e[57]=r("div",{class:"d-flex align-center mb-3"},[r("span",{class:"report-section-line bg-teal"}),r("span",{class:"text-subtitle-2 font-weight-bold ml-2"},"报告概览")],-1)),r("div",Os,[r("div",Us,[e[51]||(e[51]=r("div",{class:"text-caption text-medium-emphasis"}," 时长 ",-1)),r("div",js,m(n.formatDuration(n.selectedReport.duration)),1)]),r("div",Hs,[e[52]||(e[52]=r("div",{class:"text-caption text-medium-emphasis"}," 表现 ",-1)),r("div",Ws,[u(m(n.selectedReport.score)+" 分 ",1),r("span",Gs,"("+m(n.reportScoreLabel(n.selectedReport.score))+")",1)])]),r("div",Ks,[e[53]||(e[53]=r("div",{class:"text-caption text-medium-emphasis"}," 峰值 ",-1)),r("div",qs,m(n.selectedReport.maxDb)+" dB ",1)]),r("div",Ys,[e[54]||(e[54]=r("div",{class:"text-caption text-medium-emphasis"}," 平均 ",-1)),r("div",Js,m(n.selectedReport.avgDb)+" dB ",1)]),r("div",Xs,[e[55]||(e[55]=r("div",{class:"text-caption text-medium-emphasis"}," 超阈时长 ",-1)),r("div",Zs,m(n.formatSeconds(n.selectedReport.overThresholdDuration)),1)]),r("div",Qs,[e[56]||(e[56]=r("div",{class:"text-caption text-medium-emphasis"}," 打断次数 ",-1)),r("div",$s,m(n.selectedReport.segmentCount),1)])])]),r("div",ei,[e[59]||(e[59]=r("div",{class:"d-flex align-center mb-3"},[r("span",{class:"report-section-line bg-teal"}),r("span",{class:"text-subtitle-2 font-weight-bold ml-2"},"噪音走势")],-1)),r("div",ti,[(c(),f("svg",{width:"100%",height:"140",viewBox:`0 0 ${s.reportChartWidth} 140`,preserveAspectRatio:"none"},[(c(!0),f(k,null,M(n.reportGridLines,d=>(c(),f("line",{key:`rg-${d.val}`,x1:"0",y1:d.y,x2:s.reportChartWidth,y2:d.y,stroke:"currentColor","stroke-opacity":"0.1","stroke-dasharray":"4,4"},null,8,ii))),128)),r("line",{x1:"0",y1:n.reportDbToY(n.selectedReport.alertThresholdDb||55),x2:s.reportChartWidth,y2:n.reportDbToY(n.selectedReport.alertThresholdDb||55),stroke:"rgb(var(--v-theme-error))","stroke-opacity":"0.6","stroke-dasharray":"6,3","stroke-width":"1.5"},null,8,ni),n.reportWaveformPath?(c(),f("path",{key:0,d:n.reportWaveformFillPath,fill:"url(#reportGrad)",opacity:"0.3"},null,8,oi)):w("",!0),n.reportWaveformPath?(c(),f("path",{key:1,d:n.reportWaveformPath,fill:"none",stroke:"rgb(var(--v-theme-primary))","stroke-width":"1.5","stroke-linejoin":"round"},null,8,ai)):w("",!0),e[58]||(e[58]=r("defs",null,[r("linearGradient",{id:"reportGrad",x1:"0",y1:"0",x2:"0",y2:"1"},[r("stop",{offset:"0%","stop-color":"rgb(var(--v-theme-primary))","stop-opacity":"0.3"}),r("stop",{offset:"100%","stop-color":"rgb(var(--v-theme-primary))","stop-opacity":"0.02"})])],-1))],8,si))],512),r("div",ri," 统计范围:"+m(n.formatFullTime(n.selectedReport.startTime))+" - "+m(n.formatFullTime(n.selectedReport.endTime))+"; 噪音报警阈值: "+m(n.selectedReport.alertThresholdDb||55)+" dB; 覆盖率: "+m(n.reportCoverage)+"% ",1)]),r("div",li,[e[62]||(e[62]=r("div",{class:"d-flex align-center mb-3"},[r("span",{class:"report-section-line bg-teal"}),r("span",{class:"text-subtitle-2 font-weight-bold ml-2"},"更多统计")],-1)),r("div",di,[o(_,{variant:"outlined",rounded:"xl",class:"flex-grow-1","min-width":"280"},{default:a(()=>[o(T,{class:"pa-4"},{default:a(()=>[e[60]||(e[60]=r("div",{class:"text-subtitle-2 font-weight-medium mb-3"}," 噪音等级分布 ",-1)),r("div",ci,[r("div",ui,[(c(!0),f(k,null,M(n.levelDistribution,d=>(c(),f("div",{key:d.label,style:N({width:`${d.percent}%`,backgroundColor:d.color,minWidth:d.percent>0?"4px":"0"})},null,4))),128))]),r("div",hi,[(c(!0),f(k,null,M(n.levelDistribution,d=>(c(),f("div",{key:`leg-${d.label}`,class:"d-flex align-center"},[r("span",{class:"d-inline-block mr-1",style:N({width:"10px",height:"10px",borderRadius:"2px",backgroundColor:d.color})},null,4),r("span",mi,m(d.label)+" ("+m(d.percent)+"%) ",1)]))),128))])])]),_:1})]),_:1}),o(_,{variant:"outlined",rounded:"xl",class:"flex-grow-1","min-width":"280"},{default:a(()=>[o(T,{class:"pa-4"},{default:a(()=>[e[61]||(e[61]=r("div",{class:"text-subtitle-2 font-weight-medium mb-3"}," 扣分扣因 (越长扣分越多) ",-1)),(c(!0),f(k,null,M(n.reportPenaltyItems,d=>(c(),f("div",{key:d.label,class:"d-flex align-center mb-2"},[r("span",fi,m(d.label),1),o(re,{"model-value":d.percent,color:d.color,height:"10",rounded:"",class:"flex-grow-1 mr-2"},null,8,["model-value","color"]),r("span",gi,m(d.percent)+"%",1)]))),128))]),_:1})]),_:1})])])])):w("",!0)],64))]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1}),o(B,{modelValue:s.showCalibrateDialog,"onUpdate:modelValue":e[12]||(e[12]=d=>s.showCalibrateDialog=d),"max-width":"560",scrollable:""},{default:a(()=>[o(_,{class:"rounded-xl"},{default:a(()=>[o(I,{class:"d-flex align-center pa-4"},{default:a(()=>[o(x,{class:"mr-2",color:"deep-purple"},{default:a(()=>[...e[63]||(e[63]=[u(" mdi-crosshairs-gps ",-1)])]),_:1}),e[64]||(e[64]=r("span",{class:"text-h6 font-weight-bold"},"分贝校准",-1)),o(E),o(b,{icon:"mdi-close",size:"small",variant:"text",onClick:e[7]||(e[7]=d=>s.showCalibrateDialog=!1)})]),_:1}),o(F),o(T,{class:"pa-5"},{default:a(()=>[o(_,{variant:"outlined",class:"mb-5"},{default:a(()=>[o(T,{class:"py-3"},{default:a(()=>[e[68]||(e[68]=r("div",{class:"text-caption text-medium-emphasis mb-1"}," 当前校准值 ",-1)),r("div",pi,[r("div",null,[e[65]||(e[65]=r("span",{class:"text-body-2 text-medium-emphasis"},"基准分贝:",-1)),r("span",yi,m(s.calibrationSettings.baselineDb)+" dB ",1)]),r("div",null,[e[66]||(e[66]=r("span",{class:"text-body-2 text-medium-emphasis"},"基准 RMS:",-1)),r("span",bi,m(s.calibrationSettings.baselineRms!=null?s.calibrationSettings.baselineRms.toFixed(6):"未校准"),1)]),r("div",null,[e[67]||(e[67]=r("span",{class:"text-body-2 text-medium-emphasis"},"最大分贝:",-1)),r("span",vi,m(s.calibrationSettings.maxLevelDb)+" dB ",1)])])]),_:1})]),_:1}),r("div",wi,[o(x,{size:"18",class:"mr-2",color:"primary"},{default:a(()=>[...e[69]||(e[69]=[u(" mdi-auto-fix ",-1)])]),_:1}),e[70]||(e[70]=r("span",{class:"text-subtitle-2 font-weight-medium"},"自动校准",-1))]),e[74]||(e[74]=r("div",{class:"text-caption text-medium-emphasis mb-3"}," 在已知环境分贝的场景下,输入当前环境的真实分贝值,点击开始后保持环境安静 3 秒。 ",-1)),r("div",Si,[o(se,{modelValue:s.calibrateTargetDb,"onUpdate:modelValue":e[8]||(e[8]=d=>s.calibrateTargetDb=d),modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"目标分贝",suffix:"dB","hide-details":"",style:{"max-width":"160px"},min:20,max:80},null,8,["modelValue"]),o(b,{color:"deep-purple",variant:"tonal","prepend-icon":"mdi-crosshairs-gps",loading:s.isCalibrating,disabled:!i.isMonitoring,onClick:n.doAutoCalibrate},{default:a(()=>[...e[71]||(e[71]=[u(" 开始校准 ",-1)])]),_:1},8,["loading","disabled","onClick"]),i.isMonitoring?w("",!0):(c(),f("span",Di," 需先开启监测 ")),s.calibrateMessage?(c(),f("span",{key:1,class:O(["text-caption",s.calibrateSuccess?"text-success":"text-error"])},m(s.calibrateMessage),3)):w("",!0)]),o(F,{class:"mb-5"}),r("div",xi,[o(x,{size:"18",class:"mr-2",color:"orange"},{default:a(()=>[...e[72]||(e[72]=[u(" mdi-pencil-ruler ",-1)])]),_:1}),e[73]||(e[73]=r("span",{class:"text-subtitle-2 font-weight-medium"},"手动校准 / 参数调整",-1))]),e[75]||(e[75]=r("div",{class:"text-caption text-medium-emphasis mb-3"}," 直接输入校准参数。修改后点击保存生效。 ",-1)),r("div",ki,[o(se,{modelValue:s.editBaselineDb,"onUpdate:modelValue":e[9]||(e[9]=d=>s.editBaselineDb=d),modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"基准分贝",suffix:"dB","hide-details":"",style:{"max-width":"160px"},min:20,max:80},null,8,["modelValue"]),o(se,{modelValue:s.editBaselineRms,"onUpdate:modelValue":e[10]||(e[10]=d=>s.editBaselineRms=d),density:"compact",variant:"outlined",label:"基准 RMS","hide-details":"",style:{"max-width":"200px"},placeholder:"如 0.003200"},null,8,["modelValue"]),o(se,{modelValue:s.editMaxLevelDb,"onUpdate:modelValue":e[11]||(e[11]=d=>s.editMaxLevelDb=d),modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"最大显示分贝",suffix:"dB","hide-details":"",style:{"max-width":"180px"},min:40,max:120},null,8,["modelValue"])])]),_:1}),o(j,{class:"px-4 pb-4"},{default:a(()=>[o(b,{variant:"text","prepend-icon":"mdi-restore",onClick:n.resetCalibration},{default:a(()=>[...e[76]||(e[76]=[u(" 恢复默认 ",-1)])]),_:1},8,["onClick"]),o(E),o(b,{color:"primary",variant:"elevated","prepend-icon":"mdi-content-save",onClick:n.saveManualCalibration},{default:a(()=>[...e[77]||(e[77]=[u(" 保存校准 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(B,{modelValue:n.showConfirmClear,"onUpdate:modelValue":e[14]||(e[14]=d=>n.showConfirmClear=d),"max-width":"360"},{default:a(()=>[o(_,null,{default:a(()=>[o(I,null,{default:a(()=>[...e[78]||(e[78]=[u("确认清空",-1)])]),_:1}),o(T,null,{default:a(()=>[u(m(s.confirmClearMode==="all"?"确定要清空所有日期的统计报告吗?此操作不可撤销。":`确定要清空 ${n.formatDateLabel(i.selectedDate)} 的统计报告吗?此操作不可撤销。`),1)]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{variant:"text",onClick:e[13]||(e[13]=d=>s.confirmClearMode="")},{default:a(()=>[...e[79]||(e[79]=[u(" 取消 ",-1)])]),_:1}),o(b,{color:"error",onClick:n.doClearReports},{default:a(()=>[...e[80]||(e[80]=[u(" 确认清空 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["model-value"])}const Ye=H($t,[["render",Ci],["__scopeId","data-v-5d732295"]]),Ti=Object.freeze(Object.defineProperty({__proto__:null,default:Ye},Symbol.toStringTag,{value:"Module"})),_i=z(()=>P(()=>Promise.resolve().then(()=>Ti),void 0,import.meta.url)),Mi=2,Ei=.9,Ri=.6,Ii={name:"TimeCard",components:{NoiseMonitorDetail:_i},data(){return{now:new Date,timer:null,unwatch:null,fontSize:28,showFullscreen:!1,showSettings:!1,timeCardEnabled:!0,use12hClock:!1,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}],countdownEndedDialog:!1,overtimeElapsed:0,overtimeTimer:null,overtimeLastTick:null,stopwatchRunning:!1,stopwatchElapsed:0,stopwatchTimer:null,stopwatchLastTick:null,laps:[],lastLapElapsed:0,noiseEnabled:!1,noiseMonitoring:!1,noiseStatus:"initializing",noiseCurrentDbfs:-100,noiseCurrentDisplayDb:0,noiseSmoothedDb:0,noiseScore:null,noiseScoreDetail:null,noiseRingBuffer:[],noiseLastSlice:null,noiseHistory:[],noiseUnsubscribe:null,showNoiseDetail:!1,noiseSessionConfig:null,noiseSessionActive:!1,noiseSessionData:null,noiseSessionCheckTimer:null,noiseReportMeta:{},noiseSelectedDate:"",noiseCurrentDateReports:[],showMicPermissionDialog:!1,micPermissionState:""}},computed:{timeString(){const t=this.now.getHours(),e=String(this.now.getMinutes()).padStart(2,"0");return this.use12hClock?`${t%12||12}:${e}`:`${String(t).padStart(2,"0")}:${e}`},amPmString(){return this.now.getHours()<12?"AM":"PM"},secondsString(){return`:${String(this.now.getSeconds()).padStart(2,"0")}`},dateString(){const t=this.now.getFullYear(),e=this.now.getMonth()+1,i=this.now.getDate();return`${t}年${e}月${i}日`},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(),i=this.now.getSeconds();return((t*3600+e*60+i)/86400*100).toFixed(1)},timeStyle(){return{"font-size":`${this.fontSize*Mi}px`,"font-weight":"700","line-height":"1","letter-spacing":"4px","font-variant-numeric":"tabular-nums"}},secondsStyle(){return{"font-size":`${this.fontSize*Ei}px`,"font-variant-numeric":"tabular-nums","vertical-align":"baseline","margin-left":"4px",opacity:"0.6"}},dateStyle(){return{"font-size":`${this.fontSize*Ri}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),i=Math.floor(t%3600/60),l=t%60;return e>0?`${String(e).padStart(2,"0")}:${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}`:`${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}`},countdownProgressPercent(){return this.countdownTotal<=0?0:(this.countdownTotal-this.countdownRemaining)/this.countdownTotal*100},overtimeDisplay(){const t=Math.floor(this.overtimeElapsed/1e3),e=Math.floor(t/3600),i=Math.floor(t%3600/60),l=t%60;return e>0?`${e}小时${i}分${l}秒`:i>0?`${i}分${l}秒`:`${l}秒`},stopwatchDisplay(){const t=this.stopwatchElapsed,e=Math.floor(t/1e3),i=Math.floor(e/3600),l=Math.floor(e%3600/60),s=e%60,n=Math.floor(t%1e3/10);return i>0?`${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}:${String(s).padStart(2,"0")}.${String(n).padStart(2,"0")}`:`${String(l).padStart(2,"0")}:${String(s).padStart(2,"0")}.${String(n).padStart(2,"0")}`},noiseDisplayDb(){return!this.noiseMonitoring||this.noiseStatus!=="active"?"--":Math.round(this.noiseSmoothedDb)},noiseDbColor(){const t=typeof this.noiseDisplayDb=="number"?this.noiseDisplayDb:0;return t<40?"success":t<55?"light-green":t<70?"warning":t<85?"orange":"error"},noiseIconColor(){return this.noiseMonitoring?this.noiseDbColor:"grey"},noiseStatusText(){if(!this.noiseMonitoring||this.noiseStatus!=="active")return"未监测";const t=typeof this.noiseDisplayDb=="number"?this.noiseDisplayDb:0;return t<30?"极其安静":t<40?"非常安静":t<50?"安静":t<60?"正常交谈":t<70?"较为嘈杂":t<80?"嘈杂":t<90?"非常嘈杂":"极度嘈杂"}},watch:{showFullscreen(t){t?(this.handleKeydown=e=>{e.key==="Escape"&&(this.showSettings?this.showSettings=!1:this.countdownEndedDialog&&this.dismissCountdownDialog(),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())}},async mounted(){if(this.loadSettings(),this.startTimer(),this.unwatch=Te(()=>{this.loadSettings()}),this.noiseEnabled=D("noiseMonitor.enabled"),this.noiseEnabled){this.noiseHistory=G.getHistory();const t=await this.checkMicPermission();this.micPermissionState=t,t==="granted"?this.loadNoiseSessionConfig().then(()=>{this.startSessionCheck(),D("noiseMonitor.autoStart")&&!this.noiseMonitoring&&this.startNoise()}):t==="prompt"&&(D("noiseMonitor.permissionDismissed")||(this.showMicPermissionDialog=!0))}},beforeUnmount(){this.stopTimer(),this.clearCountdownTimer(),this.clearStopwatchTimer(),this.clearToolbarTimer(),this.dismissCountdownDialog(),this.stopNoise(),this.stopSessionCheck(),this.unwatch&&this.unwatch(),this.handleKeydown&&window.removeEventListener("keydown",this.handleKeydown,!0)},methods:{loadSettings(){this.fontSize=ne.getSetting("font.size"),this.timeCardEnabled=D("timeCard.enabled"),this.use12hClock=D("timeCard.use12h"),this.noiseEnabled=D("noiseMonitor.enabled")},setTimeCardEnabled(t){this.timeCardEnabled=t,K("timeCard.enabled",t)},setUse12hClock(t){this.use12hClock=t,K("timeCard.use12h",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(),yt(bt),this.showCountdownEndedDialog())},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(),this.dismissCountdownDialog()},showCountdownEndedDialog(){this.countdownEndedDialog=!0,this.overtimeElapsed=0,this.overtimeLastTick=Date.now(),this.overtimeTimer=setInterval(()=>{const t=Date.now();this.overtimeElapsed+=t-this.overtimeLastTick,this.overtimeLastTick=t},200)},dismissCountdownDialog(){this.countdownEndedDialog=!1,this.overtimeElapsed=0,this.overtimeTimer&&(clearInterval(this.overtimeTimer),this.overtimeTimer=null)},formatCountdownTotal(t){const e=Math.round(t/1e3),i=Math.floor(e/3600),l=Math.floor(e%3600/60),s=e%60,n=[];return i>0&&n.push(`${i}小时`),l>0&&n.push(`${l}分钟`),s>0&&n.push(`${s}秒`),n.join("")||"0秒"},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),i=Math.floor(e/60),l=e%60,s=Math.floor(t%1e3/10);return`${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}.${String(s).padStart(2,"0")}`},async checkMicPermission(){try{return navigator.mediaDevices&&navigator.mediaDevices.enumerateDevices&&!(await navigator.mediaDevices.enumerateDevices()).some(l=>l.kind==="audioinput")?"unavailable":!navigator.permissions||!navigator.permissions.query?"granted":(await navigator.permissions.query({name:"microphone"})).state}catch{return"prompt"}},async grantMicPermission(){this.showMicPermissionDialog=!1,await this.loadNoiseSessionConfig(),this.startSessionCheck(),await this.startNoise(),this.micPermissionState=await this.checkMicPermission()},dismissMicPermission(){this.showMicPermissionDialog=!1,K("noiseMonitor.permissionDismissed",!0)},onPermissionDialogToggle(t){this.noiseEnabled=t,K("noiseMonitor.enabled",t),t||(this.showMicPermissionDialog=!1,K("noiseMonitor.permissionDismissed",!0))},async startNoise(){try{await G.start(),this.noiseMonitoring=!0,this.noiseUnsubscribe=G.subscribe(t=>{this.noiseStatus=t.status,this.noiseCurrentDbfs=t.currentDbfs,this.noiseCurrentDisplayDb=t.currentDisplayDb;const e=.25,i=t.currentDisplayDb;this.noiseSmoothedDb=this.noiseSmoothedDb===0?i:this.noiseSmoothedDb*(1-e)+i*e,this.noiseRingBuffer=t.ringBuffer||[],this.noiseLastSlice=t.lastSlice||null,this.noiseScore=t.currentScore??null,this.noiseScoreDetail=t.currentScoreDetail??null,this.noiseHistory=G.getHistory(),this.noiseSessionActive&&this.noiseSessionData&&this.collectSessionSample(t)})}catch(t){console.error("噪音监测启动失败:",t),this.noiseStatus="error"}},stopNoise(){this.noiseUnsubscribe&&(this.noiseUnsubscribe(),this.noiseUnsubscribe=null),this.noiseMonitoring&&G.stop(),this.noiseMonitoring=!1,this.noiseStatus="initializing",this.noiseSmoothedDb=0,this.noiseScore=null,this.noiseScoreDetail=null},clearNoiseHistory(){G.clearHistory(),this.noiseHistory=[]},onNoiseClick(){if(this.micPermissionState==="denied"||this.micPermissionState==="unavailable"){this.showNoiseDetail=!0;return}this.noiseMonitoring?this.showNoiseDetail=!0:this.startNoise()},async loadNoiseSessionConfig(){try{const t=await R.loadData("noise-session-config"),e=(t==null?void 0:t.data)||t;e&&e.sessions?this.noiseSessionConfig=e:this.noiseSessionConfig={sessions:[{name:"第1节晚自习",start:"19:20",duration:70,enabled:!0},{name:"第2节晚自习",start:"20:20",duration:110,enabled:!0}],alertThresholdDb:55},await this.loadSessionReports()}catch(t){console.error("加载噪音会话配置失败:",t),this.noiseSessionConfig={sessions:[{name:"第1节晚自习",start:"19:20",duration:70,enabled:!0},{name:"第2节晚自习",start:"20:20",duration:110,enabled:!0}],alertThresholdDb:55}}},async saveNoiseSessionConfig(){try{await R.saveData("noise-session-config",this.noiseSessionConfig)}catch(t){console.error("保存噪音会话配置失败:",t)}},formatDateKey(t){const e=new Date(t);return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`},async loadReportMeta(){try{const t=await R.loadData("noise-reports-meta"),e=(t==null?void 0:t.data)||t;if(e&&e.dates){const i=new Date;i.setDate(i.getDate()-30);const l=this.formatDateKey(i.getTime()),s={};for(const[n,d]of Object.entries(e.dates))n>=l&&(s[n]=d);this.noiseReportMeta={dates:s}}else this.noiseReportMeta={dates:{}}}catch{this.noiseReportMeta={dates:{}}}},async saveReportMeta(){try{await R.saveData("noise-reports-meta",this.noiseReportMeta)}catch{console.error("保存报告元数据失败")}},async loadReportsForDate(t){this.noiseSelectedDate=t;try{const e=await R.loadData(`noise-reports-${t}`),i=(e==null?void 0:e.data)||e;this.noiseCurrentDateReports=Array.isArray(i)?i:[]}catch{this.noiseCurrentDateReports=[]}},async saveReportToDate(t){const e=this.formatDateKey(t.startTime);let i=[];try{const s=await R.loadData(`noise-reports-${e}`),n=(s==null?void 0:s.data)||s;Array.isArray(n)&&(i=n)}catch{}i.push(t),await R.saveData(`noise-reports-${e}`,i),this.noiseReportMeta.dates||(this.noiseReportMeta.dates={});const l=i.map(s=>s.score);this.noiseReportMeta.dates[e]={count:i.length,avgScore:Math.round(l.reduce((s,n)=>s+n,0)/l.length),sessions:i.map(s=>s.sessionName),lastUpdated:Date.now()},await this.saveReportMeta(),this.noiseSelectedDate===e&&(this.noiseCurrentDateReports=i)},async loadSessionReports(){await this.loadReportMeta();const t=this.formatDateKey(Date.now());await this.loadReportsForDate(t)},startSessionCheck(){this.checkSessionTime(),this.noiseSessionCheckTimer=setInterval(()=>{this.checkSessionTime()},3e4)},stopSessionCheck(){this.noiseSessionCheckTimer&&(clearInterval(this.noiseSessionCheckTimer),this.noiseSessionCheckTimer=null)},checkSessionTime(){var l;if(!((l=this.noiseSessionConfig)!=null&&l.sessions))return;const t=new Date,e=t.getHours()*60+t.getMinutes(),i=this.noiseSessionConfig.sessions.find(s=>{if(!s.enabled)return!1;const[n,d]=s.start.split(":").map(Number),h=n*60+d,p=h+(s.duration||70);return e>=h&&e0){const i=this.noiseSessionData.samples,l=i.length>0?i[i.length-1].t:0;Date.now()-l>=2e3&&i.push({t:Date.now(),db:Math.round(e*10)/10})}},generateSessionReport(t){const e=t.samples,i=e.map(W=>W.db),l=t.alertThresholdDb,s=t.endTime-t.startTime;if(i.length===0)return{sessionName:t.sessionName,startTime:t.startTime,endTime:t.endTime,duration:s,avgDb:0,maxDb:0,score:100,overThresholdDuration:0,overThresholdRatio:0,segmentCount:0,samples:[],scorePenalties:{sustained:0,time:0,segment:0}};const n=Math.round(i.reduce((W,ge)=>W+ge,0)/i.length*10)/10,d=Math.round(Math.max(...i)*10)/10;let h=0;i.forEach(W=>{W>l&&h++});const p=h/i.length,g=Math.round(p*s/1e3);let S=0,U=!1;i.forEach(W=>{W>l&&!U&&(S++,U=!0),W<=l&&(U=!1)});const A=Math.min(40,Math.max(0,(n-l)/30*40)),Y=Math.min(30,p*30),J=Math.min(30,S/Math.max(1,s/6e4)/6*30),fe=Math.max(0,Math.round(100-A-Y-J));return{sessionName:t.sessionName,startTime:t.startTime,endTime:t.endTime,duration:s,avgDb:n,maxDb:d,score:fe,overThresholdDuration:g,overThresholdRatio:Math.round(p*1e3)/10,segmentCount:S,samples:e.length>500?this.downsampleArray(e,500):e,scorePenalties:{sustained:Math.round(A),time:Math.round(Y),segment:Math.round(J)},alertThresholdDb:l}},downsampleArray(t,e){const i=t.length/e,l=[];for(let s=0;ss.showFullscreen=!0)},{default:a(()=>[o(T,{class:"pa-6 d-flex flex-column",style:{height:"100%"}},{default:a(()=>[r("div",Vi,[r("div",Ni,[r("div",{class:"time-display",style:N(n.timeStyle)},[u(m(n.timeString),1),r("span",{class:"seconds-text",style:N(n.secondsStyle)},m(n.secondsString),5),s.use12hClock?(c(),f("span",{key:0,class:"ampm-text",style:N(n.secondsStyle)},m(n.amPmString),5)):w("",!0)],4),r("div",{class:"date-line mt-3",style:N(n.dateStyle)},m(n.dateString)+" "+m(n.weekdayString)+" "+m(n.periodOfDay),5)]),s.noiseEnabled?(c(),f("div",{key:0,class:"d-flex flex-column align-center justify-center",style:{"min-width":"80px"},onClick:e[0]||(e[0]=Re((...h)=>n.onNoiseClick&&n.onNoiseClick(...h),["stop"]))},[s.micPermissionState==="denied"?(c(),f(k,{key:0},[o(x,{color:"error",size:"24"},{default:a(()=>[...e[18]||(e[18]=[u(" mdi-microphone-off ",-1)])]),_:1}),e[19]||(e[19]=r("div",{class:"text-caption text-error mt-1",style:{"white-space":"nowrap","font-size":"10px"}}," 权限被拒绝 ",-1))],64)):s.micPermissionState==="unavailable"?(c(),f(k,{key:1},[o(x,{color:"warning",size:"24"},{default:a(()=>[...e[20]||(e[20]=[u(" mdi-microphone-question ",-1)])]),_:1}),e[21]||(e[21]=r("div",{class:"text-caption text-warning mt-1",style:{"white-space":"nowrap","font-size":"10px"}}," 无麦克风 ",-1))],64)):(c(),f(k,{key:2},[r("div",{class:O(["noise-side-db font-weight-bold",`text-${n.noiseDbColor}`]),style:N({fontSize:`${s.fontSize*.9}px`,lineHeight:1,fontVariantNumeric:"tabular-nums"})},m(n.noiseDisplayDb),7),r("div",{class:O(["text-caption mt-1",`text-${n.noiseDbColor}`]),style:{"white-space":"nowrap","font-size":"11px"}},m(n.noiseStatusText),3),s.noiseMonitoring?w("",!0):(c(),f("div",Pi," 点击开启 "))],64))])):w("",!0)])]),_:1}),s.noiseEnabled?(c(),v(d,{key:0,modelValue:s.showNoiseDetail,"onUpdate:modelValue":e[1]||(e[1]=h=>s.showNoiseDetail=h),status:s.noiseStatus,"current-db":n.noiseDisplayDb,"current-dbfs":s.noiseCurrentDbfs,"noise-level":n.noiseStatusText,"db-color":n.noiseDbColor,"current-score":s.noiseScore,"score-detail":s.noiseScoreDetail,"ring-buffer":s.noiseRingBuffer,"last-slice":s.noiseLastSlice,history:s.noiseHistory,"is-monitoring":s.noiseMonitoring,"mic-permission-state":s.micPermissionState,"session-active":s.noiseSessionActive,"session-data":s.noiseSessionData,"report-meta":s.noiseReportMeta,"selected-date":s.noiseSelectedDate,"date-reports":s.noiseCurrentDateReports,onStart:n.startNoise,onStop:n.stopNoise,onClearHistory:n.clearNoiseHistory,onSelectDate:n.onSelectReportDate,onClearDateReports:n.onClearDateReports,onClearAllReports:n.onClearAllReports},null,8,["modelValue","status","current-db","current-dbfs","noise-level","db-color","current-score","score-detail","ring-buffer","last-slice","history","is-monitoring","mic-permission-state","session-active","session-data","report-meta","selected-date","date-reports","onStart","onStop","onClearHistory","onSelectDate","onClearDateReports","onClearAllReports"])):w("",!0),o(B,{modelValue:s.showMicPermissionDialog,"onUpdate:modelValue":e[2]||(e[2]=h=>s.showMicPermissionDialog=h),"max-width":"480",persistent:""},{default:a(()=>[o(_,{rounded:"xl"},{default:a(()=>[r("div",Ai,[o(st,{color:"primary",size:"72"},{default:a(()=>[o(x,{icon:"mdi-microphone-outline",size:"36"})]),_:1})]),o(I,{class:"text-center text-h6 pt-4"},{default:a(()=>[...e[22]||(e[22]=[u(" 开启环境噪音监测 ",-1)])]),_:1}),o(T,{class:"text-body-2 text-medium-emphasis px-6"},{default:a(()=>[e[27]||(e[27]=r("p",{class:"mb-3"}," 该功能可以实时监测教室环境噪音,帮助营造安静的学习氛围: ",-1)),r("div",Li,[o(x,{icon:"mdi-chart-line",size:"18",color:"primary",class:"mr-2 mt-1 flex-shrink-0"}),e[23]||(e[23]=r("span",null,"实时显示环境分贝数与噪音等级评估",-1))]),r("div",zi,[o(x,{icon:"mdi-clock-check-outline",size:"18",color:"primary",class:"mr-2 mt-1 flex-shrink-0"}),e[24]||(e[24]=r("span",null,"在晚自习时段自动记录并生成统计报告",-1))]),r("div",Fi,[o(x,{icon:"mdi-shield-check-outline",size:"18",color:"primary",class:"mr-2 mt-1 flex-shrink-0"}),e[25]||(e[25]=r("span",null,"音频数据仅在本地处理,不会上传或存储录音",-1))]),o(le,{type:"info",variant:"tonal",density:"compact",class:"mb-2"},{default:a(()=>[...e[26]||(e[26]=[u(" 需要授予麦克风权限才能使用此功能。浏览器将弹出权限请求,请点击「允许」。 ",-1)])]),_:1})]),_:1}),o(F),o(T,{class:"px-6 py-3"},{default:a(()=>[o(ee,{density:"compact",class:"pa-0"},{default:a(()=>[o(X,{class:"px-0"},{prepend:a(()=>[o(x,{icon:"mdi-microphone",class:"mr-3"})]),append:a(()=>[o(be,{"model-value":s.noiseEnabled,"hide-details":"",density:"comfortable","onUpdate:modelValue":n.onPermissionDialogToggle},null,8,["model-value","onUpdate:modelValue"])]),default:a(()=>[o(oe,null,{default:a(()=>[...e[28]||(e[28]=[u("启用噪音监测",-1)])]),_:1}),o(ae,{class:"text-caption"},{default:a(()=>[...e[29]||(e[29]=[u(" 关闭后将不再提醒 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),o(j,{class:"px-6 pb-5"},{default:a(()=>[o(b,{variant:"text",onClick:n.dismissMicPermission},{default:a(()=>[...e[30]||(e[30]=[u(" 暂不开启 ",-1)])]),_:1},8,["onClick"]),o(E),o(b,{color:"primary",variant:"elevated","prepend-icon":"mdi-microphone",disabled:!s.noiseEnabled,onClick:n.grantMicPermission},{default:a(()=>[...e[31]||(e[31]=[u(" 授权并开始 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1}),o(B,{modelValue:s.showFullscreen,"onUpdate:modelValue":e[14]||(e[14]=h=>s.showFullscreen=h),fullscreen:"",scrim:!1,persistent:"",transition:"dialog-bottom-transition"},{default:a(()=>[o(_,{class:"fullscreen-time-card d-flex flex-column",onMousemove:n.showToolbar,onTouchstart:n.showToolbar},{default:a(()=>[o(lt,{name:"toolbar-fade"},{default:a(()=>[dt(r("div",Bi,[o(Oe,{modelValue:s.fullscreenMode,"onUpdate:modelValue":e[4]||(e[4]=h=>s.fullscreenMode=h),density:"comfortable",color:"primary","align-tabs":"center",class:"fullscreen-tabs"},{default:a(()=>[o(Q,{value:"clock"},{default:a(()=>[o(x,{start:"",icon:"mdi-clock-outline"}),e[32]||(e[32]=u(" 时钟 ",-1))]),_:1}),o(Q,{value:"countdown"},{default:a(()=>[o(x,{start:"",icon:"mdi-timer-sand"}),e[33]||(e[33]=u(" 倒计时 ",-1))]),_:1}),o(Q,{value:"stopwatch"},{default:a(()=>[o(x,{start:"",icon:"mdi-timer-outline"}),e[34]||(e[34]=u(" 秒表 ",-1))]),_:1})]),_:1},8,["modelValue"])],512),[[ct,s.toolbarVisible]])]),_:1}),r("div",Oi,[o(Ue,{modelValue:s.fullscreenMode,"onUpdate:modelValue":e[11]||(e[11]=h=>s.fullscreenMode=h),class:"fullscreen-tabs-window"},{default:a(()=>[o($,{value:"clock"},{default:a(()=>[r("div",Ui,[r("div",ji,[u(m(n.timeString),1),r("span",Hi,m(n.secondsString),1),s.use12hClock?(c(),f("span",Wi,m(n.amPmString),1)):w("",!0)]),r("div",Gi,m(n.dateString)+" "+m(n.weekdayString)+" "+m(n.periodOfDay),1),r("div",Ki,[r("div",qi," 今日已过 "+m(n.dayProgressPercent)+"% ",1),o(re,{"model-value":n.dayProgressPercent,color:"primary",height:"6",rounded:"",style:{"max-width":"400px",width:"80vw"}},null,8,["model-value"])]),e[35]||(e[35]=r("div",{class:"fullscreen-extra mt-8 text-medium-emphasis d-flex ga-8"},null,-1))])]),_:1}),o($,{value:"countdown"},{default:a(()=>[r("div",Yi,[!s.countdownRunning&&s.countdownRemaining<=0?(c(),f(k,{key:0},[r("div",Ji,[r("div",Xi,[o(b,{icon:"mdi-chevron-up",variant:"text",size:"small",onClick:e[5]||(e[5]=h=>s.countdownHours=Math.min(s.countdownHours+1,99))}),r("div",Zi,m(String(s.countdownHours).padStart(2,"0")),1),o(b,{icon:"mdi-chevron-down",variant:"text",size:"small",onClick:e[6]||(e[6]=h=>s.countdownHours=Math.max(s.countdownHours-1,0))}),e[36]||(e[36]=r("div",{class:"text-caption text-medium-emphasis"}," 时 ",-1))]),e[39]||(e[39]=r("div",{class:"countdown-sep"}," : ",-1)),r("div",Qi,[o(b,{icon:"mdi-chevron-up",variant:"text",size:"small",onClick:e[7]||(e[7]=h=>s.countdownMinutes=Math.min(s.countdownMinutes+1,59))}),r("div",$i,m(String(s.countdownMinutes).padStart(2,"0")),1),o(b,{icon:"mdi-chevron-down",variant:"text",size:"small",onClick:e[8]||(e[8]=h=>s.countdownMinutes=Math.max(s.countdownMinutes-1,0))}),e[37]||(e[37]=r("div",{class:"text-caption text-medium-emphasis"}," 分 ",-1))]),e[40]||(e[40]=r("div",{class:"countdown-sep"}," : ",-1)),r("div",en,[o(b,{icon:"mdi-chevron-up",variant:"text",size:"small",onClick:e[9]||(e[9]=h=>s.countdownSeconds=Math.min(s.countdownSeconds+1,59))}),r("div",tn,m(String(s.countdownSeconds).padStart(2,"0")),1),o(b,{icon:"mdi-chevron-down",variant:"text",size:"small",onClick:e[10]||(e[10]=h=>s.countdownSeconds=Math.max(s.countdownSeconds-1,0))}),e[38]||(e[38]=r("div",{class:"text-caption text-medium-emphasis"}," 秒 ",-1))])]),r("div",sn,[(c(!0),f(k,null,M(s.countdownPresets,h=>(c(),v(b,{key:h.label,variant:"tonal",rounded:"xl",onClick:p=>n.applyCountdownPreset(h)},{default:a(()=>[u(m(h.label),1)]),_:2},1032,["onClick"]))),128))]),r("div",nn,[o(b,{color:"primary",size:"x-large",rounded:"xl",disabled:n.countdownTotalSetSeconds<=0,"prepend-icon":"mdi-play",onClick:n.startCountdown},{default:a(()=>[...e[41]||(e[41]=[u(" 开始 ",-1)])]),_:1},8,["disabled","onClick"])])],64)):(c(),f(k,{key:1},[r("div",{class:O(["fullscreen-time-display",{"countdown-ended":s.countdownRemaining<=0&&!s.countdownRunning}])},m(n.countdownDisplay),3),r("div",on,m(s.countdownRunning?"倒计时进行中":s.countdownRemaining<=0?"时间到!":"已暂停"),1),o(re,{"model-value":n.countdownProgressPercent,color:s.countdownRemaining<=0?"error":"primary",class:"mt-8",height:"6",rounded:"",style:{"max-width":"400px",width:"80vw"}},null,8,["model-value","color"]),r("div",an,[s.countdownRemaining>0?(c(),v(b,{key:0,icon:s.countdownRunning?"mdi-pause":"mdi-play",color:s.countdownRunning?"warning":"primary",size:"x-large",variant:"tonal",onClick:n.toggleCountdown},null,8,["icon","color","onClick"])):w("",!0),o(b,{icon:"mdi-stop",color:"error",size:"x-large",variant:"tonal",onClick:n.resetCountdown},null,8,["onClick"])])],64))])]),_:1}),o($,{value:"stopwatch"},{default:a(()=>[r("div",rn,[r("div",ln,m(n.stopwatchDisplay),1),r("div",dn,m(s.stopwatchRunning?"计时中":s.stopwatchElapsed>0?"已暂停":"秒表"),1),r("div",cn,[o(b,{icon:s.stopwatchRunning?"mdi-pause":"mdi-play",color:s.stopwatchRunning?"warning":"primary",size:"x-large",variant:"tonal",onClick:n.toggleStopwatch},null,8,["icon","color","onClick"]),s.stopwatchRunning?(c(),v(b,{key:0,icon:"mdi-flag",color:"info",size:"x-large",variant:"tonal",onClick:n.addLap},null,8,["onClick"])):w("",!0),!s.stopwatchRunning&&s.stopwatchElapsed>0?(c(),v(b,{key:1,icon:"mdi-stop",color:"error",size:"x-large",variant:"tonal",onClick:n.resetStopwatch},null,8,["onClick"])):w("",!0)]),o(it,null,{default:a(()=>[s.laps.length>0?(c(),f("div",un,[o(ft,{density:"compact",class:"stopwatch-laps-table"},{default:a(()=>[e[42]||(e[42]=r("thead",null,[r("tr",null,[r("th",null," # "),r("th",null," 计次 "),r("th",null," 总计 ")])],-1)),r("tbody",null,[(c(!0),f(k,null,M(s.laps,(h,p)=>(c(),f("tr",{key:p},[r("td",null,m(s.laps.length-p),1),r("td",null,m(n.formatMs(h.split)),1),r("td",null,m(n.formatMs(h.total)),1)]))),128))])]),_:1})])):w("",!0)]),_:1})])]),_:1})]),_:1},8,["modelValue"])]),r("div",hn,[o(b,{icon:"mdi-cog",variant:"text",size:"large",onClick:e[12]||(e[12]=Re(h=>s.showSettings=!0,["stop"]))}),o(b,{icon:"mdi-close",variant:"text",size:"large",class:"ml-2",onClick:e[13]||(e[13]=h=>s.showFullscreen=!1)})])]),_:1},8,["onMousemove","onTouchstart"])]),_:1},8,["modelValue"]),o(B,{modelValue:s.countdownEndedDialog,"onUpdate:modelValue":e[15]||(e[15]=h=>s.countdownEndedDialog=h),"max-width":"480",persistent:""},{default:a(()=>[o(_,{rounded:"xl"},{default:a(()=>[o(I,{class:"d-flex align-center justify-center pt-6"},{default:a(()=>[o(x,{color:"error",size:"32",class:"mr-2",icon:"mdi-alarm"}),e[43]||(e[43]=u(" 时间到! ",-1))]),_:1}),o(T,{class:"text-center pb-2"},{default:a(()=>[r("div",mn,m(n.formatCountdownTotal(s.countdownTotal)),1),e[44]||(e[44]=r("div",{class:"text-body-1 text-medium-emphasis"}," 设定的倒计时已结束 ",-1)),s.overtimeElapsed>0?(c(),f("div",fn,[o(L,{color:"error",variant:"tonal",size:"large","prepend-icon":"mdi-clock-alert-outline"},{default:a(()=>[u(" 已超时 "+m(n.overtimeDisplay),1)]),_:1})])):w("",!0)]),_:1}),o(j,{class:"justify-center pb-6"},{default:a(()=>[o(b,{color:"primary",variant:"tonal",size:"large",rounded:"xl","prepend-icon":"mdi-check",onClick:n.dismissCountdownDialog},{default:a(()=>[...e[45]||(e[45]=[u(" 知道了 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(B,{modelValue:s.showSettings,"onUpdate:modelValue":e[17]||(e[17]=h=>s.showSettings=h),"max-width":"420",scrim:!0},{default:a(()=>[o(_,{rounded:"xl"},{default:a(()=>[o(I,{class:"d-flex align-center"},{default:a(()=>[o(x,{class:"mr-2",icon:"mdi-cog"}),e[46]||(e[46]=u(" 时间卡片设置 ",-1))]),_:1}),o(T,null,{default:a(()=>[o(ee,null,{default:a(()=>[o(X,null,{prepend:a(()=>[o(x,{class:"mr-3",icon:"mdi-clock-outline"})]),append:a(()=>[o(be,{"model-value":s.timeCardEnabled,"hide-details":"",density:"comfortable","onUpdate:modelValue":n.setTimeCardEnabled},null,8,["model-value","onUpdate:modelValue"])]),default:a(()=>[o(oe,null,{default:a(()=>[...e[47]||(e[47]=[u("显示时间卡片",-1)])]),_:1}),o(ae,null,{default:a(()=>[...e[48]||(e[48]=[u("在首页显示时间卡片,刷新后生效。",-1)])]),_:1})]),_:1}),o(X,null,{prepend:a(()=>[o(x,{class:"mr-3",icon:"mdi-clock-time-six-outline"})]),append:a(()=>[o(be,{"model-value":s.use12hClock,"hide-details":"",density:"comfortable","onUpdate:modelValue":n.setUse12hClock},null,8,["model-value","onUpdate:modelValue"])]),default:a(()=>[o(oe,null,{default:a(()=>[...e[49]||(e[49]=[u("12 小时制",-1)])]),_:1}),o(ae,null,{default:a(()=>[...e[50]||(e[50]=[u("以 12 小时制(AM/PM)显示时间。",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{variant:"text",onClick:e[16]||(e[16]=h=>s.showSettings=!1)},{default:a(()=>[...e[51]||(e[51]=[u(" 完成 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])],64)}const Je=H(Ii,[["render",gn],["__scopeId","data-v-d5fb9d74"]]),pn={name:"HomeworkGrid",components:{HitokotoCard:Ge,TimeCard:Je,ConciseExamCard:We},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}},computed:{settings(){return settings}},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:D,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 P(async()=>{const{getSetting:l}=await import("./index-DGIAsv4W.js").then(s=>s.aI);return{getSetting:l}},__vite__mapDeps([0,1,2,3]),import.meta.url),i=e("server.kvToken");if(i){const{default:l}=await P(async()=>{const{default:n}=await import("./dataProvider-GWPC-0Vt.js").then(d=>d.c);return{default:n}},__vite__mapDeps([4,5,0,1,2,3,6]),import.meta.url),s=e("server.domain");if(s)try{const n=await l.get(`${s}/kv/_token`,{headers:{Authorization:`Bearer ${i}`}});n.data&&typeof n.data.isReadOnly<"u"&&(this.isReadOnlyToken=n.data.isReadOnly)}catch(n){console.error("获取Token信息失败:",n)}}}}catch(t){console.error("检查只读状态失败:",t)}},resizeGridItem(t){const e=this.$refs.gridContainer;if(!e)return;const i=parseInt(window.getComputedStyle(e).getPropertyValue("grid-auto-rows")),l=parseInt(window.getComputedStyle(e).getPropertyValue("gap")),s=t.firstElementChild;if(!s)return;const n=s.getBoundingClientRect().height,d=Math.ceil((n+l)/(i+l));t.style.gridRowEnd=`span ${d}`},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,i=e.getBoundingClientRect(),l=(t.clientX-i.left)/i.width*100,s=(t.clientY-i.top)/i.height*100;e.style.setProperty("--x",`${l}%`),e.style.setProperty("--y",`${s}%`)},handleTouchMove(t){if(t.touches.length===1){const e=t.touches[0],i=t.currentTarget,l=i.getBoundingClientRect(),s=(e.clientX-l.left)/l.width*100,n=(e.clientY-l.top)/l.height*100;i.style.setProperty("--x",`${s}%`),i.style.setProperty("--y",`${n}%`)}}}},yn={ref:"gridContainer",class:"grid-masonry"},bn=["data-key"],vn={key:0,style:{height:"100%"}},wn={key:1,style:{height:"100%"}},Sn={key:2,style:{height:"100%"}},Dn={class:"d-flex justify-space-between align-center mb-2"},xn={class:"text-h6"},kn={key:0,class:"mb-2"},Cn={class:"text-error text-caption mb-1"},Tn={class:"d-flex flex-wrap",style:{gap:"4px"}},_n={key:1,class:"mb-2"},Mn={class:"text-warning text-caption mb-1"},En={class:"d-flex flex-wrap",style:{gap:"4px"}},Rn={key:2,class:"mb-2"},In={class:"text-grey text-caption mb-1"},Vn={class:"d-flex flex-wrap",style:{gap:"4px"}},Nn={key:3,class:"text-success text-center mt-2"},Pn={class:"empty-subjects mt-4"},An={key:0,class:"d-flex flex-wrap justify-center"},Ln={key:2,class:"empty-subjects-grid"};function zn(t,e,i,l,s,n){const d=Je,h=Ge,p=We;return c(),f(k,null,[r("div",yn,[o(Ie,{name:"grid"},{default:a(()=>[(c(!0),f(k,null,M(i.sortedItems,g=>(c(),f("div",{key:g.key,ref_for:!0,ref:"items","data-key":g.key,style:N({order:g.order}),class:"grid-item"},[g.type==="time"?(c(),f("div",vn,[o(d)])):g.type==="hitokoto"?(c(),f("div",wn,[o(h)])):g.type==="exam"?(c(),f("div",Sn,[o(p,{"exam-id":g.data.examId,"content-style":i.contentStyle,onClick:S=>t.$emit("open-exam-detail",g.data.examId)},null,8,["exam-id","content-style","onClick"])])):g.type==="attendance"?(c(),v(_,{key:3,class:O([{"glow-highlight":i.highlightedCards[g.key],"cursor-not-allowed":i.isEditingDisabled,"cursor-pointer":!i.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:e[0]||(e[0]=S=>n.handleCardClick("attendance",null)),onMousemove:n.handleMouseMove,onTouchmove:n.handleTouchMove},{default:a(()=>[o(I,{class:"d-flex align-center"},{default:a(()=>[o(x,{class:"mr-2",color:"primary",icon:"mdi-account-group"}),e[1]||(e[1]=u(" 出勤统计 ",-1))]),_:1}),o(T,null,{default:a(()=>[r("div",Dn,[e[2]||(e[2]=r("span",null,"应到/实到",-1)),r("span",xn,m(g.data.total-g.data.exclude.length)+"/"+m(g.data.total-g.data.absent.length-!n.getSetting("display.lateStudentsArePresent")*g.data.late.length-g.data.exclude.length),1)]),o(F,{class:"mb-2"}),g.data.absent.length>0?(c(),f("div",kn,[r("div",Cn," 请假 ("+m(g.data.absent.length)+") ",1),r("div",Tn,[(c(!0),f(k,null,M(g.data.absent,S=>(c(),v(L,{key:S,color:"error",size:"x-small",variant:"flat"},{default:a(()=>[u(m(S),1)]),_:2},1024))),128))])])):w("",!0),g.data.late.length>0?(c(),f("div",_n,[r("div",Mn," 迟到 ("+m(g.data.late.length)+") ",1),r("div",En,[(c(!0),f(k,null,M(g.data.late,S=>(c(),v(L,{key:S,color:"warning",size:"x-small",variant:"flat"},{default:a(()=>[u(m(S),1)]),_:2},1024))),128))])])):w("",!0),g.data.exclude.length>0?(c(),f("div",Rn,[r("div",In," 不参与 ("+m(g.data.exclude.length)+") ",1),r("div",Vn,[(c(!0),f(k,null,M(g.data.exclude,S=>(c(),v(L,{key:S,color:"grey",size:"x-small",variant:"flat"},{default:a(()=>[u(m(S),1)]),_:2},1024))),128))])])):w("",!0),g.data.absent.length===0&&g.data.late.length===0&&g.data.exclude.length===0?(c(),f("div",Nn," 全勤 ")):w("",!0)]),_:2},1024)]),_:2},1032,["class","onMousemove","onTouchmove"])):g.type==="custom"?(c(),v(_,{key:4,class:O([{"glow-highlight":i.highlightedCards[g.key],"cursor-not-allowed":i.isEditingDisabled,"cursor-pointer":!i.isEditingDisabled},"glow-track"]),border:"",height:"100%",onClick:S=>n.handleCardClick("dialog",g.key),onMousemove:n.handleMouseMove,onTouchmove:n.handleTouchMove},{default:a(()=>[o(I,{class:"text-primary"},{default:a(()=>[o(x,{class:"mr-2",icon:"mdi-card-text-outline",size:"small"}),u(" "+m(g.name),1)]),_:2},1024),o(T,{style:N(i.contentStyle)},{default:a(()=>[u(m(g.content),1)]),_:2},1032,["style"])]),_:2},1032,["class","onClick","onMousemove","onTouchmove"])):(c(),v(_,{key:5,class:O([{"glow-highlight":i.highlightedCards[g.key],"cursor-not-allowed":i.isEditingDisabled,"cursor-pointer":!i.isEditingDisabled},"glow-track"]),border:"",height:"100%",rounded:"xl",onClick:S=>n.handleCardClick("dialog",g.key),onMousemove:n.handleMouseMove,onTouchmove:n.handleTouchMove},{default:a(()=>[o(I,null,{default:a(()=>[u(m(g.name),1)]),_:2},1024),o(T,{style:N(i.contentStyle)},{default:a(()=>[o(ee,null,{default:a(()=>[(c(!0),f(k,null,M(n.splitPoint(g.content),S=>(c(),v(X,{key:S},{default:a(()=>[u(m(S),1)]),_:2},1024))),128))]),_:2},1024)]),_:2},1032,["style"])]),_:2},1032,["class","onClick","onMousemove","onTouchmove"]))],12,bn))),128))]),_:1})],512),r("div",Pn,[i.isMobile?(c(),f("div",An,[(c(!0),f(k,null,M(i.unusedSubjects,g=>(c(),v(L,{key:g.name,class:"ma-1",color:"primary",variant:"tonal",onClick:S=>n.handleCardClick("dialog",g.name)},{default:a(()=>[o(x,{start:"",size:"small"},{default:a(()=>[u(m(s.isReadOnlyToken?"mdi-cancel":"mdi-plus"),1)]),_:1}),u(" "+m(g.name),1)]),_:2},1032,["onClick"]))),128))])):i.emptySubjectDisplay==="button"?(c(),v(Fe,{key:1,divided:"",variant:"tonal"},{default:a(()=>[(c(!0),f(k,null,M(i.unusedSubjects,g=>(c(),v(b,{key:g.name,onClick:S=>n.handleCardClick("dialog",g.name)},{default:a(()=>[o(x,{start:""},{default:a(()=>[u(m(s.isReadOnlyToken?"mdi-cancel":"mdi-plus"),1)]),_:1}),u(" "+m(g.name),1)]),_:2},1032,["onClick"]))),128))]),_:1})):(c(),f("div",Ln,[o(Ie,{name:"v-list"},{default:a(()=>[(c(!0),f(k,null,M(i.unusedSubjects,g=>(c(),v(_,{key:g.name,border:"",rounded:"xl",class:"empty-subject-card",onClick:S=>n.handleCardClick("dialog",g.name)},{default:a(()=>[o(I,{class:"text-subtitle-1"},{default:a(()=>[u(m(g.name),1)]),_:2},1024),o(T,{class:"text-center"},{default:a(()=>[s.isReadOnlyToken?(c(),f(k,{key:0},[o(x,{color:"grey",size:"small"},{default:a(()=>[...e[3]||(e[3]=[u(" mdi-cancel ",-1)])]),_:1}),e[4]||(e[4]=r("div",{class:"text-caption text-grey"}," 当日无作业 ",-1))],64)):(c(),f(k,{key:1},[o(x,{color:"grey",size:"small"},{default:a(()=>[...e[5]||(e[5]=[u(" mdi-plus ",-1)])]),_:1}),e[6]||(e[6]=r("div",{class:"text-caption text-grey"}," 点击添加作业 ",-1))],64))]),_:1})]),_:2},1032,["onClick"]))),128))]),_:1})]))])],64)}const Fn=H(pn,[["render",zn],["__scopeId","data-v-65991b74"]]),Bn={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"]},On={class:"d-flex flex-wrap align-center mt-4"};function Un(t,e,i,l,s,n){return c(),f(k,null,[r("div",On,[i.synced?(c(),v(b,{key:1,color:"success",size:"large",rounded:"xl",onClick:e[1]||(e[1]=d=>t.$emit("show-sync-message"))},{default:a(()=>[...e[9]||(e[9]=[u(" 同步完成 ",-1)])]),_:1})):(c(),v(b,{key:0,loading:i.loadingUpload,class:"ml-2",color:"error",size:"large",rounded:"xl",onClick:e[0]||(e[0]=d=>t.$emit("upload"))},{default:a(()=>[...e[8]||(e[8]=[u(" 上传 ",-1)])]),_:1},8,["loading"])),i.showRandomPickerButton?(c(),v(b,{key:2,"append-icon":"mdi-dice-multiple",class:"ml-2",color:"amber","prepend-icon":"mdi-account-question",size:"large",onClick:e[2]||(e[2]=d=>t.$emit("open-random-picker"))},{default:a(()=>[...e[10]||(e[10]=[u(" 随机点名 ",-1)])]),_:1})):w("",!0),i.showExamScheduleButton?(c(),v(Fe,{key:3,class:"ml-2",color:"green",variant:"elevated",divided:""},{default:a(()=>[o(b,{"prepend-icon":"mdi-calendar-check",size:"large",onClick:e[3]||(e[3]=d=>t.$router.push("/examschedule"))},{default:a(()=>[...e[11]||(e[11]=[u(" 考试看板 ",-1)])]),_:1}),o(b,{icon:"mdi-plus",size:"large",onClick:e[4]||(e[4]=d=>t.$emit("add-exam-card"))})]),_:1})):w("",!0),i.showListCardButton?(c(),v(b,{key:4,class:"ml-2",color:"primary-darken-1","prepend-icon":"mdi-list-box",size:"large",onClick:e[5]||(e[5]=d=>t.$router.push("/list"))},{default:a(()=>[...e[12]||(e[12]=[u(" 列表 ",-1)])]),_:1})):w("",!0),i.showFullscreenButton?(c(),v(b,{key:5,color:i.isFullscreen?"blue-grey":"blue","prepend-icon":i.isFullscreen?"mdi-fullscreen-exit":"mdi-fullscreen",class:"ml-2",size:"large",onClick:e[6]||(e[6]=d=>t.$emit("toggle-fullscreen"))},{default:a(()=>[u(m(i.isFullscreen?"退出全屏":"全屏显示"),1)]),_:1},8,["color","prepend-icon"])):w("",!0),i.showTestCardButton?(c(),v(b,{key:6,class:"ml-2",color:"purple","prepend-icon":"mdi-test-tube",size:"large",onClick:e[7]||(e[7]=d=>t.$emit("add-test-card"))},{default:a(()=>[...e[13]||(e[13]=[u(" 添加测试卡片 ",-1)])]),_:1})):w("",!0)]),i.showAntiScreenBurnCard?(c(),v(_,{key:0,border:"",class:"mt-4 anti-burn-card",color:"primary",variant:"tonal"},{default:a(()=>[o(I,{class:"text-subtitle-1"},{default:a(()=>[o(x,{icon:"mdi-shield-check",size:"small",start:""}),e[14]||(e[14]=u(" 屏幕保护技术已启用 ",-1))]),_:1}),o(T,{class:"text-body-2"},{default:a(()=>[...e[15]||(e[15]=[r("p",null," 为防止OLED/LCD屏幕烧屏,界面元素会定期微调位置。 ",-1),r("p",{class:"text-caption text-grey"}," 此功能不会影响正常使用,仅在长时间静止显示时生效。 ",-1),r("p",{class:"text-caption text-grey"}," 建议在放学后关闭显示器以节约能源。 ",-1)])]),_:1})]),_:1})):w("",!0)],64)}const jn=H(Bn,[["render",Un]]),Hn={name:"FloatingICP"},Wn={"aria-label":"xICP备x号",class:"floating-icp-link",href:"https://beian.miit.gov.cn/",rel:"noopener noreferrer",target:"_blank",style:{display:"none"}};function Gn(t,e,i,l,s,n){return c(),f("a",Wn," xICP备x号 ")}const Kn=H(Hn,[["render",Gn],["__scopeId","data-v-fa73670f"]]),qn={class:"skeleton-grid"},Yn={__name:"HomeSkeleton",setup(t){const{mobile:e}=De(),i=ut(()=>e.value?3:6);return(l,s)=>(c(),v(je,{class:"main-window",fluid:""},{default:a(()=>[r("div",qn,[(c(!0),f(k,null,M(i.value,n=>(c(),f("div",{key:n,class:"skeleton-card"},[...s[0]||(s[0]=[r("div",{class:"skeleton-heading skeleton-pulse"},null,-1),r("div",{class:"skeleton-line skeleton-pulse"},null,-1),r("div",{class:"skeleton-line skeleton-line--short skeleton-pulse"},null,-1)])]))),128))]),s[1]||(s[1]=r("div",{class:"d-flex justify-center mt-6 ga-3"},[r("div",{class:"skeleton-btn skeleton-pulse"}),r("div",{class:"skeleton-btn skeleton-pulse"})],-1))]),_:1}))}},Jn=H(Yn,[["__scopeId","data-v-c545dbe3"]]);function Se(t,e){let i=null;return function(...l){i&&clearTimeout(i),i=setTimeout(()=>{t.apply(this,l)},e)}}function Xn(t,e){let i=null,l=0;return function(...s){const n=Date.now();n-l{l=n,t.apply(this,s)},e)):(l=n,t.apply(this,s))}}const Zn=z({loader:()=>P(()=>import("./MessageLog-CZsTVP4i.js").then(t=>t.M),__vite__mapDeps([7,0,1,2,3,8,9,10]),import.meta.url),loadingComponent:he,delay:200}),Qn=z({loader:()=>P(()=>import("./RandomPicker-CsXS_sbB.js"),__vite__mapDeps([11,0,1,2,3,12,13,14,15,16,17,18]),import.meta.url),delay:0}),$n=z({loader:()=>P(()=>import("./FloatingToolbar-BZD3ZR8B.js"),__vite__mapDeps([19,0,1,2,3,20,21,22,14,15,23,24,25,26]),import.meta.url),delay:200}),eo=z({loader:()=>P(()=>import("./ChatWidget-BXhjl6gS.js").then(t=>t.C),__vite__mapDeps([27,28,29,0,1,2,3,6,30,16,17,31,14,15,32,33,34,35,36,12,13,37,38]),import.meta.url),delay:0}),to=z({loader:()=>P(()=>import("./HomeworkEditDialog-BpaBTmY_.js"),__vite__mapDeps([39,4,5,0,1,2,3,6,36,12,13,37,16,17,40,41,42]),import.meta.url),delay:0}),so=z({loader:()=>P(()=>import("./InitServiceChooser-Cm36vuZZ.js"),__vite__mapDeps([43,0,1,2,3,4,5,6,12,13,40,41,36,37,16,17,44,45,32,33,46]),import.meta.url),loadingComponent:he,delay:200}),io=z({loader:()=>P(()=>import("./StudentNameManager-DB-P5C67.js"),__vite__mapDeps([47,0,1,2,3,4,5,6,48,12,13,49,20,21,50,51,52,16,17,53,54,55,56,40,41,57]),import.meta.url),delay:200}),no=z({loader:()=>P(()=>import("./UrgentTestDialog-BqTcJt8c.js"),__vite__mapDeps([58,27,28,29,0,1,2,3,6,30,16,17,31,14,15,32,33,34,35,36,12,13,37,38,4,5,8,9,59,60,61,51,52,62,50,63,64]),import.meta.url),delay:0}),oo=z({loader:()=>P(()=>import("./AttendanceSidebar-DmtvE998.js"),__vite__mapDeps([65,0,1,2,3,32,33,57]),import.meta.url),loadingComponent:he,delay:200}),ao=z({loader:()=>P(()=>import("./AttendanceManagementDialog-BpjEre5P.js"),__vite__mapDeps([66,0,1,2,3,16,17,32,33,12,13,67]),import.meta.url),delay:0}),ro=z({loader:()=>P(()=>import("./PwaInstallCard-DM1cBO1c.js"),__vite__mapDeps([68,2,0,1,3,16,17]),import.meta.url),delay:200}),lo=z({loader:()=>P(()=>import("./ExamScheduleCard-DhbbmO7J.js"),__vite__mapDeps([69,2,0,1,3,40,41,4,5,6,16,17,70,71,72,73,14,15,12,13,30,51,52,59,60,28,29,31,8,9,32,33,74]),import.meta.url),loadingComponent:he,delay:200}),co=z({loader:()=>P(()=>import("./ExamConfigEditor-BVwEXehR.js"),__vite__mapDeps([75,4,5,0,1,2,3,6,40,41,76,77,14,15,16,17,32,33,12,13,36,37,51,52,48,49,20,21,50,53,54,22,23,24,25,78,79,80]),import.meta.url),delay:0}),uo={name:"Classworks 作业板",components:{MessageLog:Zn,RandomPicker:Qn,FloatingToolbar:$n,FloatingICP:Kn,HomeworkEditDialog:to,InitServiceChooser:so,ChatWidget:eo,StudentNameManager:io,UrgentTestDialog:no,AttendanceSidebar:oo,AttendanceManagementDialog:ao,HomeworkGrid:Fn,HomeActions:jn,PwaInstallCard:ro,ExamScheduleCard:lo,ExamConfigEditor:co,HomeSkeleton:Jn},setup(){const{mobile:t}=De(),e=xe();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:De,state:{classNumber:"",namespaceInfo:null,deviceName:"",studentList:[],boardData:{homework:{},attendance:{absent:[],late:[],exclude:[]}},dialogVisible:!1,dialogTitle:"",textarea:"",dateString:"",synced:!1,attendDialogVisible:!1,contentStyle:{"font-size":`${D("font.size")}px`},uploadLoading:!1,downloadLoading:!1,snackbar:!1,snackbarText:"",fontSize:D("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 D("display.forceDesktopMode")?!1:this.mobile},titleText(){var p,g,S;const t=D("server.provider"),e=t==="kv-server"||t==="classworkscloud";let i;e&&this.state.namespaceInfo?i=((p=this.state.namespaceInfo)==null?void 0:p.name)||((S=(g=this.state.namespaceInfo)==null?void 0:g.device)==null?void 0:S.name)||this.state.classNumber||"高三八班":i=this.state.classNumber||"高三八班";const l=this.getToday(),s=new Date(l);s.setDate(s.getDate()-1);const n=this.state.dateString,d=this.formatDate(l),h=this.formatDate(s);return n===d?i+" - 今天的作业":n===h?i+" - 昨天的作业":`${i} - ${n}的作业`},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 i=this.state.boardData.homework[e];t.push({key:e,name:"考试安排",type:"exam",data:{examId:i.examId},order:-100,rowSpan:200})}for(const e of this.state.availableSubjects){const i=e.name,l=this.state.boardData.homework[i];if(l&&l.content){const n=100+l.content.split(` -`).filter(d=>d.trim()).length*24;t.push({key:i,name:i,type:"homework",content:l.content,order:e.order,rowSpan:n})}}D("timeCard.enabled")&&t.push({key:"time-card",name:"时间",type:"time",order:9997,rowSpan:150}),D("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 i=this.state.boardData.homework[e],s=100+i.content.split(` -`).filter(n=>n.trim()).length*24;t.push({key:e,name:i.name,type:"custom",content:i.content,order:9999,rowSpan:s})}return t.sort((e,i)=>e.order-i.order),t},unusedSubjects(){const t=Object.keys(this.state.boardData.homework).filter(e=>{var i;return(i=this.state.boardData.homework[e].content)==null?void 0:i.trim()});return this.state.availableSubjects.filter(e=>!t.includes(e.name)).sort((e,i)=>e.order-i.order)},emptySubjects(){return this.emptySubjectDisplay!=="button"?[]:this.unusedSubjects},autoSave(){return D("edit.autoSave")},blockNonTodayAutoSave(){return D("edit.blockNonTodayAutoSave")},isToday(){const t=(()=>{const e=new Date,i=e.getFullYear(),l=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${i}${l}${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 D("edit.refreshBeforeEdit")},emptySubjectDisplay(){return D("display.emptySubjectDisplay")},dynamicSort(){return D("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 D("randomPicker.enabled")},showListCardButton(){return D("display.showListCard")},confirmNonTodaySave(){return D("edit.confirmNonTodaySave")},blockPastDataEdit(){return D("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 D("display.showFullscreenButton")},showExamScheduleButton(){return D("display.showExamScheduleButton")},showAntiScreenBurnCard(){return D("display.showAntiScreenBurnCard")},showTestCardButton(){return D("developer.enabled")},shouldShowInit(){var s;const t=D("server.provider"),e=t==="kv-server"||t==="classworkscloud",i=D("server.kvToken"),l=((s=this.$route)==null?void 0:s.path)==="/";return this.settingsTick,l&&e&&(!i||i==="")},hasExamCard(){for(const t in this.state.boardData.homework)if(t.startsWith("exam-"))return!0;return!1},shouldShowUrgentTestButton(){const t=D("server.provider");return!(t==="kv-server"||t==="classworkscloud")||!D("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=Se(this.uploadData,2e3),this.debouncedAttendanceSave=Se(async()=>{this.autoSave&&await this.trySave(!0)},2e3),this.throttledReflow=Xn(()=>{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 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(),Ve.init(),this.$nextTick(()=>{this.updateTokenDisplayInfo()}),await this.loadTokenInfo(),this.loadPersistentNotifications()}catch(t){console.error("初始化失败:",t),this.showError("初始化失败,请刷新页面重试")}},beforeUnmount(){Ve.destroy(),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),St()}catch(t){console.warn("主页面事件清理失败:",t)}},methods:{async loadDeviceInfo(){var t;try{const e=D("server.provider");if(!(e==="kv-server"||e==="classworkscloud"))return;const l=await mt.loadNamespaceInfo();if(l&&l.success===!1)return;this.state.namespaceInfo=l||null,this.state.deviceName=((t=l==null?void 0:l.account)==null?void 0:t.deviceName)||""}catch(e){console.warn("加载设备信息失败:",e)}},async loadTokenInfo(){try{const t=D("server.provider");if(!(t==="kv-server"||t==="classworkscloud"))return;const i=D("server.kvToken");if(!i)return;const l=D("server.domain");if(!l)return;const s=await ht.get(`${l}/kv/_token`,{headers:{Authorization:`Bearer ${i}`}});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,i=t.isReadOnly,l=t.isStudentToken,s=t.isTeacherToken;if(this.tokenDisplayInfo.readonly=i,!l&&!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=i,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),i=e.getFullYear(),l=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0");return`${i}${l}${s}`},formatTime(t){return t?new Date(t).toLocaleString():""},getToday(){return new Date},async initializeData(){this.parsePreconfigData();const t=await this.parseUrlConfig(),i=new URLSearchParams(window.location.search).get("date"),l=this.getToday();let s=l;if(i){if(/^\d{8}$/.test(i)){const n=i.substring(0,4),d=i.substring(4,6),h=i.substring(6,8);s=new Date(`${n}-${d}-${h}`)}else s=new Date(i);isNaN(s.getTime())&&(s=l)}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(l),!t){this.provider=D("server.provider");const n=D("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(t,e=!1,i=!1){const l=`exam-${t}`;!e&&this.state.boardData.homework[l]?delete this.state.boardData.homework[l]:this.state.boardData.homework[l]={type:"exam",examId:t,name:"考试安排",content:""},this.state.synced=!1,i||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,i,l;if(!this.loading.download)try{this.loading.download=!0;const s=await R.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:((i=s.attendance)==null?void 0:i.late)||[],exclude:((l=s.attendance)==null?void 0:l.exclude)||[]}},this.state.synced=!0,this.state.showNoDataMessage=!1,s.fromCache?this.$message.warning("离线模式","显示缓存数据,联网后将自动同步"):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 i;if(!this.currentEditSubject)return;const t=this.state.textarea.trim(),e=((i=this.state.boardData.homework[this.currentEditSubject])==null?void 0:i.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 R.saveData("classworks-data-"+this.state.dateString,this.state.boardData);if(t.success==!1)throw new Error(t.error.message);this.state.synced=!0,t.queuedForSync?this.$message.warning("已保存到本地","网络恢复后将自动同步到服务器"):this.$message.success(t.message||"保存成功")}finally{this.loading.upload=!1}},async loadConfig(){try{try{const t=await R.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 R.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 i=this.$refs.studentNameManager;i!=null&&i.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(i){console.error("刷新数据失败:",i),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(i=>i.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`},K("font.size",this.state.fontSize)},updateBackendUrl(){const t=D("server.provider"),e=D("server.classNumber");this.provider=t,this.state.classNumber=e},setupAutoRefresh(){const t=D("refresh.auto"),e=D("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=D("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),i=this.formatDate(e);if(i===this.state.dateString)return;this.state.dateString=i,this.state.selectedDate=i,this.state.selectedDateObj=e,this.state.isToday=i===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=D("server.kvToken");if(!t){console.warn("未配置 KV Token,无法加入实时频道");return}vt(),Ne(t),this.$offConnect=wt(()=>Ne(t)),this.debouncedRealtimeRefresh||(this.debouncedRealtimeRefresh=Se(async()=>{var g,S,U;const l=JSON.parse(JSON.stringify(this.state.boardData.homework));await this.downloadData();const s=new Date,n=String(s.getHours()).padStart(2,"0"),d=String(s.getMinutes()).padStart(2,"0"),h=String(s.getSeconds()).padStart(2,"0");(g=this.$message)==null||g.info("数据已更新",`已于 ${n}:${d}:${h} 自动刷新`);const p={};for(const A in this.state.boardData.homework){const Y=((S=l[A])==null?void 0:S.content)||"",J=((U=this.state.boardData.homework[A])==null?void 0:U.content)||"";Y!==J&&(p[A]=!0)}for(const A in l)this.state.boardData.homework[A]||(p[A]=!0);this.highlightedCards=p,setTimeout(()=>{this.highlightedCards={}},1e4)},800));const e=l=>{var n;if(!l)return;if(l.key==="notification-list"){this.loadPersistentNotifications();return}const s=`classworks-data-${this.state.dateString}`;l.key===s&&(l.action!=="upsert"&&l.action!=="delete"||(n=this.debouncedRealtimeRefresh)==null||n.call(this,l.key))},i=l=>{let s=l;l.content&&l.timestamp&&(s={uuid:l.senderId||"realtime",key:l.content.key,action:l.content.action,created:l.content.created,updatedAt:l.content.updatedAt||l.timestamp,deletedAt:l.content.deletedAt,batch:l.content.batch}),e(s)};this.$offKvChanged=Pe("kv-key-changed",i),this.deviceEventHandler=Dt({onKvChanged:e,enableLegacySupport:!0}),this.$offDeviceEvent=Pe("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="",i="success"){this.$message[i](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 i=atob(e),l=Uint8Array.from(i,g=>g.charCodeAt(0)),s=new TextDecoder().decode(l),n=JSON.parse(s);console.log("从URL读取配置:",n);const d=[],h={},p={};return this.processSpecialSettings(n,d,h),this.processStandardSettings(n,d,h,p),Object.keys(h).length===0?(console.log("URL配置与当前配置相同,无需应用"),!1):new Promise(g=>{this.urlConfigDialog={show:!0,config:n,changes:d,validSettings:h,icons:p,confirmHandler:()=>{this.urlConfigDialog.show=!1,this.applyUrlConfig(h),g(!0)},cancelHandler:()=>{this.urlConfigDialog.show=!1,g(!1)}}})}catch(i){return console.error("解析URL配置错误:",i),this.$message.error("URL配置错误","无法解析配置数据"),!1}}catch(t){return console.error("处理URL配置错误:",t),!1}},processSpecialSettings(t,e,i){var l,s;if(t.classNumber!==void 0){const n=D("server.classNumber");t.classNumber!==n&&(e.push({key:"server.classNumber",name:"班级",oldValue:n,newValue:t.classNumber,description:((l=Z["server.classNumber"])==null?void 0:l.description)||"班级编号",icon:((s=Z["server.classNumber"])==null?void 0:s.icon)||"mdi-account-group"}),i["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"}),i.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"}),i.subjects=t.subjects)},processStandardSettings(t,e,i,l){Object.entries(t).forEach(([s,n])=>{if(["classNumber","date","subjects"].includes(s))return;let d=s,h=Z[s];if(!h&&!s.includes(".")){const p=["server.","display.","theme.","edit.","refresh.","font.","randomPicker."];for(const g of p){const S=`${g}${s}`;if(Z[S]){d=S,h=Z[S];break}}}if(h){let p=this.convertValueToCorrectType(n,h.type);if(h.validate&&!h.validate(p)){console.warn(`URL配置项 ${d} 的值无效: ${n}`);return}const g=D(d);p!==g&&(e.push({key:d,name:this.getSettingDisplayName(d),oldValue:this.formatSettingValue(g),newValue:this.formatSettingValue(p),description:h.description||d,icon:h.icon||"mdi-cog"}),i[d]=p,l[d]=h.icon||"mdi-cog")}else e.push({key:s,name:this.getSettingDisplayName(s),oldValue:"未知",newValue:this.formatSettingValue(n),description:"自定义配置项",icon:"mdi-cog-outline"}),i[s]=n,l[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("."),i=e[e.length-1];return{provider:"数据提供方",domain:"服务器域名",classNumber:"班级编号",emptySubjectDisplay:"空科目显示方式",dynamicSort:"动态排序",showRandomButton:"随机按钮",showFullscreenButton:"全屏按钮",cardHoverEffect:"卡片悬浮效果",enhancedTouchMode:"增强触摸模式",showAntiScreenBurnCard:"防烧屏卡片",mode:"主题模式",size:"字体大小",autoSave:"自动保存",blockNonTodayAutoSave:"禁止自动保存非当日",refreshBeforeEdit:"编辑前刷新",confirmNonTodaySave:"非当日保存确认",auto:"自动刷新",interval:"刷新间隔"}[i]||i},safeBase64Decode(t){try{return Be.decode(t)}catch(e){throw console.error("Base64解码错误:",e),new Error("无法解码配置数据")}},applyUrlConfig(t){for(const[e,i]of Object.entries(t)){if(e==="date"){this.handleDateSelect(i);continue}if(e==="subjects"){this.state.availableSubjects=i;continue}K(e,i),e==="server.classNumber"&&(this.state.classNumber=i)}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)),i=this.getToday(),l=this.formatDate(i);this.state.dateString=l,await this.downloadData();const s={};for(const d in e)e[d]&&e[d].content&&(e[d].type==="custom"?s[d]=JSON.parse(JSON.stringify(e[d])):s[d]={content:e[d].content});this.state.boardData.homework=s,this.state.synced=!1,await this.uploadData(),this.state.selectedDate=l,this.state.selectedDateObj=i,this.state.isToday=!0;const n=new URL(window.location);n.searchParams.delete("date"),window.history.pushState({},"",n),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"),i=t.get("authCode")||t.get("auth_code"),l=t.get("autoExecute")||t.get("auto_execute");e&&(this.preconfigData.namespace=e,this.preconfigData.authCode=i,this.preconfigData.autoOpen=!0,this.preconfigData.autoExecute=this.parseBoolean(l),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 i=!1;t.forEach(l=>{e.searchParams.has(l)&&(e.searchParams.delete(l),i=!0)}),i&&window.history.replaceState({},document.title,e.toString())}catch(e){console.error("清理URL参数失败:",e)}},async loadPersistentNotifications(){try{const t=await R.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(i=>i.id!==t);const e=this.persistentNotifications.length>0?this.persistentNotifications:{};await R.saveData("notification-list",e),this.notificationDetailDialog=!1}}},ho={key:3,class:"d-flex"},mo={class:"text-h6 text-truncate font-weight-bold"},fo={class:"text-h4 font-weight-medium mb-4",style:{"line-height":"1.5"}},go={class:"text-subtitle-1 text-grey"},po={class:"d-flex align-center flex-wrap"},yo={class:"text-subtitle-1"},bo={class:"text-grey-darken-1"},vo={class:"text-primary font-weight-medium"},wo={key:1,class:"text-center py-4 text-grey"};function So(t,e,i,l,s,n){const d=V("init-service-chooser"),h=V("StudentNameManager"),p=V("HomeSkeleton"),g=V("homework-grid"),S=V("home-actions"),U=V("pwa-install-card"),A=V("attendance-sidebar"),Y=V("homework-edit-dialog"),J=V("attendance-management-dialog"),fe=V("message-log"),W=V("floating-toolbar"),ge=V("FloatingICP"),Xe=V("ChatWidget"),Ze=V("UrgentTestDialog"),Qe=V("random-picker"),$e=V("exam-config-editor");return c(),f(k,null,[o(kt,{class:"no-select"},{append:a(()=>[s.tokenDisplayInfo.readonly?(c(),v(L,{key:0,class:"mx-2",color:"warning","prepend-icon":"mdi-lock-alert",variant:"tonal"},{default:a(()=>[...e[29]||(e[29]=[u(" 只读 ",-1)])]),_:1})):w("",!0),s.tokenDisplayInfo.show?(c(),v(L,{key:1,style:N({cursor:s.tokenDisplayInfo.disabled?"default":"pointer"}),class:"mx-2",color:"primary","prepend-icon":"mdi-account",variant:"tonal",onClick:n.handleTokenChipClick},{default:a(()=>[u(m(s.tokenDisplayInfo.text),1)]),_:1},8,["style","onClick"])):w("",!0),n.shouldShowUrgentTestButton?(c(),v(b,{key:2,"prepend-icon":"mdi-chat",variant:"tonal",onClick:e[0]||(e[0]=y=>s.urgentTestDialog=!0)},{default:a(()=>[...e[30]||(e[30]=[u(" 发送通知 ",-1)])]),_:1})):w("",!0),o(b,{icon:"mdi-chat",variant:"text",onClick:e[1]||(e[1]=y=>s.isChatOpen=!0)}),o(b,{badge:n.unreadCount||void 0,"badge-color":n.unreadCount?"error":void 0,icon:"mdi-bell",variant:"text",onClick:e[2]||(e[2]=y=>t.$refs.messageLog.drawer=!0)},null,8,["badge","badge-color"]),o(b,{icon:"mdi-cog",variant:"text",onClick:e[3]||(e[3]=y=>t.$router.push("/settings"))})]),default:a(()=>[o(xt,null,{default:a(()=>[u(m(n.titleText),1)]),_:1}),o(E)]),_:1}),n.shouldShowInit?(c(),v(d,{key:0,preconfig:s.preconfigData,onDone:e[4]||(e[4]=y=>s.settingsTick++)},null,8,["preconfig"])):w("",!0),n.shouldShowInit?w("",!0):(c(),v(h,{key:1,ref:"studentNameManager",onTokenInfoUpdated:n.updateTokenDisplayInfo},null,8,["onTokenInfoUpdated"])),!n.shouldShowInit&&!s.dataReady?(c(),v(p,{key:2})):w("",!0),!n.shouldShowInit&&s.dataReady?(c(),f("div",ho,[o(je,{class:"main-window flex-grow-1 no-select bloom-container",fluid:""},{default:a(()=>[s.persistentNotifications.length>0?(c(),v(Ct,{key:0,class:"mb-4"},{default:a(()=>[o(Tt,{cols:"12"},{default:a(()=>[(c(!0),f(k,null,M(s.persistentNotifications,y=>(c(),v(_,{key:y.id,color:y.isUrgent?"error":"primary",class:"mb-2 cursor-pointer",variant:"tonal",onClick:pe=>n.showNotificationDetail(y)},{default:a(()=>[o(T,{class:"d-flex align-center py-3"},{default:a(()=>[r("span",mo,m(y.message),1),o(E),o(b,{icon:"mdi-chevron-right",variant:"text"})]),_:2},1024)]),_:2},1032,["color","onClick"]))),128))]),_:1})]),_:1})):w("",!0),o(B,{modelValue:s.notificationDetailDialog,"onUpdate:modelValue":e[8]||(e[8]=y=>s.notificationDetailDialog=y),"max-width":"700",scrollable:""},{default:a(()=>[s.currentNotification?(c(),v(_,{key:0,class:"rounded-xl"},{default:a(()=>[o(I,{class:"d-flex align-center pa-4 text-h5"},{default:a(()=>[r("span",{class:O([s.currentNotification.isUrgent?"text-error":"","font-weight-bold"])},m(s.currentNotification.isUrgent?"强调通知":"通知详情"),3),o(E),o(b,{icon:"mdi-close",variant:"text",onClick:e[5]||(e[5]=y=>s.notificationDetailDialog=!1)})]),_:1}),o(F),o(T,{class:"pa-6"},{default:a(()=>[r("div",fo,m(s.currentNotification.message),1),r("div",go," 发布时间:"+m(n.formatTime(s.currentNotification.timestamp)),1)]),_:1}),o(F),o(j,{class:"pa-4"},{default:a(()=>[o(b,{color:"error","prepend-icon":"mdi-delete",size:"x-large",variant:"tonal",class:"px-6",onClick:e[6]||(e[6]=y=>n.removePersistentNotification(s.currentNotification.id))},{default:a(()=>[...e[31]||(e[31]=[u(" 删除通知 ",-1)])]),_:1}),o(E),o(b,{color:"primary",size:"x-large",variant:"elevated",class:"px-8",onClick:e[7]||(e[7]=y=>s.notificationDetailDialog=!1)},{default:a(()=>[...e[32]||(e[32]=[u(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):w("",!0)]),_:1},8,["modelValue"]),o(g,{"sorted-items":n.sortedItems,"unused-subjects":n.unusedSubjects,"empty-subject-display":n.emptySubjectDisplay,"is-mobile":n.isMobile,"is-editing-disabled":n.isEditingDisabled,"content-style":s.state.contentStyle,"highlighted-cards":s.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"]),o(S,{synced:s.state.synced,"loading-upload":s.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":s.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:e[9]||(e[9]=y=>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(U),s.upcomingExams.length>0&&!n.hasExamCard?(c(),v(le,{key:1,class:"mt-4",color:"info",variant:"tonal",closable:"",icon:"mdi-calendar-clock",title:"近期有考试安排"},{append:a(()=>[o(b,{color:"primary",variant:"text",onClick:n.addAllUpcomingExams},{default:a(()=>[...e[34]||(e[34]=[u(" 一键添加 ",-1)])]),_:1},8,["onClick"])]),default:a(()=>[r("div",po,[e[33]||(e[33]=r("span",{class:"mr-2"},"检测到未来两天内有以下考试:",-1)),(c(!0),f(k,null,M(s.upcomingExams,y=>(c(),v(L,{key:y.id,size:"small",class:"mr-1 mb-1",color:"primary"},{default:a(()=>[u(m(y.examName),1)]),_:2},1024))),128))])]),_:1})):w("",!0)]),_:1}),n.isMobile?w("",!0):(c(),v(A,{key:0,"student-list":s.state.studentList,attendance:s.state.boardData.attendance,"is-editing-disabled":n.isEditingDisabled,onClick:n.setAttendanceArea,onDisabledClick:n.handleDisabledClick},null,8,["student-list","attendance","is-editing-disabled","onClick","onDisabledClick"]))])):w("",!0),o(Y,{modelValue:s.state.dialogVisible,"onUpdate:modelValue":e[10]||(e[10]=y=>s.state.dialogVisible=y),"auto-save":n.autoSave,"initial-content":s.state.textarea,title:s.state.dialogTitle,"is-editing-past-data":n.isEditingPastData,"current-date-string":s.state.dateString,onSave:n.handleHomeworkSave},null,8,["modelValue","auto-save","initial-content","title","is-editing-past-data","current-date-string","onSave"]),o(nt,{modelValue:s.state.snackbar,"onUpdate:modelValue":e[11]||(e[11]=y=>s.state.snackbar=y),timeout:2e3},{default:a(()=>[u(m(s.state.snackbarText),1)]),_:1},8,["modelValue"]),o(J,{modelValue:s.state.attendanceDialog,"onUpdate:modelValue":e[12]||(e[12]=y=>s.state.attendanceDialog=y),"student-list":s.state.studentList,attendance:s.state.boardData.attendance,"date-string":s.state.dateString,onSave:n.saveAttendance,onChange:n.handleAttendanceChange},null,8,["modelValue","student-list","attendance","date-string","onSave","onChange"]),o(fe,{ref:"messageLog"},null,512),o(W,{"is-today":n.isToday,loading:s.loading.download,"copy-to-today-loading":s.loading.copyToToday,"selected-date":s.state.selectedDateObj,"unread-count":n.unreadCount,onRefresh:n.downloadData,onZoom:n.zoom,onOpenMessages:e[13]||(e[13]=y=>t.$refs.messageLog.drawer=!0),onOpenSettings:e[14]||(e[14]=y=>t.$router.push("/settings")),onDateSelect:n.handleDateSelect,onPrevDay:e[15]||(e[15]=y=>n.navigateDay(-1)),onNextDay:e[16]||(e[16]=y=>n.navigateDay(1)),onCopyToToday:n.copyHomeworkToToday},null,8,["is-today","loading","copy-to-today-loading","selected-date","unread-count","onRefresh","onZoom","onDateSelect","onCopyToToday"]),o(ge),o(Xe,{modelValue:s.isChatOpen,"onUpdate:modelValue":e[17]||(e[17]=y=>s.isChatOpen=y),"show-button":!1},null,8,["modelValue"]),o(Ze,{modelValue:s.urgentTestDialog,"onUpdate:modelValue":e[18]||(e[18]=y=>s.urgentTestDialog=y)},null,8,["modelValue"]),o(B,{modelValue:s.confirmDialog.show,"onUpdate:modelValue":e[19]||(e[19]=y=>s.confirmDialog.show=y),"max-width":"400"},{default:a(()=>[o(_,null,{default:a(()=>[o(I,{class:"text-h6"},{default:a(()=>[...e[35]||(e[35]=[u(" 确认保存 ",-1)])]),_:1}),o(T,null,{default:a(()=>[u(" 您正在修改 "+m(s.state.dateString)+" 的数据,确定要保存吗? ",1)]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{color:"grey",variant:"text",onClick:s.confirmDialog.reject},{default:a(()=>[...e[36]||(e[36]=[u(" 取消 ",-1)])]),_:1},8,["onClick"]),o(b,{color:"primary",onClick:s.confirmDialog.resolve},{default:a(()=>[...e[37]||(e[37]=[u(" 确认保存 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(Qe,{ref:"randomPicker",attendance:s.state.boardData.attendance,"student-list":s.state.studentList},null,8,["attendance","student-list"]),o(B,{modelValue:s.urlConfigDialog.show,"onUpdate:modelValue":e[20]||(e[20]=y=>s.urlConfigDialog.show=y),"max-width":"500"},{default:a(()=>[o(_,null,{default:a(()=>[o(I,{class:"text-h6"},{default:a(()=>[...e[38]||(e[38]=[u(" 确认应用URL配置 ",-1)])]),_:1}),o(T,null,{default:a(()=>[e[39]||(e[39]=r("p",null,"以下配置将应用于当前班级:",-1)),o(ee,{density:"compact"},{default:a(()=>[(c(!0),f(k,null,M(s.urlConfigDialog.changes,y=>(c(),v(X,{key:y.key},{prepend:a(()=>[o(x,{icon:y.icon,class:"mr-2",size:"small"},null,8,["icon"])]),default:a(()=>[o(oe,{class:"d-flex align-center"},{default:a(()=>[r("span",yo,m(y.name),1),o(pt,{activator:"parent",location:"top"},{default:a(()=>[u(m(y.description||y.key),1)]),_:2},1024)]),_:2},1024),o(ae,null,{default:a(()=>[r("span",bo,m(y.oldValue),1),o(x,{class:"mx-1",icon:"mdi-arrow-right",size:"small"}),r("span",vo,m(y.newValue),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{color:"grey",variant:"text",onClick:s.urlConfigDialog.cancelHandler},{default:a(()=>[...e[40]||(e[40]=[u(" 取消 ",-1)])]),_:1},8,["onClick"]),o(b,{color:"primary",onClick:s.urlConfigDialog.confirmHandler},{default:a(()=>[...e[41]||(e[41]=[u(" 确认应用 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(B,{modelValue:s.showExamDetailDialog,"onUpdate:modelValue":e[23]||(e[23]=y=>s.showExamDetailDialog=y),persistent:"",fullscreen:""},{default:a(()=>[s.selectedExamId?(c(),v(_,{key:0},{default:a(()=>[o(I,{class:"d-flex align-center pa-4"},{default:a(()=>[e[42]||(e[42]=u(" 编辑考试配置 ",-1)),o(E),o(b,{icon:"mdi-close",variant:"text",onClick:e[21]||(e[21]=y=>s.showExamDetailDialog=!1)})]),_:1}),o(T,{class:"pa-4",style:{"max-height":"70vh","overflow-y":"auto"}},{default:a(()=>[o($e,{"config-id":s.selectedExamId,"dialog-mode":!0,onSaved:n.onExamConfigSaved,onDeleted:n.onExamConfigDeleted},null,8,["config-id","onSaved","onDeleted"])]),_:1}),o(F),o(j,{class:"pa-4"},{default:a(()=>[o(b,{color:"error","prepend-icon":"mdi-delete",variant:"tonal",onClick:n.removeCurrentExamCard},{default:a(()=>[...e[43]||(e[43]=[u(" 移除卡片 ",-1)])]),_:1},8,["onClick"]),o(E),o(b,{color:"primary",variant:"text",onClick:e[22]||(e[22]=y=>s.showExamDetailDialog=!1)},{default:a(()=>[...e[44]||(e[44]=[u(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):w("",!0)]),_:1},8,["modelValue"]),o(B,{modelValue:s.showAddExamDialog,"onUpdate:modelValue":e[25]||(e[25]=y=>s.showAddExamDialog=y),"max-width":"500"},{default:a(()=>[o(_,null,{default:a(()=>[o(I,{class:"text-h6"},{default:a(()=>[...e[45]||(e[45]=[u(" 预览考试看板 ",-1)])]),_:1}),o(T,null,{default:a(()=>[l.examStore.examList.length>0?(c(),v(ee,{key:0},{default:a(()=>[(c(!0),f(k,null,M(l.examStore.examList,y=>{var pe;return c(),v(X,{key:y.id,title:((pe=l.examStore.exams[y.id])==null?void 0:pe.examName)||y.id,subtitle:y.id,onClick:xo=>n.addExamCard(y.id)},{prepend:a(()=>[o(x,{color:"primary"},{default:a(()=>[...e[46]||(e[46]=[u(" mdi-calendar-text ",-1)])]),_:1})]),append:a(()=>[o(b,{icon:n.isExamCardAdded(y.id)?"mdi-check":"mdi-plus",color:n.isExamCardAdded(y.id)?"success":"grey",variant:"text"},null,8,["icon","color"])]),_:2},1032,["title","subtitle","onClick"])}),128))]),_:1})):(c(),f("div",wo," 暂无考试配置 "))]),_:1}),o(j,null,{default:a(()=>[o(E),o(b,{color:"primary",variant:"text",onClick:e[24]||(e[24]=y=>s.showAddExamDialog=!1)},{default:a(()=>[...e[47]||(e[47]=[u(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),o(B,{modelValue:s.notificationDetailDialog,"onUpdate:modelValue":e[28]||(e[28]=y=>s.notificationDetailDialog=y),"max-width":"600"},{default:a(()=>[s.currentNotification?(c(),v(_,{key:0},{default:a(()=>[o(I,{class:O(["headline",s.currentNotification.isUrgent?"text-error":"text-primary"])},{default:a(()=>[u(m(s.currentNotification.isUrgent?"强调通知":"通知详情"),1)]),_:1},8,["class"]),o(T,{class:"text-h5 py-4"},{default:a(()=>[u(m(s.currentNotification.message),1)]),_:1}),o(j,null,{default:a(()=>[o(b,{color:"error",variant:"text",onClick:e[26]||(e[26]=y=>n.removePersistentNotification(s.currentNotification.id))},{default:a(()=>[...e[48]||(e[48]=[u(" 删除 ",-1)])]),_:1}),o(E),o(b,{color:"primary",onClick:e[27]||(e[27]=y=>s.notificationDetailDialog=!1)},{default:a(()=>[...e[49]||(e[49]=[u(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})):w("",!0)]),_:1},8,["modelValue"]),e[50]||(e[50]=r("br",null,null,-1)),e[51]||(e[51]=r("br",null,null,-1)),e[52]||(e[52]=r("br",null,null,-1))],64)}const Do=H(uo,[["render",So]]),Ho=Object.freeze(Object.defineProperty({__proto__:null,default:Do},Symbol.toStringTag,{value:"Module"}));export{Ho as i,xe as u}; diff --git a/assets/index-DGIAsv4W.js b/assets/index-DGIAsv4W.js deleted file mode 100644 index b20b532..0000000 --- a/assets/index-DGIAsv4W.js +++ /dev/null @@ -1,2 +0,0 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./default-VxHjJPAZ.js","./vendor-vuetify-DsKlzgKp.js","./vendor-vue-BiQC5iF7.js","./default-CmdaPMSp.css","./index-DCuIjJC4.js","./dataProvider-GWPC-0Vt.js","./vendor-utils-DwALrQNc.js","./serverRotation-BtcwvdZJ.js","./VChip-mRzIPuM0.js","./VChip-Dmz_1Lnv.css","./VTabs-DqmvmKGK.js","./VTable-Cq72iBVc.js","./VTable-CNLJxQof.css","./VTabs-566n5b08.css","./VAlert-BZ4-f-hy.js","./VAlert-D_OX1cfW.css","./VTooltip-2IUjfpCS.js","./VTooltip-D7EaNDeY.css","./VTextField-BurlcggD.js","./VTextField-DTDEIDq0.css","./soundList-D9U-Grcp.js","./VSwitch-k6hfPfa2.js","./VSwitch-Bk42mIwg.css","./VContainer-DZyPrcqa.js","./VContainer-B1KSavhG.css","./socketClient-BKHEsaLg.js","./vendor-socket-dm1FmSOd.js","./deviceEvents-HN9RDua9.js","./VAppBarTitle-DheyIZnb.js","./VAppBarTitle-CczdD-Q2.css","./VRow-Cjhiymuu.js","./VRow-D2ArqUC2.css","./index-BFmbztHq.css","./404-D89xq0CT.js","./authorize-CZL9tEmI.js","./CacheManagement-3L-v8_PB.js","./VExpansionPanels-BDI8gHu5.js","./VExpansionPanels-kEj4ZJQK.css","./VSkeletonLoader-DwE_iqTb.js","./VSkeletonLoader-C11ZEozu.css","./cses2wakeup-DRhHxOpY.js","./VTextarea-vGWmTJww.js","./VTextarea-_xVwaw_z.css","./VDataTable-DmTCHg4b.js","./VPagination-DLzhjdaP.js","./VPagination-BF2MZmld.css","./VSelect-oxA0t9CG.js","./VSheet-BBnSA_kJ.js","./VSheet-DxsDksIw.css","./VCheckboxBtn-BKcSogH0.js","./VSelect-DHZViySU.css","./VDataTable-Cl7qiDOP.css","./VCheckbox-BRi_fHJs.js","./VCheckbox-ZL-u1kGB.css","./cses2wakeup-DFUa6tSq.css","./debug-DCZMB0S_.js","./visitorId-D_nwlNzA.js","./debug-CbS14biG.css","./debug-init-57thZXh2.js","./VForm-ObW_L7SS.js","./debug-socket-iwz8uZ6l.js","./_id_-DMpTK4Oz.js","./ExamConfigEditor-BVwEXehR.js","./VAutocomplete-N0zTUlyj.js","./VAutocomplete-Ygy_KjMW.css","./VDatePicker-CuGF0KeL.js","./VPicker-SM18M-iq.js","./VPicker-Dm9DplUc.css","./VDatePicker-zglzEVGT.css","./VTimePicker-BApLLZ8X.js","./VTimePicker-BkWY3_8P.css","./ExamConfigEditor-HgNV6CVV.css","./examschedule-BZ-idwf4.js","./examschedule-D7wPNFui.css","./index-7Awvo4-J.js","./_id_-DjPmieQy.js","./settings-DjXlifwc.js","./MessageLog-CZsTVP4i.js","./MessageLog-BGkFwivK.css","./VCombobox-BGa7K58w.js","./VCombobox-r6cc1Iy_.css","./settings-BxfdCqX7.css","./socket-debugger-AgrQ1Sap.js","./socket-debugger-B22H3Il3.css"])))=>i.map(i=>d[i]); -import{c as bi,g as qe,p as T,d as bn,i as jn,a as pi,b as Si,e as wi,f as G,h as ye,j as Ft,u as Z,m as fe,k as ee,l as Ee,n as Pe,o as Je,w as pn,q as ki,r as Ci,s as B,t as Sa,v as _i,x as xi,I as oe,S as Sn,y as wa,P as Tt,z as et,A as zt,B as an,C as ht,D as Gn,E as Ae,F as sn,G as Et,H as wn,J as Ei,K as Ii,L as Ot,M as Pi,N as Un,O as Kn,Q as Kt,R as Xt,T as ka,U as Xn,V as Ai,W as Vi,X as Yn,Y as Li,Z as Ti,_ as Oi,$ as It,a0 as Bi,a1 as Ri,a2 as Ca,a3 as Ni,a4 as Fe,a5 as at,a6 as on,a7 as $i,a8 as Di,a9 as Mi,aa as kn,ab as Jn,ac as Qn,ad as Fi,ae as zi,af as Wi,ag as ft,ah as ln,ai as ke,aj as _a,ak as qi,al as Hi,am as ji}from"./vendor-vuetify-DsKlzgKp.js";import{J as Gi,K as Ui,L as Ki,e as C,t as k,M as rn,l as se,k as I,n as j,F as Ve,j as S,N as X,E as Cn,p as He,d as Le,A as je,o as W,D as it,O as Xi,r as vt,u as Yi,m as Q,y as Ji,T as Qi,s as z,q as ve,b as M,w as Ne,P as $e,Q as xa,I as de,R as We,S as _e,v as Ea,x as ne,B as Ia,U as _n,h as xn,V as En,W as Zi,X as Ce,Y as ze,Z as ie,f as es,_ as In,$ as Bt,a0 as Pn,a1 as Ct,a2 as ts,a3 as ns,a4 as as,a5 as is}from"./vendor-vue-BiQC5iF7.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 o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&a(o)}).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 ss="modulepreload",os=function(e,t){return new URL(e,t).href},Zn={},ae=function(t,n,a){let i=Promise.resolve();if(n&&n.length>0){const o=document.getElementsByTagName("link"),l=document.querySelector("meta[property=csp-nonce]"),r=(l==null?void 0:l.nonce)||(l==null?void 0:l.getAttribute("nonce"));i=Promise.allSettled(n.map(u=>{if(u=os(u,a),u in Zn)return;Zn[u]=!0;const c=u.endsWith(".css"),m=c?'[rel="stylesheet"]':"";if(!!a)for(let g=o.length-1;g>=0;g--){const f=o[g];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":ss,c||(d.as="script"),d.crossOrigin="",d.href=u,r&&d.setAttribute("nonce",r),document.head.appendChild(d),c)return new Promise((g,f)=>{d.addEventListener("load",g),d.addEventListener("error",()=>f(new Error(`Unable to preload CSS for ${u}`)))})}))}function s(o){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=o,window.dispatchEvent(l),!l.defaultPrevented)throw o}return i.then(o=>{for(const l of o||[])l.status==="rejected"&&s(l.reason);return t().catch(s)})},ls=bi({theme:{defaultTheme:"dark"}}),rs=Gi(),us=e=>{const t={};Object.entries(Object.assign({"/src/layouts/default.vue":()=>ae(()=>import("./default-VxHjJPAZ.js"),__vite__mapDeps([0,1,2,3]),import.meta.url)})).forEach(([i,s])=>{let o=i.replace("/src/layouts/","").replace(".vue","");t[o]=s});function a(i,s=!0){return i.map(o=>{var l,r,u,c,m,v;if(((l=o.children)==null?void 0:l.length)>0&&(o.children=a(o.children,!1)),s){if(!o.component&&((r=o.children)==null?void 0:r.find(g=>{var f;return(g.path===""||g.path==="/")&&((f=g.meta)==null?void 0:f.isLayout)})))return o;if(((u=o.meta)==null?void 0:u.layout)!==!1)return{path:o.path,component:t[((c=o.meta)==null?void 0:c.layout)||"default"],children:o.path==="/"?[o]:[{...o,path:""}],meta:{isLayout:!0}}}return(m=o.meta)!=null&&m.layout?{path:o.path,component:t[(v=o.meta)==null?void 0:v.layout],children:[{...o,path:""}],meta:{isLayout:!0}}:o})}return a(e)},cs=[{path:"/",name:"/",component:()=>ae(()=>import("./index-DCuIjJC4.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,24,25,26,27,28,29,30,31,32]),import.meta.url)},{path:"/404",name:"/404",component:()=>ae(()=>import("./404-D89xq0CT.js"),__vite__mapDeps([33,30,1,2,31,23,24]),import.meta.url)},{path:"/authorize",name:"/authorize",component:()=>ae(()=>import("./authorize-CZL9tEmI.js"),__vite__mapDeps([34,2,30,1,31,23,24]),import.meta.url)},{path:"/CacheManagement",name:"/CacheManagement",component:()=>ae(()=>import("./CacheManagement-3L-v8_PB.js"),__vite__mapDeps([35,14,1,2,15,36,37,8,9,38,39,30,31,23,24]),import.meta.url)},{path:"/cses2wakeup",name:"/cses2wakeup",component:()=>ae(()=>import("./cses2wakeup-DRhHxOpY.js"),__vite__mapDeps([40,30,1,2,31,14,15,10,11,12,8,9,13,16,17,41,18,19,42,21,22,38,39,43,44,45,46,47,48,49,50,51,52,53,23,24,54]),import.meta.url)},{path:"/debug",name:"/debug",component:()=>ae(()=>import("./debug-DCZMB0S_.js"),__vite__mapDeps([55,56,1,2,23,24,57]),import.meta.url)},{path:"/debug-init",name:"/debug-init",component:()=>ae(()=>import("./debug-init-57thZXh2.js"),__vite__mapDeps([58,5,6,7,30,1,2,31,59,18,19,23,24]),import.meta.url)},{path:"/debug-socket",name:"/debug-socket",component:()=>ae(()=>import("./debug-socket-iwz8uZ6l.js"),__vite__mapDeps([60,25,26,7,27,30,1,2,31,8,9,18,19,41,42,23,24]),import.meta.url)},{path:"/exam-editor",children:[{path:":id",name:"/exam-editor/[id]",component:()=>ae(()=>import("./_id_-DMpTK4Oz.js"),__vite__mapDeps([61,62,5,6,7,2,14,1,15,38,39,16,17,8,9,30,31,18,19,41,42,21,22,63,46,47,48,49,50,64,65,66,67,68,69,70,71,28,29,23,24]),import.meta.url)}]},{path:"/examschedule",name:"/examschedule",component:()=>ae(()=>import("./examschedule-BZ-idwf4.js"),__vite__mapDeps([72,62,5,6,7,2,14,1,15,38,39,16,17,8,9,30,31,18,19,41,42,21,22,63,46,47,48,49,50,64,65,66,67,68,69,70,71,23,24,73]),import.meta.url)},{path:"/list",children:[{path:"",name:"/list/",component:()=>ae(()=>import("./index-7Awvo4-J.js"),__vite__mapDeps([74,5,6,7,2,28,1,29,18,19,23,24]),import.meta.url)},{path:":id",name:"/list/[id]",component:()=>ae(()=>import("./_id_-DjPmieQy.js"),__vite__mapDeps([75,5,6,7,2,28,1,29,18,19,49,21,22,8,9,41,42,23,24]),import.meta.url)}]},{path:"/settings",name:"/settings",component:()=>ae(()=>import("./settings-DjXlifwc.js"),__vite__mapDeps([76,77,28,1,2,29,78,8,9,21,18,19,22,46,47,48,49,50,14,15,5,6,7,30,31,23,24,52,53,41,42,20,38,39,69,66,67,70,59,36,37,43,44,45,11,12,51,79,80,56,81]),import.meta.url)},{path:"/socket-debugger",name:"/socket-debugger",component:()=>ae(()=>import("./socket-debugger-AgrQ1Sap.js"),__vite__mapDeps([82,25,26,7,30,1,2,31,8,9,18,19,41,42,21,22,14,15,23,24,83]),import.meta.url)}],An=Ui({history:Ki("./"),routes:us(cs)});An.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)});An.isReady().then(()=>{localStorage.removeItem("vuetify:dynamic-reload")});function ds(e){e.use(ls).use(An).use(rs)}async function fs(){return typeof Notification<"u"&&Notification.requestPermission?await Notification.requestPermission()==="granted"?(console.log("通知权限已授予"),!0):(console.warn("通知权限被拒绝"),!1):(console.warn("浏览器不支持通知权限请求"),!1)}async function vs(){var e;try{return(e=navigator.storage)!=null&&e.persist?await navigator.storage.persist():!1}catch(t){return console.warn("请求持久性存储失败:",t),!1}}const Yt="Classworks_settings",_t="classworks:settings:changed",ea={"server.domain":"https://kv-service.houlang.cloud","server.siteKey":""},Re={"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"},"noiseMonitor.enabled":{type:"boolean",default:!0,description:"启用环境噪音监测",icon:"mdi-microphone"},"noiseMonitor.autoStart":{type:"boolean",default:!0,description:"打开页面时自动开始监测",icon:"mdi-play-circle-outline"},"noiseMonitor.permissionDismissed":{type:"boolean",default:!1,description:"已跳过麦克风权限引导(不再弹出介绍弹框)",icon:"mdi-microphone-off"},"timeCard.enabled":{type:"boolean",default:!0,description:"启用时间卡片",icon:"mdi-clock-outline"},"timeCard.use12h":{type:"boolean",default:!1,description:"使用 12 小时制显示时间",icon:"mdi-clock-time-six-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"},"background.enabled":{type:"boolean",default:!1,description:"启用自定义背景",icon:"mdi-image"},"background.url":{type:"string",default:"",description:"背景图片地址",icon:"mdi-link"},"background.imageData":{type:"string",default:"",description:"本地背景图片(Base64)",icon:"mdi-image-area"},"background.blur":{type:"number",default:10,validate:e=>e>=0&&e<=50,description:"毛玻璃模糊幅度(px)",icon:"mdi-blur"},"background.opacity":{type:"number",default:30,validate:e=>e>=0&&e<=80,description:"遮罩暗色程度(%)",icon:"mdi-circle-half-full"},"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 ms{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(Yt):null;t&&(this.settingsCache=JSON.parse(t))}catch(t){console.error("加载设置失败:",t)}for(const[t,n]of Object.entries(Re))t in this.settingsCache||(this.settingsCache[t]=n.default);return this.settingsCache}saveSettings(){if(!(typeof localStorage>"u"))try{localStorage.setItem(Yt,JSON.stringify(this.settingsCache))}catch(t){console.error("保存设置失败:",t)}}getSetting(t){this.isInitialized||this.init();const n=Re[t];if(!n)return console.warn(`未定义的设置项: ${t}`),null;if(n.requireDeveloper&&!this.settingsCache["developer.enabled"])return n.default;if(this.settingsCache["server.provider"]==="classworkscloud"&&ea[t]!==void 0)return ea[t];const a=this.settingsCache[t];return a!==void 0?a:n.default}setSetting(t,n){this.isInitialized||this.init();const a=Re[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),typeof window<"u"&&window.dispatchEvent(new CustomEvent(_t,{detail:{key:t,value: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=Re[t];if(!n){console.warn(`未定义的设置项: ${t}`);return}this.settingsCache[t]=n.default,this.saveSettings(),typeof window<"u"&&window.dispatchEvent(new CustomEvent(_t,{detail:{key:t,value:n.default}}))}resetAllSettings(){this.settingsCache={};for(const[t,n]of Object.entries(Re))this.settingsCache[t]=n.default;this.saveSettings()}watchSettings(t){if(typeof window>"u")return()=>{};const n=i=>{i.key===Yt&&(this.settingsCache=JSON.parse(i.newValue),t(this.settingsCache,null))},a=i=>{t(this.settingsCache,i)};return window.addEventListener("storage",n),window.addEventListener(_t,a),()=>{window.removeEventListener("storage",n),window.removeEventListener(_t,a)}}getSettingDefinition(t){return Re[t]||null}exportSettingsAsKeyValue(){this.isInitialized||this.init();const t={};for(const n in Re)t[n]=this.getSetting(n);return t}}const Te=new ms;typeof window<"u"&&Te.init();const Ie=e=>Te.getSetting(e),gs=(e,t)=>Te.setSetting(e,t),ys=e=>Te.resetSetting(e),hs=()=>Te.resetAllSettings(),Pa=e=>Te.watchSettings(e),bs=e=>Te.getSettingDefinition(e),ps=()=>Te.exportSettingsAsKeyValue(),zl=Object.freeze(Object.defineProperty({__proto__:null,SettingsManager:Te,exportSettingsAsKeyValue:ps,getSetting:Ie,getSettingDefinition:bs,requestNotificationPermission:fs,requestPersistentStorage:vs,resetAllSettings:hs,resetSetting:ys,setSetting:gs,settingsDefinitions:Re,watchSettings:Pa},Symbol.toStringTag,{value:"Module"}));class Ss{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 Pt=new Ss,we=[];let At=null,Se=null;const ct={SUCCESS:"success",ERROR:"error",INFO:"info",WARNING:"warning"},ws={timeout:3e3,showSnackbar:!0,addToLog:!0};async function xt(e,t,n="",a={}){const i={...ws,...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 Pt.addLog(s),we.unshift(s);we.length>Ie("message.maxActiveMessages");)we.pop();Se==null||Se(we)}catch(o){console.error("保存日志失败:",o)}return i.showSnackbar&&(At==null||At(s)),s}function ks(e,t){let n=null;return function(...a){n&&clearTimeout(n),n=setTimeout(()=>{e.apply(this,a)},t)}}const Xe={install:e=>{e.config.globalProperties.$message={success:(t,n,a)=>xt(ct.SUCCESS,t,n,a),error:(t,n,a)=>xt(ct.ERROR,t,n,a),info:(t,n,a)=>xt(ct.INFO,t,n,a),warning:(t,n,a)=>xt(ct.WARNING,t,n,a)}},onSnackbar:e=>{At=e},onLog:e=>{Se=e},getMessages:async()=>{try{return await Pt.getLogs()}catch(e){return console.error("获取日志失败:",e),[...we]}},clearMessages:async()=>{try{await Pt.clearLogs(),we.length=0,Se==null||Se(we)}catch(e){console.error("清除日志失败:",e)}},MessageType:ct,markAsRead:()=>{},deleteMessage:async e=>{try{await Pt.deleteLog(e);const t=we.findIndex(n=>n.id===e);t!==-1&&we.splice(t,1),Se==null||Se(we)}catch(t){console.error("删除消息失败:",t)}},getUnreadCount:()=>0,debounce:ks},Aa=(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 ot(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return{borderClasses:C(()=>{const a=e.border;return a===!0||a===""?`${t}--border`:typeof a=="string"||a===0?String(a).split(" ").map(i=>`border-${i}`):[]})}}const Cs=[null,"default","comfortable","compact"],Ge=T({density:{type:String,default:"default",validator:e=>Cs.includes(e)}},"density");function lt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();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 pt(e){return{elevationClasses:k(()=>{const n=rn(e)?e.value:e.elevation;return n==null?[]:[`elevation-${n}`]})}}const Oe=T({rounded:{type:[Boolean,Number,String],default:void 0},tile:Boolean},"rounded");function Be(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return{roundedClasses:C(()=>{const a=rn(e)?e.value:e.rounded,i=rn(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 o of String(a).split(" "))s.push(`rounded-${o}`);return s})}}const le=T({tag:{type:[String,Object,Function],default:"div"}},"tag");function Vn(e){return bn(()=>{const{class:t,style:n}=xs(e);return{colorClasses:t,colorStyles:n}})}function tt(e){const{colorClasses:t,colorStyles:n}=Vn(()=>({text:se(e)}));return{textColorClasses:t,textColorStyles:n}}function Qe(e){const{colorClasses:t,colorStyles:n}=Vn(()=>({background:se(e)}));return{backgroundColorClasses:t,backgroundColorStyles:n}}function _s(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 xs(e){const t=_s(se(e)),n=[],a={};if(t.background)if(jn(t.background)){if(a.backgroundColor=t.background,!t.text&&pi(t.background)){const i=Si(t.background);if(i.a==null||i.a===1){const s=wi(i);a.color=s,a.caretColor=s}}}else n.push(`bg-${t.background}`);return t.text&&(jn(t.text)?(a.color=t.text,a.caretColor=t.text):n.push(`text-${t.text}`)),{class:n,style:a}}const Es=["elevated","flat","tonal","outlined","text","plain"];function St(e,t){return I(Ve,null,[e&&I("span",{key:"overlay",class:j(`${t}__overlay`)},null),I("span",{key:"underlay",class:j(`${t}__underlay`)},null)])}const Ue=T({color:String,variant:{type:String,default:"elevated",validator:e=>Es.includes(e)}},"variant");function wt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();const n=k(()=>{const{variant:s}=se(e);return`${t}--variant-${s}`}),{colorClasses:a,colorStyles:i}=Vn(()=>{const{variant:s,color:o}=se(e);return{[["elevated","flat"].includes(s)?"background":"text"]:o}});return{colorClasses:a,colorStyles:i,variantClasses:n}}const Va=T({baseColor:String,divided:Boolean,direction:{type:String,default:"horizontal"},...st(),...ee(),...Ge(),...bt(),...Oe(),...le(),...fe(),...Ue()},"VBtnGroup"),ta=G()({name:"VBtnGroup",props:Va(),setup(e,t){let{slots:n}=t;const{themeClasses:a}=ye(e),{densityClasses:i}=lt(e),{borderClasses:s}=ot(e),{elevationClasses:o}=pt(e),{roundedClasses:l}=Be(e);Ft({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)}}),Z(()=>S(e.tag,{class:j(["v-btn-group",`v-btn-group--${e.direction}`,{"v-btn-group--divided":e.divided},a.value,s.value,i.value,o.value,l.value,e.class]),style:X(e.style)},n))}}),Is=T({modelValue:{type:null,default:void 0},multiple:Boolean,mandatory:[Boolean,String],max:Number,selectedClass:String,disabled:Boolean},"group"),Ps=T({value:null,disabled:Boolean,selectedClass:String},"group-item");function As(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;const a=Ee("useGroupItem");if(!a)throw new Error("[Vuetify] useGroupItem composable must be used inside a component setup function");const i=Cn();He(Symbol.for(`${t.description}:id`),i);const s=Le(t,null);if(!s){if(!n)return s;throw new Error(`[Vuetify] Could not find useGroup injection with symbol ${t.description}`)}const o=k(()=>e.value),l=C(()=>!!(s.disabled.value||e.disabled));function r(){s==null||s.register({id:i,value:o,disabled:l},a)}function u(){s==null||s.unregister(i)}r(),je(()=>u());const c=C(()=>s.isSelected(i)),m=C(()=>s.items.value[0].id===i),v=C(()=>s.items.value[s.items.value.length-1].id===i),d=C(()=>c.value&&[s.selectedClass.value,e.selectedClass]);return W(c,g=>{a.emit("group:selected",{value:g})},{flush:"sync"}),{id:i,isSelected:c,isFirst:m,isLast:v,toggle:()=>s.select(i,!c.value),select:g=>s.select(i,g),selectedClass:d,value:o,disabled:l,group:s,register:r,unregister:u}}function Vs(e,t){let n=!1;const a=vt([]),i=Pe(e,"modelValue",[],v=>v===void 0?[]:La(a,v===null?[null]:pn(v)),v=>{const d=Ts(a,v);return e.multiple?d:d[0]}),s=Ee("useGroup");function o(v,d){const g=v,f=Symbol.for(`${t.description}:id`),b=ki(f,s==null?void 0:s.vnode).indexOf(d);Yi(g.value)===void 0&&(g.value=b,g.useIndexAsValue=!0),b>-1?a.splice(b,0,g):a.push(g)}function l(v){if(n)return;r();const d=a.findIndex(g=>g.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}),Xi(()=>{for(let v=0;vf.id===v);if(!(d&&(g!=null&&g.disabled)))if(e.multiple){const f=i.value.slice(),p=f.findIndex(x=>x===v),b=~p;if(d=d??!b,b&&e.mandatory&&f.length<=1||!b&&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],g=a.findIndex(b=>b.id===d);let f=(g+v)%a.length,p=a[f];for(;p.disabled&&f!==g;)f=(f+v)%a.length,p=a[f];if(p.disabled)return;i.value=[a[f].id]}else{const d=a.find(g=>!g.disabled);d&&(i.value=[d.id])}}const m={register:o,unregister:l,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=>Ls(a,v)};return He(t,m),m}function Ls(e,t){const n=La(e,[t]);return n.length?e.findIndex(a=>a.id===n[0]):-1}function La(e,t){const n=[];return t.forEach(a=>{const i=e.find(o=>Je(a,o.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 Ts(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 Ta=Symbol.for("vuetify:v-btn-toggle"),Os=T({...Va(),...Is()},"VBtnToggle"),Wl=G()({name:"VBtnToggle",props:Os(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const{isSelected:a,next:i,prev:s,select:o,selected:l}=Vs(e,Ta);return Z(()=>{const r=ta.filterProps(e);return S(ta,Q({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:o,selected:l})]}})}),{next:i,prev:s,select:o}}}),Bs=T({defaults:Object,disabled:Boolean,reset:[Number,String],root:[Boolean,String],scoped:Boolean},"VDefaultsProvider"),ge=G(!1)({name:"VDefaultsProvider",props:Bs(),setup(e,t){let{slots:n}=t;const{defaults:a,disabled:i,reset:s,root:o,scoped:l}=Ji(e);return Ft(a,{reset:s,root:o,scoped:l,disabled:i}),()=>{var r;return(r=n.default)==null?void 0:r.call(n)}}}),Rs=["x-small","small","default","large","x-large"],Wt=T({size:{type:[String,Number],default:"default"}},"size");function qt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return bn(()=>{const n=e.size;let a,i;return Ci(Rs,n)?a=`${t}--size-${n}`:n&&(i={width:B(n),height:B(n)}),{sizeClasses:a,sizeStyles:i}})}const Ns=T({color:String,disabled:Boolean,start:Boolean,end:Boolean,icon:oe,opacity:[String,Number],...ee(),...Wt(),...le({tag:"i"}),...fe()},"VIcon"),xe=G()({name:"VIcon",props:Ns(),setup(e,t){let{attrs:n,slots:a}=t;const i=z(),{themeClasses:s}=Sa(),{iconData:o}=_i(()=>i.value||e.icon),{sizeClasses:l}=qt(e),{textColorClasses:r,textColorStyles:u}=tt(()=>e.color);return Z(()=>{var v,d;const c=(v=a.default)==null?void 0:v.call(a);c&&(i.value=(d=xi(c).filter(g=>g.type===Qi&&g.children&&typeof g.children=="string")[0])==null?void 0:d.children);const m=!!(n.onClick||n.onClickOnce);return S(o.value.component,{tag:e.tag,icon:o.value.icon,class:j(["v-icon","notranslate",s.value,l.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:X([{"--v-icon-opacity":e.opacity},l.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 Oa(e,t){const n=M(),a=z(!1);if(Sn){const i=new IntersectionObserver(s=>{a.value=!!s.find(o=>o.isIntersecting)},t);ve(()=>{i.disconnect()}),W(n,(s,o)=>{o&&(i.unobserve(o),a.value=!1),s&&i.observe(s)},{flush:"post"})}return{intersectionRef:n,isIntersecting:a}}const $s=T({reveal:{type:[Boolean,Object],default:!1}},"reveal");function Ds(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 Ms=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(),...$s(),...Wt(),...le({tag:"div"}),...fe()},"VProgressCircular"),Fs=G()({name:"VProgressCircular",props:Ms(),setup(e,t){let{slots:n}=t;const a=20,i=2*Math.PI*a,s=M(),{themeClasses:o}=ye(e),{sizeClasses:l,sizeStyles:r}=qt(e),{textColorClasses:u,textColorStyles:c}=tt(()=>e.color),{textColorClasses:m,textColorStyles:v}=tt(()=>e.bgColor),{intersectionRef:d,isIntersecting:g}=Oa(),{resizeRef:f,contentRect:p}=wa(),{state:b,duration:x}=Ds(e),L=k(()=>b.value==="initial"?0:et(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)),_=k(()=>a/(1-w.value/h.value)*2),E=k(()=>w.value/h.value*_.value),y=k(()=>{const F=(100-L.value)/100*i;return e.rounded&&L.value>0&&L.value<100?B(Math.min(i-.01,F+E.value)):B(F)}),R=C(()=>{const F=Number(e.rotate);return e.rounded?F+E.value/2/i*360:F});return Ne(()=>{d.value=s.value,f.value=s.value}),Z(()=>S(e.tag,{ref:s,class:j(["v-progress-circular",{"v-progress-circular--indeterminate":!!e.indeterminate,"v-progress-circular--visible":g.value,"v-progress-circular--disable-shrink":e.indeterminate&&(e.indeterminate==="disable-shrink"||Tt()),"v-progress-circular--revealing":["initial","pending"].includes(b.value)},o.value,l.value,u.value,e.class]),style:X([r.value,c.value,{"--progress-reveal-duration":`${x.value}ms`},e.style]),role:"progressbar","aria-valuemin":"0","aria-valuemax":"100","aria-valuenow":e.indeterminate?void 0:L.value},{default:()=>[I("svg",{style:{transform:`rotate(calc(-90deg + ${R.value}deg))`},xmlns:"http://www.w3.org/2000/svg",viewBox:`0 0 ${_.value} ${_.value}`},[I("circle",{class:j(["v-progress-circular__underlay",m.value]),style:X(v.value),fill:"transparent",cx:"50%",cy:"50%",r:a,"stroke-width":E.value,"stroke-dasharray":i,"stroke-dashoffset":0},null),I("circle",{class:"v-progress-circular__overlay",fill:"transparent",cx:"50%",cy:"50%",r:a,"stroke-width":E.value,"stroke-dasharray":i,"stroke-dashoffset":y.value,"stroke-linecap":e.rounded?"round":void 0},null)]),n.default&&I("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:C(()=>{const n={},a=B(e.height),i=B(e.maxHeight),s=B(e.maxWidth),o=B(e.minHeight),l=B(e.minWidth),r=B(e.width);return a!=null&&(n.height=a),i!=null&&(n.maxHeight=i),s!=null&&(n.maxWidth=s),o!=null&&(n.minHeight=o),l!=null&&(n.minWidth=l),r!=null&&(n.width=r),n})}}const na={center:"center",top:"bottom",bottom:"top",left:"right",right:"left"},Ht=T({location:String},"location");function Ln(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2?arguments[2]:void 0;const{isRtl:a}=zt();return{locationStyles:C(()=>{if(!e.location)return{};const{side:s,align:o}=an(e.location.split(" ").length>1?e.location:`${e.location} center`,a.value);function l(u){return n?n(u):0}const r={};return s!=="center"&&(t?r[na[s]]=`calc(100% - ${l(s)}px)`:r[s]=0),o!=="center"?t?r[na[o]]=`calc(100% - ${l(o)}px)`:r[o]=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 zs=T({chunkCount:{type:[Number,String],default:null},chunkWidth:{type:[Number,String],default:null},chunkGap:{type:[Number,String],default:4}},"chunks");function Ws(e,t){const n=k(()=>!!e.chunkCount||!!e.chunkWidth),a=C(()=>{const l=se(t);if(!l)return 0;if(!e.chunkCount)return Number(e.chunkWidth);const r=Number(e.chunkCount);return(l-Number(e.chunkGap)*(r-1))/r}),i=k(()=>Number(e.chunkGap)),s=C(()=>{if(!n.value)return{};const l=B(i.value),r=B(a.value);return{maskRepeat:"repeat-x",maskImage:`linear-gradient(90deg, #000, #000 ${r}, transparent ${r}, transparent)`,maskSize:`calc(${r} + ${l}) 100%`}});function o(l){const r=se(t);if(!r)return l;const u=100*i.value/r,c=100*(a.value+i.value)/r,m=Math.floor((l+u)/c+1e-9);return et(m*c-u/2,0,100)}return{hasChunks:n,chunksMaskStyles:s,snapValueToChunk:o}}const qs=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,...zs(),...ee(),...Ht({location:"top"}),...Oe(),...le(),...fe()},"VProgressLinear"),Ba=G()({name:"VProgressLinear",props:qs(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const a=M(),i=Pe(e,"modelValue"),{isRtl:s,rtlClasses:o}=zt(),{themeClasses:l}=ye(e),{locationStyles:r}=Ln(e),{textColorClasses:u,textColorStyles:c}=tt(()=>e.color),{backgroundColorClasses:m,backgroundColorStyles:v}=Qe(()=>e.bgColor||e.color),{backgroundColorClasses:d,backgroundColorStyles:g}=Qe(()=>e.bufferColor||e.bgColor||e.color),{backgroundColorClasses:f,backgroundColorStyles:p}=Qe(()=>e.color),{roundedClasses:b}=Be(e),{intersectionRef:x,isIntersecting:L}=Oa(),w=C(()=>parseFloat(e.max)),h=C(()=>parseFloat(e.height)),_=C(()=>et(parseFloat(e.bufferValue)/w.value*100,0,100)),E=C(()=>et(parseFloat(i.value)/w.value*100,0,100)),y=C(()=>s.value!==e.reverse),R=C(()=>e.indeterminate?"fade-transition":"slide-x-transition"),F=z(0),{hasChunks:A,chunksMaskStyles:V,snapValueToChunk:P}=Ws(e,F);ht(A,()=>{const{resizeRef:Y}=wa(te=>F.value=te[0].contentRect.width);Ne(()=>Y.value=a.value)});const N=C(()=>A.value?P(_.value):_.value),O=C(()=>A.value?P(E.value):E.value);function U(Y){if(!x.value)return;const{left:te,right:he,width:K}=x.value.getBoundingClientRect(),$=y.value?K-Y.clientX+(he-K):Y.clientX-te;i.value=Math.round($/K*w.value)}return Ne(()=>{x.value=a.value}),Z(()=>S(e.tag,{ref:a,class:j(["v-progress-linear",{"v-progress-linear--absolute":e.absolute,"v-progress-linear--active":e.active&&L.value,"v-progress-linear--reverse":y.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},b.value,l.value,o.value,e.class]),style:X([{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&&I("div",{key:"stream",class:j(["v-progress-linear__stream",u.value]),style:{...c.value,[y.value?"left":"right"]:B(-h.value),borderTop:`${B(h.value/2)} dotted`,opacity:e.bufferOpacity!=null?parseFloat(e.bufferOpacity):void 0,top:`calc(50% - ${B(h.value/4)})`,width:B(100-_.value,"%"),"--v-progress-linear-stream-to":B(h.value*(y.value?1:-1))}},null),I("div",{class:j(["v-progress-linear__background",m.value]),style:X([v.value,{opacity:e.bgOpacity!=null?parseFloat(e.bgOpacity):void 0,width:e.stream?0:void 0}])},null),I("div",{class:j(["v-progress-linear__buffer",d.value]),style:X([g.value,{opacity:e.bufferOpacity!=null?parseFloat(e.bufferOpacity):void 0,width:B(N.value,"%")}])},null),S($e,{name:R.value},{default:()=>[e.indeterminate?I("div",{class:"v-progress-linear__indeterminate"},[["long","short"].map(Y=>I("div",{key:Y,class:j(["v-progress-linear__indeterminate",Y,f.value]),style:X(p.value)},null))]):I("div",{class:j(["v-progress-linear__determinate",f.value]),style:X([p.value,{width:B(O.value,"%")}])},null)]}),n.default&&I("div",{class:"v-progress-linear__content"},[n.default({value:E.value,buffer:_.value})])]})),{}}}),Ra=T({loading:[Boolean,String]},"loader");function Na(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return{loaderClasses:k(()=>({[`${t}--loading`]:e.loading}))}}function Hs(e,t){var a;let{slots:n}=t;return I("div",{class:j(`${e.name}__loader`)},[((a=n.default)==null?void 0:a.call(n,{color:e.color,isActive:e.active}))||S(Ba,{absolute:e.absolute,active:e.active,color:e.color,height:"2",indeterminate:!0},null)])}const js=["static","relative","fixed","absolute","sticky"],Tn=T({position:{type:String,validator:e=>js.includes(e)}},"position");function On(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:qe();return{positionClasses:k(()=>e.position?`${t}--${e.position}`:void 0)}}function Gs(){const e=Ee("useRoute");return C(()=>{var t;return(t=e==null?void 0:e.proxy)==null?void 0:t.$route})}function Us(){var e,t;return(t=(e=Ee("useRouter"))==null?void 0:e.proxy)==null?void 0:t.$router}function Bn(e,t){const n=xa("RouterLink"),a=k(()=>!!(e.href||e.to)),i=C(()=>(a==null?void 0:a.value)||Gn(t,"click")||Gn(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)}),o=C(()=>e.to?s:void 0),l=Gs(),r=C(()=>{var m,v,d;return o.value?e.exact?l.value?((d=o.value.isExactActive)==null?void 0:d.value)&&Je(o.value.route.value.query,l.value.query):((v=o.value.isExactActive)==null?void 0:v.value)??!1:((m=o.value.isActive)==null?void 0:m.value)??!1:!1}),u=C(()=>{var m;return e.to?(m=o.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=o.value)==null?void 0:m.route.value}),navigate:k(()=>{var m;return(m=o.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 Rn=T({href:String,replace:Boolean,to:[String,Object],exact:Boolean},"router");let Jt=!1;function Ks(e,t){let n=!1,a,i;Ae&&(e!=null&&e.beforeEach)&&(de(()=>{window.addEventListener("popstate",s),a=e.beforeEach(()=>Jt?n?t():void 0:(Jt=!0,new Promise(o=>{setTimeout(()=>o(n?t():void 0))}))),i=e==null?void 0:e.afterEach(()=>{Jt=!1})}),ve(()=>{window.removeEventListener("popstate",s),a==null||a(),i==null||i()}));function s(o){var l;(l=o.state)!=null&&l.replaced||(n=!0,setTimeout(()=>n=!1))}}function Xs(e,t){W(()=>{var n;return(n=e.isActive)==null?void 0:n.value},n=>{e.isLink.value&&n!=null&&t&&de(()=>{t(n)})},{immediate:!0})}const un=Symbol("rippleStop"),Ys=80;function aa(e,t){e.style.transform=t,e.style.webkitTransform=t}function cn(e){return e.constructor.name==="TouchEvent"}function $a(e){return e.constructor.name==="KeyboardEvent"}const Js=function(e,t){var m;let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=0,i=0;if(!$a(e)){const v=new Et(t),d=cn(e)?e.touches[e.touches.length-1]:e,g=wn([d.clientX,d.clientY]);a=g.x-v.left,i=g.y-v.top}let s=0,o=.3;(m=t._ripple)!=null&&m.circle?(o=.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 l=`${(t.clientWidth-s*2)/2}px`,r=`${(t.clientHeight-s*2)/2}px`,u=n.center?l:`${a-s}px`,c=n.center?r:`${i-s}px`;return{radius:s,scale:o,x:u,y:c,centerX:l,centerY:r}},Rt={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:o,x:l,y:r,centerX:u,centerY:c}=Js(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"),aa(i,`translate(${l}, ${r}) scale3d(${o},${o},${o})`),i.dataset.activated=String(performance.now()),requestAnimationFrame(()=>{requestAnimationFrame(()=>{i.classList.remove("v-ripple__animation--enter"),i.classList.add("v-ripple__animation--in"),aa(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(o=>!o.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 l;e.getElementsByClassName("v-ripple__animation").length===1&&e.dataset.previousPosition&&(e.style.position=e.dataset.previousPosition,delete e.dataset.previousPosition),((l=n.parentNode)==null?void 0:l.parentNode)===e&&e.removeChild(n.parentNode)},300)},i)}};function Da(e){return typeof e>"u"||!!e}function mt(e){const t={},n=e.currentTarget;if(!(!(n!=null&&n._ripple)||n._ripple.touched||e[un])){if(e[un]=!0,cn(e))n._ripple.touched=!0,n._ripple.isTouch=!0;else if(n._ripple.isTouch)return;if(t.center=n._ripple.centered||$a(e),n._ripple.class&&(t.class=n._ripple.class),cn(e)){if(n._ripple.showTimerCommit)return;n._ripple.showTimerCommit=()=>{Rt.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)},Ys)}else Rt.show(e,n,t)}}function Nt(e){e[un]=!0}function ce(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(()=>{ce(e)});return}window.setTimeout(()=>{t._ripple&&(t._ripple.touched=!1)}),Rt.hide(t)}}function Ma(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 Qs(e,t){!gt&&t.includes(e.key)&&(gt=!0,mt(e))}function Fa(e){gt=!1,ce(e)}function za(e){gt&&(gt=!1,ce(e))}function Wa(e,t,n){const{value:a,modifiers:i}=t,s=Da(a);s||Rt.hide(e),e._ripple=e._ripple??{},e._ripple.enabled=s,e._ripple.centered=i.center,e._ripple.circle=i.circle;const o=sn(a)?a:{};o.class&&(e._ripple.class=o.class);const l=o.keys??["Enter","Space"];if(e._ripple.keyDownHandler=r=>Qs(r,l),s&&!n){if(i.stop){e.addEventListener("touchstart",Nt,{passive:!0}),e.addEventListener("mousedown",Nt);return}e.addEventListener("touchstart",mt,{passive:!0}),e.addEventListener("touchend",ce,{passive:!0}),e.addEventListener("touchmove",Ma,{passive:!0}),e.addEventListener("touchcancel",ce),e.addEventListener("mousedown",mt),e.addEventListener("mouseup",ce),e.addEventListener("mouseleave",ce),e.addEventListener("keydown",e._ripple.keyDownHandler),e.addEventListener("keyup",Fa),e.addEventListener("blur",za),e.addEventListener("dragstart",ce,{passive:!0})}else!s&&n&&qa(e)}function qa(e){var t;e.removeEventListener("touchstart",Nt),e.removeEventListener("mousedown",Nt),e.removeEventListener("touchstart",mt),e.removeEventListener("touchend",ce),e.removeEventListener("touchmove",Ma),e.removeEventListener("touchcancel",ce),e.removeEventListener("mousedown",mt),e.removeEventListener("mouseup",ce),e.removeEventListener("mouseleave",ce),(t=e._ripple)!=null&&t.keyDownHandler&&e.removeEventListener("keydown",e._ripple.keyDownHandler),e.removeEventListener("keyup",Fa),e.removeEventListener("blur",za),e.removeEventListener("dragstart",ce)}function Zs(e,t){Wa(e,t,!1)}function eo(e){qa(e),delete e._ripple}function to(e,t){if(t.value===t.oldValue)return;const n=Da(t.oldValue);Wa(e,t,n)}const yt={mounted:Zs,unmounted:eo,updated:to},no=T({active:{type:Boolean,default:void 0},activeColor:String,baseColor:String,symbol:{type:null,default:Ta},flat:Boolean,icon:[Boolean,String,Function,Object],prependIcon:oe,appendIcon:oe,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(),...Ge(),...rt(),...bt(),...Ps(),...Ra(),...Ht(),...Tn(),...Oe(),...Rn(),...Wt(),...le({tag:"button"}),...fe(),...Ue({variant:"elevated"})},"VBtn"),Ha=G()({name:"VBtn",props:no(),emits:{"group:selected":e=>!0},setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{borderClasses:s}=ot(e),{densityClasses:o}=lt(e),{dimensionStyles:l}=ut(e),{elevationClasses:r}=pt(e),{loaderClasses:u}=Na(e),{locationStyles:c}=Ln(e),{positionClasses:m}=On(e),{roundedClasses:v}=Be(e),{sizeClasses:d,sizeStyles:g}=qt(e),f=As(e,e.symbol,!1),p=Bn(e,n),b=C(()=>{var A;return e.active!==void 0?e.active:p.isRouterLink.value?(A=p.isActive)==null?void 0:A.value:f==null?void 0:f.isSelected.value}),x=k(()=>b.value?e.activeColor??e.color:e.color),L=C(()=>{var V,P;return{color:(f==null?void 0:f.isSelected.value)&&(!p.isLink.value||((V=p.isActive)==null?void 0:V.value))||!f||((P=p.isActive)==null?void 0:P.value)?x.value??e.baseColor:e.baseColor,variant:e.variant}}),{colorClasses:w,colorStyles:h,variantClasses:_}=wt(L),E=C(()=>(f==null?void 0:f.disabled.value)||e.disabled),y=k(()=>e.variant==="elevated"&&!(e.disabled||e.flat||e.border)),R=C(()=>{if(!(e.value===void 0||typeof e.value=="symbol"))return Object(e.value)===e.value?JSON.stringify(e.value,null,0):e.value});function F(A){var V,P;E.value||p.isLink.value&&(A.metaKey||A.ctrlKey||A.shiftKey||A.button!==0||n.target==="_blank")||(p.isRouterLink.value?(P=(V=p.navigate).value)==null||P.call(V,A):f==null||f.toggle())}return Xs(p,f==null?void 0:f.select),Z(()=>{const A=p.isLink.value?"a":e.tag,V=!!(e.prependIcon||a.prepend),P=!!(e.appendIcon||a.append),N=!!(e.icon&&e.icon!==!0);return We(S(A,Q(p.linkProps,{type:A==="a"?void 0:"button",class:["v-btn",f==null?void 0:f.selectedClass.value,{"v-btn--active":b.value,"v-btn--block":e.block,"v-btn--disabled":E.value,"v-btn--elevated":y.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,o.value,r.value,u.value,m.value,v.value,d.value,_.value,e.class],style:[h.value,l.value,c.value,g.value,e.style],"aria-busy":e.loading?!0:void 0,disabled:E.value&&A!=="a"||void 0,tabindex:e.loading||e.readonly?-1:void 0,onClick:F,value:R.value}),{default:()=>{var O;return[St(!0,"v-btn"),!e.icon&&V&&I("span",{key:"prepend",class:"v-btn__prepend"},[a.prepend?S(ge,{key:"prepend-defaults",disabled:!e.prependIcon,defaults:{VIcon:{icon:e.prependIcon}}},a.prepend):S(xe,{key:"prepend-icon",icon:e.prependIcon},null)]),I("span",{class:"v-btn__content","data-no-activator":""},[!a.default&&N?S(xe,{key:"content-icon",icon:e.icon},null):S(ge,{key:"content-defaults",disabled:!N,defaults:{VIcon:{icon:e.icon}}},{default:()=>{var U;return[((U=a.default)==null?void 0:U.call(a))??_e(e.text)]}})]),!e.icon&&P&&I("span",{key:"append",class:"v-btn__append"},[a.append?S(ge,{key:"append-defaults",disabled:!e.appendIcon,defaults:{VIcon:{icon:e.appendIcon}}},a.append):S(xe,{key:"append-icon",icon:e.appendIcon},null)]),!!e.loading&&I("span",{key:"loader",class:"v-btn__loader"},[((O=a.loader)==null?void 0:O.call(a))??S(Fs,{color:typeof e.loading=="boolean"?void 0:e.loading,indeterminate:!0,width:"2"},null)])]}}),[[yt,!E.value&&e.ripple,"",{center:!!e.icon}]])}),{group:f}}});function Qt(e,t){return{x:e.x+t.x,y:e.y+t.y}}function ao(e,t){return{x:e.x-t.x,y:e.y-t.y}}function ia(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 Qt({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 Qt({x:i,y:s},t)}return Qt({x:t.width/2,y:t.height/2},t)}const ja={static:oo,connected:ro},io=T({locationStrategy:{type:[String,Function],default:"static",validator:e=>typeof e=="function"||e in ja},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 so(e,t){const n=M({}),a=M();Ae&&ht(()=>!!(t.isActive.value&&e.locationStrategy),l=>{var r,u;W(()=>e.locationStrategy,l),ve(()=>{window.removeEventListener("resize",i),visualViewport==null||visualViewport.removeEventListener("resize",s),visualViewport==null||visualViewport.removeEventListener("scroll",o),a.value=void 0}),window.addEventListener("resize",i,{passive:!0}),visualViewport==null||visualViewport.addEventListener("resize",s,{passive:!0}),visualViewport==null||visualViewport.addEventListener("scroll",o,{passive:!0}),typeof e.locationStrategy=="function"?a.value=(r=e.locationStrategy(t,e,n))==null?void 0:r.updateLocation:a.value=(u=ja[e.locationStrategy](t,e,n))==null?void 0:u.updateLocation});function i(l){var r;(r=a.value)==null||r.call(a,l)}function s(l){var r;(r=a.value)==null||r.call(a,l)}function o(l){var r;(r=a.value)==null||r.call(a,l)}return{contentStyles:n,updateLocation:a}}function oo(){}function lo(e,t){const n=ka(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 ro(e,t,n){(Array.isArray(e.target.value)||Ei(e.target.value))&&Object.assign(n.value,{position:"fixed",top:0,[e.isRtl.value?"right":"left"]:0});const{preferredAnchor:i,preferredOrigin:s}=bn(()=>{const b=an(t.location,e.isRtl.value),x=t.origin==="overlap"?b:t.origin==="auto"?Xt(b):an(t.origin,e.isRtl.value);return b.side===x.side&&b.align===Kt(x).align?{preferredAnchor:Xn(b),preferredOrigin:Xn(x)}:{preferredAnchor:b,preferredOrigin:x}}),[o,l,r,u]=["minWidth","minHeight","maxWidth","maxHeight"].map(b=>C(()=>{const x=parseFloat(t[b]);return isNaN(x)?1/0:x})),c=C(()=>{if(Array.isArray(t.offset))return t.offset;if(typeof t.offset=="string"){const b=t.offset.split(" ").map(parseFloat);return b.length<2&&b.push(0),b}return typeof t.offset=="number"?[t.offset,0]:[0,0]});let m=!1,v=-1;const d=new Ii(4),g=new ResizeObserver(()=>{if(!m)return;if(requestAnimationFrame(x=>{x!==v&&d.clear(),requestAnimationFrame(L=>{v=L})}),d.isFull){const x=d.values();if(Je(x.at(-1),x.at(-3))&&!Je(x.at(-1),x.at(-2)))return}const b=p();b&&d.push(b.flipped)});let f=new Et({x:0,y:0,width:0,height:0});W(e.target,(b,x)=>{x&&!Array.isArray(x)&&g.unobserve(x),Array.isArray(b)?Je(b,x)||p():b&&g.observe(b)},{immediate:!0}),W(e.contentEl,(b,x)=>{x&&g.unobserve(x),b&&g.observe(b)},{immediate:!0}),ve(()=>{g.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=wn(e.target.value));const b=lo(e.contentEl.value,e.isRtl.value),x=Ot(e.contentEl.value),L=Number(t.viewportMargin);x.length||(x.push(document.documentElement),e.contentEl.value.style.top&&e.contentEl.value.style.left||(b.x-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-x")||0),b.y-=parseFloat(document.documentElement.style.getPropertyValue("--v-body-scroll-y")||0)));const w=x.reduce((P,N)=>{const O=Pi(N);return P?new Et({x:Math.max(P.left,O.left),y:Math.max(P.top,O.top),width:Math.min(P.right,O.right)-Math.max(P.left,O.left),height:Math.min(P.bottom,O.bottom)-Math.max(P.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 _(P){const N=new Et(b),O=ia(P.anchor,f),U=ia(P.origin,N);let{x:Y,y:te}=ao(O,U);switch(P.anchor.side){case"top":te-=c.value[0];break;case"bottom":te+=c.value[0];break;case"left":Y-=c.value[0];break;case"right":Y+=c.value[0];break}switch(P.anchor.align){case"top":te-=c.value[1];break;case"bottom":te+=c.value[1];break;case"left":Y-=c.value[1];break;case"right":Y+=c.value[1];break}return N.x+=Y,N.y+=te,N.width=Math.min(N.width,r.value),N.height=Math.min(N.height,u.value),{overflows:Kn(N,w),x:Y,y:te}}let E=0,y=0;const R={x:0,y:0},F={x:!1,y:!1};let A=-1;for(;!(A++>10);){const{x:P,y:N,overflows:O}=_(h);E+=P,y+=N,b.x+=P,b.y+=N;{const U=Un(h.anchor),Y=O.x.before||O.x.after,te=O.y.before||O.y.after;let he=!1;if(["x","y"].forEach(K=>{if(K==="x"&&Y&&!F.x||K==="y"&&te&&!F.y){const $={anchor:{...h.anchor},origin:{...h.origin}},J=K==="x"?U==="y"?Kt:Xt:U==="y"?Xt:Kt;$.anchor=J($.anchor),$.origin=J($.origin);const{overflows:q}=_($);(q[K].before<=O[K].before&&q[K].after<=O[K].after||q[K].before+q[K].after<(O[K].before+O[K].after)/2)&&(h=$,he=F[K]=!0)}}),he)continue}O.x.before&&(E+=O.x.before,b.x+=O.x.before),O.x.after&&(E-=O.x.after,b.x-=O.x.after),O.y.before&&(y+=O.y.before,b.y+=O.y.before),O.y.after&&(y-=O.y.after,b.y-=O.y.after);{const U=Kn(b,w);R.x=w.width-U.x.before-U.x.after,R.y=w.height-U.y.before-U.y.after,E+=U.x.before,b.x+=U.x.before,y+=U.y.before,b.y+=U.y.before}break}const V=Un(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(Zt(y)),left:e.isRtl.value?void 0:B(Zt(E)),right:e.isRtl.value?B(Zt(-E)):void 0,minWidth:B(V==="y"?Math.min(o.value,f.width):o.value),maxWidth:B(sa(et(R.x,o.value===1/0?0:o.value,r.value))),maxHeight:B(sa(et(R.y,l.value===1/0?0:l.value,u.value)))}),{available:R,contentBox:b,flipped:F}}return W(()=>[i.value,s.value,t.offset,t.minWidth,t.minHeight,t.maxWidth,t.maxHeight],()=>p()),de(()=>{const b=p();if(!b)return;const{available:x,contentBox:L}=b;L.height>x.y&&requestAnimationFrame(()=>{p(),requestAnimationFrame(()=>{p()})})}),{updateLocation:p}}function Zt(e){return Math.round(e*devicePixelRatio)/devicePixelRatio}function sa(e){return Math.ceil(e*devicePixelRatio)/devicePixelRatio}let dn=!0;const $t=[];function uo(e){!dn||$t.length?($t.push(e),fn()):(dn=!1,e(),fn())}let oa=-1;function fn(){cancelAnimationFrame(oa),oa=requestAnimationFrame(()=>{const e=$t.shift();e&&e(),$t.length?fn():dn=!0})}const Vt={none:null,close:vo,block:mo,reposition:go},co=T({scrollStrategy:{type:[String,Function],default:"block",validator:e=>typeof e=="function"||e in Vt}},"VOverlay-scroll-strategies");function fo(e,t){if(!Ae)return;let n;Ne(async()=>{n==null||n.stop(),t.isActive.value&&e.scrollStrategy&&(n=Ea(),await new Promise(a=>setTimeout(a)),n.active&&n.run(()=>{var a;typeof e.scrollStrategy=="function"?e.scrollStrategy(t,e,n):(a=Vt[e.scrollStrategy])==null||a.call(Vt,t,e,n)}))}),ve(()=>{n==null||n.stop()})}function vo(e){function t(n){e.isActive.value=!1}Ga(Nn(e.target.value,e.contentEl.value),t)}function mo(e,t){var l;const n=(l=e.root.value)==null?void 0:l.offsetParent,a=Nn(e.target.value,e.contentEl.value),i=[...new Set([...Ot(a,t.contained?n:void 0),...Ot(e.contentEl.value,t.contained?n:void 0)])].filter(r=>!r.classList.contains("v-overlay-scroll-blocked")),s=window.innerWidth-document.documentElement.offsetWidth,o=(r=>Ai(r)&&r)(n||document.documentElement);o&&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}),o&&e.root.value.classList.remove("v-overlay--scroll-blocked")})}function go(e,t,n){let a=!1,i=-1,s=-1;function o(l){uo(()=>{var c,m;const r=performance.now();(m=(c=e.updateLocation).value)==null||m.call(c,l),a=(performance.now()-r)/(1e3/60)>2})}s=(typeof requestIdleCallback>"u"?l=>l():requestIdleCallback)(()=>{n.run(()=>{Ga(Nn(e.target.value,e.contentEl.value),l=>{a?(cancelAnimationFrame(i),i=requestAnimationFrame(()=>{i=requestAnimationFrame(()=>{o(l)})})):o(l)})})}),ve(()=>{typeof cancelIdleCallback<"u"&&cancelIdleCallback(s),cancelAnimationFrame(i)})}function Nn(e,t){return Array.isArray(e)?document.elementsFromPoint(...e).find(n=>!(t!=null&&t.contains(n))):e??t}function Ga(e,t){const n=[document,...Ot(e)];n.forEach(a=>{a.addEventListener("scroll",t,{passive:!0})}),ve(()=>{n.forEach(a=>{a.removeEventListener("scroll",t)})})}const yo=Symbol.for("vuetify:v-menu"),ho=T({closeDelay:[Number,String],openDelay:[Number,String]},"delay");function bo(e,t){let n=()=>{};function a(o,l){n==null||n();const r=o?e.openDelay:e.closeDelay,u=Math.max((l==null?void 0:l.minDelay)??0,Number(r??0));return new Promise(c=>{n=Vi(u,()=>{t==null||t(o),c(o)})})}function i(){return a(!0)}function s(o){return a(!1,o)}return{clearDelay:n,runOpenDelay:i,runCloseDelay:s}}const po=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,...ho()},"VOverlay-activator");function So(e,t){let{isActive:n,isTop:a,contentEl:i}=t;const s=Ee("useActivator"),o=M();let l=!1,r=!1,u=!0;const c=C(()=>e.openOnFocus||e.openOnFocus==null&&e.openOnHover),m=C(()=>e.openOnClick||e.openOnClick==null&&!e.openOnHover&&!c.value),{runOpenDelay:v,runCloseDelay:d}=bo(e,y=>{y===(e.openOnHover&&l||c.value&&r)&&!(e.openOnHover&&n.value&&!a.value)&&(n.value!==y&&(u=!0),n.value=y)}),g=M(),f={onClick:y=>{y.stopPropagation(),o.value=y.currentTarget||y.target,n.value||(g.value=[y.clientX,y.clientY]),n.value=!n.value},onMouseenter:y=>{l=!0,o.value=y.currentTarget||y.target,v()},onMouseleave:y=>{l=!1,d()},onFocus:y=>{Oi(y.target,":focus-visible")!==!1&&(r=!0,y.stopPropagation(),o.value=y.currentTarget||y.target,v())},onBlur:y=>{r=!1,y.stopPropagation(),d({minDelay:1})}},p=C(()=>{const y={};return m.value&&(y.onClick=f.onClick),e.openOnHover&&(y.onMouseenter=f.onMouseenter,y.onMouseleave=f.onMouseleave),c.value&&(y.onFocus=f.onFocus,y.onBlur=f.onBlur),y}),b=C(()=>{const y={};if(e.openOnHover&&(y.onMouseenter=()=>{l=!0,v()},y.onMouseleave=()=>{l=!1,d()}),c.value&&(y.onFocusin=R=>{R.target.matches(":focus-visible")&&(r=!0,v())},y.onFocusout=()=>{r=!1,d({minDelay:1})}),e.closeOnContentClick){const R=Le(yo,null);y.onClick=()=>{n.value=!1,R==null||R.closeParents()}}return y}),x=C(()=>{const y={};return e.openOnHover&&(y.onMouseenter=()=>{u&&(l=!0,u=!1,v())},y.onMouseleave=()=>{l=!1,d()}),y});W(a,y=>{var R;y&&(e.openOnHover&&!l&&(!c.value||!r)||c.value&&!r&&(!e.openOnHover||!l))&&!((R=i.value)!=null&&R.contains(document.activeElement))&&d()}),W(n,y=>{y||setTimeout(()=>{g.value=void 0})},{flush:"post"});const L=Yn();Ne(()=>{L.value&&de(()=>{o.value=L.el})});const w=Yn(),h=C(()=>e.target==="cursor"&&g.value?g.value:w.value?w.el:Ua(e.target,s)||o.value),_=C(()=>Array.isArray(h.value)?void 0:h.value);let E;return W(()=>!!e.activator,y=>{y&&Ae?(E=Ea(),E.run(()=>{wo(e,s,{activatorEl:o,activatorEvents:p})})):E&&E.stop()},{flush:"post",immediate:!0}),ve(()=>{E==null||E.stop()}),{activatorEl:o,activatorRef:L,target:h,targetEl:_,targetRef:w,activatorEvents:p,contentEvents:b,scrimEvents:x}}function wo(e,t,n){let{activatorEl:a,activatorEvents:i}=n;W(()=>e.activator,(r,u)=>{if(u&&r!==u){const c=l(u);c&&o(c)}r&&de(()=>s())},{immediate:!0}),W(()=>e.activatorProps,()=>{s()}),ve(()=>{o()});function s(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:l(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;r&&Li(r,Q(i.value,u))}function o(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:l(),u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e.activatorProps;r&&Ti(r,Q(i.value,u))}function l(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.activator;const u=Ua(r,t);return a.value=(u==null?void 0:u.nodeType)===Node.ELEMENT_NODE?u:void 0,a.value}}function Ua(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 ko=T({retainFocus:Boolean,captureFocus:Boolean,disableInitialFocus:Boolean},"focusTrap"),Lt=new Map;let la=0;function ra(e){const t=document.activeElement;if(e.key!=="Tab"||!t)return;const n=Array.from(Lt.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=It(a).filter(u=>u.tabIndex>=0);if(!s.length)return;const o=document.activeElement;if(s.length===1&&s[0].classList.contains("v-list")&&s[0].contains(o)){e.preventDefault();return}const l=s[0],r=s[s.length-1];e.shiftKey&&(o===l||l.classList.contains("v-list")&&l.contains(o))&&(e.preventDefault(),r.focus()),!e.shiftKey&&(o===r||r.classList.contains("v-list")&&r.contains(o))&&(e.preventDefault(),l.focus())}function Co(e,t){let{isActive:n,localTop:a,activatorEl:i,contentEl:s}=t;const o=Symbol("trap");let l=!1,r=-1;async function u(){l=!0,r=window.setTimeout(()=>{l=!1},100)}async function c(d){var p;const g=d.relatedTarget,f=d.target;document.removeEventListener("pointerdown",u),document.removeEventListener("keydown",m),await new Promise(b=>requestAnimationFrame(b)),n.value&&!l&&g!==f&&s.value&&se(a)&&![document,s.value].includes(f)&&!s.value.contains(f)&&((p=It(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 g=It(document.documentElement);if(d.shiftKey&&d.target===g.at(0)||!d.shiftKey&&d.target===g.at(-1)){const f=It(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?Lt.set(o,{isActive:n,contentEl:s}):Lt.delete(o)},{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}),la++<1&&document.addEventListener("keydown",ra)),ve(()=>{Lt.delete(o),clearTimeout(r),document.removeEventListener("pointerdown",u),document.removeEventListener("focusin",c),document.removeEventListener("keydown",m),--la<1&&document.removeEventListener("keydown",ra)})}function _o(){if(!Ae)return z(!1);const{ssr:e}=Bi();if(e){const t=z(!1);return it(()=>{t.value=!0}),t}else return z(!0)}const xo=T({eager:Boolean},"lazy");function Eo(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 $n(){const t=Ee("useScopeId").vnode.scopeId;return{scopeId:t?{[t]:""}:void 0}}const ua=Symbol.for("vuetify:stack"),dt=vt([]);function Io(e,t,n){const a=Ee("useStack"),i=!n,s=Le(ua,void 0),o=vt({activeChildren:new Set});He(ua,o);const l=z(Number(se(t)));ht(e,()=>{var m;const c=(m=dt.at(-1))==null?void 0:m[1];l.value=c?c+10:Number(se(t)),i&&dt.push([a.uid,l.value]),s==null||s.activeChildren.add(a.uid),ve(()=>{if(i){const v=ne(dt).findIndex(d=>d[0]===a.uid);dt.splice(v,1)}s==null||s.activeChildren.delete(a.uid)})});const r=z(!0);i&&Ne(()=>{var m;const c=((m=dt.at(-1))==null?void 0:m[0])===a.uid;setTimeout(()=>r.value=c)});const u=k(()=>!o.activeChildren.size);return{globalTop:Ia(r),localTop:u,stackStyles:k(()=>({zIndex:l.value}))}}function Po(e){return{teleportTarget:C(()=>{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 Ka=T({transition:{type:null,default:"fade-transition",validator:e=>e!==!0}},"transition"),Ye=(e,t)=>{let{slots:n}=t;const{transition:a,disabled:i,group:s,...o}=e,{component:l=s?_n:$e,...r}=sn(a)?a:{};let u;return sn(a)?u=Q(r,Ri({disabled:i,group:s}),o):u=Q({name:i||!a?"":a},o),xn(l,u,n)};function Ao(){return!0}function Xa(e,t,n){if(!e||Ya(e,n)===!1)return!1;const a=Ca(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 Ya(e,t){return(typeof t.value=="object"&&t.value.closeConditional||Ao)(e)}function Vo(e,t,n){const a=typeof n.value=="function"?n.value:n.value.handler;e.shadowTarget=e.target,t._clickOutside.lastMousedownWasOutside&&Xa(e,t,n)&&setTimeout(()=>{Ya(e,n)&&a&&a(e)},0)}function ca(e,t){const n=Ca(e);t(document),typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&t(n)}const da={mounted(e,t){const n=i=>Vo(i,e,t),a=i=>{e._clickOutside.lastMousedownWasOutside=Xa(i,e,t)};ca(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&&(ca(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 Lo(e){const{modelValue:t,color:n,...a}=e;return S($e,{name:"fade-transition",appear:!0},{default:()=>[e.modelValue&&I("div",Q({class:["v-overlay__scrim",e.color.backgroundColorClasses.value],style:e.color.backgroundColorStyles.value},a),null)]})}const Dn=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},...po(),...ee(),...rt(),...xo(),...io(),...co(),...ko(),...fe(),...Ka()},"VOverlay"),Dt=G()({name:"VOverlay",directives:{vClickOutside:da},inheritAttrs:!1,props:{_disableGlobalStack:Boolean,...at(Dn(),["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=Ee("VOverlay"),o=M(),l=M(),r=M(),u=Pe(e,"modelValue"),c=C({get:()=>u.value,set:H=>{H&&e.disabled||(u.value=H)}}),{themeClasses:m}=ye(e),{rtlClasses:v,isRtl:d}=zt(),{hasContent:g,onAfterLeave:f}=Eo(e,c),p=Qe(()=>typeof e.scrim=="string"?e.scrim:null),{globalTop:b,localTop:x,stackStyles:L}=Io(c,()=>e.zIndex,e._disableGlobalStack),{activatorEl:w,activatorRef:h,target:_,targetEl:E,targetRef:y,activatorEvents:R,contentEvents:F,scrimEvents:A}=So(e,{isActive:c,isTop:x,contentEl:r}),{teleportTarget:V}=Po(()=>{var Me,D,re;const H=e.attach||e.contained;if(H)return H;const ue=((Me=w==null?void 0:w.value)==null?void 0:Me.getRootNode())||((re=(D=s.proxy)==null?void 0:D.$el)==null?void 0:re.getRootNode());return ue instanceof ShadowRoot?ue:!1}),{dimensionStyles:P}=ut(e),N=_o(),{scopeId:O}=$n();W(()=>e.disabled,H=>{H&&(c.value=!1)});const{contentStyles:U,updateLocation:Y}=so(e,{isRtl:d,contentEl:r,target:_,isActive:c});fo(e,{root:o,contentEl:r,targetEl:E,target:_,isActive:c,updateLocation:Y});function te(H){i("click:outside",H),e.persistent?be():c.value=!1}function he(H){return c.value&&x.value&&(!e.scrim||H.target===l.value||H instanceof MouseEvent&&H.shadowTarget===l.value)}Co(e,{isActive:c,localTop:x,contentEl:r,activatorEl:w}),Ae&&W(c,H=>{H?window.addEventListener("keydown",K):window.removeEventListener("keydown",K)},{immediate:!0}),je(()=>{Ae&&window.removeEventListener("keydown",K)});function K(H){var ue,Me,D;H.key==="Escape"&&b.value&&((ue=r.value)!=null&&ue.contains(document.activeElement)||i("keydown",H),e.persistent?be():(c.value=!1,(Me=r.value)!=null&&Me.contains(document.activeElement)&&((D=w.value)==null||D.focus())))}function $(H){H.key==="Escape"&&!b.value||i("keydown",H)}const J=Us();ht(()=>e.closeOnBack,()=>{Ks(J,()=>{if(b.value&&c.value)return e.persistent?be():c.value=!1,!1})});const q=M();W(()=>c.value&&(e.absolute||e.contained)&&V.value==null,H=>{if(H){const ue=Ni(o.value);ue&&ue!==document.scrollingElement&&(q.value=ue.scrollTop)}});function be(){e.noClickAnimation||r.value&&Fe(r.value,[{transformOrigin:"center"},{transform:"scale(1.03)"},{transformOrigin:"center"}],{duration:150,easing:on})}function Ke(){i("afterEnter")}function De(){f(),i("afterLeave")}return Z(()=>{var H;return I(Ve,null,[(H=n.activator)==null?void 0:H.call(n,{isActive:c.value,targetRef:y,props:Q({ref:h},R.value,e.activatorProps)}),N.value&&g.value&&S(Zi,{disabled:!V.value,to:V.value},{default:()=>[I("div",Q({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(q.value)},e.style],ref:o,onKeydown:$},O,a),[S(Lo,Q({color:p,modelValue:c.value&&!!e.scrim,ref:l},A.value),null),S(Ye,{appear:!0,persisted:!0,transition:e.transition,target:_.value,onAfterEnter:Ke,onAfterLeave:De},{default:()=>{var ue;return[We(I("div",Q({ref:r,class:["v-overlay__content",e.contentClass],style:[P.value,U.value]},F.value,e.contentProps),[(ue=n.default)==null?void 0:ue.call(n,{isActive:c})]),[[En,c.value],[da,{handler:te,closeConditional:he,include:()=>[w.value]}]])]}})])]})])}),{activatorEl:w,scrimEl:l,target:_,animateClick:be,contentEl:r,rootEl:o,globalTop:b,localTop:x,updateLocation:Y}}}),en=Symbol("Forwarded refs");function tn(e,t){let n=e;for(;n;){const a=Reflect.getOwnPropertyDescriptor(n,t);if(a)return a;n=Object.getPrototypeOf(n)}}function Ja(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;at.value=e())}function s(o){const l=o?getComputedStyle(o):{transitionDuration:.2},r=parseFloat(l.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 Oo=T({multiLine:Boolean,text:String,timer:[Boolean,String],timeout:{type:[Number,String],default:5e3},vertical:Boolean,...Ht({location:"bottom"}),...Tn(),...Oe(),...Ue(),...fe(),...at(Dn({transition:"v-snackbar-transition"}),["persistent","noClickAnimation","retainFocus","captureFocus","disableInitialFocus","scrim","scrollStrategy","stickToTarget","viewportMargin"])},"VSnackbar"),Bo=G()({name:"VSnackbar",props:Oo(),emits:{"update:modelValue":e=>!0},setup(e,t){let{slots:n}=t;const a=Pe(e,"modelValue"),{positionClasses:i}=On(e),{scopeId:s}=$n(),{themeClasses:o}=ye(e),{colorClasses:l,colorStyles:r,variantClasses:u}=wt(e),{roundedClasses:c}=Be(e),m=To(()=>Number(e.timeout)),v=M(),d=M(),g=z(!1),f=z(0),p=M(),b=Le(Mi,void 0);ht(()=>!!b,()=>{const A=$i();Ne(()=>{p.value=A.mainStyles.value})}),W(a,L),W(()=>e.timeout,L),it(()=>{a.value&&L()});let x=-1;function L(){m.reset(),window.clearTimeout(x);const A=Number(e.timeout);if(!a.value||A===-1)return;const V=Di(d.value);m.start(V),x=window.setTimeout(()=>{a.value=!1},A)}function w(){m.reset(),window.clearTimeout(x)}function h(){g.value=!0,w()}function _(){g.value=!1,L()}function E(A){f.value=A.touches[0].clientY}function y(A){Math.abs(f.value-A.changedTouches[0].clientY)>50&&(a.value=!1)}function R(){g.value&&_()}const F=C(()=>e.location.split(" ").reduce((A,V)=>(A[`v-snackbar--${V}`]=!0,A),{}));return Z(()=>{const A=Dt.filterProps(e),V=!!(n.default||n.text||e.text);return S(Dt,Q({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},F.value,i.value,e.class],style:[p.value,e.style]},A,{modelValue:a.value,"onUpdate:modelValue":P=>a.value=P,contentProps:Q({class:["v-snackbar__wrapper",o.value,l.value,c.value,u.value],style:[r.value],onPointerenter:h,onPointerleave:_},A.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",_disableGlobalStack:!0,onTouchstartPassive:E,onTouchend:y,onAfterLeave:R},s),{default:()=>{var P,N;return[St(!1,"v-snackbar"),e.timer&&!g.value&&I("div",{key:"timer",class:"v-snackbar__timer"},[S(Ba,{ref:d,color:typeof e.timer=="string"?e.timer:"info",max:e.timeout,modelValue:m.time.value},null)]),V&&I("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[((P=n.text)==null?void 0:P.call(n))??e.text,(N=n.default)==null?void 0:N.call(n)]),n.actions&&S(ge,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[I("div",{class:"v-snackbar__actions"},[n.actions({isActive:a})])]})]},activator:n.activator})}),Ja({},v)}}),Ro=es({name:"GlobalMessage",setup(){var s;const e=M(!1),t=M(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=Xe==null?void 0:Xe.onSnackbar)==null?void 0:s.call(Xe,async o=>{o&&(e.value&&(e.value=!1,await de()),t.value=o,e.value=!0)});return je(()=>i==null?void 0:i()),{snackbar:e,message:t,icons:n,colors:a}}}),No={class:"d-flex align-center"},$o={class:"text-subtitle-2 font-weight-medium"},Do={key:0,class:"text-body-2"};function Mo(e,t,n,a,i,s){var o;return Ce(),ze(Bo,{modelValue:e.snackbar,"onUpdate:modelValue":t[1]||(t[1]=l=>e.snackbar=l),color:e.colors[(o=e.message)==null?void 0:o.type]||e.colors.info,timeout:2e3,location:"top right","multi-line":"",variant:"tonal"},{actions:ie(()=>[S(Ha,{icon:"mdi-close",variant:"text",onClick:t[0]||(t[0]=l=>e.snackbar=!1)})]),default:ie(()=>{var l,r,u,c;return[I("div",No,[S(xe,{icon:e.icons[(l=e.message)==null?void 0:l.type]||e.icons.info,class:"mr-2"},null,8,["icon"]),I("div",null,[I("div",$o,_e((r=e.message)==null?void 0:r.title),1),(u=e.message)!=null&&u.content?(Ce(),In("div",Do,_e((c=e.message)==null?void 0:c.content),1)):Bt("",!0)])])]}),_:1},8,["modelValue","color"])}const Qa=Aa(Ro,[["render",Mo]]),Fo=T({...ee(),...le()},"VCardActions"),Za=G()({name:"VCardActions",props:Fo(),setup(e,t){let{slots:n}=t;return Ft({VBtn:{slim:!0,variant:"text"}}),Z(()=>S(e.tag,{class:j(["v-card-actions",e.class]),style:X(e.style)},n)),{}}}),zo=T({opacity:[Number,String],...ee(),...le()},"VCardSubtitle"),Wo=G()({name:"VCardSubtitle",props:zo(),setup(e,t){let{slots:n}=t;return Z(()=>S(e.tag,{class:j(["v-card-subtitle",e.class]),style:X([{"--v-card-subtitle-opacity":e.opacity},e.style])},n)),{}}}),ei=kn("v-card-title");function qo(e){return{aspectStyles:C(()=>{const t=Number(e.aspectRatio);return t?{paddingBottom:String(1/t*100)+"%"}:void 0})}}const ti=T({aspectRatio:[String,Number],contentClass:null,inline:Boolean,...ee(),...rt()},"VResponsive"),fa=G()({name:"VResponsive",props:ti(),setup(e,t){let{slots:n}=t;const{aspectStyles:a}=qo(e),{dimensionStyles:i}=ut(e);return Z(()=>{var s;return I("div",{class:j(["v-responsive",{"v-responsive--inline":e.inline},e.class]),style:X([i.value,e.style])},[I("div",{class:"v-responsive__sizer",style:X(a.value)},null),(s=n.additional)==null?void 0:s.call(n),n.default&&I("div",{class:j(["v-responsive__content",e.contentClass])},[n.default()])])}),{}}});function va(e,t){if(!Sn)return;const n=t.modifiers||{},a=t.value,{handler:i,options:s}=typeof a=="object"?a:{handler:a,options:{}},o=new IntersectionObserver(function(){var m;let l=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=l.some(v=>v.isIntersecting);i&&(!n.quiet||u.init)&&(!n.once||c||u.init)&&i(c,l,r),c&&n.once?vn(e,t):u.init=!0},s);e._observe=Object(e._observe),e._observe[t.instance.$.uid]={init:!1,observer:o},o.observe(e)}function vn(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 ma={mounted:va,unmounted:vn,updated:(e,t)=>{var n;(n=e._observe)!=null&&n[t.instance.$.uid]&&(vn(e,t),va(e,t))}},Ho=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,...ti(),...ee(),...Oe(),...Ka()},"VImg"),ni=G()({name:"VImg",directives:{vIntersect:ma},props:Ho(),emits:{loadstart:e=>!0,load:e=>!0,error:e=>!0},setup(e,t){let{emit:n,slots:a}=t;const{backgroundColorClasses:i,backgroundColorStyles:s}=Qe(()=>e.color),{roundedClasses:o}=Be(e),l=Ee("VImg"),r=z(""),u=M(),c=z(e.eager?"loading":"idle"),m=z(),v=z(),d=C(()=>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)}),g=C(()=>d.value.aspect||m.value/v.value||0);W(()=>e.src,()=>{f(c.value!=="idle")}),W(g,(V,P)=>{!V&&P&&u.value&&w(u.value)}),Pn(()=>f());function f(V){if(!(e.eager&&V)&&!(Sn&&!V&&!e.eager)){if(c.value="loading",d.value.lazySrc){const P=new Image;P.src=d.value.lazySrc,w(P,null)}d.value.src&&de(()=>{var P;n("loadstart",((P=u.value)==null?void 0:P.currentSrc)||d.value.src),setTimeout(()=>{var N;if(!l.isUnmounted)if((N=u.value)!=null&&N.complete){if(u.value.naturalWidth||b(),c.value==="error")return;g.value||w(u.value,null),c.value==="loading"&&p()}else g.value||w(u.value),x()})})}}function p(){var V;l.isUnmounted||(x(),w(u.value),c.value="loaded",n("load",((V=u.value)==null?void 0:V.currentSrc)||d.value.src))}function b(){var V;l.isUnmounted||(c.value="error",n("error",((V=u.value)==null?void 0:V.currentSrc)||d.value.src))}function x(){const V=u.value;V&&(r.value=V.currentSrc||V.src)}let L=-1;je(()=>{clearTimeout(L)});function w(V){let P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:100;const N=()=>{if(clearTimeout(L),l.isUnmounted)return;const{naturalHeight:O,naturalWidth:U}=V;O||U?(m.value=U,v.value=O):!V.complete&&c.value==="loading"&&P!=null?L=window.setTimeout(N,P):(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})),_=()=>{var N;if(!d.value.src||c.value==="idle")return null;const V=I("img",{class:j(["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:b},null),P=(N=a.sources)==null?void 0:N.call(a);return S(Ye,{transition:e.transition,appear:!0},{default:()=>[We(P?I("picture",{class:"v-img__picture"},[P,V]):V,[[En,c.value==="loaded"]])]})},E=()=>S(Ye,{transition:e.transition},{default:()=>[d.value.lazySrc&&c.value!=="loaded"&&I("img",{class:j(["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)]}),y=()=>a.placeholder?S(Ye,{transition:e.transition,appear:!0},{default:()=>[(c.value==="loading"||c.value==="error"&&!a.error)&&I("div",{class:"v-img__placeholder"},[a.placeholder()])]}):null,R=()=>a.error?S(Ye,{transition:e.transition,appear:!0},{default:()=>[c.value==="error"&&I("div",{class:"v-img__error"},[a.error()])]}):null,F=()=>e.gradient?I("div",{class:"v-img__gradient",style:{backgroundImage:`linear-gradient(${e.gradient})`}},null):null,A=z(!1);{const V=W(g,P=>{P&&(requestAnimationFrame(()=>{requestAnimationFrame(()=>{A.value=!0})}),V())})}return Z(()=>{const V=fa.filterProps(e);return We(S(fa,Q({class:["v-img",{"v-img--absolute":e.absolute,"v-img--booting":!A.value,"v-img--fit-content":e.width==="fit-content"},i.value,o.value,e.class],style:[{width:B(e.width==="auto"?m.value:e.width)},s.value,e.style]},V,{aspectRatio:g.value,"aria-label":e.alt,role:e.alt?"img":void 0}),{additional:()=>I(Ve,null,[S(_,null,null),S(E,null,null),S(F,null,null),S(y,null,null),S(R,null,null)]),default:a.default}),[[ma,{handler:f,options:e.options},null,{once:!0}]])}),{currentSrc:r,image:u,state:c,naturalWidth:m,naturalHeight:v}}}),jo=T({start:Boolean,end:Boolean,icon:oe,image:String,text:String,...st(),...ee(),...Ge(),...Oe(),...Wt(),...le(),...fe(),...Ue({variant:"flat"})},"VAvatar"),Mt=G()({name:"VAvatar",props:jo(),setup(e,t){let{slots:n}=t;const{themeClasses:a}=ye(e),{borderClasses:i}=ot(e),{colorClasses:s,colorStyles:o,variantClasses:l}=wt(e),{densityClasses:r}=lt(e),{roundedClasses:u}=Be(e),{sizeClasses:c,sizeStyles:m}=qt(e);return Z(()=>S(e.tag,{class:j(["v-avatar",{"v-avatar--start":e.start,"v-avatar--end":e.end},a.value,i.value,s.value,r.value,u.value,c.value,l.value,e.class]),style:X([o.value,m.value,e.style])},{default:()=>[n.default?S(ge,{key:"content-defaults",defaults:{VImg:{cover:!0,src:e.image},VIcon:{icon:e.icon}}},{default:()=>[n.default()]}):e.image?S(ni,{key:"image",src:e.image,alt:"",cover:!0},null):e.icon?S(xe,{key:"icon",icon:e.icon},null):e.text,St(!1,"v-avatar")]})),{}}}),Go=T({appendAvatar:String,appendIcon:oe,prependAvatar:String,prependIcon:oe,subtitle:{type:[String,Number,Boolean],default:void 0},title:{type:[String,Number,Boolean],default:void 0},...ee(),...Ge(),...le()},"VCardItem"),Uo=G()({name:"VCardItem",props:Go(),setup(e,t){let{slots:n}=t;return Z(()=>{const a=!!(e.prependAvatar||e.prependIcon),i=!!(a||n.prepend),s=!!(e.appendAvatar||e.appendIcon),o=!!(s||n.append),l=!!(e.title!=null||n.title),r=!!(e.subtitle!=null||n.subtitle);return S(e.tag,{class:j(["v-card-item",e.class]),style:X(e.style)},{default:()=>{var u;return[i&&I("div",{key:"prepend",class:"v-card-item__prepend"},[n.prepend?S(ge,{key:"prepend-defaults",disabled:!a,defaults:{VAvatar:{density:e.density,image:e.prependAvatar},VIcon:{density:e.density,icon:e.prependIcon}}},n.prepend):I(Ve,null,[e.prependAvatar&&S(Mt,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&S(xe,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)])]),I("div",{class:"v-card-item__content"},[l&&S(ei,{key:"title"},{default:()=>{var c;return[((c=n.title)==null?void 0:c.call(n))??_e(e.title)]}}),r&&S(Wo,{key:"subtitle"},{default:()=>{var c;return[((c=n.subtitle)==null?void 0:c.call(n))??_e(e.subtitle)]}}),(u=n.default)==null?void 0:u.call(n)]),o&&I("div",{key:"append",class:"v-card-item__append"},[n.append?S(ge,{key:"append-defaults",disabled:!s,defaults:{VAvatar:{density:e.density,image:e.appendAvatar},VIcon:{density:e.density,icon:e.appendIcon}}},n.append):I(Ve,null,[e.appendIcon&&S(xe,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&S(Mt,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)])])]}})}),{}}}),Ko=T({opacity:[Number,String],...ee(),...le()},"VCardText"),mn=G()({name:"VCardText",props:Ko(),setup(e,t){let{slots:n}=t;return Z(()=>S(e.tag,{class:j(["v-card-text",e.class]),style:X([{"--v-card-text-opacity":e.opacity},e.style])},n)),{}}}),Xo=T({appendAvatar:String,appendIcon:oe,disabled:Boolean,flat:Boolean,hover:Boolean,image:String,link:{type:Boolean,default:void 0},prependAvatar:String,prependIcon:oe,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(),...Ge(),...rt(),...bt(),...Ra(),...Ht(),...Tn(),...Oe(),...Rn(),...le(),...fe(),...Ue({variant:"elevated"})},"VCard"),ga=G()({name:"VCard",directives:{vRipple:yt},props:Xo(),setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{borderClasses:s}=ot(e),{colorClasses:o,colorStyles:l,variantClasses:r}=wt(e),{densityClasses:u}=lt(e),{dimensionStyles:c}=ut(e),{elevationClasses:m}=pt(e),{loaderClasses:v}=Na(e),{locationStyles:d}=Ln(e),{positionClasses:g}=On(e),{roundedClasses:f}=Be(e),p=Bn(e,n),b=z(void 0);return W(()=>e.loading,(x,L)=>{b.value=!x&&typeof L=="string"?L:typeof x=="boolean"?void 0:x},{immediate:!0}),Z(()=>{const x=e.link!==!1&&p.isLink.value,L=!e.disabled&&e.link!==!1&&(e.link||p.isClickable.value),w=x?"a":e.tag,h=!!(a.title||e.title!=null),_=!!(a.subtitle||e.subtitle!=null),E=h||_,y=!!(a.append||e.appendAvatar||e.appendIcon),R=!!(a.prepend||e.prependAvatar||e.prependIcon),F=!!(a.image||e.image),A=E||R||y,V=!!(a.text||e.text!=null);return We(S(w,Q(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,o.value,u.value,m.value,v.value,g.value,f.value,r.value,e.class],style:[l.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 P;return[F&&I("div",{key:"image",class:"v-card__image"},[a.image?S(ge,{key:"image-defaults",disabled:!e.image,defaults:{VImg:{cover:!0,src:e.image}}},a.image):S(ni,{key:"image-img",cover:!0,src:e.image},null)]),S(Hs,{name:"v-card",active:!!e.loading,color:b.value},{default:a.loader}),A&&S(Uo,{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&&S(mn,{key:"text"},{default:()=>{var N;return[((N=a.text)==null?void 0:N.call(a))??e.text]}}),(P=a.default)==null?void 0:P.call(a),a.actions&&S(Za,null,{default:a.actions}),St(L,"v-card")]}}),[[yt,L&&e.ripple]])}),{}}}),Yo=T({disabled:Boolean,group:Boolean,hideOnLeave:Boolean,leaveAbsolute:Boolean,mode:String,origin:String},"transition");function me(e,t,n){return G()({name:e,props:Yo({mode:n,origin:t}),setup(a,i){let{slots:s}=i;const o={onBeforeEnter(l){a.origin&&(l.style.transformOrigin=a.origin)},onLeave(l){if(a.leaveAbsolute){const{offsetTop:r,offsetLeft:u,offsetWidth:c,offsetHeight:m}=l;l._transitionInitialStyles={position:l.style.position,top:l.style.top,left:l.style.left,width:l.style.width,height:l.style.height},l.style.position="absolute",l.style.top=`${r}px`,l.style.left=`${u}px`,l.style.width=`${c}px`,l.style.height=`${m}px`}a.hideOnLeave&&l.style.setProperty("display","none","important")},onAfterLeave(l){if(a.leaveAbsolute&&(l!=null&&l._transitionInitialStyles)){const{position:r,top:u,left:c,width:m,height:v}=l._transitionInitialStyles;delete l._transitionInitialStyles,l.style.position=r||"",l.style.top=u||"",l.style.left=c||"",l.style.width=m||"",l.style.height=v||""}}};return()=>{const l=a.group?_n:$e;return xn(l,{name:a.disabled?"":e,css:!a.disabled,...a.group?void 0:{mode:a.mode},...a.disabled?{}:o},s.default)}}})}function Mn(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:Tt()},group:Boolean,hideOnLeave:Boolean},setup(a,i){let{slots:s}=i;const o=a.group?_n:$e;return()=>xn(o,{name:a.disabled?"":e,css:!a.disabled,...a.disabled?{}:{...t,onLeave:l=>{var r;a.hideOnLeave?l.style.setProperty("display","none","important"):(r=t.onLeave)==null||r.call(t,l)}}},s.default)}})}function Fn(){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 o=`${i.offsetWidth}px`,l=`${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=o),["y","both"].includes(t)&&(i.style.height=l)})},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:o}=i._initialStyle;i.style.overflow=i._initialStyle.overflow,s!=null&&["x","both"].includes(t)&&(i.style.width=s),o!=null&&["y","both"].includes(t)&&(i.style.height=o),delete i._initialStyle}}const Jo=T({target:[Object,Array]},"v-dialog-transition"),nn=new WeakMap,Qo=G()({name:"VDialogTransition",props:Jo(),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 o=ha(e.target,i),{x:l,y:r,sx:u,sy:c,speed:m}=o;if(nn.set(i,o),Tt())Fe(i,[{opacity:0},{}],{duration:125*m,easing:Qn}).finished.then(()=>s());else{const d=Fe(i,[{transform:`translate(${l}px, ${r}px) scale(${u}, ${c})`,opacity:0},{}],{duration:225*m,easing:Qn});(v=ya(i))==null||v.forEach(g=>{Fe(g,[{opacity:0},{opacity:0,offset:.33},{}],{duration:225*2*m,easing:on})}),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 o;!nn.has(i)||Array.isArray(e.target)||e.target.offsetParent||e.target.getClientRects().length?o=ha(e.target,i):o=nn.get(i);const{x:l,y:r,sx:u,sy:c,speed:m}=o;Tt()?Fe(i,[{},{opacity:0}],{duration:85*m,easing:Jn}).finished.then(()=>s()):(Fe(i,[{},{transform:`translate(${l}px, ${r}px) scale(${u}, ${c})`,opacity:0}],{duration:125*m,easing:Jn}).finished.then(()=>s()),(v=ya(i))==null||v.forEach(g=>{Fe(g,[{},{opacity:0,offset:.2},{opacity:0}],{duration:125*2*m,easing:on})}))},onAfterLeave(i){i.style.removeProperty("pointer-events")}};return()=>e.target?S($e,Q({name:"dialog-transition"},a,{css:!1}),n):S($e,{name:"dialog-transition"},n)}});function ya(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 ha(e,t){const n=wn(e),a=ka(t),[i,s]=getComputedStyle(t).transformOrigin.split(" ").map(b=>parseFloat(b)),[o,l]=getComputedStyle(t).getPropertyValue("--v-overlay-anchor-origin").split(" ");let r=n.left+n.width/2;o==="left"||l==="left"?r-=n.width/2:(o==="right"||l==="right")&&(r+=n.width/2);let u=n.top+n.height/2;o==="top"||l==="top"?u-=n.height/2:(o==="bottom"||l==="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,g=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:g,speed:p}}me("fab-transition","center center","out-in");me("dialog-bottom-transition");me("dialog-top-transition");const ql=me("fade-transition"),Hl=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 jl=me("slide-x-reverse-transition"),Gl=me("slide-y-transition");me("slide-y-reverse-transition");const Zo=Mn("expand-transition",Fn()),Ul=Mn("expand-x-transition",Fn("","x"));Mn("expand-both-transition",Fn("","both"));const el=T({fullscreen:Boolean,scrollable:Boolean,...at(Dn({captureFocus:!0,origin:"center center",scrollStrategy:"block",transition:{component:Qo},zIndex:2400,retainFocus:!0}),["disableInitialFocus"])},"VDialog"),tl=G()({name:"VDialog",props:el(),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}=$n(),o=M();function l(){var u;n("afterEnter"),(e.scrim||e.retainFocus)&&((u=o.value)!=null&&u.contentEl)&&!o.value.contentEl.contains(document.activeElement)&&o.value.contentEl.focus({preventScroll:!0})}function r(){n("afterLeave")}return W(i,async u=>{var c;u||(await de(),(c=o.value.activatorEl)==null||c.focus({preventScroll:!0}))}),Z(()=>{const u=Dt.filterProps(e),c=Q({"aria-haspopup":"dialog"},e.activatorProps),m=Q({tabindex:-1},e.contentProps);return S(Dt,Q({ref:o,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:l,onAfterLeave:r},s),{activator:a.activator,default:function(){for(var v=arguments.length,d=new Array(v),g=0;g{var f;return[(f=a.default)==null?void 0:f.call(a,...d)]}})}})}),Ja({},o)}}),nl=["dotted","dashed","solid","double"],al=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=>nl.includes(e)},...ee(),...fe()},"VDivider"),ai=G()({name:"VDivider",props:al(),setup(e,t){let{attrs:n,slots:a}=t;const{themeClasses:i}=ye(e),{textColorClasses:s,textColorStyles:o}=tt(()=>e.color),l=C(()=>{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 Z(()=>{const u=I("hr",{class:j([{"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:X([l.value,o.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?I("div",{class:j(["v-divider__wrapper",{"v-divider__wrapper--gradient":e.gradient,"v-divider__wrapper--inset":e.inset,"v-divider__wrapper--vertical":e.vertical}])},[u,I("div",{class:"v-divider__content",style:X(r.value)},[a.default()]),u]):u}),{}}}),il=kn("v-spacer","div","VSpacer"),gn=Symbol.for("vuetify:list");function ii(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{filterable:!1};const t=Le(gn,{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||Cn()}=e,o={filterable:t.filterable||n,hasPrepend:z(!1),updateHasPrepend:l=>{l&&(o.hasPrepend.value=l)},trackingIndex:a,navigationStrategy:i,uid:s};return He(gn,o),t}function si(){return Le(gn,null)}const zn=e=>{const t={activate:n=>{let{id:a,value:i,activated:s}=n;return a=ne(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 o of pn(n))s=t.activate({id:o,value:!0,activated:new Set(s),children:a,parents:i});return s},out:n=>Array.from(n)};return t},oi=e=>{const t=zn(e);return{activate:a=>{let{activated:i,id:s,...o}=a;s=ne(s);const l=i.has(s)?new Set([s]):new Set;return t.activate({...o,id:s,activated:l})},in:(a,i,s)=>{let o=new Set;if(a!=null){const l=pn(a);l.length&&(o=t.in(l.slice(0,1),i,s))}return o},out:(a,i,s)=>t.out(a,i,s)}},sl=e=>{const t=zn(e);return{activate:a=>{let{id:i,activated:s,children:o,...l}=a;return i=ne(i),o.has(i)?s:t.activate({id:i,activated:s,children:o,...l})},in:t.in,out:t.out}},ol=e=>{const t=oi(e);return{activate:a=>{let{id:i,activated:s,children:o,...l}=a;return i=ne(i),o.has(i)?s:t.activate({id:i,activated:s,children:o,...l})},in:t.in,out:t.out}},ll={open:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(n){const s=new Set;s.add(t);let o=i.get(t);for(;o!=null;)s.add(o),o=i.get(o);return s}else return a.delete(t),a},select:()=>null},li={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},rl={open:li.open,select:e=>{let{id:t,value:n,opened:a,parents:i}=e;if(!n)return a;const s=[];let o=i.get(t);for(;o!=null;)s.push(o),o=i.get(o);return new Set(s)}},Wn=e=>{const t={select:n=>{let{id:a,value:i,selected:s}=n;if(a=ne(a),e&&!i){const o=Array.from(s.entries()).reduce((l,r)=>{let[u,c]=r;return c==="on"&&l.push(u),l},[]);if(o.length===1&&o[0]===a)return s}return s.set(a,i?"on":"off"),s},in:(n,a,i,s)=>{const o=new Map;for(const l of n||[])t.select({id:l,value:!0,selected:o,children:a,parents:i,disabled:s});return o},out:n=>{const a=[];for(const[i,s]of n.entries())s==="on"&&a.push(i);return a}};return t},ri=e=>{const t=Wn(e);return{select:a=>{let{selected:i,id:s,...o}=a;s=ne(s);const l=i.has(s)?new Map([[s,i.get(s)]]):new Map;return t.select({...o,id:s,selected:l})},in:(a,i,s,o)=>a!=null&&a.length?t.in(a.slice(0,1),i,s,o):new Map,out:(a,i,s)=>t.out(a,i,s)}},ul=e=>{const t=Wn(e);return{select:a=>{let{id:i,selected:s,children:o,...l}=a;return i=ne(i),o.has(i)?s:t.select({id:i,selected:s,children:o,...l})},in:t.in,out:t.out}},cl=e=>{const t=ri(e);return{select:a=>{let{id:i,selected:s,children:o,...l}=a;return i=ne(i),o.has(i)?s:t.select({id:i,selected:s,children:o,...l})},in:t.in,out:t.out}},qn=e=>{const t={select:n=>{let{id:a,value:i,selected:s,children:o,parents:l,disabled:r}=n;a=ne(a);const u=new Map(s),c=[a];for(;c.length;){const v=c.shift();r.has(v)||s.set(ne(v),i?"on":"off"),o.has(v)&&c.push(...o.get(v))}let m=ne(l.get(a));for(;m;){let v=!0,d=!0;for(const g of o.get(m)){const f=ne(g);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=ne(l.get(m))}return e&&!i&&Array.from(s.entries()).reduce((d,g)=>{let[f,p]=g;return p==="on"&&d.push(f),d},[]).length===0?u:s},in:(n,a,i)=>{let s=new Map;for(const o of n||[])s=t.select({id:o,value:!0,selected:s,children:a,parents:i,disabled:new Set});return s},out:(n,a)=>{const i=[];for(const[s,o]of n.entries())o==="on"&&!a.has(s)&&i.push(s);return i}};return t},dl=e=>{const t=qn(e);return{select:t.select,in:t.in,out:(a,i,s)=>{const o=[];for(const[l,r]of a.entries())if(r==="on"){if(s.has(l)){const u=s.get(l);if(a.get(u)==="on")continue}o.push(l)}return o}}},fl=e=>{const n={select:qn(e).select,in:(a,i,s,o)=>{let l=new Map;for(const r of a||[])i.has(r)||(l=n.select({id:r,value:!0,selected:l,children:i,parents:s,disabled:o}));return l},out:a=>{const i=[];for(const[s,o]of a.entries())(o==="on"||o==="indeterminate")&&i.push(s);return i}};return n},nt=Symbol.for("vuetify:nested"),ui={id:z(),root:{itemsRegistration:M("render"),register:()=>null,unregister:()=>null,updateDisabled:()=>null,children:M(new Map),parents:M(new Map),disabled:M(new Set),open:()=>null,openOnSelect:()=>null,activate:()=>null,select:()=>null,activatable:M(!1),scrollToActive:M(!1),selectable:M(!1),opened:M(new Set),activated:M(new Set),selected:M(new Map),selectedValues:M([]),getPath:()=>[]}},vl=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"),ml=(e,t)=>{let{items:n,returnObject:a,scrollToActive:i}=t,s=!1;const o=z(new Map),l=z(new Map),r=z(new Set),u=Pe(e,"opened",e.opened,h=>new Set(Array.isArray(h)?h.map(_=>ne(_)):h),h=>[...h.values()]),c=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 sl(e.mandatory);case"single-leaf":return ol(e.mandatory);case"independent":return zn(e.mandatory);case"single-independent":default:return oi(e.mandatory)}}),m=C(()=>{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 cl(e.mandatory);case"leaf":return ul(e.mandatory);case"independent":return Wn(e.mandatory);case"single-independent":return ri(e.mandatory);case"trunk":return dl(e.mandatory);case"branch":return fl(e.mandatory);case"classic":default:return qn(e.mandatory)}}),v=C(()=>{if(typeof e.openStrategy=="object")return e.openStrategy;switch(e.openStrategy){case"list":return rl;case"single":return ll;case"multiple":default:return li}}),d=Pe(e,"activated",e.activated,h=>c.value.in(h,o.value,l.value),h=>c.value.out(h,o.value,l.value)),g=Pe(e,"selected",e.selected,h=>m.value.in(h,o.value,l.value,r.value),h=>m.value.out(h,o.value,l.value));je(()=>{s=!0});function f(h){const _=[];let E=ne(h);for(;E!==void 0;)_.unshift(E),E=l.value.get(E);return _}const p=Ee("nested"),b=new Set,x=Fi(()=>{de(()=>{o.value=new Map(o.value),l.value=new Map(l.value)})},100);W(()=>[n.value,se(a)],()=>{e.itemsRegistration==="props"&&L()},{immediate:!0});function L(){const h=new Map,_=new Map,E=new Set,y=se(a)?A=>ne(A.raw):A=>A.value,R=[...n.value];let F=0;for(;Fe.activatable),scrollToActive:k(()=>se(i)),selectable:k(()=>e.selectable),activated:d,selected:g,selectedValues:C(()=>{const h=[];for(const[_,E]of g.value.entries())E==="on"&&h.push(_);return h}),itemsRegistration:k(()=>e.itemsRegistration),register:(h,_,E,y)=>{if(b.has(h)){f(h).map(String).join(" -> "),f(_).concat(h).map(String).join(" -> ");return}else b.add(h);_&&h!==_&&l.value.set(h,_),E&&r.value.add(h),y&&o.value.set(h,[]),_!=null&&o.value.set(_,[...o.value.get(_)||[],h]),x()},unregister:h=>{if(s)return;b.delete(h),o.value.delete(h),r.value.delete(h);const _=l.value.get(h);if(_){const E=o.value.get(_)??[];o.value.set(_,E.filter(y=>y!==h))}l.value.delete(h),x()},updateDisabled:(h,_)=>{_?r.value.add(h):r.value.delete(h)},open:(h,_,E)=>{p.emit("click:open",{id:h,value:_,path:f(h),event:E});const y=v.value.open({id:h,value:_,opened:new Set(u.value),children:o.value,parents:l.value,event:E});y&&(u.value=y)},openOnSelect:(h,_,E)=>{const y=v.value.select({id:h,value:_,selected:new Map(g.value),opened:new Set(u.value),children:o.value,parents:l.value,event:E});y&&(u.value=y)},select:(h,_,E)=>{p.emit("click:select",{id:h,value:_,path:f(h),event:E});const y=m.value.select({id:h,value:_,selected:new Map(g.value),children:o.value,parents:l.value,disabled:r.value,event:E});y&&(g.value=y),w.root.openOnSelect(h,_,E)},activate:(h,_,E)=>{if(!e.activatable)return w.root.select(h,!0,E);p.emit("click:activate",{id:h,value:_,path:f(h),event:E});const y=c.value.activate({id:h,value:_,activated:new Set(d.value),children:o.value,parents:l.value,event:E});if(y.size!==d.value.size)d.value=y;else{for(const R of y)if(!d.value.has(R)){d.value=y;return}for(const R of d.value)if(!y.has(R)){d.value=y;return}}},children:o,parents:l,disabled:r,getPath:f}};return He(nt,w),w.root},ci=(e,t,n)=>{const a=Le(nt,ui),i=Symbol("nested item"),s=C(()=>{const l=ne(se(e));return l!==void 0?l:i}),o={...a,id:s,open:(l,r)=>a.root.open(s.value,l,r),openOnSelect:(l,r)=>a.root.openOnSelect(s.value,l,r),isOpen:C(()=>a.root.opened.value.has(s.value)),parent:C(()=>a.root.parents.value.get(s.value)),activate:(l,r)=>a.root.activate(s.value,l,r),isActivated:C(()=>a.root.activated.value.has(s.value)),scrollToActive:a.root.scrollToActive,select:(l,r)=>a.root.select(s.value,l,r),isSelected:C(()=>a.root.selected.value.get(s.value)==="on"),isIndeterminate:C(()=>a.root.selected.value.get(s.value)==="indeterminate"),isLeaf:C(()=>!a.root.children.value.get(s.value)),isGroupActivator:a.isGroupActivator};return Pn(()=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||de(()=>{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,(l,r)=>{a.isGroupActivator||a.root.itemsRegistration.value==="props"||(a.root.unregister(r),de(()=>{a.root.register(l,a.id.value,se(t),n)}))}),W(()=>se(t),l=>{a.root.updateDisabled(s.value,l)}),n&&He(nt,o),o},gl=()=>{const e=Le(nt,ui);He(nt,{...e,isGroupActivator:!0})};function yl(){const e=z(!1);return it(()=>{window.requestAnimationFrame(()=>{e.value=!0})}),{ssrBootStyles:k(()=>e.value?void 0:{transition:"none !important"}),isBooted:Ia(e)}}const hl=zi({name:"VListGroupActivator",setup(e,t){let{slots:n}=t;return gl(),()=>{var a;return(a=n.default)==null?void 0:a.call(n)}}}),bl=T({activeColor:String,baseColor:String,color:String,collapseIcon:{type:oe,default:"$collapse"},disabled:Boolean,expandIcon:{type:oe,default:"$expand"},rawId:[String,Number],prependIcon:oe,appendIcon:oe,fluid:Boolean,subgroup:Boolean,title:String,value:null,...ee(),...le()},"VListGroup"),ba=G()({name:"VListGroup",props:bl(),setup(e,t){let{slots:n}=t;const{isOpen:a,open:i,id:s}=ci(()=>e.value,()=>e.disabled,!0),o=C(()=>`v-list-group--id-${String(e.rawId??s.value)}`),l=si(),{isBooted:r}=yl(),u=Le(nt),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=C(()=>({onClick:m,class:"v-list-group__header",id:o.value})),d=C(()=>a.value?e.collapseIcon:e.expandIcon),g=C(()=>({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 Z(()=>S(e.tag,{class:j(["v-list-group",{"v-list-group--prepend":l==null?void 0:l.hasPrepend.value,"v-list-group--fluid":e.fluid,"v-list-group--subgroup":e.subgroup,"v-list-group--open":a.value},e.class]),style:X(e.style)},{default:()=>[n.activator&&S(ge,{defaults:g.value},{default:()=>[S(hl,null,{default:()=>[n.activator({props:v.value,isOpen:a.value})]})]}),S(Ye,{transition:{component:Zo},disabled:!r.value},{default:()=>{var f,p;return[c.value?We(I("div",{class:"v-list-group__items",role:"group","aria-labelledby":o.value},[(f=n.default)==null?void 0:f.call(n)]),[[En,a.value]]):a.value&&I("div",{class:"v-list-group__items",role:"group","aria-labelledby":o.value},[(p=n.default)==null?void 0:p.call(n)])]}})]})),{isOpen:a}}}),pl=T({opacity:[Number,String],...ee(),...le()},"VListItemSubtitle"),di=G()({name:"VListItemSubtitle",props:pl(),setup(e,t){let{slots:n}=t;return Z(()=>S(e.tag,{class:j(["v-list-item-subtitle",e.class]),style:X([{"--v-list-item-subtitle-opacity":e.opacity},e.style])},n)),{}}}),fi=kn("v-list-item-title"),Sl=T({active:{type:Boolean,default:void 0},activeClass:String,activeColor:String,appendAvatar:String,appendIcon:oe,baseColor:String,disabled:Boolean,lines:[Boolean,String],link:{type:Boolean,default:void 0},nav:Boolean,prependAvatar:String,prependIcon:oe,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(),...Ge(),...rt(),...bt(),...Oe(),...Rn(),...le(),...fe(),...Ue({variant:"text"})},"VListItem"),yn=G()({name:"VListItem",directives:{vRipple:yt},props:Sl(),emits:{click:e=>!0},setup(e,t){let{attrs:n,slots:a,emit:i}=t;const s=Bn(e,n),o=M(),l=C(()=>e.value===void 0?s.href.value:e.value),{activate:r,isActivated:u,select:c,isOpen:m,isSelected:v,isIndeterminate:d,isGroupActivator:g,root:f,parent:p,openOnSelect:b,scrollToActive:x,id:L}=ci(l,()=>e.disabled,!1),w=si(),h=C(()=>{var D;return e.active!==!1&&(e.active||((D=s.isActive)==null?void 0:D.value)||(f.activatable.value?u.value:v.value))}),_=k(()=>e.link!==!1&&s.isLink.value),E=C(()=>!!w&&(f.selectable.value||f.activatable.value||e.value!=null)),y=C(()=>!e.disabled&&e.link!==!1&&(e.link||s.isClickable.value||E.value)),R=C(()=>w&&w.navigationStrategy.value==="track"&&e.index!==void 0&&w.trackingIndex.value===e.index),F=C(()=>w?_.value?"link":E.value?"option":"listitem":void 0),A=C(()=>{if(E.value)return f.activatable.value?u.value:f.selectable.value?v.value:h.value}),V=k(()=>e.rounded||e.nav),P=k(()=>e.color??e.activeColor),N=k(()=>({color:h.value?P.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||!x||(re=o.value)==null||re.scrollIntoView({block:"nearest",behavior:"instant"})}),W(R,D=>{var re;D&&((re=o.value)==null||re.scrollIntoView({block:"nearest",behavior:"instant"}))}),Pn(()=>{var D;(D=s.isActive)!=null&&D.value&&de(()=>O())});function O(){p.value!=null&&f.open(p.value,!0),b(!0)}const{themeClasses:U}=ye(e),{borderClasses:Y}=ot(e),{colorClasses:te,colorStyles:he,variantClasses:K}=wt(N),{densityClasses:$}=lt(e),{dimensionStyles:J}=ut(e),{elevationClasses:q}=pt(e),{roundedClasses:be}=Be(V),Ke=k(()=>e.lines?`v-list-item--${e.lines}-line`:void 0),De=k(()=>e.ripple!==void 0&&e.ripple&&(w!=null&&w.filterable)?{keys:["Enter"]}:e.ripple),H=C(()=>({isActive:h.value,select:c,isOpen:m.value,isSelected:v.value,isIndeterminate:d.value,isDisabled:e.disabled}));function ue(D){var re,kt,Gt;i("click",D),!["INPUT","TEXTAREA"].includes((re=D.target)==null?void 0:re.tagName)&&y.value&&((Gt=(kt=s.navigate).value)==null||Gt.call(kt,D),!g&&(f.activatable.value?r(!u.value,D):(f.selectable.value||e.value!=null&&!_.value)&&c(!v.value,D)))}function Me(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 Z(()=>{const D=_.value?"a":e.tag,re=a.title||e.title!=null,kt=a.subtitle||e.subtitle!=null,hi=!!(!!(e.appendAvatar||e.appendIcon)||a.append),Ut=!!(!!(e.prependAvatar||e.prependIcon)||a.prepend);return w==null||w.updateHasPrepend(Ut),e.activeColor&&Wi("active-color",["color","base-color"]),We(S(D,Q(s.linkProps,{ref:o,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":y.value,"v-list-item--nav":e.nav,"v-list-item--prepend":!Ut&&(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,Y.value,te.value,$.value,q.value,Ke.value,be.value,K.value,e.class],style:[{"--v-list-prepend-gap":B(e.prependGap)},he.value,J.value,e.style],tabindex:e.tabindex??(y.value?w?-2:0:void 0),"aria-selected":A.value,role:F.value,onClick:ue,onKeydown:y.value&&!_.value&&Me}),{default:()=>{var Hn;return[St(y.value||h.value,"v-list-item"),Ut&&I("div",{key:"prepend",class:"v-list-item__prepend"},[a.prepend?S(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 pe;return[(pe=a.prepend)==null?void 0:pe.call(a,H.value)]}}):I(Ve,null,[e.prependAvatar&&S(Mt,{key:"prepend-avatar",density:e.density,image:e.prependAvatar},null),e.prependIcon&&S(xe,{key:"prepend-icon",density:e.density,icon:e.prependIcon},null)]),I("div",{class:"v-list-item__spacer"},null)]),I("div",{class:"v-list-item__content","data-no-activator":""},[re&&S(fi,{key:"title"},{default:()=>{var pe;return[((pe=a.title)==null?void 0:pe.call(a,{title:e.title}))??_e(e.title)]}}),kt&&S(di,{key:"subtitle"},{default:()=>{var pe;return[((pe=a.subtitle)==null?void 0:pe.call(a,{subtitle:e.subtitle}))??_e(e.subtitle)]}}),(Hn=a.default)==null?void 0:Hn.call(a,H.value)]),hi&&I("div",{key:"append",class:"v-list-item__append"},[a.append?S(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 pe;return[(pe=a.append)==null?void 0:pe.call(a,H.value)]}}):I(Ve,null,[e.appendIcon&&S(xe,{key:"append-icon",density:e.density,icon:e.appendIcon},null),e.appendAvatar&&S(Mt,{key:"append-avatar",density:e.density,image:e.appendAvatar},null)]),I("div",{class:"v-list-item__spacer"},null)])]}}),[[yt,y.value&&De.value]])}),{activate:r,isActivated:u,isGroupActivator:g,isSelected:v,list:w,select:c,root:f,id:L,link:s}}}),wl=T({color:String,inset:Boolean,sticky:Boolean,title:String,...ee(),...le()},"VListSubheader"),kl=G()({name:"VListSubheader",props:wl(),setup(e,t){let{slots:n}=t;const{textColorClasses:a,textColorStyles:i}=tt(()=>e.color);return Z(()=>{const s=!!(n.default||e.title);return S(e.tag,{class:j(["v-list-subheader",{"v-list-subheader--inset":e.inset,"v-list-subheader--sticky":e.sticky},a.value,e.class]),style:X([{textColorStyles:i},e.style])},{default:()=>{var o;return[s&&I("div",{class:"v-list-subheader__text"},[((o=n.default)==null?void 0:o.call(n))??e.title])]}})}),{}}}),Cl=T({items:Array,returnObject:Boolean},"VListChildren"),vi=G()({name:"VListChildren",props:Cl(),setup(e,t){let{slots:n}=t;return ii(),()=>{var a,i;return((a=n.default)==null?void 0:a.call(n))??((i=e.items)==null?void 0:i.map((s,o)=>{var d,g;let{children:l,props:r,type:u,raw:c}=s;if(u==="divider")return((d=n.divider)==null?void 0:d.call(n,{props:r}))??S(ai,r,null);if(u==="subheader")return((g=n.subheader)==null?void 0:g.call(n,{props:r}))??S(kl,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=ba.filterProps(r);return l?S(ba,Q(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 b=Q(r,p,{value:e.returnObject?c:r.value});return n.header?n.header({props:b}):S(yn,Q(b,{index:o}),m)},default:()=>S(vi,{items:l,returnObject:e.returnObject},n)}):n.item?n.item({props:{...r,index:o}}):S(yn,Q(r,{index:o,value:e.returnObject?c:r.value}),m)}))}}}),_l=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"),xl=new Set(["item","divider","subheader"]);function Ze(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 o=ke(t,e.itemType,"item");xl.has(o)||(o="item");const l={title:n,value:a,...s};return{type:o,title:String(l.title??""),value:l.value,props:l,children:o==="item"&&Array.isArray(i)?mi(e,i):void 0,raw:t}}Ze.neededProps=["itemTitle","itemValue","itemChildren","itemProps","itemType"];function mi(e,t){const n=_a(e,Ze.neededProps),a=[];for(const i of t)a.push(Ze(n,i));return a}function Kl(e){const t=C(()=>mi(e,e.items)),n=C(()=>t.value.some(l=>l.value===null)),a=z(new Map),i=z([]);Ne(()=>{const l=t.value,r=new Map,u=[];for(let c=0;c{let{raw:u}=r;return u}):l.map(r=>{let{value:u}=r;return u})}return{items:t,transformIn:s,transformOut:o}}const El=new Set(["item","divider","subheader"]);function Il(e,t){const n=ln(t)?t:ke(t,e.itemTitle),a=ln(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 o=ke(t,e.itemType,"item");El.has(o)||(o="item");const l={title:n,value:a,...s};return{type:o,title:l.title,value:l.value,props:l,children:o==="item"&&i?gi(e,i):void 0,raw:t}}function gi(e,t){const n=[];for(const a of t)n.push(Il(e,a));return n}function Pl(e){return{items:C(()=>gi(e,e.items))}}const Al=T({baseColor:String,activeColor:String,activeClass:String,bgColor:String,disabled:Boolean,filterable:Boolean,expandIcon:oe,collapseIcon:oe,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(),...vl({selectStrategy:"single-leaf",openStrategy:"list"}),...st(),...ee(),...Ge(),...rt(),...bt(),..._l(),...Oe(),...le(),...fe(),...Ue({variant:"text"})},"VList"),Vl=G()({name:"VList",props:Al(),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}=Pl(e),{themeClasses:o}=ye(e),{backgroundColorClasses:l,backgroundColorStyles:r}=Qe(()=>e.bgColor),{borderClasses:u}=ot(e),{densityClasses:c}=lt(e),{dimensionStyles:m}=ut(e),{elevationClasses:v}=pt(e),{roundedClasses:d}=Be(e),{children:g,open:f,parents:p,select:b,getPath:x}=ml(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),_=k(()=>e.color),E=k(()=>e.selectable||e.activatable),y=Pe(e,"navigationIndex",-1,$=>$??-1),R=Cn();ii({filterable:e.filterable,trackingIndex:y,navigationStrategy:k(()=>e.navigationStrategy),uid:R}),W(s,()=>{e.navigationStrategy==="track"&&(y.value=-1)}),Ft({VListGroup:{activeColor:w,baseColor:h,color:_,expandIcon:k(()=>e.expandIcon),collapseIcon:k(()=>e.collapseIcon)},VListItem:{activeClass:k(()=>e.activeClass),activeColor:w,baseColor:h,color:_,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 F=z(!1),A=M();function V($){F.value=!0}function P($){F.value=!1}function N($){var J;e.navigationStrategy==="track"?~y.value||(y.value=Y("first")):!F.value&&!($.relatedTarget&&((J=A.value)!=null&&J.contains($.relatedTarget)))&&K()}function O(){e.navigationStrategy==="track"&&(y.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 Y($){const J=s.value.length;if(J===0)return-1;let q;$==="first"?q=0:$==="last"?q=J-1:(q=y.value+($==="next"?1:-1),q<0&&(q=J-1),q>=J&&(q=0));const be=q;let Ke=0;for(;Ke=J&&(q=0),q===be)return-1;Ke++}return-1}function te($){const J=$.target;if(!A.value||J.tagName==="INPUT"&&["Home","End"].includes($.key)||J.tagName==="TEXTAREA")return;const q=U($.key);if(q!==null)if($.preventDefault(),e.navigationStrategy==="track"){const be=Y(q);be!==-1&&(y.value=be)}else K(q)}function he($){F.value=!0}function K($,J){if(A.value)return qi(A.value,$,J)}return Z(()=>{const $=e.indent??(e.prependGap?Number(e.prependGap)+24:void 0),J=E.value?n.ariaMultiselectable??!String(e.selectStrategy).startsWith("single-"):void 0;return S(e.tag,{ref:A,class:j(["v-list",{"v-list--disabled":e.disabled,"v-list--nav":e.nav,"v-list--slim":e.slim},o.value,l.value,u.value,c.value,v.value,L.value,d.value,e.class]),style:X([{"--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:E.value?"listbox":"list","aria-activedescendant":e.navigationStrategy==="track"&&y.value>=0?`v-list-item-${R}-${y.value}`:void 0,"aria-multiselectable":J,onFocusin:V,onFocusout:P,onFocus:N,onBlur:O,onKeydown:te,onMousedown:he},{default:()=>[S(vi,{items:s.value,returnObject:e.returnObject},a)]})}),{open:f,select:b,focus:K,children:g,parents:p,getPath:x,navigationIndex:y}}});let hn=null;const yi={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(){hn=this}};yi.show=function(e,t,n){hn&&hn.show(e,t,n)};const Ll=yi,Tl={class:"text-primary font-weight-bold"};function Ol(e,t,n,a,i,s){return Ce(),ze(tl,{modelValue:e.isVisible,"onUpdate:modelValue":t[0]||(t[0]=o=>e.isVisible=o),"max-width":"500",persistent:""},{default:ie(()=>[S(ga,{class:"rate-limit-modal"},{default:ie(()=>[S(ei,{class:"text-center pa-4 bg-error text-white"},{default:ie(()=>[S(xe,{class:"mr-2",icon:"mdi-clock-alert-outline",size:"large"}),t[1]||(t[1]=Ct(" 请求频率超限 ",-1))]),_:1}),S(mn,{class:"pa-6"},{default:ie(()=>[t[3]||(t[3]=I("div",{class:"text-body-1 mb-4"}," 您的请求过于频繁,请稍后再试。 ",-1)),e.activeRequests.length>0?(Ce(),ze(ga,{key:0,class:"mb-4",flat:""},{default:ie(()=>[S(mn,null,{default:ie(()=>[(Ce(!0),In(Ve,null,ts(e.activeRequests,(o,l)=>(Ce(),ze(Vl,{key:l,class:"mb-4"},{default:ie(()=>[S(yn,{color:"primary","prepend-icon":"mdi-web"},{default:ie(()=>[S(fi,null,{default:ie(()=>[t[2]||(t[2]=Ct(" 等待时间: ",-1)),I("span",Tl,_e(o.remainingSeconds),1)]),_:2},1024),S(di,null,{default:ie(()=>[Ct(_e(o.method)+" "+_e(o.path),1)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128)),e.index[S(il),S(Ha,{color:"primary",variant:"tonal",onClick:e.close},{default:ie(()=>[...t[5]||(t[5]=[Ct(" 我知道了 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])}const Bl=Aa(Ll,[["render",Ol]]),Rl=T({...ee(),...at(ji(),["fullHeight"]),...fe()},"VApp"),Nl=G()({name:"VApp",props:Rl(),setup(e,t){let{slots:n}=t;const a=ye(e),{layoutClasses:i,getLayoutItem:s,items:o,layoutRef:l}=Hi({...e,fullHeight:!0}),{rtlClasses:r}=zt();return Z(()=>{var u;return I("div",{ref:l,class:j(["v-application",a.themeClasses.value,i.value,r.value,e.class]),style:X([e.style])},[I("div",{class:"v-application__wrap"},[(u=n.default)==null?void 0:u.call(n)])])}),{getLayoutItem:s,items:o,theme:a}}}),$l={__name:"App",setup(e){const t=Sa(),n=M(!1),a=M(""),i=M(10),s=M(30);function o(){n.value=Ie("background.enabled")||!1;const d=Ie("background.imageData")||"",g=Ie("background.url")||"";a.value=d||g,i.value=Ie("background.blur")??10,s.value=Ie("background.opacity")??30}const l=C(()=>!n.value||!a.value?{}:{background:"transparent"}),r=C(()=>({backgroundImage:`url(${a.value})`,backgroundSize:"cover",backgroundPosition:"center",filter:`blur(${i.value}px)`,transform:"scale(1.05)"})),u=C(()=>({background:`rgba(0, 0, 0, ${s.value/100})`}));let c=null;const m=d=>{d.preventDefault(),window.deferredPwaPrompt=d,window.dispatchEvent(new Event("pwa-prompt-ready"))},v=()=>{window.deferredPwaPrompt=null,window.dispatchEvent(new Event("pwa-installed"))};return it(()=>{const d=Ie("theme.mode");t.global.name.value=d,o(),c=Pa((g,f)=>{var b;const p=(b=f==null?void 0:f.detail)==null?void 0:b.key;(!p||p.startsWith("background.")||p==="theme.mode")&&(o(),t.global.name.value=Ie("theme.mode"))}),window.addEventListener("beforeinstallprompt",m),window.addEventListener("appinstalled",v)}),ns(()=>{c&&c(),window.removeEventListener("beforeinstallprompt",m),window.removeEventListener("appinstalled",v)}),(d,g)=>{const f=as("router-view"),p=Qa;return Ce(),ze(Nl,{style:X(l.value)},{default:ie(()=>[n.value?(Ce(),In(Ve,{key:0},[I("div",{class:"app-background-image",style:X(r.value)},null,4),I("div",{class:"app-background-overlay",style:X(u.value)},null,4)],64)):Bt("",!0),S(f,null,{default:ie(({Component:b,route:x})=>[S($e,{mode:"out-in",name:"md3"},{default:ie(()=>[(Ce(),ze(xa(b),{key:x.path}))]),_:2},1024)]),_:1}),S(p),S(Bl)]),_:1},8,["style"])}}},jt=is($l);ds(jt);jt.use(Xe);jt.component("GlobalMessage",Qa);jt.mount("#app");const pa=async()=>{try{const{getVisitorId:e}=await ae(async()=>{const{getVisitorId:a}=await import("./visitorId-D_nwlNzA.js");return{getVisitorId:a}},__vite__mapDeps([56,1,2]),import.meta.url),t=(await ae(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"?pa():window.addEventListener("load",pa,{once:!0});export{bt as $,Re as A,fa as B,ni as C,Dt as D,Ja as E,Wo as F,Wl as G,tt as H,Qe as I,no as J,lt as K,$n as L,Ge as M,Be as N,Ln as O,Ye as P,Ka as Q,Oe as R,Te as S,Ht as T,Dn as U,Fs as V,Uo as W,ys as X,bs as Y,ps as Z,Aa as _,rt as a,yt as a0,Hl as a1,pt as a2,bo as a3,ho as a4,Zo as a5,kl as a6,Na as a7,Hs as a8,Ra as a9,jl as aA,Kl as aB,Ze as aC,Qo as aD,_l as aE,yo as aF,fs as aG,vs as aH,zl as aI,Vs as aa,As as ab,Eo as ac,xo as ad,Ps as ae,ot as af,ge as ag,st as ah,Bl as ai,wt as aj,On as ak,St as al,Ue as am,Tn as an,ql as ao,Is as ap,qt as aq,Bn as ar,Ul as as,Wt as at,Rn as au,ma as av,Us as aw,Co as ax,ko as ay,Xe as az,ut as b,ei as c,mn as d,ga as e,xe as f,il as g,Ha as h,ai as i,Ba as j,tl as k,Za as l,le as m,Ie as n,Mt as o,Vl as p,yn as q,fi as r,gs as s,di as t,yl as u,Gl as v,Pa as w,ae as x,ta as y,Bo as z}; diff --git a/assets/serverRotation-BtcwvdZJ.js b/assets/serverRotation-Bs3NH0Jb.js similarity index 96% rename from assets/serverRotation-BtcwvdZJ.js rename to assets/serverRotation-Bs3NH0Jb.js index 6ddfd02..0c5ac1b 100644 --- a/assets/serverRotation-BtcwvdZJ.js +++ b/assets/serverRotation-Bs3NH0Jb.js @@ -1 +1 @@ -import{n as l}from"./index-DGIAsv4W.js";const a=["https://kv-service.houlang.cloud","https://kv-service.wuyuan.dev"],h=5*60*1e3,g=3e3,c={preferred:null,cachedAt:0,probing:!1};function v(t){c.preferred=t,c.cachedAt=Date.now()}function y(t){return t.response?t.response.status>=500:!0}async function S(t){const n=new AbortController,r=setTimeout(()=>n.abort(),g),s=Date.now();try{return await fetch(`${t}/`,{method:"HEAD",signal:n.signal}),Date.now()-s}catch{return 1/0}finally{clearTimeout(r)}}async function w(){if(!c.probing){c.probing=!0;try{const n=(await Promise.all(a.map(async r=>({url:r,latency:await S(r)})))).filter(r=>r.latency<1/0).sort((r,s)=>r.latency-s.latency);n.length>0&&v(n[0].url)}catch{}finally{c.probing=!1}}}function E(){Date.now()-c.cachedAt>h&&!c.probing&&w().catch(()=>{});const r=c.preferred;return r&&a.includes(r)?[r,...a.filter(s=>s!==r)]:[...a]}function m(t){if(t==="classworkscloud")return E();const n=l("server.domain");return n?[n]:[]}async function R(t,n={}){const r=n.provider||l("server.provider"),s=n.onServerTried,u=typeof s=="function",p=m(r),e=[];let f=null;for(const i of p){e.push({url:i,status:"trying"}),u&&s({url:i,status:"trying",tried:[...e]});try{const o=await t(i);return e[e.length-1].status="success",u&&s({url:i,status:"success",tried:[...e]}),r==="classworkscloud"&&v(i),o}catch(o){if(!y(o))throw e[e.length-1].status="client-error",u&&s({url:i,status:"client-error",error:o,tried:[...e]}),o;f=o,e[e.length-1].status="failed",e[e.length-1].error=o.message||String(o),u&&s({url:i,status:"failed",error:o,tried:[...e]}),console.warn(`Server ${i} failed, trying next:`,o.message)}}console.error("All servers failed. Tried:",e);const d=f||new Error("All servers failed");throw d.triedServers=e,d}function T(){return l("server.provider")==="classworkscloud"?c.preferred||a[0]:l("server.domain")||""}function A(){return l("server.provider")==="classworkscloud"}export{T as g,A as i,R as t}; +import{n as l}from"./index-Ceq_468-.js";const a=["https://kv-service.houlang.cloud","https://kv-service.wuyuan.dev"],h=5*60*1e3,g=3e3,c={preferred:null,cachedAt:0,probing:!1};function v(t){c.preferred=t,c.cachedAt=Date.now()}function y(t){return t.response?t.response.status>=500:!0}async function S(t){const n=new AbortController,r=setTimeout(()=>n.abort(),g),s=Date.now();try{return await fetch(`${t}/`,{method:"HEAD",signal:n.signal}),Date.now()-s}catch{return 1/0}finally{clearTimeout(r)}}async function w(){if(!c.probing){c.probing=!0;try{const n=(await Promise.all(a.map(async r=>({url:r,latency:await S(r)})))).filter(r=>r.latency<1/0).sort((r,s)=>r.latency-s.latency);n.length>0&&v(n[0].url)}catch{}finally{c.probing=!1}}}function E(){Date.now()-c.cachedAt>h&&!c.probing&&w().catch(()=>{});const r=c.preferred;return r&&a.includes(r)?[r,...a.filter(s=>s!==r)]:[...a]}function m(t){if(t==="classworkscloud")return E();const n=l("server.domain");return n?[n]:[]}async function R(t,n={}){const r=n.provider||l("server.provider"),s=n.onServerTried,u=typeof s=="function",p=m(r),e=[];let f=null;for(const i of p){e.push({url:i,status:"trying"}),u&&s({url:i,status:"trying",tried:[...e]});try{const o=await t(i);return e[e.length-1].status="success",u&&s({url:i,status:"success",tried:[...e]}),r==="classworkscloud"&&v(i),o}catch(o){if(!y(o))throw e[e.length-1].status="client-error",u&&s({url:i,status:"client-error",error:o,tried:[...e]}),o;f=o,e[e.length-1].status="failed",e[e.length-1].error=o.message||String(o),u&&s({url:i,status:"failed",error:o,tried:[...e]}),console.warn(`Server ${i} failed, trying next:`,o.message)}}console.error("All servers failed. Tried:",e);const d=f||new Error("All servers failed");throw d.triedServers=e,d}function T(){return l("server.provider")==="classworkscloud"?c.preferred||a[0]:l("server.domain")||""}function A(){return l("server.provider")==="classworkscloud"}export{T as g,A as i,R as t}; diff --git a/assets/settings-DjXlifwc.js b/assets/settings-CDDXJDZW.js similarity index 65% rename from assets/settings-DjXlifwc.js rename to assets/settings-CDDXJDZW.js index ca88f2a..6619716 100644 --- a/assets/settings-DjXlifwc.js +++ b/assets/settings-CDDXJDZW.js @@ -1,24 +1,24 @@ -import{_ as Rt,V as Sn}from"./MessageLog-CZsTVP4i.js";import{_ as Q,W as ze,c as K,f as g,d as j,j as $e,l as ue,e as M,o as et,C as Kt,x as Ft,X as Te,n as y,s as re,Y as Cn,r as z,h as p,p as O,q as D,i as U,z as ft,Z as Re,w as pt,A as ut,g as Z,$ as Vn,R as _n,a0 as Vt,H as Dn,I as dt,a1 as An,a2 as In,N as Tn,E as Un,G as Ot,F as Ke,k as we,V as Jt,t as ne,a3 as jn,a4 as Bn,a5 as Ht,a6 as Mn,y as _t}from"./index-DGIAsv4W.js";import{X as m,Y as h,Z as n,j as t,a1 as a,S as v,$ as b,af as Ye,k as c,P as Nn,_ as k,m as Ve,F as H,a2 as te,q as Pn,t as Ce,e as L,b as se,s as qe,I as zn,p as En,d as Qt,o as ct,N as De,n as pe,R as Dt,V as Ln,aa as Ae,r as Rn,ae as _e,ac as Kn,D as Fn,a4 as On}from"./vendor-vue-BiQC5iF7.js";import{V as G}from"./VChip-mRzIPuM0.js";import{V as ht}from"./VSwitch-k6hfPfa2.js";import{V as Ze}from"./VSelect-oxA0t9CG.js";import{V as N,e as Jn,u as Hn,a as At,f as Qn,d as Gn,g as Wn}from"./VTextField-BurlcggD.js";import{V as gt,a as Yn}from"./VSheet-BBnSA_kJ.js";import{V as Y,a as Ne}from"./VAlert-BZ4-f-hy.js";import{A as wt,z as mt,as as qn,p as Fe,at as It,f as tt,au as Zn,u as vt,s as Ue,k as Gt,n as Wt,ao as Xn,t as $n,a0 as es}from"./vendor-vuetify-DsKlzgKp.js";import{d as ie,b as Tt,a as ts,o as ns,k as ss}from"./dataProvider-GWPC-0Vt.js";import{V as de,a as R}from"./VRow-Cjhiymuu.js";import{V as bt}from"./VContainer-DZyPrcqa.js";import{a as Xe}from"./vendor-utils-DwALrQNc.js";import{V as Se}from"./VCheckbox-BRi_fHJs.js";import{V as Pe}from"./VTextarea-vGWmTJww.js";import{s as is,a as ls}from"./soundList-D9U-Grcp.js";import{V as os}from"./VSkeletonLoader-DwE_iqTb.js";import{V as as}from"./VTimePicker-BApLLZ8X.js";import{V as Yt}from"./VForm-ObW_L7SS.js";import{V as kt,a as yt,b as qt,c as xt}from"./VExpansionPanels-BDI8gHu5.js";import{V as Zt}from"./VDataTable-DmTCHg4b.js";import{V as Ut}from"./VCombobox-BGa7K58w.js";import{V as jt}from"./VCheckboxBtn-BKcSogH0.js";import{i as rs,t as us}from"./serverRotation-BtcwvdZJ.js";import{getVisitorId as ds}from"./visitorId-D_nwlNzA.js";import{b as Bt,c as Mt,V as cs,a as ms}from"./VAppBarTitle-DheyIZnb.js";import{V as fs,a as fe}from"./VTable-Cq72iBVc.js";import"./VPicker-SM18M-iq.js";import"./VPagination-DLzhjdaP.js";const ps={name:"SettingsCard",props:{title:{type:String,required:!0},icon:{type:String,required:!0},loading:{type:Boolean,default:!1}}};function hs(s,e,o,u,i,l){return m(),h(M,{class:"settings-card rounded-lg",elevation:"2"},{default:n(()=>[t(ze,null,{prepend:n(()=>[t(g,{icon:o.icon,class:"mr-2",size:"large"},null,8,["icon"])]),default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[a(v(o.title),1)]),_:1})]),_:1}),t(j,null,{default:n(()=>[o.loading?(m(),h($e,{key:0,class:"mb-4",color:"primary",indeterminate:""})):b("",!0),Ye(s.$slots,"default",{},void 0,!0)]),_:3}),s.$slots.actions?(m(),h(ue,{key:0,class:"pa-4"},{default:n(()=>[Ye(s.$slots,"actions",{},void 0,!0)]),_:3})):b("",!0)]),_:3})}const W=Q(ps,[["render",hs],["__scopeId","data-v-cd0153ca"]]),gs=[{text:"帝高阳之苗裔兮,朕皇考曰伯庸。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"摄提贞于孟陬兮,惟庚寅吾以降。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇览揆余初度兮,肇锡余以嘉名。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"名余曰正则兮,字余曰灵均。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷吾既有此内美兮,又重之以修能。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扈江离与辟芷兮,纫秋兰以为佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汩余若将不及兮,恐年岁之不吾与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝搴阰之木兰兮,夕揽洲之宿莽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日月忽其不淹兮,春与秋其代序。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟草木之零落兮,恐美人之迟暮。(惟 通:唯)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不抚壮而弃秽兮,何不改此度?(改此度 一作:改乎此度)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乘骐骥以驰骋兮,来吾道夫先路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"昔三后之纯粹兮,固众芳之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"杂申椒与菌桂兮,岂惟纫夫蕙茝!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"彼尧舜之耿介兮,既遵道而得路。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何桀纣之猖披兮,夫唯捷径以窘步。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟夫党人之偷乐兮,路幽昧以险隘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂余身之惮殃兮,恐皇舆之败绩!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽奔走以先后兮,及前王之踵武。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"荃不查余之中情兮,反信谗而齌怒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余固知謇謇之为患兮,忍而不能舍也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"指九天以为正兮,夫唯灵修之故也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰黄昏以为期兮,羌中道而改路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"初既与余成言兮,后悔遁而有他。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既不难夫离别兮,伤灵修之数化。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既滋兰之九畹兮,又树蕙之百亩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"畦留夷与揭车兮,杂杜衡与芳芷。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"冀枝叶之峻茂兮,愿俟时乎吾将刈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽萎绝其亦何伤兮,哀众芳之芜秽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众皆竞进以贪婪兮,凭不厌乎求索。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羌内恕己以量人兮,各兴心而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽驰骛以追逐兮,非余心之所急。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"老冉冉其将至兮,恐修名之不立。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝饮木兰之坠露兮,夕餐秋菊之落英。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟余情其信姱以练要兮,长顑颔亦何伤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"掔木根以结茝兮,贯薜荔之落蕊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"矫菌桂以纫蕙兮,索胡绳之纚纚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"謇吾法夫前修兮,非世俗之所服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽不周于今之人兮,愿依彭咸之遗则。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"长太息以掩涕兮,哀民生之多艰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余虽好修姱以鞿羁兮,謇朝谇而夕替。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既替余以蕙纕兮,又申之以揽茝。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"亦余心之所善兮,虽九死其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怨灵修之浩荡兮,终不察夫民心。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众女嫉余之蛾眉兮,谣诼谓余以善淫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之工巧兮,偭规矩而改错。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"背绳墨以追曲兮,竞周容以为度。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忳郁邑余侘傺兮,吾独穷困乎此时也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁溘死以流亡兮,余不忍为此态也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸷鸟之不群兮,自前世而固然。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何方圜之能周兮,夫孰异道而相安?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屈心而抑志兮,忍尤而攘诟。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"伏清白以死直兮,固前圣之所厚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"悔相道之不察兮,延伫乎吾将反。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"回朕车以复路兮,及行迷之未远。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"步余马于兰皋兮,驰椒丘且焉止息。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"进不入以离尤兮,退将复修吾初服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"制芰荷以为衣兮,集芙蓉以为裳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不吾知其亦已兮,苟余情其信芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"高余冠之岌岌兮,长余佩之陆离。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳与泽其杂糅兮,唯昭质其犹未亏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以游目兮,将往观乎四荒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"佩缤纷其繁饰兮,芳菲菲其弥章。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民生各有所乐兮,余独好修以为常。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽体解吾犹未变兮,岂余心之可惩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"女媭之婵媛兮,申申其詈予,曰:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鲧婞直以亡身兮,终然夭乎羽之野。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汝何博謇而好修兮,纷独有此姱节?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"薋菉葹以盈室兮,判独离而不服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众不可户说兮,孰云察余之中情?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世并举而好朋兮,夫何茕独而不予听?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"依前圣以节中兮,喟凭心而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"济沅湘以南征兮,就重华而陈词:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"启《九辩》与《九歌》兮,夏康娱以自纵。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不顾难以图后兮,五子用失乎家衖。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羿淫游以佚畋兮,又好射夫封狐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固乱流其鲜终兮,浞又贪夫厥家。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"浇身被服强圉兮,纵欲而不忍。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日康娱而自忘兮,厥首用夫颠陨。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夏桀之常违兮,乃遂焉而逢殃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"后辛之菹醢兮,殷宗用而不长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而祗敬兮,周论道而莫差。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"举贤才而授能兮,循绳墨而不颇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇天无私阿兮,览民德焉错辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫维圣哲以茂行兮,苟得用此下土。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"瞻前而顾后兮,相观民之计极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫孰非义而可用兮?孰非善而可服?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"阽余身而危死兮,览余初其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不量凿而正枘兮,固前修以菹醢。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曾歔欷余郁邑兮,哀朕时之不当。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"揽茹蕙以掩涕兮,沾余襟之浪浪。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"跪敷衽以陈辞兮,耿吾既得此中正。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驷玉虬以椉鹥兮,溘埃风余上征。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于苍梧兮,夕余至乎县圃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲少留此灵琐兮,日忽忽其将暮。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令羲和弭节兮,望崦嵫而勿迫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路曼曼其修远兮,吾将上下而求索。(曼曼 一作:漫漫)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"饮余马于咸池兮,总余辔乎扶桑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折若木以拂日兮,聊逍遥以相羊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"前望舒使先驱兮,后飞廉使奔属。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸾皇为余先戒兮,雷师告余以未具。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令凤鸟飞腾兮,继之以日夜。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"飘风屯其相离兮,帅云霓而来御。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,斑陆离其上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令帝阍开关兮,倚阊阖而望予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时暧暧其将罢兮,结幽兰而延伫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而不分兮,好蔽美而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝吾将济于白水兮,登阆风而绁马。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以流涕兮,哀高丘之无女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"溘吾游此春宫兮,折琼枝以继佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及荣华之未落兮,相下女之可诒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令丰隆乘云兮,求宓妃之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"解佩纕以结言兮,吾令謇修以为理。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,忽纬繣其难迁。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夕归次于穷石兮,朝濯发乎洧盘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"保厥美以骄傲兮,日康娱以淫游。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽信美而无礼兮,来违弃而改求。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览相观于四极兮,周流乎天余乃下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"望瑶台之偃蹇兮,见有娀之佚女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令鸩为媒兮,鸩告余以不好。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"雄鸠之鸣逝兮,余犹恶其佻巧。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"心犹豫而狐疑兮,欲自适而不可。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇既受诒兮,恐高辛之先我。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲远集而无所止兮,聊浮游以逍遥。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及少康之未家兮,留有虞之二姚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"理弱而媒拙兮,恐导言之不固。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而嫉贤兮,好蔽美而称恶。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"闺中既以邃远兮,哲王又不寤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怀朕情而不发兮,余焉能忍而与此终古?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"索琼茅以筳篿兮,命灵氛为余占之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:两美其必合兮,孰信修而慕之?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"思九州之博大兮,岂惟是其有女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉远逝而无狐疑兮,孰求美而释女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何所独无芳草兮,尔何怀乎故宇?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世幽昧以昡曜兮,孰云察余之善恶?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民好恶其不同兮,惟此党人其独异!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"户服艾以盈要兮,谓幽兰其不可佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览察草木其犹未得兮,岂珵美之能当?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苏粪壤以充帏兮,谓申椒其不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲从灵氛之吉占兮,心犹豫而狐疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"巫咸将夕降兮,怀椒糈而要之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"百神翳其备降兮,九疑缤其并迎。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇剡剡其扬灵兮,告余以吉故。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉升降以上下兮,求矩矱之所同。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而求合兮,挚咎繇而能调。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟中情其好修兮,又何必用夫行媒?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"说操筑于傅岩兮,武丁用而不疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吕望之鼓刀兮,遭周文而得举。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁戚之讴歌兮,齐桓闻以该辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及年岁之未晏兮,时亦犹其未央。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"恐鹈鴂之先鸣兮,使夫百草为之不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何琼佩之偃蹇兮,众薆然而蔽之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟此党人之不谅兮,恐嫉妒而折之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时缤纷其变易兮,又何可以淹留?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"兰芷变而不芳兮,荃蕙化而为茅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何昔日之芳草兮,今直为此萧艾也?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂其有他故兮,莫好修之害也!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余以兰为可恃兮,羌无实而容长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"委厥美以从俗兮,苟得列乎众芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"椒专佞以慢慆兮,樧又欲充夫佩帏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既干进而务入兮,又何芳之能祗?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之流从兮,又孰能无变化?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览椒兰其若兹兮,又况揭车与江离?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟兹佩之可贵兮,委厥美而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳菲菲而难亏兮,芬至今犹未沬。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"和调度以自娱兮,聊浮游而求女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及余饰之方壮兮,周流观乎上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"灵氛既告余以吉占兮,历吉日乎吾将行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折琼枝以为羞兮,精琼爢以为粻。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"为余驾飞龙兮,杂瑶象以为车。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何离心之可同兮?吾将远逝以自疏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"邅吾道夫昆仑兮,路修远以周流。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扬云霓之晻蔼兮,鸣玉鸾之啾啾。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于天津兮,夕余至乎西极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇翼其承旗兮,高翱翔之翼翼。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽吾行此流沙兮,遵赤水而容与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"麾蛟龙使梁津兮,诏西皇使涉予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路修远以多艰兮,腾众车使径待。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路不周以左转兮,指西海以为期。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屯余车其千乘兮,齐玉轪而并驰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驾八龙之婉婉兮,载云旗之委蛇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"抑志而弭节兮,神高驰之邈邈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"奏《九歌》而舞《韶》兮,聊假日以媮乐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"陟升皇之赫戏兮,忽临睨夫旧乡。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"仆夫悲余马怀兮,蜷局顾而不行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乱曰:已矣哉!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"国无人莫我知兮,又何怀乎故都!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既莫足与为美政兮,吾将从彭咸之所居!",author:"离骚",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"}],Nt={quotes:gs};let ot=null;async function ws(){return ot||(ot=(await Ft(async()=>{const{default:s}=await import("./core-Cy2g3AD-.js").then(e=>e.c);return{default:s}},[],import.meta.url)).default),ot}const Pt={text:"点击此处可以查看 Classworks 用户群里沙雕群友们的发言",author:"点击后会复制当前句子到剪贴板中"},zt={main:{delay:50,deleteSpeed:100},source:{delay:10,deleteSpeed:10,cursor:""}},vs={name:"EchoChamberCard",components:{SettingsCard:W},data:()=>({typewriter:null,sourceWriter:null,currentQuote:Pt,hasClicked:!1}),mounted(){this.initTypewriters()},beforeUnmount(){[this.typewriter,this.sourceWriter].forEach(s=>s==null?void 0:s.stop())},methods:{async initTypewriters(){const s=await ws();this.typewriter=new s(this.$refs.typewriter,zt.main),this.sourceWriter=new s(this.$refs.sourceWriter,zt.source),this.typeQuote(Pt)},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 Nt.quotes[Math.floor(Math.random()*Nt.quotes.length)]},async copyToClipboard(){if(!this.currentQuote)return;const{text:s,author:e,contributor:o,link:u}=this.currentQuote,i=[s,e&&`作者:${e}`,o&&`贡献者:${o}`,(u||o)&&`来源:${u||`https://github.com/${o}`}`].filter(Boolean);try{await navigator.clipboard.writeText(i.join(` -`))}catch(l){console.error("复制失败:",l)}}}},bs={ref:"typewriter",class:"typewriter-text"},ks={ref:"sourceWriter",class:"source-text"};function ys(s,e,o,u,i,l){const d=W;return m(),h(d,{border:"",icon:"mdi-thought-bubble",title:"回声洞",onClick:l.handleClick},{default:n(()=>[t(j,null,{default:n(()=>[c("div",bs,null,512),c("div",ks,null,512)]),_:1}),t(Nn,{name:"fade"},{default:n(()=>{var f;return[(f=s.currentQuote)!=null&&f.contributor?(m(),h(G,{key:0,class:"contributor"},{default:n(()=>[t(et,{start:""},{default:n(()=>[t(Kt,{src:`https://github.com/${s.currentQuote.contributor}.png`},null,8,["src"])]),_:1}),a(" "+v(s.currentQuote.contributor),1)]),_:1})):b("",!0)]}),_:1})]),_:1},8,["onClick"])}const Xt=Q(vs,[["render",ys],["__scopeId","data-v-c75e2e66"]]),xs={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=Cn(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,o])=>({title:o,value:e})),this.hasOptions=!0}else if(this.definition.validate){const e=this.definition.validate.toString().match(/\[(.*?)\]/);if(e){const u=e[1].split(",").map(i=>{const l=i.trim().replace(/['"]/g,"");return{title:this.getDisplayValue(l)||l,value:l}});u.length>0&&(this.selectOptions=u,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 o=s.match(/value\s*<=\s*(\d+)/);o&&(this.maxValue=Number(o[1]));const u=this.maxValue-this.minValue;u>100?this.stepValue=10:u>20?this.stepValue=5:u>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)),re(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&&(Te(this.settingKey),this.localValue=y(this.settingKey),this.showSnackbarMessage("已重置为默认值"),this.$emit("update",this.settingKey,this.localValue))},showSnackbarMessage(s){this.snackbarText=s,this.showSnackbar=!0}}},Ss={class:"d-flex flex-column flex-sm-row align-center"},Cs={key:0,class:"me-2"},Vs={key:2,class:"d-flex align-center"},_s={key:0,class:"px-4 pb-2 pt-0"};function Ds(s,e,o,u,i,l){return m(),k(H,null,[t(D,{disabled:o.disabled,class:"setting-item"},{prepend:n(()=>[t(g,{icon:l.settingIcon},null,8,["icon"])]),append:n(()=>[c("div",Ss,[i.type!=="string"||i.hasOptions?(m(),k("div",Cs,[i.type==="boolean"?(m(),h(ht,{key:0,modelValue:i.localValue,"onUpdate:modelValue":[e[0]||(e[0]=d=>i.localValue=d),l.updateSetting],disabled:o.disabled,density:"comfortable","hide-details":""},null,8,["modelValue","disabled","onUpdate:modelValue"])):i.type==="string"&&i.hasOptions?(m(),h(Ze,{key:1,modelValue:i.localValue,"onUpdate:modelValue":[e[1]||(e[1]=d=>i.localValue=d),l.updateSetting],disabled:o.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"?(m(),k("div",Vs,[t(p,{disabled:o.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:o.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(p,{disabled:o.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"])])):b("",!0)])):b("",!0),t(gt,{location:"bottom"},{activator:n(({props:d})=>[t(p,Ve({disabled:o.disabled,class:"ml-2",icon:"mdi-dots-vertical",size:"small"},d,{variant:"text"}),null,16,["disabled"])]),default:n(()=>[t(O,{density:"compact"},{default:n(()=>[t(D,{onClick:l.copySettingId},{prepend:n(()=>[t(g,{icon:"mdi-key",size:"small"})]),default:n(()=>[t(z,null,{default:n(()=>[...e[7]||(e[7]=[a("复制设置ID",-1)])]),_:1})]),_:1},8,["onClick"]),t(D,{onClick:l.copySettingValue},{prepend:n(()=>[t(g,{icon:"mdi-content-copy",size:"small"})]),default:n(()=>[t(z,null,{default:n(()=>[...e[8]||(e[8]=[a("复制设置值",-1)])]),_:1})]),_:1},8,["onClick"]),t(U),t(D,{disabled:l.isDefaultValue,onClick:l.resetToDefault},{prepend:n(()=>[t(g,{icon:"mdi-restore",size:"small"})]),default:n(()=>[t(z,null,{default:n(()=>[...e[9]||(e[9]=[a("重置为默认值",-1)])]),_:1})]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})])]),default:n(()=>[t(z,{class:"text-wrap"},{default:n(()=>[a(v(l.displayTitle),1)]),_:1})]),_:1},8,["disabled"]),i.type==="string"&&!i.hasOptions?(m(),k("div",_s,[t(N,{modelValue:i.localValue,"onUpdate:modelValue":[e[5]||(e[5]=d=>i.localValue=d),l.updateSetting],disabled:o.disabled,"bg-color":"surface",class:"setting-text-field mt-1",density:"compact","hide-details":"",variant:"outlined"},null,8,["modelValue","disabled","onUpdate:modelValue"])])):b("",!0),t(ft,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[6]||(e[6]=d=>i.showSnackbar=d),timeout:2e3,color:"success",location:"top"},{default:n(()=>[a(v(i.snackbarText),1)]),_:1},8,["modelValue"])],64)}const ve=Q(xs,[["render",Ds],["__scopeId","data-v-14c3ef9d"]]),As={name:"SettingsExplorer",components:{SettingItem:ve},data(){return{searchQuery:"",currentSettings:{},unwatchFunction:null}},computed:{isDeveloperMode(){return y("developer.enabled")},allSettings(){var e;const s=[];for(const[o,u]of Object.entries(ut))this.searchQuery&&!o.toLowerCase().includes(this.searchQuery.toLowerCase())&&!((e=u.description)!=null&&e.toLowerCase().includes(this.searchQuery.toLowerCase()))||s.push({key:o,...u});return s},formattedSettings(){return JSON.stringify(this.currentSettings,null,2)}},created(){this.updateCurrentSettings(),this.unwatchFunction=pt(()=>{this.updateCurrentSettings()})},beforeUnmount(){this.unwatchFunction&&this.unwatchFunction()},methods:{updateCurrentSettings(){this.currentSettings=Re()},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:"复制到剪贴板失败"})})}}},Is={class:"settings-explorer"},Ts={class:"settings-json"};function Us(s,e,o,u,i,l){const d=ve;return m(),k("div",Is,[c("div",null,[t(N,{modelValue:i.searchQuery,"onUpdate:modelValue":e[0]||(e[0]=f=>i.searchQuery=f),class:"mb-4",clearable:"",density:"comfortable",label:"搜索设置","prepend-inner-icon":"mdi-magnify",variant:"outlined"},null,8,["modelValue"]),t(O,null,{default:n(()=>[(m(!0),k(H,null,te(l.allSettings,f=>(m(),k("div",{key:f.key},[(m(),h(d,{key:f.key,disabled:f.requireDeveloper&&!l.isDeveloperMode,"setting-key":f.key,onError:l.onSettingError,onUpdate:l.onSettingUpdate},null,8,["disabled","setting-key","onError","onUpdate"])),t(U,{class:"my-2"})]))),128))]),_:1}),t(M,{border:""},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[...e[1]||(e[1]=[a(" 当前配置 ",-1)])]),_:1}),t(j,null,{default:n(()=>[c("pre",Ts,v(l.formattedSettings),1)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{onClick:l.copySettingsToClipboard},{default:n(()=>[e[3]||(e[3]=a(" 复制到剪贴板 ",-1)),t(g,{right:""},{default:n(()=>[...e[2]||(e[2]=[a(" mdi-content-copy ",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1})]),_:1})])])}const $t=Q(As,[["render",Us],["__scopeId","data-v-9750a84f"]]),St=Symbol.for("vuetify:v-slider");function js(s,e,o){const u=o==="vertical",i=e.getBoundingClientRect(),l="touches"in s?s.touches[0]:s;return u?l.clientY-(i.top+i.height/2):l.clientX-(i.left+i.width/2)}function Bs(s,e){return"touches"in s&&s.touches.length?s.touches[0][e]:"changedTouches"in s&&s.changedTouches.length?s.changedTouches[0][e]:s[e]}const Ms=Fe({disabled:{type:Boolean,default:null},error:Boolean,readonly:{type:Boolean,default:null},max:{type:[Number,String],default:100},min:{type:[Number,String],default:0},step:{type:[Number,String],default:0},thumbColor:String,thumbLabel:{type:[Boolean,String],default:void 0,validator:s=>typeof s=="boolean"||s==="always"||s==="hover"},thumbSize:{type:[Number,String],default:20},showTicks:{type:[Boolean,String],default:!1,validator:s=>typeof s=="boolean"||s==="always"},ticks:{type:[Array,Object]},tickSize:{type:[Number,String],default:2},color:String,trackColor:String,trackFillColor:String,trackSize:{type:[Number,String],default:4},direction:{type:String,default:"horizontal",validator:s=>["vertical","horizontal"].includes(s)},reverse:Boolean,noKeyboard:Boolean,..._n(),...Vn({elevation:2}),ripple:{type:Boolean,default:!0}},"Slider"),Ns=s=>{const e=L(()=>parseFloat(s.min)),o=L(()=>parseFloat(s.max)),u=L(()=>Number(s.step)>0?parseFloat(s.step):0),i=L(()=>Math.max(It(u.value),It(e.value)));function l(d){if(d=parseFloat(d),u.value<=0)return d;const f=mt(d,e.value,o.value),r=e.value%u.value;let w=Math.round((f-r)/u.value)*u.value+r;return f>w&&w+u.value>o.value&&(w=o.value),parseFloat(Math.min(w,o.value).toFixed(i.value))}return{min:e,max:o,step:u,decimals:i,roundValue:l}},Ps=s=>{let{props:e,steps:o,onSliderStart:u,onSliderMove:i,onSliderEnd:l,getActiveThumb:d}=s;const f=Jn(e),{isRtl:r}=wt(),w=Ce(()=>e.reverse),x=L(()=>e.direction==="vertical"),I=L(()=>x.value!==w.value),{min:F,max:$,step:J,decimals:he,roundValue:ae}=o,ce=L(()=>parseInt(e.thumbSize,10)),le=L(()=>parseInt(e.tickSize,10)),oe=L(()=>parseInt(e.trackSize,10)),C=L(()=>($.value-F.value)/J.value),V=L(()=>e.error||f.isDisabled.value?void 0:e.thumbColor??e.color),T=L(()=>e.error||f.isDisabled.value?void 0:e.thumbColor),_=L(()=>e.error||f.isDisabled.value?void 0:e.trackColor??e.color),E=L(()=>e.error||f.isDisabled.value?void 0:e.trackFillColor??e.color),q=qe(!1),P=qe(0),ee=se(),A=se();function X(S){var Ct;const B=(Ct=ee.value)==null?void 0:Ct.$el;if(!B)return;const me=e.direction==="vertical",Me=me?"top":"left",Qe=me?"height":"width",Ge=me?"clientY":"clientX",{[Me]:We,[Qe]:yn}=B.getBoundingClientRect(),xn=Bs(S,Ge);let lt=mt((xn-We-P.value)/yn)||0;return(me?I.value:I.value!==r.value)&&(lt=1-lt),ae(F.value+lt*($.value-F.value))}const be=S=>{const B=X(S);B!=null&&l({value:B}),q.value=!1,P.value=0},ge=S=>{const B=X(S);A.value=d(S),A.value&&(q.value=!0,A.value.contains(S.target)?P.value=js(S,A.value,e.direction):(P.value=0,B!=null&&i({value:B})),B!=null&&u({value:B}),zn(()=>{var me;return(me=A.value)==null?void 0:me.focus()}))},ke={passive:!0,capture:!0};function ye(S){const B=X(S);B!=null&&i({value:B})}function je(S){S.stopPropagation(),S.preventDefault(),be(S),window.removeEventListener("mousemove",ye,ke),window.removeEventListener("mouseup",je)}function Ie(S){var B;be(S),window.removeEventListener("touchmove",ye,ke),(B=S.target)==null||B.removeEventListener("touchend",Ie)}function Be(S){var B;ge(S),window.addEventListener("touchmove",ye,ke),(B=S.target)==null||B.addEventListener("touchend",Ie,{passive:!1})}function Ee(S){S.button===0&&(S.preventDefault(),ge(S),window.addEventListener("mousemove",ye,ke),window.addEventListener("mouseup",je,{passive:!1}))}Pn(()=>{window.removeEventListener("touchmove",ye),window.removeEventListener("mousemove",ye),window.removeEventListener("mouseup",je)});const xe=S=>{const B=(S-F.value)/($.value-F.value)*100;return mt(isNaN(B)?0:B,0,100)},Oe=Ce(()=>e.showTicks),Je=L(()=>Oe.value?e.ticks?Array.isArray(e.ticks)?e.ticks.map(S=>({value:S,position:xe(S),label:S.toString()})):Object.keys(e.ticks).map(S=>({value:parseFloat(S),position:xe(parseFloat(S)),label:e.ticks[S]})):C.value!==1/0?qn(C.value+1).map(S=>{const B=F.value+S*J.value;return{value:B,position:xe(B)}}):[]:[]),it=L(()=>Je.value.some(S=>{let{label:B}=S;return!!B})),He={activeThumbRef:A,color:Ce(()=>e.color),decimals:he,disabled:f.isDisabled,direction:Ce(()=>e.direction),elevation:Ce(()=>e.elevation),hasLabels:it,isReversed:w,indexFromEnd:I,min:F,max:$,mousePressed:q,noKeyboard:Ce(()=>e.noKeyboard),numTicks:C,onSliderMousedown:Ee,onSliderTouchstart:Be,parsedTicks:Je,parseMouseMove:X,position:xe,readonly:f.isReadonly,rounded:Ce(()=>e.rounded),roundValue:ae,showTicks:Oe,startOffset:P,step:J,thumbSize:ce,thumbColor:V,thumbLabelColor:T,thumbLabel:Ce(()=>e.thumbLabel),ticks:Ce(()=>e.ticks),tickSize:le,trackColor:_,trackContainerRef:ee,trackFillColor:E,trackSize:oe,vertical:x};return En(St,He),He},zs=Fe({focused:Boolean,max:{type:Number,required:!0},min:{type:Number,required:!0},modelValue:{type:Number,required:!0},position:{type:Number,required:!0},ripple:{type:[Boolean,Object],default:!0},name:String,noKeyboard:Boolean,...Gt()},"VSliderThumb"),Es=tt()({name:"VSliderThumb",directives:{vRipple:Vt},props:zs(),emits:{"update:modelValue":s=>!0},setup(s,e){let{slots:o,emit:u}=e;const i=Qt(St),{isRtl:l,rtlClasses:d}=wt();if(!i)throw new Error("[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider");const{min:f,max:r,thumbColor:w,thumbLabelColor:x,step:I,disabled:F,thumbSize:$,thumbLabel:J,direction:he,isReversed:ae,vertical:ce,readonly:le,elevation:oe,mousePressed:C,decimals:V,indexFromEnd:T}=i,_=qe(!1),E=qe(!1),q=L(()=>F.value?void 0:oe.value),{elevationClasses:P}=In(q),{textColorClasses:ee,textColorStyles:A}=Dn(w),{backgroundColorClasses:X,backgroundColorStyles:be}=dt(x),{pageup:ge,pagedown:ke,end:ye,home:je,left:Ie,right:Be,down:Ee,up:xe}=Zn,Oe=[ge,ke,ye,je,Ie,Be,Ee,xe],Je=L(()=>I.value?[1,2,3]:[1,5,10]);function it(S,B){if(s.noKeyboard||F.value||!Oe.includes(S.key))return;S.preventDefault();const me=I.value||.1,Me=(r.value-f.value)/me;if([Ie,Be,Ee,xe].includes(S.key)){const Ge=(ce.value?[l.value?Ie:Be,ae.value?Ee:xe]:T.value!==l.value?[Ie,xe]:[Be,xe]).includes(S.key)?1:-1,We=S.shiftKey?2:S.ctrlKey?1:0;Ge===-1&&B===r.value&&!We&&!Number.isInteger(Me)?B=B-Me%1*me:B=B+Ge*me*Je.value[We]}else if(S.key===je)B=f.value;else if(S.key===ye)B=r.value;else{const Qe=S.key===ke?1:-1;B=B-Qe*me*(Me>100?Me/10:10)}return Math.max(s.min,Math.min(s.max,B))}function He(S){const B=it(S,s.modelValue);B!=null&&(E.value=!1,u("update:modelValue",B))}return ct(()=>s.focused,S=>{S&&(E.value=!1)}),vt(()=>{const S=Ue(T.value?100-s.position:s.position,"%"),B=J.value==="always"||J.value===!0&&s.focused||J.value==="hover"&&(_.value||s.focused&&!E.value);return c("div",{class:pe(["v-slider-thumb",{"v-slider-thumb--focused":s.focused,"v-slider-thumb--pressed":s.focused&&C.value},s.class,d.value]),style:De([{"--v-slider-thumb-position":S,"--v-slider-thumb-size":Ue($.value)},s.style]),role:"slider",tabindex:F.value?-1:0,"aria-label":s.name,"aria-valuemin":f.value,"aria-valuemax":r.value,"aria-valuenow":s.modelValue,"aria-readonly":!!le.value,"aria-orientation":he.value,onKeydown:le.value?void 0:He,onMouseenter:()=>{_.value=!0},onMouseleave:()=>{_.value=!1,E.value=!0}},[c("div",{class:pe(["v-slider-thumb__surface",ee.value,P.value]),style:De(A.value)},null),Dt(c("div",{class:pe(["v-slider-thumb__ripple",ee.value]),style:De(A.value)},null),[[Vt,s.ripple,null,{circle:!0,center:!0}]]),t(An,{origin:"bottom center"},{default:()=>{var me;return[Dt(c("div",{class:"v-slider-thumb__label-container"},[c("div",{class:pe(["v-slider-thumb__label",X.value]),style:De(be.value)},[c("div",null,[((me=o["thumb-label"])==null?void 0:me.call(o,{modelValue:s.modelValue}))??s.modelValue.toFixed(I.value?V.value:1)]),c("div",{class:"v-slider-thumb__label-wedge"},null)])]),[[Ln,B]])]}})])}),{}}}),Ls=Fe({start:{type:Number,required:!0},stop:{type:Number,required:!0},...Gt()},"VSliderTrack"),Rs=tt()({name:"VSliderTrack",props:Ls(),emits:{},setup(s,e){let{slots:o}=e;const u=Qt(St);if(!u)throw new Error("[Vuetify] v-slider-track must be inside v-slider or v-range-slider");const{color:i,parsedTicks:l,rounded:d,showTicks:f,tickSize:r,trackColor:w,trackFillColor:x,trackSize:I,vertical:F,min:$,max:J,indexFromEnd:he}=u,{roundedClasses:ae}=Tn(d),{backgroundColorClasses:ce,backgroundColorStyles:le}=dt(x),{backgroundColorClasses:oe,backgroundColorStyles:C}=dt(w),V=L(()=>`inset-${F.value?"block":"inline"}-${he.value?"end":"start"}`),T=L(()=>F.value?"height":"width"),_=L(()=>({[V.value]:"0%",[T.value]:"100%"})),E=L(()=>s.stop-s.start),q=L(()=>({[V.value]:Ue(s.start,"%"),[T.value]:Ue(E.value,"%")})),P=L(()=>f.value?(F.value?l.value.slice().reverse():l.value).map((A,X)=>{var ge;const be=A.value!==$.value&&A.value!==J.value?Ue(A.position,"%"):void 0;return c("div",{key:A.value,class:pe(["v-slider-track__tick",{"v-slider-track__tick--filled":A.position>=s.start&&A.position<=s.stop,"v-slider-track__tick--first":A.value===$.value,"v-slider-track__tick--last":A.value===J.value}]),style:{[V.value]:be}},[(A.label||o["tick-label"])&&c("div",{class:"v-slider-track__tick-label"},[((ge=o["tick-label"])==null?void 0:ge.call(o,{tick:A,index:X}))??A.label])])}):[]);return vt(()=>c("div",{class:pe(["v-slider-track",ae.value,s.class]),style:De([{"--v-slider-track-size":Ue(I.value),"--v-slider-tick-size":Ue(r.value)},s.style])},[c("div",{class:pe(["v-slider-track__background",oe.value,{"v-slider-track__background--opacity":!!i.value||!x.value}]),style:{..._.value,...C.value}},null),c("div",{class:pe(["v-slider-track__fill",ce.value]),style:{...q.value,...le.value}},null),f.value&&c("div",{class:pe(["v-slider-track__ticks",{"v-slider-track__ticks--always-show":f.value==="always"}])},[P.value])])),{}}}),Ks=Fe({...Wn(),...Ms(),...Gn(),modelValue:{type:[Number,String],default:0}},"VSlider"),Et=tt()({name:"VSlider",inheritAttrs:!1,props:Ks(),emits:{"update:focused":s=>!0,"update:modelValue":s=>!0,start:s=>!0,end:s=>!0},setup(s,e){let{slots:o,emit:u,attrs:i}=e;const l=se(),d=se(),{rtlClasses:f}=wt(),r=Ns(s),w=Wt(s,"modelValue",void 0,P=>r.roundValue(P??r.min.value)),{min:x,max:I,mousePressed:F,roundValue:$,onSliderMousedown:J,onSliderTouchstart:he,trackContainerRef:ae,position:ce,hasLabels:le,disabled:oe,readonly:C,noKeyboard:V}=Ps({props:s,steps:r,onSliderStart:()=>{!oe.value&&!C.value&&u("start",w.value)},onSliderEnd:P=>{let{value:ee}=P;const A=$(ee);!oe.value&&!C.value&&(w.value=A),u("end",A)},onSliderMove:P=>{let{value:ee}=P;!oe.value&&!C.value&&(w.value=$(ee))},getActiveThumb:()=>{var P;return(P=l.value)==null?void 0:P.$el}}),{isFocused:T,focus:_,blur:E}=Hn(s),q=L(()=>ce(w.value));return vt(()=>{const P=At.filterProps(s),[ee,A]=Xn(i),X=!!(s.label||o.label||o.prepend);return t(At,Ve({ref:d,class:["v-slider",{"v-slider--has-labels":!!o["tick-label"]||le.value,"v-slider--focused":T.value,"v-slider--pressed":F.value,"v-slider--disabled":oe.value},f.value,s.class],style:s.style},P,ee,{focused:T.value}),{...o,prepend:X?be=>{var ge,ke;return c(H,null,[((ge=o.label)==null?void 0:ge.call(o,be))??(s.label?t(Qn,{id:be.id.value,class:"v-slider__label",text:s.label},null):void 0),(ke=o.prepend)==null?void 0:ke.call(o,be)])}:void 0,default:be=>{let{id:ge,messagesId:ke}=be;return c("div",{class:"v-slider__container",onMousedown:C.value?void 0:J,onTouchstartPassive:C.value?void 0:he},[c("input",{id:ge.value,name:s.name||ge.value,disabled:oe.value,readonly:C.value,tabindex:"-1",value:w.value},null),t(Rs,{ref:ae,start:0,stop:q.value},{"tick-label":o["tick-label"]}),t(Es,Ve({ref:l,"aria-describedby":ke.value,focused:T.value,noKeyboard:V.value,min:x.value,max:I.value,modelValue:w.value,"onUpdate:modelValue":ye=>w.value=ye,position:q.value,elevation:s.elevation,onFocus:_,onBlur:E,ripple:s.ripple,name:s.name},A),{"thumb-label":o["thumb-label"]})])}})}),Un({focus:()=>{var P;return(P=l.value)==null?void 0:P.$el.focus()}},d)}}),Fs=[{label:"Bing 随机壁纸",url:"https://bing.img.run/rand.php"},{label:"Bing 每日壁纸",url:"https://bing.img.run/1920x1080.php"},{label:"随机风景",url:"https://picsum.photos/1920/1080?random=1"},{label:"随机二次元",url:"https://uapis.cn/api/v1/random/image?category=acg&type=pc"}],at=10,Os={name:"BackgroundSettingsCard",components:{SettingsCard:W,SettingItem:ve},data(){const s=y("background.imageData")||"",e=y("background.url")||"";return{imageSource:s?"upload":"url",localUrl:e,localImageData:s,localBlur:y("background.blur")??10,localOpacity:y("background.opacity")??30,isDragging:!1,saving:!1,uploadWarning:"",urlPresets:Fs,settingItemKey:0,maxImageSizeMB:at}},computed:{activeImageSrc(){return this.imageSource==="upload"&&this.localImageData?this.localImageData:this.imageSource==="url"&&this.localUrl?this.localUrl:""},previewContainerStyle(){return{position:"relative",width:"100%",height:"160px",borderRadius:"12px",overflow:"hidden",border:"1px solid rgba(128,128,128,0.3)"}},previewBgStyle(){return this.activeImageSrc?{position:"absolute",inset:"0",backgroundImage:`url(${this.activeImageSrc})`,backgroundSize:"cover",backgroundPosition:"center",filter:`blur(${this.localBlur}px)`,transform:"scale(1.1)"}:{position:"absolute",inset:"0",background:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)",filter:`blur(${this.localBlur}px)`,transform:"scale(1.1)"}},previewOverlayStyle(){return{position:"absolute",inset:"0",background:`rgba(0, 0, 0, ${this.localOpacity/100})`}}},methods:{validateUrl(s){if(!s)return!0;try{return new URL(s),!0}catch{return"请输入有效的图片地址"}},onUrlChange(s){this.localUrl=s||""},onBlurChange(s){this.localBlur=s},onOpacityChange(s){this.localOpacity=s},applyPreset(s){this.localUrl=s,this.imageSource="url"},triggerFileInput(){this.$refs.fileInput.click()},handleDrop(s){var o,u;this.isDragging=!1;const e=(u=(o=s.dataTransfer)==null?void 0:o.files)==null?void 0:u[0];e&&this.processFile(e)},handleFileChange(s){var o;const e=(o=s.target.files)==null?void 0:o[0];e&&this.processFile(e),s.target.value=""},processFile(s){if(this.uploadWarning="",!s.type.startsWith("image/")){this.uploadWarning="请选择图片文件";return}const e=s.size/1024/1024;if(e>at){this.uploadWarning=`图片大小为 ${e.toFixed(1)}MB,超过 ${at}MB 限制,请压缩后重试`;return}const o=new FileReader;o.onload=u=>{this.localImageData=u.target.result},o.readAsDataURL(s)},clearUploadedImage(){this.localImageData="",this.uploadWarning=""},async saveAll(){this.saving=!0;try{this.imageSource==="upload"?(re("background.imageData",this.localImageData||""),re("background.url","")):(re("background.url",this.localUrl||""),re("background.imageData","")),re("background.blur",this.localBlur),re("background.opacity",this.localOpacity)}finally{this.saving=!1}},resetAll(){Te("background.enabled"),Te("background.url"),Te("background.imageData"),Te("background.blur"),Te("background.opacity"),this.localUrl=y("background.url")||"",this.localImageData=y("background.imageData")||"",this.localBlur=y("background.blur")??10,this.localOpacity=y("background.opacity")??30,this.imageSource="url",this.uploadWarning="",this.settingItemKey++}}},Js={class:"px-4 pb-4"},Hs={class:"d-flex align-center mb-4"},Qs={key:0,class:"mb-4"},Gs={class:"d-flex flex-wrap gap-2 mt-2"},Ws={key:1,class:"mb-4"},Ys={class:"text-caption text-medium-emphasis mt-1"},qs={key:1,class:"d-flex align-center ga-2"},Zs={class:"d-flex align-center mb-4"},Xs={class:"mb-4"},$s={class:"d-flex justify-space-between align-center mb-1"},ei={class:"text-body-2 font-weight-bold"},ti={class:"mb-4"},ni={class:"d-flex justify-space-between align-center mb-1"},si={class:"text-body-2 font-weight-bold"},ii={class:"d-flex justify-end ga-3"};function li(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{border:"",icon:"mdi-image",title:"背景设置"},{default:n(()=>[t(O,null,{default:n(()=>[(m(),h(d,{key:i.settingItemKey,"setting-key":"background.enabled"}))]),_:1}),t(U,{class:"mb-4"}),c("div",Js,[c("div",{class:"preview-area mb-6",style:De(l.previewContainerStyle)},[c("div",{class:"preview-bg",style:De(l.previewBgStyle)},null,4),c("div",{class:"preview-overlay",style:De(l.previewOverlayStyle)},null,4),e[9]||(e[9]=c("div",{class:"preview-text"}," 背景预览 ",-1))],4),c("div",Hs,[t(g,{class:"mr-2",color:"primary"},{default:n(()=>[...e[10]||(e[10]=[a(" mdi-image-search ",-1)])]),_:1}),e[11]||(e[11]=c("span",{class:"text-subtitle-1 font-weight-bold"},"图片来源",-1))]),t(Ot,{modelValue:i.imageSource,"onUpdate:modelValue":e[0]||(e[0]=r=>i.imageSource=r),color:"primary",density:"comfortable",class:"mb-4",mandatory:"",rounded:"xl"},{default:n(()=>[t(p,{value:"url","prepend-icon":"mdi-link-variant"},{default:n(()=>[...e[12]||(e[12]=[a(" 网络地址 ",-1)])]),_:1}),t(p,{value:"upload","prepend-icon":"mdi-upload"},{default:n(()=>[...e[13]||(e[13]=[a(" 本地上传 ",-1)])]),_:1})]),_:1},8,["modelValue"]),i.imageSource==="url"?(m(),k("div",Qs,[t(N,{modelValue:i.localUrl,"onUpdate:modelValue":[e[1]||(e[1]=r=>i.localUrl=r),l.onUrlChange],label:"图片地址",placeholder:"https://example.com/background.jpg",variant:"outlined",density:"compact","prepend-inner-icon":"mdi-link",clearable:"","hide-details":"auto",rules:[l.validateUrl]},null,8,["modelValue","rules","onUpdate:modelValue"]),c("div",Gs,[(m(!0),k(H,null,te(i.urlPresets,r=>(m(),h(G,{key:r.label,size:"small",variant:"tonal",color:"primary",class:"cursor-pointer",onClick:w=>l.applyPreset(r.url)},{default:n(()=>[a(v(r.label),1)]),_:2},1032,["onClick"]))),128))])])):b("",!0),i.imageSource==="upload"?(m(),k("div",Ws,[c("div",{class:pe(["upload-area rounded-xl pa-6 text-center mb-3",{"upload-hover":i.isDragging}]),onDragover:e[3]||(e[3]=Ae(r=>i.isDragging=!0,["prevent"])),onDragleave:e[4]||(e[4]=r=>i.isDragging=!1),onDrop:e[5]||(e[5]=Ae((...r)=>l.handleDrop&&l.handleDrop(...r),["prevent"])),onClick:e[6]||(e[6]=(...r)=>l.triggerFileInput&&l.triggerFileInput(...r))},[t(g,{size:"40",color:"primary",class:"mb-2"},{default:n(()=>[...e[14]||(e[14]=[a(" mdi-image-plus ",-1)])]),_:1}),e[15]||(e[15]=c("div",{class:"text-body-2"}," 点击或拖拽图片到此处上传 ",-1)),c("div",Ys," 支持 JPG、PNG、WebP、GIF(建议小于 "+v(i.maxImageSizeMB)+"MB) ",1),c("input",{ref:"fileInput",type:"file",accept:"image/*",style:{display:"none"},onChange:e[2]||(e[2]=(...r)=>l.handleFileChange&&l.handleFileChange(...r))},null,544)],34),i.uploadWarning?(m(),h(Y,{key:0,type:"warning",variant:"tonal",density:"compact",class:"mb-2",icon:"mdi-alert"},{default:n(()=>[a(v(i.uploadWarning),1)]),_:1})):b("",!0),i.localImageData?(m(),k("div",qs,[t(G,{color:"success","prepend-icon":"mdi-check-circle",size:"small"},{default:n(()=>[...e[16]||(e[16]=[a(" 已上传本地图片 ",-1)])]),_:1}),t(p,{size:"small",variant:"text",color:"error","prepend-icon":"mdi-delete",onClick:l.clearUploadedImage},{default:n(()=>[...e[17]||(e[17]=[a(" 清除 ",-1)])]),_:1},8,["onClick"])])):b("",!0)])):b("",!0),t(U,{class:"my-5"}),c("div",Zs,[t(g,{class:"mr-2",color:"blue"},{default:n(()=>[...e[18]||(e[18]=[a(" mdi-blur ",-1)])]),_:1}),e[19]||(e[19]=c("span",{class:"text-subtitle-1 font-weight-bold"},"毛玻璃效果",-1))]),c("div",Xs,[c("div",$s,[e[20]||(e[20]=c("span",{class:"text-body-2 text-medium-emphasis"},"模糊幅度",-1)),c("span",ei,v(i.localBlur)+"px",1)]),t(Et,{modelValue:i.localBlur,"onUpdate:modelValue":[e[7]||(e[7]=r=>i.localBlur=r),l.onBlurChange],min:0,max:50,step:1,color:"primary","track-color":"grey-lighten-3","thumb-label":"","hide-details":""},{prepend:n(()=>[t(g,{size:"small",color:"grey"},{default:n(()=>[...e[21]||(e[21]=[a(" mdi-blur-off ",-1)])]),_:1})]),append:n(()=>[t(g,{size:"small",color:"primary"},{default:n(()=>[...e[22]||(e[22]=[a(" mdi-blur ",-1)])]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue"])]),c("div",ti,[c("div",ni,[e[23]||(e[23]=c("span",{class:"text-body-2 text-medium-emphasis"},"遮罩暗色程度",-1)),c("span",si,v(i.localOpacity)+"%",1)]),t(Et,{modelValue:i.localOpacity,"onUpdate:modelValue":[e[8]||(e[8]=r=>i.localOpacity=r),l.onOpacityChange],min:0,max:80,step:1,color:"blue-grey","track-color":"grey-lighten-3","thumb-label":"","hide-details":""},{prepend:n(()=>[t(g,{size:"small",color:"grey"},{default:n(()=>[...e[24]||(e[24]=[a(" mdi-brightness-7 ",-1)])]),_:1})]),append:n(()=>[t(g,{size:"small",color:"blue-grey"},{default:n(()=>[...e[25]||(e[25]=[a(" mdi-brightness-2 ",-1)])]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue"])]),t(U,{class:"my-5"}),c("div",ii,[t(p,{variant:"text","prepend-icon":"mdi-restore",onClick:l.resetAll},{default:n(()=>[...e[26]||(e[26]=[a(" 重置 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"primary",variant:"elevated","prepend-icon":"mdi-content-save",loading:i.saving,onClick:l.saveAll},{default:n(()=>[...e[27]||(e[27]=[a(" 保存设置 ",-1)])]),_:1},8,["loading","onClick"])])])]),_:1})}const en=Q(Os,[["render",li],["__scopeId","data-v-bb9183b0"]]),oi={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 ai(s,e,o,u,i,l){return m(),h(M,{border:o.border,class:"setting-group"},{default:n(()=>[o.title?(m(),h(K,{key:0,class:"d-flex align-center"},{default:n(()=>[o.icon?(m(),h(g,{key:0,icon:o.icon,class:"mr-2"},null,8,["icon"])):b("",!0),a(" "+v(o.title),1)]),_:1})):b("",!0),o.description?(m(),h(Ke,{key:1},{default:n(()=>[a(v(o.description),1)]),_:1})):b("",!0),t(j,null,{default:n(()=>[t(O,null,{default:n(()=>[Ye(s.$slots,"default",{},void 0,!0)]),_:3})]),_:3}),s.$slots.actions?(m(),h(ue,{key:2},{default:n(()=>[Ye(s.$slots,"actions",{},void 0,!0)]),_:3})):b("",!0)]),_:3},8,["border"])}const nt=Q(oi,[["render",ai],["__scopeId","data-v-acac458a"]]),ri={subjects:{语文:{books:{课本:["第一单元","第二单元"],练习册:["第一章","第二章"]}},数学:{books:{课本:["第一章","第二章"],习题册:["基础练习","提高练习"]}},英语:{books:{课本:["Unit 1","Unit 2"],练习册:["Chapter 1","Chapter 2"]}}},commonSubject:{books:{试卷:["单元测试","期中测试","期末测试"],假期作业:["必做题","选做题"]}},actions:["写完","下一课","不交","明天交"]},ui={name:"HomeworkTemplateCard",components:{SettingsCard:W,SettingGroup:nt},data(){return{loading:!1,error:null,config:Rn(JSON.parse(JSON.stringify(ri))),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 o=await ie.loadData("classworks-config-homework-template");if(o){const u=o;Object.assign(this.config,u),this.originalConfig=JSON.parse(JSON.stringify(u)),this.isNewConfig=!1,this.showMessage("配置已加载","success")}else if(((s=o.error)==null?void 0:s.code)==="NOT_FOUND")this.showMessage("使用默认配置","info"),this.isNewConfig=!0;else{const u=((e=o.error)==null?void 0:e.message)||"加载失败";this.showMessage(`加载失败: ${u},可继续编辑当前配置`,"warning")}}catch(o){console.error("Failed to load config:",o),this.showMessage("加载失败,可继续编辑当前配置","warning")}this.loading=!1},async saveConfig(){this.loading=!0;try{const s=await ie.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 o=this.config.subjects[s];this.config.subjects[e]=o,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 o=`${s}-${e}`,u=this.editedBookTypes[o];if(u&&u!==e){const i=this.config.subjects[s].books[e];this.config.subjects[s].books[u]=i,delete this.config.subjects[s].books[e]}delete this.editedBookTypes[o]},deleteBookType(s,e){s==="common"?delete this.config.commonSubject.books[e]:delete this.config.subjects[s].books[e]},addBook(s,e){const o=`${s}-${e}`,u=this.newBooks[o];u&&(this.config.subjects[s].books[e].includes(u)||this.config.subjects[s].books[e].push(u),this.newBooks[o]="")},removeBook(s,e,o){const u=this.config.subjects[s].books[e],i=u.indexOf(o);i>-1&&u.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,o){this.dialog.show=!0,this.dialog.title="编辑需完成部分",this.dialog.nameLabel="部分名称",this.dialog.editedItem={name:o,type:"book",subject:s,bookType:e,originalName:o,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,o){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(o)?[...o]:[]}},saveDialog(){const{type:s,name:e,subject:o,originalName:u,tasks:i}=this.dialog.editedItem;if(!e){this.showMessage("名称不能为空","error");return}let l;const d=o==="common"?this.config.commonSubject.books:o?this.config.subjects[o].books:null;switch(s){case"subjectBook":d&&(u!==e?(d[e]=i||[],delete d[u]):d[e]=i||[]);break;case"action":l=this.config.actions.indexOf(u),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=""}}},di={class:"d-flex justify-space-between align-center mb-6"};function ci(s,e,o,u,i,l){const d=nt,f=W;return m(),h(f,{loading:i.loading,border:"",icon:"mdi-book-edit",title:"作业模板配置"},{default:n(()=>[i.error?(m(),h(Y,{key:0,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.error),1)]),_:1})):b("",!0),c("div",di,[c("div",null,[t(p,{loading:i.loading,class:"mr-2",color:"primary","prepend-icon":"mdi-refresh",size:"large",onClick:l.loadConfig},{default:n(()=>[...e[7]||(e[7]=[a(" 重新加载配置 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{loading:i.loading,color:"success","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveConfig},{default:n(()=>[...e[8]||(e[8]=[a(" 保存所有更改 ",-1)])]),_:1},8,["loading","onClick"])]),l.hasChanges?(m(),h(G,{key:0,color:"warning",variant:"elevated"},{default:n(()=>[...e[9]||(e[9]=[a(" 有未保存的更改 ",-1)])]),_:1})):b("",!0)]),t(de,null,{default:n(()=>[t(R,{cols:"12",md:"6"},{default:n(()=>[t(d,{border:"",icon:"mdi-book",title:"科目配置"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{default:n(()=>[t(N,{modelValue:i.newSubject,"onUpdate:modelValue":e[0]||(e[0]=r=>i.newSubject=r),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加新科目",variant:"outlined","onClick:appendInner":l.addSubject,onKeyup:_e(l.addSubject,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),(m(!0),k(H,null,te(l.subjectList,r=>(m(),h(D,{key:r},{default:n(()=>[t(M,{border:"",class:"w-100 mb-2"},{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(N,{modelValue:i.editedSubjects[r],"onUpdate:modelValue":w=>i.editedSubjects[r]=w,placeholder:r,density:"comfortable","hide-details":"",variant:"plain",onBlur:w=>l.updateSubject(r)},null,8,["modelValue","onUpdate:modelValue","placeholder","onBlur"]),t(Z),t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:w=>l.deleteSubject(r)},null,8,["onClick"])]),_:2},1024),t(j,null,{default:n(()=>[t(N,{modelValue:i.newBookTypes[r],"onUpdate:modelValue":w=>i.newBookTypes[r]=w,"append-inner-icon":"mdi-plus",class:"mb-2",density:"comfortable",label:"添加作业本名称",variant:"outlined","onClick:appendInner":()=>l.addBookType(r),onKeyup:_e(()=>l.addBookType(r),["enter"])},null,8,["modelValue","onUpdate:modelValue","onClick:appendInner","onKeyup"]),t(O,{border:"",density:"compact",rounded:""},{default:n(()=>[(m(!0),k(H,null,te(i.config.subjects[r].books,(w,x)=>(m(),h(D,{key:x,title:x,onClick:I=>l.openSubjectBookDialog(r,x,w)},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-book-open-variant"})]),append:n(()=>[t(G,{class:"mr-2",color:"info",size:"small"},{default:n(()=>[a(v(w.length)+"个部分 ",1)]),_:2},1024),t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:Ae(()=>l.deleteBookType(r,x),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),t(R,{cols:"12",md:"6"},{default:n(()=>[t(d,{border:"",icon:"mdi-cog",title:"通用配置"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{default:n(()=>[t(N,{modelValue:i.newCommonBook,"onUpdate:modelValue":e[1]||(e[1]=r=>i.newCommonBook=r),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加作业本名称",variant:"outlined","onClick:appendInner":l.addCommonBook,onKeyup:_e(l.addCommonBook,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),t(D,null,{default:n(()=>[t(O,{border:"",density:"compact",rounded:""},{default:n(()=>[(m(!0),k(H,null,te(i.config.commonSubject.books,(r,w)=>(m(),h(D,{key:w,title:w,onClick:x=>l.openSubjectBookDialog("common",w,r)},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-book-multiple"})]),append:n(()=>[t(G,{class:"mr-2",color:"info",size:"small"},{default:n(()=>[a(v(r.length)+"个部分 ",1)]),_:2},1024),t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:Ae(()=>l.deleteBookType("common",w),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1}),t(U,{class:"my-2"}),t(D,null,{default:n(()=>[t(N,{modelValue:i.newAction,"onUpdate:modelValue":e[2]||(e[2]=r=>i.newAction=r),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加操作",variant:"outlined","onClick:appendInner":l.addAction,onKeyup:_e(l.addAction,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),t(D,null,{default:n(()=>[t(O,{border:"",density:"compact",rounded:""},{default:n(()=>[(m(!0),k(H,null,te(i.config.actions,r=>(m(),h(D,{key:r,title:r,onClick:w=>l.openActionDialog(r)},{append:n(()=>[t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:Ae(w=>l.removeAction(r),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(we,{modelValue:i.dialog.show,"onUpdate:modelValue":e[5]||(e[5]=r=>i.dialog.show=r),"max-width":"600px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"text-h5 pa-4"},{default:n(()=>[a(v(i.dialog.title),1)]),_:1}),t(j,null,{default:n(()=>[t(bt,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{cols:"12"},{default:n(()=>[t(N,{modelValue:i.dialog.editedItem.name,"onUpdate:modelValue":e[3]||(e[3]=r=>i.dialog.editedItem.name=r),label:i.dialog.nameLabel,rules:[r=>!!r||"名称不能为空"],density:"comfortable",variant:"outlined"},null,8,["modelValue","label","rules"])]),_:1}),i.dialog.editedItem.type==="subjectBook"?(m(),h(R,{key:0,cols:"12"},{default:n(()=>[e[10]||(e[10]=c("div",{class:"text-subtitle-2 mb-2"}," 所属科目 ",-1)),t(G,{color:"primary"},{default:n(()=>[a(v(i.dialog.editedItem.subject),1)]),_:1})]),_:1})):b("",!0),["subjectBook","commonBook"].includes(i.dialog.editedItem.type)?(m(),h(R,{key:1,cols:"12"},{default:n(()=>[t(M,{variant:"outlined"},{default:n(()=>[t(K,{class:"text-subtitle-1 py-2"},{default:n(()=>[...e[11]||(e[11]=[a(" 需完成部分 ",-1)])]),_:1}),t(j,{class:"pt-0"},{default:n(()=>[t(O,{border:"",class:"mb-2",density:"compact",rounded:""},{default:n(()=>[(m(!0),k(H,null,te(i.dialog.editedItem.tasks,(r,w)=>(m(),h(D,{key:w},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-checkbox-blank-circle-outline",size:"small"})]),append:n(()=>[t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:x=>l.removeTask(w)},null,8,["onClick"])]),default:n(()=>[t(N,{modelValue:i.dialog.editedItem.tasks[w],"onUpdate:modelValue":x=>i.dialog.editedItem.tasks[w]=x,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]=r=>i.newTask=r),"append-inner-icon":"mdi-plus",class:"mt-2",density:"comfortable",label:"添加需完成部分",variant:"outlined","onClick:appendInner":l.addTask,onKeyup:_e(l.addTask,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1})]),_:1})]),_:1})):b("",!0)]),_:1})]),_:1})]),_:1}),t(ue,{class:"pa-4"},{default:n(()=>[t(Z),t(p,{color:"primary",variant:"elevated",onClick:l.saveDialog},{default:n(()=>[...e[12]||(e[12]=[a(" 关闭 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"error",variant:"text",onClick:l.closeDialog},{default:n(()=>[...e[13]||(e[13]=[a(" 取消 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(ft,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[6]||(e[6]=r=>i.showSnackbar=r),color:i.snackbarColor,timeout:3e3},{default:n(()=>[a(v(i.snackbarText),1)]),_:1},8,["modelValue","color"])]),_:1},8,["loading"])}const tn=Q(ui,[["render",ci],["__scopeId","data-v-a2517340"]]),mi={name:"SubjectManagementCard",components:{SettingsCard:W},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 ie.loadData("classworks-config-subject");s?(this.subjects=s.map((e,o)=>({name:e.name,order:e.order??o})).sort((e,o)=>e.order-o.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 ie.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(o=>o.order===s.order);e>-1&&(this.subjects[e]={...s})},deleteSubject(s){const e=this.subjects.findIndex(o=>o.order===s.order);e>-1&&(this.subjects.splice(e,1),this.subjects.forEach((o,u)=>{o.order=u}))},moveSubject(s,e){const o=s+e;if(o>=0&&o{i.order=l})}},resetToDefault(){this.subjects=JSON.parse(JSON.stringify(this.defaultSubjects)),this.showMessage("已重置为默认科目列表","info")}}},fi={class:"d-flex justify-space-between align-center mb-6"},pi={class:"d-flex flex-column align-center mr-2"};function hi(s,e,o,u,i,l){const d=W;return m(),h(d,{loading:i.loading,border:"",icon:"mdi-book-multiple",title:"科目管理"},{default:n(()=>[i.error?(m(),h(Y,{key:0,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.error),1)]),_:1})):b("",!0),c("div",fi,[c("div",null,[t(p,{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]=[a(" 重新加载 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{loading:i.loading,color:"success","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveConfig},{default:n(()=>[...e[3]||(e[3]=[a(" 保存 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{loading:i.loading,class:"mr-2","prepend-icon":"mdi-restore",variant:"text",onClick:l.resetToDefault},{default:n(()=>[...e[4]||(e[4]=[a(" 重置为默认 ",-1)])]),_:1},8,["loading","onClick"])]),l.hasChanges?(m(),h(G,{key:0,color:"warning",variant:"elevated"},{default:n(()=>[...e[5]||(e[5]=[a(" 有未保存的更改 ",-1)])]),_:1})):b("",!0)]),t(M,{class:"mb-4",variant:"outlined"},{default:n(()=>[t(j,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{cols:"12",sm:"6"},{default:n(()=>[t(N,{modelValue:i.newSubjectName,"onUpdate:modelValue":e[0]||(e[0]=f=>i.newSubjectName=f),rules:[f=>!!f||"科目名称不能为空"],"append-inner-icon":"mdi-plus",density:"comfortable",label:"科目名称",variant:"outlined",onKeyup:_e(l.addSubject,["enter"]),"onClick:appendInner":l.addSubject},null,8,["modelValue","rules","onKeyup","onClick:appendInner"])]),_:1})]),_:1})]),_:1})]),_:1}),t(M,{variant:"outlined"},{default:n(()=>[t(j,{class:"pa-0"},{default:n(()=>[t(O,{lines:"one"},{default:n(()=>[(m(!0),k(H,null,te(i.subjects,(f,r)=>(m(),h(D,{key:f.order},{prepend:n(()=>[c("div",pi,[t(p,{disabled:r===0,icon:"mdi-chevron-up",size:"small",variant:"text",onClick:w=>l.moveSubject(r,-1)},null,8,["disabled","onClick"]),t(p,{disabled:r===i.subjects.length-1,icon:"mdi-chevron-down",size:"small",variant:"text",onClick:w=>l.moveSubject(r,1)},null,8,["disabled","onClick"])])]),append:n(()=>[t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:w=>l.deleteSubject(f)},null,8,["onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[t(N,{modelValue:f.name,"onUpdate:modelValue":w=>f.name=w,density:"compact","hide-details":"",variant:"plain",onBlur:w=>l.updateSubject(f)},null,8,["modelValue","onUpdate:modelValue","onBlur"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),t(ft,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[1]||(e[1]=f=>i.showSnackbar=f),color:i.snackbarColor,timeout:3e3},{default:n(()=>[a(v(i.snackbarText),1)]),_:1},8,["modelValue","color"])]),_:1},8,["loading"])}const nn=Q(mi,[["render",hi],["__scopeId","data-v-22202eda"]]),gi={};function wi(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{icon:"mdi-cog",title:"编辑设置"},{default:n(()=>[t(O,null,{default:n(()=>[t(d,{"setting-key":"randomPicker.enabled"}),t(U,{class:"my-2"}),t(d,{"setting-key":"randomPicker.mode"}),t(U,{class:"my-2"}),t(d,{"setting-key":"randomPicker.minNumber"}),t(U,{class:"my-2"}),t(d,{"setting-key":"randomPicker.maxNumber"}),t(U,{class:"my-2"}),t(d,{"setting-key":"randomPicker.defaultCount"}),t(U,{class:"my-2"}),t(d,{"setting-key":"randomPicker.animation"})]),_:1})]),_:1})}const sn=Q(gi,[["render",wi]]),vi={name:"HitokotoSettings",components:{SettingGroup:nt,SettingItem:ve},data(){return{kvConfig:{sources:["zhaoyu"],sensitiveWords:"",jinrishiciToken:null,hitokotoCategories:[]},hitokotoCategories:[{value:"a",label:"动画"},{value:"b",label:"漫画"},{value:"c",label:"游戏"},{value:"d",label:"文学"},{value:"e",label:"原创"},{value:"f",label:"来自网络"},{value:"g",label:"其他"},{value:"h",label:"影视"},{value:"i",label:"诗词"},{value:"j",label:"网易云"},{value:"k",label:"哲学"},{value:"l",label:"抖机灵"}],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 ie.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,hitokotoCategories:Array.isArray(e.hitokotoCategories)?e.hitokotoCategories:[]})}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 Xe.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 ie.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 o={};this.kvConfig.jinrishiciToken&&(o["X-User-Token"]=this.kvConfig.jinrishiciToken);const u=await Xe.get("https://v2.jinrishici.com/info?X-User-Token="+encodeURIComponent(this.kvConfig.jinrishiciToken));if(u.data&&u.data.status==="success"){this.testResultData=u.data,this.testResultDialog=!0;const i=(s=u.data.data)==null?void 0:s.token,l=(e=u.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(o){console.error("Failed to test jinrishici info",o),this.testColor="error",this.testMessage="接口测试失败,请检查网络或 Token。"}finally{this.testLoading=!1}}}},bi={class:"d-flex flex-wrap gap-2"},ki={class:"text-caption text-orange mt-2"},yi={class:"d-flex flex-wrap gap-2"},xi={class:"d-flex flex-column flex-sm-row align-center w-100"},Si={key:3,class:"text-center pb-4"},Ci={class:"d-flex align-center mb-2"},Vi={class:"text-body-1 font-weight-medium"},_i={class:"d-flex align-center mb-2"},Di={class:"text-body-1 font-weight-medium"},Ai={class:"d-flex align-center mb-2"},Ii={class:"text-body-1 font-weight-medium"},Ti={class:"d-flex align-center mb-2"},Ui={class:"text-body-2 font-weight-medium"},ji={class:"d-flex align-center mb-2"},Bi={class:"text-body-1 font-weight-medium"},Mi={class:"d-flex align-center mb-2"},Ni={class:"text-body-1 font-weight-medium"},Pi={class:"px-4 py-3"},zi={class:"d-flex flex-wrap gap-2"};function Ei(s,e,o,u,i,l){const d=ve,f=nt;return m(),k("div",null,[t(f,{title:"一言设置",icon:"mdi-comment-quote"},{default:n(()=>[t(d,{"setting-key":"hitokoto.enabled"}),t(d,{"setting-key":"hitokoto.refreshInterval"})]),_:1}),t(f,{title:"数据源配置",icon:"mdi-cloud-sync",class:"mt-4"},{default:n(()=>[e[16]||(e[16]=c("div",{class:"text-caption text-grey px-4 pt-2 pb-2"}," 以下配置将同步到云端,对所有连接此班级的设备生效。 ",-1)),t(D,null,{default:n(()=>[t(z,{class:"mb-2"},{default:n(()=>[...e[8]||(e[8]=[a(" 启用数据源 ",-1)])]),_:1}),c("div",bi,[t(Se,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[0]||(e[0]=r=>i.kvConfig.sources=r),l.saveKvSettings],label:"一言 (Hitokoto)",value:"hitokoto","hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"]),t(Se,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[1]||(e[1]=r=>i.kvConfig.sources=r),l.saveKvSettings],label:"诏预 (Zhaoyu)",value:"zhaoyu","hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"]),t(Se,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[2]||(e[2]=r=>i.kvConfig.sources=r),l.saveKvSettings],label:"今日诗词 (Jinrishici)",value:"jinrishici","hide-details":"",density:"compact",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"])]),c("div",ki,[t(g,{size:"x-small",color:"orange",class:"mr-1"},{default:n(()=>[...e[9]||(e[9]=[a(" mdi-alert ",-1)])]),_:1}),e[10]||(e[10]=a(" 一言(Hitokoto)数据源已收到关于存在负面内容的大量反馈,请用户谨慎启用。 ",-1))])]),_:1}),i.kvConfig.sources.includes("hitokoto")?(m(),h(D,{key:0},{default:n(()=>[t(z,{class:"mb-2"},{default:n(()=>[...e[11]||(e[11]=[a(" 一言句子类型 ",-1)])]),_:1}),e[12]||(e[12]=c("div",{class:"text-caption text-grey mb-2"}," 不选则返回所有类型;可多选。 ",-1)),c("div",yi,[(m(!0),k(H,null,te(i.hitokotoCategories,r=>(m(),h(Se,{key:r.value,modelValue:i.kvConfig.hitokotoCategories,"onUpdate:modelValue":[e[3]||(e[3]=w=>i.kvConfig.hitokotoCategories=w),l.saveKvSettings],label:r.label,value:r.value,"hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","label","value","disabled","onUpdate:modelValue"]))),128))])]),_:1})):b("",!0),i.kvConfig.sources.includes("jinrishici")?(m(),h(D,{key:1},{default:n(()=>[t(N,{modelValue:i.kvConfig.jinrishiciToken,"onUpdate:modelValue":e[4]||(e[4]=r=>i.kvConfig.jinrishiciToken=r),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})):b("",!0),i.kvConfig.sources.includes("jinrishici")?(m(),h(D,{key:2},{default:n(()=>[c("div",xi,[t(p,{loading:i.testLoading,color:"primary",variant:"outlined",class:"mr-sm-4 mb-2 mb-sm-0",onClick:l.testJinrishici},{default:n(()=>[...e[13]||(e[13]=[a(" 测试今日诗词接口 ",-1)])]),_:1},8,["loading","onClick"]),i.testMessage?(m(),h(Y,{key:0,type:i.testColor,density:"comfortable",border:"start",class:"flex-grow-1"},{default:n(()=>[a(v(i.testMessage),1)]),_:1},8,["type"])):b("",!0)])]),_:1})):b("",!0),t(D,null,{default:n(()=>[t(Pe,{modelValue:i.kvConfig.sensitiveWords,"onUpdate:modelValue":e[5]||(e[5]=r=>i.kvConfig.sensitiveWords=r),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(D,null,{default:n(()=>[t(Se,{modelValue:i.enableCloudSensitiveWords,"onUpdate:modelValue":e[6]||(e[6]=r=>i.enableCloudSensitiveWords=r),label:"启用云端敏感词列表","hide-details":"",density:"compact",disabled:"",class:"mb-2"},null,8,["modelValue"]),e[14]||(e[14]=c("div",{class:"text-caption text-grey"},[a(" 已启用的数据源将在获取一言时随机尝试,直到成功获取内容为止。"),c("br"),a(" 敏感词过滤会将包含任意敏感词的句子过滤掉,避免显示不当内容。"),c("br")],-1))]),_:1}),i.loading?(m(),k("div",Si,[t(Jt,{indeterminate:"",size:"24",color:"primary"}),e[15]||(e[15]=c("span",{class:"ml-2 text-caption"},"正在同步配置...",-1))])):b("",!0)]),_:1}),t(we,{modelValue:i.testResultDialog,"onUpdate:modelValue":e[7]||(e[7]=r=>i.testResultDialog=r),"max-width":"600"},{default:n(()=>[i.testResultData?(m(),h(M,{key:0,class:"rounded-lg"},{default:n(()=>[t(j,{class:"pa-0"},{default:n(()=>[t(O,{lines:"two",class:"py-0"},{default:n(()=>[t(D,{class:"px-4 py-3"},{prepend:n(()=>[t(et,{color:"primary",variant:"tonal",class:"mr-2"},{default:n(()=>[t(g,{icon:"mdi-key-variant"})]),_:1})]),default:n(()=>[t(z,{class:"text-subtitle-2 font-weight-bold mb-1"},{default:n(()=>[...e[17]||(e[17]=[a(" Token ",-1)])]),_:1}),t(ne,{class:"text-body-2 text-high-emphasis",style:{"word-break":"break-all"}},{default:n(()=>[a(v(i.testResultData.data.token),1)]),_:1})]),_:1}),t(U),t(de,{"no-gutters":""},{default:n(()=>[t(R,{cols:"6"},{default:n(()=>[t(D,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-ip-network",color:"grey-darken-1",class:"mr-2"})]),default:n(()=>[t(z,{class:"text-caption text-grey-darken-1"},{default:n(()=>[...e[18]||(e[18]=[a(" IP 地址 ",-1)])]),_:1}),t(ne,{class:"text-body-2"},{default:n(()=>[a(v(i.testResultData.data.ip),1)]),_:1})]),_:1})]),_:1}),t(R,{cols:"6"},{default:n(()=>[t(D,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-map-marker-radius",color:"grey-darken-1",class:"mr-2"})]),default:n(()=>[t(z,{class:"text-caption text-grey-darken-1"},{default:n(()=>[...e[19]||(e[19]=[a(" 地区 ",-1)])]),_:1}),t(ne,{class:"text-body-2"},{default:n(()=>[a(v(i.testResultData.data.region),1)]),_:1})]),_:1})]),_:1})]),_:1}),t(U),t(bt,{class:"px-4 py-3"},{default:n(()=>[t(de,{dense:""},{default:n(()=>[t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",Ci,[t(g,{icon:"mdi-thermometer",color:"orange",class:"mr-2"}),c("div",null,[e[20]||(e[20]=c("div",{class:"text-caption text-grey"}," 温度 ",-1)),c("div",Vi,v(i.testResultData.data.weatherData.temperature)+"°C ",1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",_i,[t(g,{icon:"mdi-weather-cloudy",color:"blue-grey",class:"mr-2"}),c("div",null,[e[21]||(e[21]=c("div",{class:"text-caption text-grey"}," 天气 ",-1)),c("div",Di,v(i.testResultData.data.weatherData.weather),1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",Ai,[t(g,{icon:"mdi-water-percent",color:"blue",class:"mr-2"}),c("div",null,[e[22]||(e[22]=c("div",{class:"text-caption text-grey"}," 湿度 ",-1)),c("div",Ii,v(i.testResultData.data.weatherData.humidity)+"% ",1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",Ti,[t(g,{icon:"mdi-weather-windy",color:"teal",class:"mr-2"}),c("div",null,[e[23]||(e[23]=c("div",{class:"text-caption text-grey"}," 风向/风力 ",-1)),c("div",Ui,v(i.testResultData.data.weatherData.windDirection)+" "+v(i.testResultData.data.weatherData.windPower)+"级 ",1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",ji,[t(g,{icon:"mdi-blur",color:"grey",class:"mr-2"}),c("div",null,[e[24]||(e[24]=c("div",{class:"text-caption text-grey"}," PM2.5 ",-1)),c("div",Bi,v(i.testResultData.data.weatherData.pm25),1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",Mi,[t(g,{icon:"mdi-eye",color:"indigo",class:"mr-2"}),c("div",null,[e[25]||(e[25]=c("div",{class:"text-caption text-grey"}," 能见度 ",-1)),c("div",Ni,v(i.testResultData.data.weatherData.visibility),1)])])]),_:1})]),_:1})]),_:1}),t(U),c("div",Pi,[e[26]||(e[26]=c("div",{class:"text-caption text-grey mb-2"}," 环境标签 ",-1)),c("div",zi,[(m(!0),k(H,null,te(i.testResultData.data.tags,r=>(m(),h(G,{key:r,size:"small",color:"primary",variant:"tonal",class:"mr-1 mb-1"},{default:n(()=>[a(v(r),1)]),_:2},1024))),128))])]),t(U),t(D,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-clock-outline",size:"small",class:"mr-2"})]),default:n(()=>[t(z,{class:"text-caption text-grey-darken-1"},{default:n(()=>[a(" 北京时间: "+v(new Date(i.testResultData.data.beijingTime).toLocaleString()),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})):b("",!0)]),_:1},8,["modelValue"])])}const ln=Q(vi,[["render",Ei]]),Li={name:"NotificationSoundSettings",data(){return{singleSound:"",urgentSound:"",currentAudio:null,showAutoplayWarning:!0}},computed:{soundOptions(){return ls.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;re("notification.singleSound",s),(e=this.$message)==null||e.success("设置已保存",`单次通知铃声: ${s}`)},onUrgentSoundChange(s){var e;re("notification.urgentSound",s),(e=this.$message)==null||e.success("设置已保存",`紧急通知铃声: ${s}`)},async previewSound(s){var e,o;this.showAutoplayWarning=!1,this.stopPreview();try{const u=await this.playSoundWithPromise(s,!1);this.currentAudio=u,this.currentAudio&&this.currentAudio.addEventListener("ended",()=>{this.currentAudio=null},{once:!0})}catch(u){console.error("播放音频失败:",u),u.name==="NotAllowedError"?(e=this.$message)==null||e.warning("无法播放音频","浏览器阻止了自动播放,请再次点击试听按钮"):(o=this.$message)==null||o.error("播放失败","音频文件加载失败,请稍后重试")}},playSoundWithPromise(s,e=!1){return new Promise((o,u)=>{const i=this.getSoundPath(s);if(!i){u(new Error("音频文件不存在"));return}try{const l=new Audio(i);l.loop=e,l.play().then(()=>{o(l)}).catch(d=>{u(d)})}catch(l){u(l)}})},getSoundPath(s){if(!s)return null;try{return`/sounds/${s}`}catch{return null}},stopPreview(){this.currentAudio&&(is(this.currentAudio),this.currentAudio=null)},resetSingleSound(){var s;this.singleSound="Teams 默认.mp3",re("notification.singleSound",this.singleSound),(s=this.$message)==null||s.success("已恢复单次通知铃声默认设置")},resetUrgentSound(){var s;this.urgentSound="Teams 默认通话铃.mp3",re("notification.urgentSound",this.urgentSound),(s=this.$message)==null||s.success("已恢复紧急通知铃声默认设置")}}},Ri={class:"d-flex align-center"},Ki={class:"mt-3 d-flex gap-2"},Fi={class:"mt-3 d-flex gap-2"};function Oi(s,e,o,u,i,l){return m(),h(M,{class:"notification-sound-settings"},{default:n(()=>[t(K,null,{default:n(()=>[...e[5]||(e[5]=[a(" 通知铃声设置 ",-1)])]),_:1}),t(j,null,{default:n(()=>[i.showAutoplayWarning?(m(),h(Y,{key:0,type:"info",variant:"tonal",closable:"",class:"mb-4","onClick:close":e[0]||(e[0]=d=>i.showAutoplayWarning=!1)},{default:n(()=>[c("div",Ri,[t(g,{class:"mr-2"},{default:n(()=>[...e[6]||(e[6]=[a(" mdi-information ",-1)])]),_:1}),e[7]||(e[7]=c("span",null,"首次使用请点击试听按钮测试音频播放是否正常",-1))])]),_:1})):b("",!0),t(de,null,{default:n(()=>[t(R,{cols:"12"},{default:n(()=>[t(M,{border:""},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[8]||(e[8]=[a(" mdi-bell-ring ",-1)])]),_:1}),e[9]||(e[9]=a(" 单次通知铃声 ",-1))]),_:1}),t(j,null,{default:n(()=>[t(Ze,{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:f})=>[t(D,Ve(d,{onClick:r=>l.previewSound(f.value)}),{prepend:n(()=>[t(g,null,{default:n(()=>[...e[10]||(e[10]=[a("mdi-music-note",-1)])]),_:1})]),append:n(()=>[t(p,{icon:"",size:"small",variant:"text",onClick:Ae(r=>l.previewSound(f.value),["stop"])},{default:n(()=>[t(g,null,{default:n(()=>[...e[11]||(e[11]=[a("mdi-play",-1)])]),_:1})]),_:1},8,["onClick"])]),_:2},1040,["onClick"])]),_:1},8,["modelValue","items","onUpdate:modelValue"]),c("div",Ki,[t(p,{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]=[a(" mdi-play ",-1)])]),_:1}),e[13]||(e[13]=a(" 试听 ",-1))]),_:1}),t(p,{onClick:l.resetSingleSound},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[14]||(e[14]=[a(" mdi-restore ",-1)])]),_:1}),e[15]||(e[15]=a(" 恢复 ",-1))]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1}),t(R,{cols:"12"},{default:n(()=>[t(M,{border:""},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{left:"",color:"error"},{default:n(()=>[...e[16]||(e[16]=[a(" mdi-bell-alert ",-1)])]),_:1}),e[17]||(e[17]=a(" 紧急通知铃声 ",-1))]),_:1}),t(j,null,{default:n(()=>[t(Ze,{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:f})=>[t(D,Ve(d,{onClick:r=>l.previewSound(f.value)}),{prepend:n(()=>[t(g,null,{default:n(()=>[...e[18]||(e[18]=[a("mdi-music-note",-1)])]),_:1})]),append:n(()=>[t(p,{icon:"",size:"small",variant:"text",onClick:Ae(r=>l.previewSound(f.value),["stop"])},{default:n(()=>[t(g,null,{default:n(()=>[...e[19]||(e[19]=[a("mdi-play",-1)])]),_:1})]),_:1},8,["onClick"])]),_:2},1040,["onClick"])]),_:1},8,["modelValue","items","onUpdate:modelValue"]),c("div",Fi,[t(p,{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]=[a(" mdi-play ",-1)])]),_:1}),e[21]||(e[21]=a(" 试听 ",-1))]),_:1}),t(p,{onClick:l.resetUrgentSound},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[22]||(e[22]=[a(" mdi-restore ",-1)])]),_:1}),e[23]||(e[23]=a(" 恢复 ",-1))]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const on=Q(Li,[["render",Oi],["__scopeId","data-v-632dcdba"]]),Lt={sessions:[{name:"第1节晚自习",start:"19:20",duration:70,enabled:!0},{name:"第2节晚自习",start:"20:20",duration:110,enabled:!0}],alertThresholdDb:55},Ji={name:"NoiseSettingsCard",components:{SettingsCard:W,SettingItem:ve},data(){return{sessionLoading:!0,sessionSaving:!1,editSessions:[],editAlertThreshold:55,timePickerMenus:{}}},mounted(){this.loadSessionConfig()},methods:{async loadSessionConfig(){this.sessionLoading=!0;try{const s=await ie.loadData("noise-session-config"),e=(s==null?void 0:s.data)||s;e&&e.sessions?(this.editSessions=JSON.parse(JSON.stringify(e.sessions)),this.editAlertThreshold=e.alertThresholdDb||55):this.resetSessionConfig()}catch{this.resetSessionConfig()}finally{this.sessionLoading=!1}},async saveSessionConfig(){this.sessionSaving=!0;try{const s={sessions:this.editSessions,alertThresholdDb:this.editAlertThreshold};await ie.saveData("noise-session-config",s)}catch(s){console.error("保存自习配置失败:",s)}finally{this.sessionSaving=!1}},resetSessionConfig(){this.editSessions=JSON.parse(JSON.stringify(Lt.sessions)),this.editAlertThreshold=Lt.alertThresholdDb},addSession(){this.editSessions.push({name:`第${this.editSessions.length+1}节晚自习`,start:"19:00",duration:70,enabled:!0})},sessionEndTime(s){if(!(s!=null&&s.start)||!(s!=null&&s.duration))return"--:--";const[e,o]=s.start.split(":").map(Number),u=e*60+o+(s.duration||0),i=Math.floor(u/60)%24,l=u%60;return`${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}`}}},Hi={class:"px-4 pb-4"},Qi={class:"d-flex align-center mb-4"},Gi={class:"d-flex align-center ga-3 flex-wrap"},Wi={class:"text-caption text-medium-emphasis"},Yi={key:0,class:"text-center text-medium-emphasis py-4"},qi={class:"d-flex align-center mb-4"},Zi={class:"d-flex align-center flex-wrap ga-4 mb-4"},Xi={class:"d-flex justify-end ga-3 mb-2"};function $i(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{border:"",icon:"mdi-microphone",title:"噪音监测"},{default:n(()=>[t(O,null,{default:n(()=>[t(d,{"setting-key":"noiseMonitor.enabled"}),t(U,{class:"my-2"}),t(d,{"setting-key":"noiseMonitor.autoStart"}),t(U,{class:"my-2"}),t(d,{"setting-key":"noiseMonitor.permissionDismissed"})]),_:1}),t(U,{class:"mb-4"}),c("div",Hi,[c("div",Qi,[t(g,{class:"mr-2",color:"teal"},{default:n(()=>[...e[1]||(e[1]=[a(" mdi-clock-edit-outline ",-1)])]),_:1}),e[3]||(e[3]=c("span",{class:"text-subtitle-1 font-weight-bold"},"晚自习时间段",-1)),t(Z),t(p,{color:"primary",variant:"tonal",size:"small","prepend-icon":"mdi-plus",onClick:l.addSession},{default:n(()=>[...e[2]||(e[2]=[a(" 添加时段 ",-1)])]),_:1},8,["onClick"])]),e[10]||(e[10]=c("div",{class:"text-caption text-medium-emphasis mb-4"}," 配置晚自习时间段后,系统会在对应时段内自动开启噪音监测并记录统计报告。时间段外不会长期记录。 ",-1)),i.sessionLoading?(m(),h(os,{key:0,type:"card",class:"mb-4"})):(m(),k(H,{key:1},[(m(!0),k(H,null,te(i.editSessions,(r,w)=>(m(),k("div",{key:w,class:"mb-3"},[t(M,{variant:"outlined",rounded:"xl"},{default:n(()=>[t(j,{class:"pa-4"},{default:n(()=>[c("div",Gi,[t(N,{modelValue:r.name,"onUpdate:modelValue":x=>r.name=x,density:"compact",variant:"outlined",label:"名称","hide-details":"",style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"]),t(gt,{modelValue:i.timePickerMenus[w],"onUpdate:modelValue":x=>i.timePickerMenus[w]=x,"close-on-content-click":!1,location:"bottom"},{activator:n(({props:x})=>[t(N,Ve({ref_for:!0},x,{"model-value":r.start,density:"compact",variant:"outlined",label:"开始时间",readonly:"","hide-details":"","prepend-inner-icon":"mdi-clock-outline",style:{"max-width":"170px"}}),null,16,["model-value"])]),default:n(()=>[t(as,{modelValue:r.start,"onUpdate:modelValue":[x=>r.start=x,x=>i.timePickerMenus[w]=!1],color:"primary",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["modelValue","onUpdate:modelValue"]),t(N,{modelValue:r.duration,"onUpdate:modelValue":x=>r.duration=x,modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"时长",suffix:"分钟","hide-details":"",style:{"max-width":"130px"},min:10,max:300},null,8,["modelValue","onUpdate:modelValue"]),c("span",Wi," 至 "+v(l.sessionEndTime(r)),1),t(ht,{modelValue:r.enabled,"onUpdate:modelValue":x=>r.enabled=x,density:"compact",color:"primary","hide-details":"",label:"启用"},null,8,["modelValue","onUpdate:modelValue"]),t(p,{icon:"mdi-delete",color:"error",size:"x-small",variant:"text",onClick:x=>i.editSessions.splice(w,1)},null,8,["onClick"])])]),_:2},1024)]),_:2},1024)]))),128)),i.editSessions.length===0?(m(),k("div",Yi,[t(g,{class:"mb-1"},{default:n(()=>[...e[4]||(e[4]=[a(" mdi-clock-outline ",-1)])]),_:1}),e[5]||(e[5]=c("div",{class:"text-caption"}," 暂无时间段,点击上方「添加时段」创建 ",-1))])):b("",!0)],64)),t(U,{class:"my-5"}),c("div",qi,[t(g,{class:"mr-2",color:"orange"},{default:n(()=>[...e[6]||(e[6]=[a(" mdi-alert-decagram ",-1)])]),_:1}),e[7]||(e[7]=c("span",{class:"text-subtitle-1 font-weight-bold"},"监测参数",-1))]),c("div",Zi,[t(N,{modelValue:i.editAlertThreshold,"onUpdate:modelValue":e[0]||(e[0]=r=>i.editAlertThreshold=r),modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"噪音报警阈值",suffix:"dB","hide-details":"",style:{"max-width":"200px"},min:30,max:90},null,8,["modelValue"])]),c("div",Xi,[t(p,{variant:"text","prepend-icon":"mdi-restore",onClick:l.resetSessionConfig},{default:n(()=>[...e[8]||(e[8]=[a(" 重置 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"primary",variant:"elevated","prepend-icon":"mdi-content-save",loading:i.sessionSaving,onClick:l.saveSessionConfig},{default:n(()=>[...e[9]||(e[9]=[a(" 保存配置 ",-1)])]),_:1},8,["loading","onClick"])])])]),_:1})}const an=Q(Ji,[["render",$i]]),el={name:"DisplaySettingsCard",components:{SettingsCard:W,SettingItem:ve},setup(){return{theme:$n()}},data(){return{localTheme:y("theme.mode")}},watch:{localTheme(s){re("theme.mode",s),this.theme.global.name.value=s}}};function tl(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{border:"",icon:"mdi-monitor",title:"显示设置"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-theme-light-dark"})]),append:n(()=>[t(Ot,{modelValue:i.localTheme,"onUpdate:modelValue":e[0]||(e[0]=r=>i.localTheme=r),color:"primary",density:"comfortable"},{default:n(()=>[t(p,{value:"light"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-white-balance-sunny"}),e[3]||(e[3]=a(" 明亮 ",-1))]),_:1}),t(p,{value:"dark"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-moon-waning-crescent"}),e[4]||(e[4]=a(" 暗黑 ",-1))]),_:1})]),_:1},8,["modelValue"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[1]||(e[1]=[a("主题模式",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[2]||(e[2]=[a("选择明亮或暗黑主题",-1)])]),_:1})]),_:1}),t(U,{class:"my-2"}),t(d,{"setting-key":"timeCard.enabled"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.emptySubjectDisplay"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.dynamicSort"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.showRandomButton"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.showFullscreenButton"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.cardHoverEffect"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.enhancedTouchMode"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.showQuickTools"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.showAntiScreenBurnCard"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.showExamScheduleButton"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.forceDesktopMode"}),t(U,{class:"my-2"}),t(d,{"setting-key":"display.lateStudentsArePresent"})]),_:1})]),_:1})}const rn=Q(el,[["render",tl]]),nl={};function sl(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{icon:"mdi-cog",title:"编辑设置"},{default:n(()=>[t(O,null,{default:n(()=>[t(d,{"setting-key":"edit.autoSave"}),t(U,{class:"my-2"}),t(d,{"setting-key":"edit.blockNonTodayAutoSave"}),t(U,{class:"my-2"}),t(d,{"setting-key":"edit.confirmNonTodaySave"}),t(U,{class:"my-2"}),t(d,{"setting-key":"edit.refreshBeforeEdit"}),t(U,{class:"my-2"}),t(d,{"setting-key":"edit.autoSavePromptText"}),t(U,{class:"my-2"}),t(d,{"setting-key":"edit.manualSavePromptText"})]),_:1})]),_:1})}const un=Q(nl,[["render",sl]]),il={name:"RefreshSettingsCard",components:{SettingsCard:W},data(){return{}}};function ll(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{icon:"mdi-refresh-circle",title:"刷新设置"},{default:n(()=>[t(Yt,null,{default:n(()=>[t(O,null,{default:n(()=>[t(d,{"setting-key":"refresh.auto",title:"自动刷新"}),t(U,{class:"my-2"}),t(d,{"setting-key":"refresh.interval",title:"刷新间隔"})]),_:1})]),_:1})]),_:1})}const dn=Q(il,[["render",ll]]),ol={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=Re(),e=[];for(const[o,u]of Object.entries(ut)){if(u.requireDeveloper&&!s["developer.enabled"])continue;const i=s[o]!==u.default;e.push({key:o,description:u.description||o,value:s[o],icon:u.icon||"mdi-cog",isChanged:i,defaultValue:u.default})}return e.sort((o,u)=>o.key.localeCompare(u.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 o=e.description.toLowerCase(),u=e.key.toLowerCase(),i=String(e.value).toLowerCase(),l=e.isChanged?"已修改":"默认";return o.includes(s)||u.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=Re();return this.selectedItems.some(e=>{const o=ut[e];return o&&s[e]!==o.default})}},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()}}},methods:{handleSelectionChange(s){this.selectedItems=s.map(e=>e.key),this.generateLink()},generateLink(){const s=`${window.location.protocol}//${window.location.host}/`,e=Re(),o={};for(const u of this.selectedItems)o[u]=e[u];if(Object.keys(o).length===0){this.generatedLink=s;return}try{const u=JSON.stringify(o),l=new TextEncoder().encode(u),f={config:btoa(Array.from(l).map(I=>String.fromCharCode(I)).join(""))},w=new URLSearchParams(window.location.search).get("date");w&&(f.date=w);const x=new URLSearchParams(f).toString();this.generatedLink=`${s}?${x}`}catch(u){console.error("生成链接失败:",u),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(o=>o.key.startsWith(`${s}.`)).map(o=>o.key);this.selectedItems=e},autoGenerateLink(){this.selectedItems.length>0?this.generateLink():this.generatedLink=""},getSettingDescription(s){const e=this.settingItems.find(o=>o.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 o=Re(),u={};for(const r of this.selectedItems)u[r]=o[r];const i=JSON.stringify(u),d=new TextEncoder().encode(i),f=btoa(Array.from(d).map(r=>String.fromCharCode(r)).join(""));e.append("config",f)}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}}},al={class:"d-flex mb-3 gap-2 flex-wrap"},rl={class:"d-flex align-center mb-3 flex-wrap gap-2"},ul={class:"d-flex align-center"},dl={class:"d-flex align-center"},cl={key:0},ml={key:1},fl={key:2},pl={class:"text-caption text-grey"},hl={class:"d-flex mb-3 gap-2 flex-wrap"},gl={class:"d-flex flex-wrap gap-1"};function wl(s,e,o,u,i,l){return m(),k("div",null,[t(M,{border:"",class:"unified-link-generator"},{default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-link-variant",start:""}),e[6]||(e[6]=a(" 统一链接生成器 ",-1))]),_:1}),t(j,null,{default:n(()=>[e[35]||(e[35]=c("div",{class:"text-body-2 text-medium-emphasis mb-4"}," 生成包含预配置认证信息和设置的统一链接。可以同时预配置设备认证和应用设置。 ",-1)),t(M,{class:"mb-4",variant:"tonal"},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[7]||(e[7]=[a(" mdi-account-key ",-1)])]),_:1}),e[8]||(e[8]=a(" 预配置认证信息 ",-1))]),_:1}),t(j,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{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(R,{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(de,{class:"mt-2"},{default:n(()=>[t(R,{cols:"12"},{default:n(()=>[t(Se,{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?(m(),h(Y,{key:0,class:"mt-3",type:"info",variant:"tonal"},{default:n(()=>[e[13]||(e[13]=c("div",{class:"text-subtitle-2 mb-2"}," 预配置信息: ",-1)),t(G,{class:"mr-2 mb-1",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[9]||(e[9]=[a(" mdi-identifier ",-1)])]),_:1}),a(" 命名空间: "+v(i.preconfigForm.namespace),1)]),_:1}),i.preconfigForm.authCode?(m(),h(G,{key:0,class:"mr-2 mb-1",color:"warning",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[10]||(e[10]=[a(" mdi-lock ",-1)])]),_:1}),a(" 认证码: "+v(i.preconfigForm.authCode.length>8?i.preconfigForm.authCode.substring(0,8)+"...":i.preconfigForm.authCode),1)]),_:1})):(m(),h(G,{key:1,class:"mr-2 mb-1",color:"grey",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[11]||(e[11]=[a(" mdi-lock-open ",-1)])]),_:1}),e[12]||(e[12]=a(" 无认证码 ",-1))]),_:1})),t(G,{color:i.preconfigForm.autoExecute?"success":"orange",class:"mr-2 mb-1",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[a(v(i.preconfigForm.autoExecute?"mdi-play-circle":"mdi-hand-back-left"),1)]),_:1}),a(" "+v(i.preconfigForm.autoExecute?"自动认证":"手动认证"),1)]),_:1},8,["color"])]),_:1})):b("",!0)]),_:1})]),_:1}),t(M,{class:"mb-4",variant:"tonal"},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[14]||(e[14]=[a(" mdi-cog-transfer ",-1)])]),_:1}),e[15]||(e[15]=a(" 设置分享(可选) ",-1))]),_:1}),t(j,null,{default:n(()=>[e[22]||(e[22]=c("div",{class:"text-body-2 text-medium-emphasis mb-3"}," 选择需要包含在链接中的设置项。如果不选择任何设置,将只生成预配置认证链接。 ",-1)),c("div",al,[t(p,{color:"primary","prepend-icon":"mdi-server-network",size:"small",variant:"tonal",onClick:l.selectDataSourceSettings},{default:n(()=>[...e[16]||(e[16]=[a(" 数据源设置 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"primary","prepend-icon":"mdi-compare",size:"small",variant:"tonal",onClick:l.selectChangedSettings},{default:n(()=>[...e[17]||(e[17]=[a(" 已变更设置 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"success","prepend-icon":"mdi-select-all",size:"small",variant:"tonal",onClick:l.selectAll},{default:n(()=>[...e[18]||(e[18]=[a(" 全选 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"error","prepend-icon":"mdi-select-remove",size:"small",variant:"tonal",onClick:l.resetSelection},{default:n(()=>[...e[19]||(e[19]=[a(" 清除选择 ",-1)])]),_:1},8,["onClick"])]),c("div",rl,[t(G,{class:"mr-2",color:"primary"},{default:n(()=>[a(" 已选 "+v(i.selectedItems.length)+" 项设置 ",1)]),_:1}),i.selectedItems.length>0?(m(),k(H,{key:0},[(m(!0),k(H,null,te(i.selectedItems.slice(0,3),d=>(m(),h(G,{key:d,class:"mr-1",size:"small",variant:"text"},{default:n(()=>[a(v(l.getSettingDescription(d)),1)]),_:2},1024))),128)),i.selectedItems.length>3?(m(),h(G,{key:0,color:"grey",size:"small",variant:"text"},{default:n(()=>[a(" +"+v(i.selectedItems.length-3)+" 更多 ",1)]),_:1})):b("",!0)],64)):b("",!0)]),t(kt,{variant:"accordion"},{default:n(()=>[t(yt,null,{default:n(()=>[t(qt,null,{default:n(({expanded:d})=>[c("div",ul,[t(g,{class:"mr-2"},{default:n(()=>[a(v(d?"mdi-chevron-up":"mdi-chevron-down"),1)]),_:2},1024),e[20]||(e[20]=a(" 显示设置列表详情 ",-1))])]),_:1}),t(xt,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(Zt,{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})=>[c("div",dl,[t(g,{icon:d.icon,class:"mr-2",size:"small"},null,8,["icon"]),a(" "+v(d.description)+" ",1),d.key==="server.kvToken"?(m(),h(G,{key:0,class:"ml-2",color:"error",size:"x-small"},{default:n(()=>[...e[21]||(e[21]=[a(" 敏感 ",-1)])]),_:1})):b("",!0)])]),"item.value":n(({item:d})=>[typeof d.value=="boolean"?(m(),k("span",cl,v(d.value?"是":"否"),1)):d.key==="server.kvToken"&&d.value?(m(),k("span",ml,v(d.value.substring(0,8))+"... ",1)):(m(),k("span",fl,v(d.value),1))]),"item.key":n(({item:d})=>[c("span",pl,v(d.key),1)]),"item.isChanged":n(({item:d})=>[t(G,{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(M,{class:"mb-4",variant:"outlined"},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[23]||(e[23]=[a(" mdi-link ",-1)])]),_:1}),e[24]||(e[24]=a(" 生成的统一链接 ",-1))]),_:1}),t(j,null,{default:n(()=>[c("div",hl,[t(p,{disabled:!i.preconfigForm.namespace.trim(),color:"primary","prepend-icon":"mdi-auto-fix",variant:"flat",onClick:l.generateUnifiedLink},{default:n(()=>[...e[25]||(e[25]=[a(" 生成统一链接 ",-1)])]),_:1},8,["disabled","onClick"]),t(p,{disabled:!i.unifiedLink,color:"success","prepend-icon":"mdi-test-tube",variant:"tonal",onClick:l.openTestLink},{default:n(()=>[...e[26]||(e[26]=[a(" 测试链接 ",-1)])]),_:1},8,["disabled","onClick"]),t(p,{color:"error","prepend-icon":"mdi-delete",variant:"tonal",onClick:l.clearAll},{default:n(()=>[...e[27]||(e[27]=[a(" 清空所有 ",-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?(m(),h(Y,{key:0,class:"mb-3",type:"success",variant:"tonal"},{default:n(()=>[e[33]||(e[33]=c("div",{class:"text-subtitle-2 mb-2"}," 链接包含内容: ",-1)),c("div",gl,[t(G,{color:"primary",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[28]||(e[28]=[a(" mdi-account-key ",-1)])]),_:1}),e[29]||(e[29]=a(" 预配置认证 ",-1))]),_:1}),i.selectedItems.length>0?(m(),h(G,{key:0,color:"secondary",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[30]||(e[30]=[a(" mdi-cog ",-1)])]),_:1}),a(" "+v(i.selectedItems.length)+" 项设置 ",1)]),_:1})):(m(),h(G,{key:1,color:"grey",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[31]||(e[31]=[a(" mdi-cog-off ",-1)])]),_:1}),e[32]||(e[32]=a(" 无额外设置 ",-1))]),_:1}))])]),_:1})):b("",!0)]),_:1})]),_:1}),t(Y,{type:"warning",variant:"tonal"},{default:n(()=>[...e[34]||(e[34]=[c("div",{class:"text-subtitle-2 mb-2"}," ⚠️ 安全提醒 ",-1),c("ul",{class:"text-body-2 pl-4"},[c("li",null,"认证码和设置信息会在URL中传输,请谨慎分发"),c("li",null,"建议仅在受信任的网络环境中使用"),c("li",null,"生产环境建议使用HTTPS协议"),c("li",null,"数据源设置和已变更设置默认不包含敏感Token信息")],-1)])]),_:1})]),_:1})]),_:1})])}const cn=Q(ol,[["render",wl]]),vl={name:"UnsavedWarning",props:{show:Boolean,message:{type:String,default:"未保存"}}},bl={class:"warning-container"};function kl(s,e,o,u,i,l){return m(),k("div",bl,[o.show?(m(),h(G,{key:0,class:"warning-chip",color:"warning",size:"small"},{default:n(()=>[a(v(o.message),1)]),_:1})):b("",!0)])}const st=Q(vl,[["render",kl],["__scopeId","data-v-0f36b655"]]),yl=Fe({disabled:Boolean,modelValue:{type:Boolean,default:null},...Bn()},"VHover"),mn=tt()({name:"VHover",props:yl(),emits:{"update:modelValue":s=>!0},setup(s,e){let{slots:o}=e;const u=Wt(s,"modelValue"),{runOpenDelay:i,runCloseDelay:l}=jn(s,d=>!s.disabled&&(u.value=d));return()=>{var d;return(d=o.default)==null?void 0:d.call(o,{isHovering:u.value,props:{onMouseenter:i,onMouseleave:l}})}}}),xl={name:"TeacherListCard",components:{UnsavedWarning:st},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 o=await ie.loadData("classworks-list-teacher");o.success!==!1&&Array.isArray(o)&&(this.modelValue.list=o.map(u=>({name:u.name||"",subjects:Array.isArray(u.subjects)?u.subjects:[],isHeadTeacher:!!u.isHeadTeacher})),this.modelValue.text=JSON.stringify(this.modelValue.list,null,2),this.lastSavedData=JSON.parse(JSON.stringify(this.modelValue.list)),this.unsavedChanges=!1)}catch(o){console.warn("Failed to load teacher list, initializing empty list",o),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,o;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 ie.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(u){console.error("保存教师列表失败:",u),(o=this.$message)==null||o.error("保存失败",u.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(o=>({name:o.name||"",subjects:Array.isArray(o.subjects)?o.subjects:[],isHeadTeacher:!!o.isHeadTeacher})),this.error=null):this.error="JSON 必须是一个数组"}catch(e){this.error="JSON 格式错误: "+e.message}},addTeacher(){var e,o;const s=this.newTeacher.name.trim();if(!s){(e=this.$message)==null||e.warning("提示","请输入教师姓名");return}if(this.newTeacher.subjects.length===0){(o=this.$message)==null||o.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 o=this.editState.teacher.name.trim();if(!o){(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:o,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)}}},Sl={key:0},Cl={class:"d-flex align-start mb-3"},Vl={class:"flex-grow-1"},_l={class:"d-flex align-center mb-1"},Dl=["onClick"],Al={key:0,class:"mt-2"},Il={key:1,class:"mt-1"},Tl={key:1,class:"pt-2"};function Ul(s,e,o,u,i,l){const d=st;return m(),h(M,{class:pe({"unsaved-changes":i.unsavedChanges}),color:i.unsavedChanges?"warning-subtle":void 0,border:""},{default:n(()=>[t(ze,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(p,{color:i.modelValue.advanced?"primary":void 0,"prepend-icon":"mdi-code-braces",variant:"text",onClick:l.toggleAdvanced},{default:n(()=>[a(v(i.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[...e[4]||(e[4]=[a(" 教师列表 ",-1)])]),_:1})]),_:1}),t(j,null,{default:n(()=>[i.loading?(m(),h($e,{key:0,class:"mb-4",color:"primary",indeterminate:""})):b("",!0),i.error?(m(),h(Y,{key:1,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.error),1)]),_:1})):b("",!0),t(Ht,null,{default:n(()=>[i.modelValue.advanced?(m(),k("div",Tl,[t(Pe,{modelValue:i.modelValue.text,"onUpdate:modelValue":[e[3]||(e[3]=f=>i.modelValue.text=f),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"])])):(m(),k("div",Sl,[t(M,{class:"mb-6",variant:"outlined"},{default:n(()=>[t(j,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{cols:"12",md:"4"},{default:n(()=>[t(N,{modelValue:i.newTeacher.name,"onUpdate:modelValue":e[0]||(e[0]=f=>i.newTeacher.name=f),density:"comfortable","hide-details":"",label:"教师姓名",placeholder:"输入教师姓名","prepend-inner-icon":"mdi-account",variant:"outlined"},null,8,["modelValue"])]),_:1}),t(R,{cols:"12",md:"5"},{default:n(()=>[t(Ut,{modelValue:i.newTeacher.subjects,"onUpdate:modelValue":e[1]||(e[1]=f=>i.newTeacher.subjects=f),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(R,{cols:"12",md:"3",class:"d-flex align-center gap-2"},{default:n(()=>[t(Se,{modelValue:i.newTeacher.isHeadTeacher,"onUpdate:modelValue":e[2]||(e[2]=f=>i.newTeacher.isHeadTeacher=f),density:"comfortable","hide-details":"",label:"班主任"},null,8,["modelValue"]),t(p,{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]=[a(" 添加教师 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1}),i.modelValue.list.length===0?(m(),h(de,{key:0},{default:n(()=>[t(R,{cols:"12"},{default:n(()=>[t(Y,{type:"info",variant:"tonal"},{default:n(()=>[...e[6]||(e[6]=[a(" 暂无教师信息,请添加教师 ",-1)])]),_:1})]),_:1})]),_:1})):(m(),h(de,{key:1},{default:n(()=>[(m(!0),k(H,null,te(i.modelValue.list,(f,r)=>(m(),h(R,{key:r,cols:"12",lg:"6",xl:"4"},{default:n(()=>[t(mn,null,{default:n(({isHovering:w,props:x})=>[t(M,Ve({elevation:o.isMobile?1:w?4:1,border:"",class:"teacher-card"},{ref_for:!0},x),{default:n(()=>[t(j,{class:"pa-4"},{default:n(()=>[c("div",Cl,[t(et,{color:f.isHeadTeacher?"primary":"grey-lighten-1",class:"mr-3",size:"48"},{default:n(()=>[t(g,{icon:f.isHeadTeacher?"mdi-star":"mdi-account",size:"28"},null,8,["icon"])]),_:2},1032,["color"]),c("div",Vl,[c("div",_l,[i.editState.index===r?(m(),h(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"])):(m(),k("span",{key:1,class:"text-h6 font-weight-medium",onClick:I=>l.handleClick(r,f)},v(f.name),9,Dl)),f.isHeadTeacher?(m(),h(G,{key:2,class:"ml-2",color:"primary",density:"comfortable",size:"small",variant:"flat"},{default:n(()=>[...e[7]||(e[7]=[a(" 班主任 ",-1)])]),_:1})):b("",!0)]),i.editState.index===r?(m(),k("div",Al,[t(Ut,{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(Se,{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"])])):(m(),k("div",Il,[(m(!0),k(H,null,te(f.subjects,(I,F)=>(m(),h(G,{key:F,class:"mr-1 mb-1",density:"comfortable",size:"small",variant:"tonal"},{default:n(()=>[a(v(I),1)]),_:2},1024))),128))]))]),c("div",{class:pe([{"opacity-100":w||o.isMobile||i.editState.index===r},"d-flex gap-1 action-buttons ml-2"])},[i.editState.index===r?(m(),h(p,{key:0,color:"success",icon:"mdi-check",size:"small",variant:"text",onClick:l.saveEdit},null,8,["onClick"])):b("",!0),i.editState.index===r?(m(),h(p,{key:1,color:"grey",icon:"mdi-close",size:"small",variant:"text",onClick:l.cancelEdit},null,8,["onClick"])):(m(),h(p,{key:2,color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:I=>l.startEdit(r,f)},null,8,["onClick"])),i.editState.index!==r?(m(),h(p,{key:3,color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:I=>l.removeTeacher(r)},null,8,["onClick"])):b("",!0)],2)])]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1}))]))]),_:1}),t(de,{class:"mt-6"},{default:n(()=>[t(R,{class:"d-flex gap-2",cols:"12"},{default:n(()=>[t(p,{disabled:i.loading,loading:i.loading,color:"primary","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveTeachers},{default:n(()=>[...e[8]||(e[8]=[a(" 保存教师列表 ",-1)])]),_:1},8,["disabled","loading","onClick"]),t(p,{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]=[a(" 重载教师列表 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["class","color"])}const fn=Q(xl,[["render",Ul],["__scopeId","data-v-96a84acd"]]);let rt=null;async function jl(){return rt||(rt=(await Ft(async()=>{const{pinyin:s}=await import("./index-DdToQrR8.js");return{pinyin:s}},[],import.meta.url)).pinyin),rt}const Bl={name:"StudentListCard",components:{UnsavedWarning:st},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,o)=>e.id-o.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 o=await ie.loadData("classworks-list-main");o.success!=!1&&Array.isArray(o)&&(this.modelValue.list=o.map((u,i)=>typeof u=="string"?{id:i+1,name:u}:{id:u.id||i+1,name:u.name||u.toString()}),this.modelValue.list.sort((u,i)=>u.id-i.id),this.modelValue.text=this.modelValue.list.map(u=>u.name).join(` -`),this.lastSavedData=JSON.parse(JSON.stringify(this.modelValue.list)),this.unsavedChanges=!1)}catch(o){console.warn("Failed to load student list from dedicated key, falling back to config",o)}}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,o;try{if(!y("server.classNumber"))throw new Error("请先设置班号");const i=this.modelValue.list.slice().sort((d,f)=>d.id-f.id).map((d,f)=>({id:f+1,name:d.name})),l=await ie.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(u){console.error("保存学生列表失败:",u),(o=this.$message)==null||o.error("保存失败",u.message||"请重试")}},toggleAdvanced(){this.modelValue.advanced=!this.modelValue.advanced},handleTextInput(s){if(!this.modelValue.advanced)return;const e=s.split(` -`).filter(l=>l.trim()),o=new Map(this.modelValue.list.map(l=>[l.name,l.id]));let u=Math.max(0,...this.modelValue.list.map(l=>l.id));const i=e.map(l=>(l=l.trim(),o.has(l)?{id:o.get(l),name:l}:{id:++u,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(o=>o.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 o=this.modelValue.list[s];this.modelValue.list.splice(s,1),this.modelValue.list.unshift(o),this.modelValue.list.forEach((u,i)=>u.id=i+1)}}else{const o=e==="up"?s-1:s+1;o>=0&&o{const i=s(o.name,{toneType:"none"}),l=s(u.name,{toneType:"none"});return i.localeCompare(l)});e.forEach((o,u)=>o.id=u+1),this.modelValue.list=e}}},Ml={key:0},Nl=["onClick"],Pl={key:1,class:"pt-2"};function zl(s,e,o,u,i,l){const d=st;return m(),h(M,{class:pe({"unsaved-changes":i.unsavedChanges}),color:i.unsavedChanges?"warning-subtle":void 0,border:""},{default:n(()=>[t(ze,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(p,{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]=[a(" 按姓名首字母排序 ",-1)])]),_:1},8,["disabled","onClick"]),t(p,{color:i.modelValue.advanced?"primary":void 0,"prepend-icon":"mdi-code-braces",variant:"text",onClick:l.toggleAdvanced},{default:n(()=>[a(v(i.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[...e[3]||(e[3]=[a(" 学生列表 ",-1)])]),_:1})]),_:1}),t(j,null,{default:n(()=>[i.loading?(m(),h($e,{key:0,class:"mb-4",color:"primary",indeterminate:""})):b("",!0),i.error?(m(),h(Y,{key:1,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.error),1)]),_:1})):b("",!0),t(Ht,null,{default:n(()=>[i.modelValue.advanced?(m(),k("div",Pl,[t(Pe,{modelValue:i.modelValue.text,"onUpdate:modelValue":[e[2]||(e[2]=f=>i.modelValue.text=f),l.handleTextInput],hint:"使用文本编辑模式批量编辑学生名单,保存时会自动去除空行",label:"批量编辑学生列表","persistent-hint":"",placeholder:"每行输入一个学生姓名",rows:"10",variant:"outlined"},null,8,["modelValue","onUpdate:modelValue"])])):(m(),k("div",Ml,[t(de,{class:"mb-6"},{default:n(()=>[t(R,{cols:"12",md:"4",sm:"6"},{default:n(()=>[t(N,{modelValue:i.newStudentName,"onUpdate:modelValue":e[0]||(e[0]=f=>i.newStudentName=f),class:"mb-4","hide-details":"",label:"添加学生",placeholder:"输入学生姓名后回车添加","prepend-inner-icon":"mdi-account-plus",variant:"outlined",onKeyup:_e(l.addStudent,["enter"])},{append:n(()=>[t(p,{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(de,null,{default:n(()=>[(m(!0),k(H,null,te(i.modelValue.list,(f,r)=>(m(),h(R,{key:r,cols:"12",lg:"3",md:"4",sm:"6"},{default:n(()=>[t(mn,null,{default:n(({isHovering:w,props:x})=>[t(M,Ve({elevation:o.isMobile?1:w?4:1,border:"",class:"student-card"},{ref_for:!0},x),{default:n(()=>[t(j,{class:"d-flex align-center pa-3"},{default:n(()=>[t(gt,{"open-on-hover":!o.isMobile,location:"bottom"},{activator:n(({props:I})=>[t(p,Ve({class:"mr-3 font-weight-medium",size:"small"},{ref_for:!0},I,{variant:"tonal"}),{default:n(()=>[a(v(r+1),1)]),_:2},1040)]),default:n(()=>[t(O,{density:"compact",nav:""},{default:n(()=>[t(D,{disabled:r===0,"prepend-icon":"mdi-arrow-up-bold",onClick:I=>l.moveStudent(r,"top")},{default:n(()=>[...e[5]||(e[5]=[a(" 置顶 ",-1)])]),_:1},8,["disabled","onClick"]),t(U),t(D,{disabled:r===0,"prepend-icon":"mdi-arrow-up",onClick:I=>l.moveStudent(r,"up")},{default:n(()=>[...e[6]||(e[6]=[a(" 上移 ",-1)])]),_:1},8,["disabled","onClick"]),t(D,{disabled:r===i.modelValue.list.length-1,"prepend-icon":"mdi-arrow-down",onClick:I=>l.moveStudent(r,"down")},{default:n(()=>[...e[7]||(e[7]=[a(" 下移 ",-1)])]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:2},1032,["open-on-hover"]),i.editState.index===r?(m(),h(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:_e(l.saveEdit,["enter"])},null,8,["modelValue","onBlur","onKeyup"])):(m(),k("span",{key:1,class:"text-body-1 flex-grow-1",onClick:I=>l.handleClick(r,f)},v(f.name),9,Nl)),c("div",{class:pe([{"opacity-100":w||o.isMobile},"d-flex gap-1 action-buttons"])},[t(p,{color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:I=>l.startEdit(r,f)},null,8,["onClick"]),t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:I=>l.removeStudent(r)},null,8,["onClick"])],2)]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]))]),_:1}),t(de,{class:"mt-6"},{default:n(()=>[t(R,{class:"d-flex gap-2",cols:"12"},{default:n(()=>[t(p,{disabled:i.loading,loading:i.loading,color:"primary","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveStudents},{default:n(()=>[...e[8]||(e[8]=[a(" 保存名单 ",-1)])]),_:1},8,["disabled","loading","onClick"]),t(p,{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]=[a(" 重载名单 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["class","color"])}const pn=Q(Bl,[["render",zl],["__scopeId","data-v-a0226a40"]]),El={key:0,class:"d-flex justify-center align-center fill-height"},Ll={key:1,class:"d-flex justify-center align-center fill-height"},Rl={key:2},Kl={class:"text-caption ml-4 text-medium-emphasis"},Fl={key:0},Ol={key:1},Jl={class:"text-error"},hn={__name:"CloudMigrationDialog",props:{modelValue:Boolean},emits:["update:modelValue"],setup(s,{emit:e}){const o=s,u=e,i=se(!1),l=se(!1),d=se(!1),f=se([]),r=se([]),w=se(!1),x=se(null),I=se(null),F=[{id:"student-list",label:"学生列表",description:"classworks-list-main",matcher:C=>C==="classworks-list-main"||C.startsWith("classworks-list-main")},{id:"homework-data",label:"作业数据",description:"classworks-data-*",matcher:C=>C.startsWith("classworks-data-")},{id:"lists",label:"列表",description:"classworks-list-*",matcher:C=>C.startsWith("classworks-list-")},{id:"other",label:"其他",description:"所有其他键",matcher:C=>!C.startsWith("classworks-data-")&&!C.startsWith("classworks-list-")}];ct(()=>o.modelValue,C=>{i.value=C,C&&$()}),ct(i,C=>{u("update:modelValue",C)});const $=async()=>{l.value=!0;try{const C=await Tt.loadKeys({limit:1e3});f.value=C.keys||[],r.value=[]}catch(C){console.error(C)}finally{l.value=!1}},J=C=>f.value.filter(C.matcher),he=C=>J(C).length,ae=C=>{const V=J(C);return V.length===0?!1:V.filter(_=>r.value.includes(_)).length===V.length},ce=C=>{const V=J(C);if(V.length===0)return!1;const T=V.filter(_=>r.value.includes(_)).length;return T>0&&T{const V=J(C);if(V.length===0)return;const T=ae(C),_=new Set(r.value);T?V.forEach(E=>_.delete(E)):V.forEach(E=>_.add(E)),r.value=Array.from(_)},oe=async()=>{var C,V,T;d.value=!0,I.value=null,x.value=null;try{const _={};for(const A of r.value){const X=await Tt.loadData(A);if(X){if(X&&X.success===!1&&X.error){console.warn(`Skipping key ${A} due to load error`,X.error);continue}_[A]=X}}const E=y("server.domain"),q=y("server.kvToken");if(!E||!q)throw new Error("请先配置服务器地址和 Token");const P=E.replace(/\/$/,""),ee=await ts.post(`${P}/kv/_batchimport`,_,{headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/json"}});if(ee.data&&ee.data.code===200)x.value=ee.data.data,w.value=!0,i.value=!1;else throw new Error(((C=ee.data)==null?void 0:C.message)||"迁移失败")}catch(_){console.error(_),I.value=((T=(V=_.response)==null?void 0:V.data)==null?void 0:T.message)||_.message||"发生未知错误",w.value=!0}finally{d.value=!1}};return(C,V)=>(m(),k(H,null,[t(we,{modelValue:i.value,"onUpdate:modelValue":V[2]||(V[2]=T=>i.value=T),"max-width":"600",scrollable:""},{default:n(()=>[t(M,null,{default:n(()=>[t(K,null,{default:n(()=>[...V[5]||(V[5]=[a("迁移到云端",-1)])]),_:1}),t(j,{style:{height:"400px"}},{default:n(()=>[l.value?(m(),k("div",El,[t(Jt,{indeterminate:"",color:"primary"})])):f.value.length===0?(m(),k("div",Ll," 没有找到本地数据 ")):(m(),k("div",Rl,[t(O,{"select-strategy":"classic",class:"mb-4"},{default:n(()=>[t(Mn,null,{default:n(()=>[...V[6]||(V[6]=[a("选择数据类型",-1)])]),_:1}),(m(),k(H,null,te(F,T=>t(D,{key:T.id,onClick:_=>le(T)},{prepend:n(()=>[t(jt,{"model-value":ae(T),indeterminate:ce(T),onClick:Ae(_=>le(T),["stop"])},null,8,["model-value","indeterminate","onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[a(v(T.label),1)]),_:2},1024),t(ne,null,{default:n(()=>[a(v(T.description)+" ("+v(he(T))+" 项)",1)]),_:2},1024)]),_:2},1032,["onClick"])),64))]),_:1}),t(U,{class:"mb-4"}),t(kt,null,{default:n(()=>[t(yt,{title:"详细数据列表"},{default:n(()=>[t(xt,null,{default:n(()=>[t(O,{"select-strategy":"classic",density:"compact"},{default:n(()=>[(m(!0),k(H,null,te(f.value,T=>(m(),h(D,{key:T,value:T},{prepend:n(()=>[t(jt,{modelValue:r.value,"onUpdate:modelValue":V[0]||(V[0]=_=>r.value=_),value:T},null,8,["modelValue","value"])]),default:n(()=>[t(z,null,{default:n(()=>[a(v(T),1)]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]))]),_:1}),t(U),t(ue,null,{default:n(()=>[c("div",Kl," 已选择 "+v(r.value.length)+" 项 ",1),t(Z),t(p,{variant:"text",onClick:V[1]||(V[1]=T=>i.value=!1)},{default:n(()=>[...V[7]||(V[7]=[a(" 取消 ",-1)])]),_:1}),t(p,{color:"primary",loading:d.value,disabled:r.value.length===0,onClick:oe},{default:n(()=>[...V[8]||(V[8]=[a(" 开始迁移 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:w.value,"onUpdate:modelValue":V[4]||(V[4]=T=>w.value=T),"max-width":"500"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,null,{default:n(()=>[...V[9]||(V[9]=[a("迁移结果",-1)])]),_:1}),t(j,null,{default:n(()=>[x.value?(m(),k("div",Fl,[c("p",null,"总计: "+v(x.value.summary.total),1),c("p",null,"成功: "+v(x.value.summary.successful),1),c("p",null,"失败: "+v(x.value.summary.failed),1)])):I.value?(m(),k("div",Ol,[c("p",Jl,v(I.value),1)])):b("",!0)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{color:"primary",onClick:V[3]||(V[3]=T=>w.value=!1)},{default:n(()=>[...V[10]||(V[10]=[a(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])],64))}},Hl={name:"KvDatabaseCard",components:{SettingsCard:W,CloudMigrationDialog:hn},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 ie.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(o=>({key:o,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 ie.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=`{ +import{_ as Rt,V as Sn}from"./MessageLog-C_EKPx-f.js";import{_ as Q,W as ze,c as K,f as g,d as j,j as $e,l as ue,e as M,o as et,C as Kt,x as Ft,X as Te,n as k,s as re,Y as Cn,r as z,h as p,p as O,q as D,i as T,z as ft,Z as Re,w as pt,A as ut,g as Z,$ as Vn,R as _n,a0 as Vt,G as Dn,H as dt,a1 as An,a2 as In,N as Tn,I as Un,F as Ot,E as Ke,k as we,V as Jt,t as ne,a3 as jn,a4 as Bn,a5 as Ht,a6 as Mn,y as _t}from"./index-Ceq_468-.js";import{X as m,Y as h,Z as n,j as t,a1 as a,S as v,$ as b,af as Ye,k as c,P as Nn,_ as y,m as Ve,F as H,a2 as te,q as Pn,t as Ce,e as L,b as se,s as qe,I as zn,p as En,d as Qt,o as ct,N as De,n as pe,R as Dt,V as Ln,aa as Ae,r as Rn,ae as _e,ac as Kn,D as Fn,a4 as On}from"./vendor-vue-BiQC5iF7.js";import{V as G}from"./VChip-BdtDOEwz.js";import{V as ht}from"./VSwitch-d4Yvphn0.js";import{V as Ze}from"./VSelect-OEnAsVY5.js";import{V as N,u as Jn,a as Hn,b as At,c as Qn,m as Gn,d as Wn}from"./VTextField-DpXLMPq7.js";import{V as gt}from"./VMenu-DqtPWEMI.js";import{V as Y,a as Ne}from"./VAlert-C02HdytA.js";import{A as wt,z as mt,ap as Yn,p as Fe,aq as It,f as tt,ar as qn,u as vt,s as Ue,k as Gt,n as Wt,as as Zn,t as Xn,a0 as $n}from"./vendor-vuetify-rtu3DHX4.js";import{d as ie,b as Tt,a as es,o as ts,k as ns}from"./dataProvider-D5waPBEc.js";import{V as de,a as R}from"./VRow-BiiRXDj9.js";import{V as bt}from"./VContainer-BisEDTd3.js";import{a as Xe}from"./vendor-utils-2lvrqI0-.js";import{V as Se}from"./VCheckbox-BM0AQhRG.js";import{V as Pe}from"./VTextarea-UKN-Avq_.js";import{s as ss,a as is}from"./soundList-D9U-Grcp.js";import{V as ls}from"./VSkeletonLoader-B0OOafGJ.js";import{V as os}from"./VTimePicker-DXcm5dub.js";import{V as Yt}from"./VForm-vCieX1EY.js";import{V as yt,a as kt,b as qt,c as xt}from"./VExpansionPanels-DbwaqF41.js";import{V as Zt}from"./VDataTable-BtP49-4R.js";import{V as Ut}from"./VCombobox-CjTuZar9.js";import{V as jt}from"./VCheckboxBtn-snLiE5D5.js";import{i as as,t as rs}from"./serverRotation-Bs3NH0Jb.js";import{getVisitorId as us}from"./visitorId-D2J8zjxI.js";import{b as Bt,c as Mt,V as ds,a as cs}from"./VAppBarTitle-q97S07ao.js";import{V as ms}from"./VSheet-MW0wxrpj.js";import{V as fs,a as fe}from"./VTable-CJ8evfI8.js";import"./VPicker-DxbAs-x1.js";import"./VPagination-BQZD6rf1.js";const ps={name:"SettingsCard",props:{title:{type:String,required:!0},icon:{type:String,required:!0},loading:{type:Boolean,default:!1}}};function hs(s,e,o,u,i,l){return m(),h(M,{class:"settings-card rounded-lg",elevation:"2"},{default:n(()=>[t(ze,null,{prepend:n(()=>[t(g,{icon:o.icon,class:"mr-2",size:"large"},null,8,["icon"])]),default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[a(v(o.title),1)]),_:1})]),_:1}),t(j,null,{default:n(()=>[o.loading?(m(),h($e,{key:0,class:"mb-4",color:"primary",indeterminate:""})):b("",!0),Ye(s.$slots,"default",{},void 0,!0)]),_:3}),s.$slots.actions?(m(),h(ue,{key:0,class:"pa-4"},{default:n(()=>[Ye(s.$slots,"actions",{},void 0,!0)]),_:3})):b("",!0)]),_:3})}const W=Q(ps,[["render",hs],["__scopeId","data-v-cd0153ca"]]),gs=[{text:"帝高阳之苗裔兮,朕皇考曰伯庸。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"摄提贞于孟陬兮,惟庚寅吾以降。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇览揆余初度兮,肇锡余以嘉名。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"名余曰正则兮,字余曰灵均。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷吾既有此内美兮,又重之以修能。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扈江离与辟芷兮,纫秋兰以为佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汩余若将不及兮,恐年岁之不吾与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝搴阰之木兰兮,夕揽洲之宿莽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日月忽其不淹兮,春与秋其代序。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟草木之零落兮,恐美人之迟暮。(惟 通:唯)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不抚壮而弃秽兮,何不改此度?(改此度 一作:改乎此度)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乘骐骥以驰骋兮,来吾道夫先路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"昔三后之纯粹兮,固众芳之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"杂申椒与菌桂兮,岂惟纫夫蕙茝!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"彼尧舜之耿介兮,既遵道而得路。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何桀纣之猖披兮,夫唯捷径以窘步。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟夫党人之偷乐兮,路幽昧以险隘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂余身之惮殃兮,恐皇舆之败绩!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽奔走以先后兮,及前王之踵武。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"荃不查余之中情兮,反信谗而齌怒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余固知謇謇之为患兮,忍而不能舍也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"指九天以为正兮,夫唯灵修之故也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰黄昏以为期兮,羌中道而改路!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"初既与余成言兮,后悔遁而有他。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既不难夫离别兮,伤灵修之数化。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余既滋兰之九畹兮,又树蕙之百亩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"畦留夷与揭车兮,杂杜衡与芳芷。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"冀枝叶之峻茂兮,愿俟时乎吾将刈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽萎绝其亦何伤兮,哀众芳之芜秽。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众皆竞进以贪婪兮,凭不厌乎求索。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羌内恕己以量人兮,各兴心而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽驰骛以追逐兮,非余心之所急。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"老冉冉其将至兮,恐修名之不立。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝饮木兰之坠露兮,夕餐秋菊之落英。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟余情其信姱以练要兮,长顑颔亦何伤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"掔木根以结茝兮,贯薜荔之落蕊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"矫菌桂以纫蕙兮,索胡绳之纚纚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"謇吾法夫前修兮,非世俗之所服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽不周于今之人兮,愿依彭咸之遗则。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"长太息以掩涕兮,哀民生之多艰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余虽好修姱以鞿羁兮,謇朝谇而夕替。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既替余以蕙纕兮,又申之以揽茝。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"亦余心之所善兮,虽九死其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怨灵修之浩荡兮,终不察夫民心。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众女嫉余之蛾眉兮,谣诼谓余以善淫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之工巧兮,偭规矩而改错。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"背绳墨以追曲兮,竞周容以为度。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忳郁邑余侘傺兮,吾独穷困乎此时也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁溘死以流亡兮,余不忍为此态也。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸷鸟之不群兮,自前世而固然。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何方圜之能周兮,夫孰异道而相安?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屈心而抑志兮,忍尤而攘诟。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"伏清白以死直兮,固前圣之所厚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"悔相道之不察兮,延伫乎吾将反。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"回朕车以复路兮,及行迷之未远。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"步余马于兰皋兮,驰椒丘且焉止息。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"进不入以离尤兮,退将复修吾初服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"制芰荷以为衣兮,集芙蓉以为裳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不吾知其亦已兮,苟余情其信芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"高余冠之岌岌兮,长余佩之陆离。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳与泽其杂糅兮,唯昭质其犹未亏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以游目兮,将往观乎四荒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"佩缤纷其繁饰兮,芳菲菲其弥章。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民生各有所乐兮,余独好修以为常。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽体解吾犹未变兮,岂余心之可惩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"女媭之婵媛兮,申申其詈予,曰:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鲧婞直以亡身兮,终然夭乎羽之野。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汝何博謇而好修兮,纷独有此姱节?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"薋菉葹以盈室兮,判独离而不服。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"众不可户说兮,孰云察余之中情?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世并举而好朋兮,夫何茕独而不予听?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"依前圣以节中兮,喟凭心而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"济沅湘以南征兮,就重华而陈词:",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"启《九辩》与《九歌》兮,夏康娱以自纵。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不顾难以图后兮,五子用失乎家衖。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"羿淫游以佚畋兮,又好射夫封狐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固乱流其鲜终兮,浞又贪夫厥家。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"浇身被服强圉兮,纵欲而不忍。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"日康娱而自忘兮,厥首用夫颠陨。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夏桀之常违兮,乃遂焉而逢殃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"后辛之菹醢兮,殷宗用而不长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而祗敬兮,周论道而莫差。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"举贤才而授能兮,循绳墨而不颇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇天无私阿兮,览民德焉错辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫维圣哲以茂行兮,苟得用此下土。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"瞻前而顾后兮,相观民之计极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夫孰非义而可用兮?孰非善而可服?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"阽余身而危死兮,览余初其犹未悔。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"不量凿而正枘兮,固前修以菹醢。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曾歔欷余郁邑兮,哀朕时之不当。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"揽茹蕙以掩涕兮,沾余襟之浪浪。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"跪敷衽以陈辞兮,耿吾既得此中正。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驷玉虬以椉鹥兮,溘埃风余上征。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于苍梧兮,夕余至乎县圃。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲少留此灵琐兮,日忽忽其将暮。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令羲和弭节兮,望崦嵫而勿迫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路曼曼其修远兮,吾将上下而求索。(曼曼 一作:漫漫)",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"饮余马于咸池兮,总余辔乎扶桑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折若木以拂日兮,聊逍遥以相羊。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"前望舒使先驱兮,后飞廉使奔属。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"鸾皇为余先戒兮,雷师告余以未具。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令凤鸟飞腾兮,继之以日夜。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"飘风屯其相离兮,帅云霓而来御。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,斑陆离其上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令帝阍开关兮,倚阊阖而望予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时暧暧其将罢兮,结幽兰而延伫。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而不分兮,好蔽美而嫉妒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝吾将济于白水兮,登阆风而绁马。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽反顾以流涕兮,哀高丘之无女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"溘吾游此春宫兮,折琼枝以继佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及荣华之未落兮,相下女之可诒。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令丰隆乘云兮,求宓妃之所在。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"解佩纕以结言兮,吾令謇修以为理。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"纷总总其离合兮,忽纬繣其难迁。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"夕归次于穷石兮,朝濯发乎洧盘。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"保厥美以骄傲兮,日康娱以淫游。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"虽信美而无礼兮,来违弃而改求。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览相观于四极兮,周流乎天余乃下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"望瑶台之偃蹇兮,见有娀之佚女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吾令鸩为媒兮,鸩告余以不好。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"雄鸠之鸣逝兮,余犹恶其佻巧。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"心犹豫而狐疑兮,欲自适而不可。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇既受诒兮,恐高辛之先我。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲远集而无所止兮,聊浮游以逍遥。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及少康之未家兮,留有虞之二姚。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"理弱而媒拙兮,恐导言之不固。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世溷浊而嫉贤兮,好蔽美而称恶。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"闺中既以邃远兮,哲王又不寤。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"怀朕情而不发兮,余焉能忍而与此终古?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"索琼茅以筳篿兮,命灵氛为余占之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:两美其必合兮,孰信修而慕之?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"思九州之博大兮,岂惟是其有女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉远逝而无狐疑兮,孰求美而释女?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何所独无芳草兮,尔何怀乎故宇?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"世幽昧以昡曜兮,孰云察余之善恶?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"民好恶其不同兮,惟此党人其独异!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"户服艾以盈要兮,谓幽兰其不可佩。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览察草木其犹未得兮,岂珵美之能当?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苏粪壤以充帏兮,谓申椒其不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"欲从灵氛之吉占兮,心犹豫而狐疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"巫咸将夕降兮,怀椒糈而要之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"百神翳其备降兮,九疑缤其并迎。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"皇剡剡其扬灵兮,告余以吉故。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"曰:勉升降以上下兮,求矩矱之所同。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"汤禹俨而求合兮,挚咎繇而能调。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"苟中情其好修兮,又何必用夫行媒?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"说操筑于傅岩兮,武丁用而不疑。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"吕望之鼓刀兮,遭周文而得举。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"宁戚之讴歌兮,齐桓闻以该辅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及年岁之未晏兮,时亦犹其未央。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"恐鹈鴂之先鸣兮,使夫百草为之不芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何琼佩之偃蹇兮,众薆然而蔽之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟此党人之不谅兮,恐嫉妒而折之。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"时缤纷其变易兮,又何可以淹留?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"兰芷变而不芳兮,荃蕙化而为茅。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何昔日之芳草兮,今直为此萧艾也?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"岂其有他故兮,莫好修之害也!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"余以兰为可恃兮,羌无实而容长。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"委厥美以从俗兮,苟得列乎众芳。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"椒专佞以慢慆兮,樧又欲充夫佩帏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既干进而务入兮,又何芳之能祗?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"固时俗之流从兮,又孰能无变化?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"览椒兰其若兹兮,又况揭车与江离?",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"惟兹佩之可贵兮,委厥美而历兹。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"芳菲菲而难亏兮,芬至今犹未沬。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"和调度以自娱兮,聊浮游而求女。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"及余饰之方壮兮,周流观乎上下。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"灵氛既告余以吉占兮,历吉日乎吾将行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"折琼枝以为羞兮,精琼爢以为粻。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"为余驾飞龙兮,杂瑶象以为车。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"何离心之可同兮?吾将远逝以自疏。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"邅吾道夫昆仑兮,路修远以周流。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"扬云霓之晻蔼兮,鸣玉鸾之啾啾。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"朝发轫于天津兮,夕余至乎西极。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"凤皇翼其承旗兮,高翱翔之翼翼。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"忽吾行此流沙兮,遵赤水而容与。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"麾蛟龙使梁津兮,诏西皇使涉予。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路修远以多艰兮,腾众车使径待。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"路不周以左转兮,指西海以为期。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"屯余车其千乘兮,齐玉轪而并驰。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"驾八龙之婉婉兮,载云旗之委蛇。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"抑志而弭节兮,神高驰之邈邈。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"奏《九歌》而舞《韶》兮,聊假日以媮乐。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"陟升皇之赫戏兮,忽临睨夫旧乡。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"仆夫悲余马怀兮,蜷局顾而不行。",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"乱曰:已矣哉!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"国无人莫我知兮,又何怀乎故都!",author:"屈原",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"},{text:"既莫足与为美政兮,吾将从彭咸之所居!",author:"离骚",contributor:"Sunwuyuan",link:"https://www.gushiwen.cn/shiwenv.aspx?id=f5714bcd33e3"}],Nt={quotes:gs};let ot=null;async function ws(){return ot||(ot=(await Ft(async()=>{const{default:s}=await import("./core-Cy2g3AD-.js").then(e=>e.c);return{default:s}},[],import.meta.url)).default),ot}const Pt={text:"点击此处可以查看 Classworks 用户群里沙雕群友们的发言",author:"点击后会复制当前句子到剪贴板中"},zt={main:{delay:50,deleteSpeed:100},source:{delay:10,deleteSpeed:10,cursor:""}},vs={name:"EchoChamberCard",components:{SettingsCard:W},data:()=>({typewriter:null,sourceWriter:null,currentQuote:Pt,hasClicked:!1}),mounted(){this.initTypewriters()},beforeUnmount(){[this.typewriter,this.sourceWriter].forEach(s=>s==null?void 0:s.stop())},methods:{async initTypewriters(){const s=await ws();this.typewriter=new s(this.$refs.typewriter,zt.main),this.sourceWriter=new s(this.$refs.sourceWriter,zt.source),this.typeQuote(Pt)},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 Nt.quotes[Math.floor(Math.random()*Nt.quotes.length)]},async copyToClipboard(){if(!this.currentQuote)return;const{text:s,author:e,contributor:o,link:u}=this.currentQuote,i=[s,e&&`作者:${e}`,o&&`贡献者:${o}`,(u||o)&&`来源:${u||`https://github.com/${o}`}`].filter(Boolean);try{await navigator.clipboard.writeText(i.join(` +`))}catch(l){console.error("复制失败:",l)}}}},bs={ref:"typewriter",class:"typewriter-text"},ys={ref:"sourceWriter",class:"source-text"};function ks(s,e,o,u,i,l){const d=W;return m(),h(d,{border:"",icon:"mdi-thought-bubble",title:"回声洞",onClick:l.handleClick},{default:n(()=>[t(j,null,{default:n(()=>[c("div",bs,null,512),c("div",ys,null,512)]),_:1}),t(Nn,{name:"fade"},{default:n(()=>{var f;return[(f=s.currentQuote)!=null&&f.contributor?(m(),h(G,{key:0,class:"contributor"},{default:n(()=>[t(et,{start:""},{default:n(()=>[t(Kt,{src:`https://github.com/${s.currentQuote.contributor}.png`},null,8,["src"])]),_:1}),a(" "+v(s.currentQuote.contributor),1)]),_:1})):b("",!0)]}),_:1})]),_:1},8,["onClick"])}const Xt=Q(vs,[["render",ks],["__scopeId","data-v-c75e2e66"]]),xs={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=Cn(this.settingKey),!this.definition){console.error(`未找到设置项定义: ${this.settingKey}`);return}if(this.type=this.definition.type,this.localValue=k(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,o])=>({title:o,value:e})),this.hasOptions=!0}else if(this.definition.validate){const e=this.definition.validate.toString().match(/\[(.*?)\]/);if(e){const u=e[1].split(",").map(i=>{const l=i.trim().replace(/['"]/g,"");return{title:this.getDisplayValue(l)||l,value:l}});u.length>0&&(this.selectOptions=u,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 o=s.match(/value\s*<=\s*(\d+)/);o&&(this.maxValue=Number(o[1]));const u=this.maxValue-this.minValue;u>100?this.stepValue=10:u>20?this.stepValue=5:u>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)),re(this.settingKey,e)?this.$emit("update",this.settingKey,e):(this.localValue=k(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&&(Te(this.settingKey),this.localValue=k(this.settingKey),this.showSnackbarMessage("已重置为默认值"),this.$emit("update",this.settingKey,this.localValue))},showSnackbarMessage(s){this.snackbarText=s,this.showSnackbar=!0}}},Ss={class:"d-flex flex-column flex-sm-row align-center"},Cs={key:0,class:"me-2"},Vs={key:2,class:"d-flex align-center"},_s={key:0,class:"px-4 pb-2 pt-0"};function Ds(s,e,o,u,i,l){return m(),y(H,null,[t(D,{disabled:o.disabled,class:"setting-item"},{prepend:n(()=>[t(g,{icon:l.settingIcon},null,8,["icon"])]),append:n(()=>[c("div",Ss,[i.type!=="string"||i.hasOptions?(m(),y("div",Cs,[i.type==="boolean"?(m(),h(ht,{key:0,modelValue:i.localValue,"onUpdate:modelValue":[e[0]||(e[0]=d=>i.localValue=d),l.updateSetting],disabled:o.disabled,density:"comfortable","hide-details":""},null,8,["modelValue","disabled","onUpdate:modelValue"])):i.type==="string"&&i.hasOptions?(m(),h(Ze,{key:1,modelValue:i.localValue,"onUpdate:modelValue":[e[1]||(e[1]=d=>i.localValue=d),l.updateSetting],disabled:o.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"?(m(),y("div",Vs,[t(p,{disabled:o.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:o.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(p,{disabled:o.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"])])):b("",!0)])):b("",!0),t(gt,{location:"bottom"},{activator:n(({props:d})=>[t(p,Ve({disabled:o.disabled,class:"ml-2",icon:"mdi-dots-vertical",size:"small"},d,{variant:"text"}),null,16,["disabled"])]),default:n(()=>[t(O,{density:"compact"},{default:n(()=>[t(D,{onClick:l.copySettingId},{prepend:n(()=>[t(g,{icon:"mdi-key",size:"small"})]),default:n(()=>[t(z,null,{default:n(()=>[...e[7]||(e[7]=[a("复制设置ID",-1)])]),_:1})]),_:1},8,["onClick"]),t(D,{onClick:l.copySettingValue},{prepend:n(()=>[t(g,{icon:"mdi-content-copy",size:"small"})]),default:n(()=>[t(z,null,{default:n(()=>[...e[8]||(e[8]=[a("复制设置值",-1)])]),_:1})]),_:1},8,["onClick"]),t(T),t(D,{disabled:l.isDefaultValue,onClick:l.resetToDefault},{prepend:n(()=>[t(g,{icon:"mdi-restore",size:"small"})]),default:n(()=>[t(z,null,{default:n(()=>[...e[9]||(e[9]=[a("重置为默认值",-1)])]),_:1})]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})])]),default:n(()=>[t(z,{class:"text-wrap"},{default:n(()=>[a(v(l.displayTitle),1)]),_:1})]),_:1},8,["disabled"]),i.type==="string"&&!i.hasOptions?(m(),y("div",_s,[t(N,{modelValue:i.localValue,"onUpdate:modelValue":[e[5]||(e[5]=d=>i.localValue=d),l.updateSetting],disabled:o.disabled,"bg-color":"surface",class:"setting-text-field mt-1",density:"compact","hide-details":"",variant:"outlined"},null,8,["modelValue","disabled","onUpdate:modelValue"])])):b("",!0),t(ft,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[6]||(e[6]=d=>i.showSnackbar=d),timeout:2e3,color:"success",location:"top"},{default:n(()=>[a(v(i.snackbarText),1)]),_:1},8,["modelValue"])],64)}const ve=Q(xs,[["render",Ds],["__scopeId","data-v-14c3ef9d"]]),As={name:"SettingsExplorer",components:{SettingItem:ve},data(){return{searchQuery:"",currentSettings:{},unwatchFunction:null}},computed:{isDeveloperMode(){return k("developer.enabled")},allSettings(){var e;const s=[];for(const[o,u]of Object.entries(ut))this.searchQuery&&!o.toLowerCase().includes(this.searchQuery.toLowerCase())&&!((e=u.description)!=null&&e.toLowerCase().includes(this.searchQuery.toLowerCase()))||s.push({key:o,...u});return s},formattedSettings(){return JSON.stringify(this.currentSettings,null,2)}},created(){this.updateCurrentSettings(),this.unwatchFunction=pt(()=>{this.updateCurrentSettings()})},beforeUnmount(){this.unwatchFunction&&this.unwatchFunction()},methods:{updateCurrentSettings(){this.currentSettings=Re()},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:"复制到剪贴板失败"})})}}},Is={class:"settings-explorer"},Ts={class:"settings-json"};function Us(s,e,o,u,i,l){const d=ve;return m(),y("div",Is,[c("div",null,[t(N,{modelValue:i.searchQuery,"onUpdate:modelValue":e[0]||(e[0]=f=>i.searchQuery=f),class:"mb-4",clearable:"",density:"comfortable",label:"搜索设置","prepend-inner-icon":"mdi-magnify",variant:"outlined"},null,8,["modelValue"]),t(O,null,{default:n(()=>[(m(!0),y(H,null,te(l.allSettings,f=>(m(),y("div",{key:f.key},[(m(),h(d,{key:f.key,disabled:f.requireDeveloper&&!l.isDeveloperMode,"setting-key":f.key,onError:l.onSettingError,onUpdate:l.onSettingUpdate},null,8,["disabled","setting-key","onError","onUpdate"])),t(T,{class:"my-2"})]))),128))]),_:1}),t(M,{border:""},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[...e[1]||(e[1]=[a(" 当前配置 ",-1)])]),_:1}),t(j,null,{default:n(()=>[c("pre",Ts,v(l.formattedSettings),1)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{onClick:l.copySettingsToClipboard},{default:n(()=>[e[3]||(e[3]=a(" 复制到剪贴板 ",-1)),t(g,{right:""},{default:n(()=>[...e[2]||(e[2]=[a(" mdi-content-copy ",-1)])]),_:1})]),_:1},8,["onClick"])]),_:1})]),_:1})])])}const $t=Q(As,[["render",Us],["__scopeId","data-v-9750a84f"]]),St=Symbol.for("vuetify:v-slider");function js(s,e,o){const u=o==="vertical",i=e.getBoundingClientRect(),l="touches"in s?s.touches[0]:s;return u?l.clientY-(i.top+i.height/2):l.clientX-(i.left+i.width/2)}function Bs(s,e){return"touches"in s&&s.touches.length?s.touches[0][e]:"changedTouches"in s&&s.changedTouches.length?s.changedTouches[0][e]:s[e]}const Ms=Fe({disabled:{type:Boolean,default:null},error:Boolean,readonly:{type:Boolean,default:null},max:{type:[Number,String],default:100},min:{type:[Number,String],default:0},step:{type:[Number,String],default:0},thumbColor:String,thumbLabel:{type:[Boolean,String],default:void 0,validator:s=>typeof s=="boolean"||s==="always"||s==="hover"},thumbSize:{type:[Number,String],default:20},showTicks:{type:[Boolean,String],default:!1,validator:s=>typeof s=="boolean"||s==="always"},ticks:{type:[Array,Object]},tickSize:{type:[Number,String],default:2},color:String,trackColor:String,trackFillColor:String,trackSize:{type:[Number,String],default:4},direction:{type:String,default:"horizontal",validator:s=>["vertical","horizontal"].includes(s)},reverse:Boolean,noKeyboard:Boolean,..._n(),...Vn({elevation:2}),ripple:{type:Boolean,default:!0}},"Slider"),Ns=s=>{const e=L(()=>parseFloat(s.min)),o=L(()=>parseFloat(s.max)),u=L(()=>Number(s.step)>0?parseFloat(s.step):0),i=L(()=>Math.max(It(u.value),It(e.value)));function l(d){if(d=parseFloat(d),u.value<=0)return d;const f=mt(d,e.value,o.value),r=e.value%u.value;let w=Math.round((f-r)/u.value)*u.value+r;return f>w&&w+u.value>o.value&&(w=o.value),parseFloat(Math.min(w,o.value).toFixed(i.value))}return{min:e,max:o,step:u,decimals:i,roundValue:l}},Ps=s=>{let{props:e,steps:o,onSliderStart:u,onSliderMove:i,onSliderEnd:l,getActiveThumb:d}=s;const f=Jn(e),{isRtl:r}=wt(),w=Ce(()=>e.reverse),x=L(()=>e.direction==="vertical"),I=L(()=>x.value!==w.value),{min:F,max:$,step:J,decimals:he,roundValue:ae}=o,ce=L(()=>parseInt(e.thumbSize,10)),le=L(()=>parseInt(e.tickSize,10)),oe=L(()=>parseInt(e.trackSize,10)),C=L(()=>($.value-F.value)/J.value),V=L(()=>e.error||f.isDisabled.value?void 0:e.thumbColor??e.color),U=L(()=>e.error||f.isDisabled.value?void 0:e.thumbColor),_=L(()=>e.error||f.isDisabled.value?void 0:e.trackColor??e.color),E=L(()=>e.error||f.isDisabled.value?void 0:e.trackFillColor??e.color),q=qe(!1),P=qe(0),ee=se(),A=se();function X(S){var Ct;const B=(Ct=ee.value)==null?void 0:Ct.$el;if(!B)return;const me=e.direction==="vertical",Me=me?"top":"left",Qe=me?"height":"width",Ge=me?"clientY":"clientX",{[Me]:We,[Qe]:kn}=B.getBoundingClientRect(),xn=Bs(S,Ge);let lt=mt((xn-We-P.value)/kn)||0;return(me?I.value:I.value!==r.value)&&(lt=1-lt),ae(F.value+lt*($.value-F.value))}const be=S=>{const B=X(S);B!=null&&l({value:B}),q.value=!1,P.value=0},ge=S=>{const B=X(S);A.value=d(S),A.value&&(q.value=!0,A.value.contains(S.target)?P.value=js(S,A.value,e.direction):(P.value=0,B!=null&&i({value:B})),B!=null&&u({value:B}),zn(()=>{var me;return(me=A.value)==null?void 0:me.focus()}))},ye={passive:!0,capture:!0};function ke(S){const B=X(S);B!=null&&i({value:B})}function je(S){S.stopPropagation(),S.preventDefault(),be(S),window.removeEventListener("mousemove",ke,ye),window.removeEventListener("mouseup",je)}function Ie(S){var B;be(S),window.removeEventListener("touchmove",ke,ye),(B=S.target)==null||B.removeEventListener("touchend",Ie)}function Be(S){var B;ge(S),window.addEventListener("touchmove",ke,ye),(B=S.target)==null||B.addEventListener("touchend",Ie,{passive:!1})}function Ee(S){S.button===0&&(S.preventDefault(),ge(S),window.addEventListener("mousemove",ke,ye),window.addEventListener("mouseup",je,{passive:!1}))}Pn(()=>{window.removeEventListener("touchmove",ke),window.removeEventListener("mousemove",ke),window.removeEventListener("mouseup",je)});const xe=S=>{const B=(S-F.value)/($.value-F.value)*100;return mt(isNaN(B)?0:B,0,100)},Oe=Ce(()=>e.showTicks),Je=L(()=>Oe.value?e.ticks?Array.isArray(e.ticks)?e.ticks.map(S=>({value:S,position:xe(S),label:S.toString()})):Object.keys(e.ticks).map(S=>({value:parseFloat(S),position:xe(parseFloat(S)),label:e.ticks[S]})):C.value!==1/0?Yn(C.value+1).map(S=>{const B=F.value+S*J.value;return{value:B,position:xe(B)}}):[]:[]),it=L(()=>Je.value.some(S=>{let{label:B}=S;return!!B})),He={activeThumbRef:A,color:Ce(()=>e.color),decimals:he,disabled:f.isDisabled,direction:Ce(()=>e.direction),elevation:Ce(()=>e.elevation),hasLabels:it,isReversed:w,indexFromEnd:I,min:F,max:$,mousePressed:q,noKeyboard:Ce(()=>e.noKeyboard),numTicks:C,onSliderMousedown:Ee,onSliderTouchstart:Be,parsedTicks:Je,parseMouseMove:X,position:xe,readonly:f.isReadonly,rounded:Ce(()=>e.rounded),roundValue:ae,showTicks:Oe,startOffset:P,step:J,thumbSize:ce,thumbColor:V,thumbLabelColor:U,thumbLabel:Ce(()=>e.thumbLabel),ticks:Ce(()=>e.ticks),tickSize:le,trackColor:_,trackContainerRef:ee,trackFillColor:E,trackSize:oe,vertical:x};return En(St,He),He},zs=Fe({focused:Boolean,max:{type:Number,required:!0},min:{type:Number,required:!0},modelValue:{type:Number,required:!0},position:{type:Number,required:!0},ripple:{type:[Boolean,Object],default:!0},name:String,noKeyboard:Boolean,...Gt()},"VSliderThumb"),Es=tt()({name:"VSliderThumb",directives:{vRipple:Vt},props:zs(),emits:{"update:modelValue":s=>!0},setup(s,e){let{slots:o,emit:u}=e;const i=Qt(St),{isRtl:l,rtlClasses:d}=wt();if(!i)throw new Error("[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider");const{min:f,max:r,thumbColor:w,thumbLabelColor:x,step:I,disabled:F,thumbSize:$,thumbLabel:J,direction:he,isReversed:ae,vertical:ce,readonly:le,elevation:oe,mousePressed:C,decimals:V,indexFromEnd:U}=i,_=qe(!1),E=qe(!1),q=L(()=>F.value?void 0:oe.value),{elevationClasses:P}=In(q),{textColorClasses:ee,textColorStyles:A}=Dn(w),{backgroundColorClasses:X,backgroundColorStyles:be}=dt(x),{pageup:ge,pagedown:ye,end:ke,home:je,left:Ie,right:Be,down:Ee,up:xe}=qn,Oe=[ge,ye,ke,je,Ie,Be,Ee,xe],Je=L(()=>I.value?[1,2,3]:[1,5,10]);function it(S,B){if(s.noKeyboard||F.value||!Oe.includes(S.key))return;S.preventDefault();const me=I.value||.1,Me=(r.value-f.value)/me;if([Ie,Be,Ee,xe].includes(S.key)){const Ge=(ce.value?[l.value?Ie:Be,ae.value?Ee:xe]:U.value!==l.value?[Ie,xe]:[Be,xe]).includes(S.key)?1:-1,We=S.shiftKey?2:S.ctrlKey?1:0;Ge===-1&&B===r.value&&!We&&!Number.isInteger(Me)?B=B-Me%1*me:B=B+Ge*me*Je.value[We]}else if(S.key===je)B=f.value;else if(S.key===ke)B=r.value;else{const Qe=S.key===ye?1:-1;B=B-Qe*me*(Me>100?Me/10:10)}return Math.max(s.min,Math.min(s.max,B))}function He(S){const B=it(S,s.modelValue);B!=null&&(E.value=!1,u("update:modelValue",B))}return ct(()=>s.focused,S=>{S&&(E.value=!1)}),vt(()=>{const S=Ue(U.value?100-s.position:s.position,"%"),B=J.value==="always"||J.value===!0&&s.focused||J.value==="hover"&&(_.value||s.focused&&!E.value);return c("div",{class:pe(["v-slider-thumb",{"v-slider-thumb--focused":s.focused,"v-slider-thumb--pressed":s.focused&&C.value},s.class,d.value]),style:De([{"--v-slider-thumb-position":S,"--v-slider-thumb-size":Ue($.value)},s.style]),role:"slider",tabindex:F.value?-1:0,"aria-label":s.name,"aria-valuemin":f.value,"aria-valuemax":r.value,"aria-valuenow":s.modelValue,"aria-readonly":!!le.value,"aria-orientation":he.value,onKeydown:le.value?void 0:He,onMouseenter:()=>{_.value=!0},onMouseleave:()=>{_.value=!1,E.value=!0}},[c("div",{class:pe(["v-slider-thumb__surface",ee.value,P.value]),style:De(A.value)},null),Dt(c("div",{class:pe(["v-slider-thumb__ripple",ee.value]),style:De(A.value)},null),[[Vt,s.ripple,null,{circle:!0,center:!0}]]),t(An,{origin:"bottom center"},{default:()=>{var me;return[Dt(c("div",{class:"v-slider-thumb__label-container"},[c("div",{class:pe(["v-slider-thumb__label",X.value]),style:De(be.value)},[c("div",null,[((me=o["thumb-label"])==null?void 0:me.call(o,{modelValue:s.modelValue}))??s.modelValue.toFixed(I.value?V.value:1)]),c("div",{class:"v-slider-thumb__label-wedge"},null)])]),[[Ln,B]])]}})])}),{}}}),Ls=Fe({start:{type:Number,required:!0},stop:{type:Number,required:!0},...Gt()},"VSliderTrack"),Rs=tt()({name:"VSliderTrack",props:Ls(),emits:{},setup(s,e){let{slots:o}=e;const u=Qt(St);if(!u)throw new Error("[Vuetify] v-slider-track must be inside v-slider or v-range-slider");const{color:i,parsedTicks:l,rounded:d,showTicks:f,tickSize:r,trackColor:w,trackFillColor:x,trackSize:I,vertical:F,min:$,max:J,indexFromEnd:he}=u,{roundedClasses:ae}=Tn(d),{backgroundColorClasses:ce,backgroundColorStyles:le}=dt(x),{backgroundColorClasses:oe,backgroundColorStyles:C}=dt(w),V=L(()=>`inset-${F.value?"block":"inline"}-${he.value?"end":"start"}`),U=L(()=>F.value?"height":"width"),_=L(()=>({[V.value]:"0%",[U.value]:"100%"})),E=L(()=>s.stop-s.start),q=L(()=>({[V.value]:Ue(s.start,"%"),[U.value]:Ue(E.value,"%")})),P=L(()=>f.value?(F.value?l.value.slice().reverse():l.value).map((A,X)=>{var ge;const be=A.value!==$.value&&A.value!==J.value?Ue(A.position,"%"):void 0;return c("div",{key:A.value,class:pe(["v-slider-track__tick",{"v-slider-track__tick--filled":A.position>=s.start&&A.position<=s.stop,"v-slider-track__tick--first":A.value===$.value,"v-slider-track__tick--last":A.value===J.value}]),style:{[V.value]:be}},[(A.label||o["tick-label"])&&c("div",{class:"v-slider-track__tick-label"},[((ge=o["tick-label"])==null?void 0:ge.call(o,{tick:A,index:X}))??A.label])])}):[]);return vt(()=>c("div",{class:pe(["v-slider-track",ae.value,s.class]),style:De([{"--v-slider-track-size":Ue(I.value),"--v-slider-tick-size":Ue(r.value)},s.style])},[c("div",{class:pe(["v-slider-track__background",oe.value,{"v-slider-track__background--opacity":!!i.value||!x.value}]),style:{..._.value,...C.value}},null),c("div",{class:pe(["v-slider-track__fill",ce.value]),style:{...q.value,...le.value}},null),f.value&&c("div",{class:pe(["v-slider-track__ticks",{"v-slider-track__ticks--always-show":f.value==="always"}])},[P.value])])),{}}}),Ks=Fe({...Wn(),...Ms(),...Gn(),modelValue:{type:[Number,String],default:0}},"VSlider"),Et=tt()({name:"VSlider",inheritAttrs:!1,props:Ks(),emits:{"update:focused":s=>!0,"update:modelValue":s=>!0,start:s=>!0,end:s=>!0},setup(s,e){let{slots:o,emit:u,attrs:i}=e;const l=se(),d=se(),{rtlClasses:f}=wt(),r=Ns(s),w=Wt(s,"modelValue",void 0,P=>r.roundValue(P??r.min.value)),{min:x,max:I,mousePressed:F,roundValue:$,onSliderMousedown:J,onSliderTouchstart:he,trackContainerRef:ae,position:ce,hasLabels:le,disabled:oe,readonly:C,noKeyboard:V}=Ps({props:s,steps:r,onSliderStart:()=>{!oe.value&&!C.value&&u("start",w.value)},onSliderEnd:P=>{let{value:ee}=P;const A=$(ee);!oe.value&&!C.value&&(w.value=A),u("end",A)},onSliderMove:P=>{let{value:ee}=P;!oe.value&&!C.value&&(w.value=$(ee))},getActiveThumb:()=>{var P;return(P=l.value)==null?void 0:P.$el}}),{isFocused:U,focus:_,blur:E}=Hn(s),q=L(()=>ce(w.value));return vt(()=>{const P=At.filterProps(s),[ee,A]=Zn(i),X=!!(s.label||o.label||o.prepend);return t(At,Ve({ref:d,class:["v-slider",{"v-slider--has-labels":!!o["tick-label"]||le.value,"v-slider--focused":U.value,"v-slider--pressed":F.value,"v-slider--disabled":oe.value},f.value,s.class],style:s.style},P,ee,{focused:U.value}),{...o,prepend:X?be=>{var ge,ye;return c(H,null,[((ge=o.label)==null?void 0:ge.call(o,be))??(s.label?t(Qn,{id:be.id.value,class:"v-slider__label",text:s.label},null):void 0),(ye=o.prepend)==null?void 0:ye.call(o,be)])}:void 0,default:be=>{let{id:ge,messagesId:ye}=be;return c("div",{class:"v-slider__container",onMousedown:C.value?void 0:J,onTouchstartPassive:C.value?void 0:he},[c("input",{id:ge.value,name:s.name||ge.value,disabled:oe.value,readonly:C.value,tabindex:"-1",value:w.value},null),t(Rs,{ref:ae,start:0,stop:q.value},{"tick-label":o["tick-label"]}),t(Es,Ve({ref:l,"aria-describedby":ye.value,focused:U.value,noKeyboard:V.value,min:x.value,max:I.value,modelValue:w.value,"onUpdate:modelValue":ke=>w.value=ke,position:q.value,elevation:s.elevation,onFocus:_,onBlur:E,ripple:s.ripple,name:s.name},A),{"thumb-label":o["thumb-label"]})])}})}),Un({focus:()=>{var P;return(P=l.value)==null?void 0:P.$el.focus()}},d)}}),Fs=[{label:"Bing 随机壁纸",url:"https://bing.img.run/rand.php"},{label:"Bing 每日壁纸",url:"https://bing.img.run/1920x1080.php"},{label:"随机风景",url:"https://picsum.photos/1920/1080?random=1"},{label:"随机二次元",url:"https://uapis.cn/api/v1/random/image?category=acg&type=pc"}],at=10,Os={name:"BackgroundSettingsCard",components:{SettingsCard:W,SettingItem:ve},data(){const s=k("background.imageData")||"",e=k("background.url")||"";return{imageSource:s?"upload":"url",localUrl:e,localImageData:s,localBlur:k("background.blur")??10,localOpacity:k("background.opacity")??30,isDragging:!1,saving:!1,uploadWarning:"",urlPresets:Fs,settingItemKey:0,maxImageSizeMB:at}},computed:{activeImageSrc(){return this.imageSource==="upload"&&this.localImageData?this.localImageData:this.imageSource==="url"&&this.localUrl?this.localUrl:""},previewContainerStyle(){return{position:"relative",width:"100%",height:"160px",borderRadius:"12px",overflow:"hidden",border:"1px solid rgba(128,128,128,0.3)"}},previewBgStyle(){return this.activeImageSrc?{position:"absolute",inset:"0",backgroundImage:`url(${this.activeImageSrc})`,backgroundSize:"cover",backgroundPosition:"center",filter:`blur(${this.localBlur}px)`,transform:"scale(1.1)"}:{position:"absolute",inset:"0",background:"linear-gradient(135deg, #667eea 0%, #764ba2 100%)",filter:`blur(${this.localBlur}px)`,transform:"scale(1.1)"}},previewOverlayStyle(){return{position:"absolute",inset:"0",background:`rgba(0, 0, 0, ${this.localOpacity/100})`}}},methods:{validateUrl(s){if(!s)return!0;try{return new URL(s),!0}catch{return"请输入有效的图片地址"}},onUrlChange(s){this.localUrl=s||""},onBlurChange(s){this.localBlur=s},onOpacityChange(s){this.localOpacity=s},applyPreset(s){this.localUrl=s,this.imageSource="url"},triggerFileInput(){this.$refs.fileInput.click()},handleDrop(s){var o,u;this.isDragging=!1;const e=(u=(o=s.dataTransfer)==null?void 0:o.files)==null?void 0:u[0];e&&this.processFile(e)},handleFileChange(s){var o;const e=(o=s.target.files)==null?void 0:o[0];e&&this.processFile(e),s.target.value=""},processFile(s){if(this.uploadWarning="",!s.type.startsWith("image/")){this.uploadWarning="请选择图片文件";return}const e=s.size/1024/1024;if(e>at){this.uploadWarning=`图片大小为 ${e.toFixed(1)}MB,超过 ${at}MB 限制,请压缩后重试`;return}const o=new FileReader;o.onload=u=>{this.localImageData=u.target.result},o.readAsDataURL(s)},clearUploadedImage(){this.localImageData="",this.uploadWarning=""},async saveAll(){this.saving=!0;try{this.imageSource==="upload"?(re("background.imageData",this.localImageData||""),re("background.url","")):(re("background.url",this.localUrl||""),re("background.imageData","")),re("background.blur",this.localBlur),re("background.opacity",this.localOpacity)}finally{this.saving=!1}},resetAll(){Te("background.enabled"),Te("background.url"),Te("background.imageData"),Te("background.blur"),Te("background.opacity"),this.localUrl=k("background.url")||"",this.localImageData=k("background.imageData")||"",this.localBlur=k("background.blur")??10,this.localOpacity=k("background.opacity")??30,this.imageSource="url",this.uploadWarning="",this.settingItemKey++}}},Js={class:"px-4 pb-4"},Hs={class:"d-flex align-center mb-4"},Qs={key:0,class:"mb-4"},Gs={class:"d-flex flex-wrap gap-2 mt-2"},Ws={key:1,class:"mb-4"},Ys={class:"text-caption text-medium-emphasis mt-1"},qs={key:1,class:"d-flex align-center ga-2"},Zs={class:"d-flex align-center mb-4"},Xs={class:"mb-4"},$s={class:"d-flex justify-space-between align-center mb-1"},ei={class:"text-body-2 font-weight-bold"},ti={class:"mb-4"},ni={class:"d-flex justify-space-between align-center mb-1"},si={class:"text-body-2 font-weight-bold"},ii={class:"d-flex justify-end ga-3"};function li(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{border:"",icon:"mdi-image",title:"背景设置"},{default:n(()=>[t(O,null,{default:n(()=>[(m(),h(d,{key:i.settingItemKey,"setting-key":"background.enabled"}))]),_:1}),t(T,{class:"mb-4"}),c("div",Js,[c("div",{class:"preview-area mb-6",style:De(l.previewContainerStyle)},[c("div",{class:"preview-bg",style:De(l.previewBgStyle)},null,4),c("div",{class:"preview-overlay",style:De(l.previewOverlayStyle)},null,4),e[9]||(e[9]=c("div",{class:"preview-text"}," 背景预览 ",-1))],4),c("div",Hs,[t(g,{class:"mr-2",color:"primary"},{default:n(()=>[...e[10]||(e[10]=[a(" mdi-image-search ",-1)])]),_:1}),e[11]||(e[11]=c("span",{class:"text-subtitle-1 font-weight-bold"},"图片来源",-1))]),t(Ot,{modelValue:i.imageSource,"onUpdate:modelValue":e[0]||(e[0]=r=>i.imageSource=r),color:"primary",density:"comfortable",class:"mb-4",mandatory:"",rounded:"xl"},{default:n(()=>[t(p,{value:"url","prepend-icon":"mdi-link-variant"},{default:n(()=>[...e[12]||(e[12]=[a(" 网络地址 ",-1)])]),_:1}),t(p,{value:"upload","prepend-icon":"mdi-upload"},{default:n(()=>[...e[13]||(e[13]=[a(" 本地上传 ",-1)])]),_:1})]),_:1},8,["modelValue"]),i.imageSource==="url"?(m(),y("div",Qs,[t(N,{modelValue:i.localUrl,"onUpdate:modelValue":[e[1]||(e[1]=r=>i.localUrl=r),l.onUrlChange],label:"图片地址",placeholder:"https://example.com/background.jpg",variant:"outlined",density:"compact","prepend-inner-icon":"mdi-link",clearable:"","hide-details":"auto",rules:[l.validateUrl]},null,8,["modelValue","rules","onUpdate:modelValue"]),c("div",Gs,[(m(!0),y(H,null,te(i.urlPresets,r=>(m(),h(G,{key:r.label,size:"small",variant:"tonal",color:"primary",class:"cursor-pointer",onClick:w=>l.applyPreset(r.url)},{default:n(()=>[a(v(r.label),1)]),_:2},1032,["onClick"]))),128))])])):b("",!0),i.imageSource==="upload"?(m(),y("div",Ws,[c("div",{class:pe(["upload-area rounded-xl pa-6 text-center mb-3",{"upload-hover":i.isDragging}]),onDragover:e[3]||(e[3]=Ae(r=>i.isDragging=!0,["prevent"])),onDragleave:e[4]||(e[4]=r=>i.isDragging=!1),onDrop:e[5]||(e[5]=Ae((...r)=>l.handleDrop&&l.handleDrop(...r),["prevent"])),onClick:e[6]||(e[6]=(...r)=>l.triggerFileInput&&l.triggerFileInput(...r))},[t(g,{size:"40",color:"primary",class:"mb-2"},{default:n(()=>[...e[14]||(e[14]=[a(" mdi-image-plus ",-1)])]),_:1}),e[15]||(e[15]=c("div",{class:"text-body-2"}," 点击或拖拽图片到此处上传 ",-1)),c("div",Ys," 支持 JPG、PNG、WebP、GIF(建议小于 "+v(i.maxImageSizeMB)+"MB) ",1),c("input",{ref:"fileInput",type:"file",accept:"image/*",style:{display:"none"},onChange:e[2]||(e[2]=(...r)=>l.handleFileChange&&l.handleFileChange(...r))},null,544)],34),i.uploadWarning?(m(),h(Y,{key:0,type:"warning",variant:"tonal",density:"compact",class:"mb-2",icon:"mdi-alert"},{default:n(()=>[a(v(i.uploadWarning),1)]),_:1})):b("",!0),i.localImageData?(m(),y("div",qs,[t(G,{color:"success","prepend-icon":"mdi-check-circle",size:"small"},{default:n(()=>[...e[16]||(e[16]=[a(" 已上传本地图片 ",-1)])]),_:1}),t(p,{size:"small",variant:"text",color:"error","prepend-icon":"mdi-delete",onClick:l.clearUploadedImage},{default:n(()=>[...e[17]||(e[17]=[a(" 清除 ",-1)])]),_:1},8,["onClick"])])):b("",!0)])):b("",!0),t(T,{class:"my-5"}),c("div",Zs,[t(g,{class:"mr-2",color:"blue"},{default:n(()=>[...e[18]||(e[18]=[a(" mdi-blur ",-1)])]),_:1}),e[19]||(e[19]=c("span",{class:"text-subtitle-1 font-weight-bold"},"毛玻璃效果",-1))]),c("div",Xs,[c("div",$s,[e[20]||(e[20]=c("span",{class:"text-body-2 text-medium-emphasis"},"模糊幅度",-1)),c("span",ei,v(i.localBlur)+"px",1)]),t(Et,{modelValue:i.localBlur,"onUpdate:modelValue":[e[7]||(e[7]=r=>i.localBlur=r),l.onBlurChange],min:0,max:50,step:1,color:"primary","track-color":"grey-lighten-3","thumb-label":"","hide-details":""},{prepend:n(()=>[t(g,{size:"small",color:"grey"},{default:n(()=>[...e[21]||(e[21]=[a(" mdi-blur-off ",-1)])]),_:1})]),append:n(()=>[t(g,{size:"small",color:"primary"},{default:n(()=>[...e[22]||(e[22]=[a(" mdi-blur ",-1)])]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue"])]),c("div",ti,[c("div",ni,[e[23]||(e[23]=c("span",{class:"text-body-2 text-medium-emphasis"},"遮罩暗色程度",-1)),c("span",si,v(i.localOpacity)+"%",1)]),t(Et,{modelValue:i.localOpacity,"onUpdate:modelValue":[e[8]||(e[8]=r=>i.localOpacity=r),l.onOpacityChange],min:0,max:80,step:1,color:"blue-grey","track-color":"grey-lighten-3","thumb-label":"","hide-details":""},{prepend:n(()=>[t(g,{size:"small",color:"grey"},{default:n(()=>[...e[24]||(e[24]=[a(" mdi-brightness-7 ",-1)])]),_:1})]),append:n(()=>[t(g,{size:"small",color:"blue-grey"},{default:n(()=>[...e[25]||(e[25]=[a(" mdi-brightness-2 ",-1)])]),_:1})]),_:1},8,["modelValue","onUpdate:modelValue"])]),t(T,{class:"my-5"}),c("div",ii,[t(p,{variant:"text","prepend-icon":"mdi-restore",onClick:l.resetAll},{default:n(()=>[...e[26]||(e[26]=[a(" 重置 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"primary",variant:"elevated","prepend-icon":"mdi-content-save",loading:i.saving,onClick:l.saveAll},{default:n(()=>[...e[27]||(e[27]=[a(" 保存设置 ",-1)])]),_:1},8,["loading","onClick"])])])]),_:1})}const en=Q(Os,[["render",li],["__scopeId","data-v-bb9183b0"]]),oi={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 ai(s,e,o,u,i,l){return m(),h(M,{border:o.border,class:"setting-group"},{default:n(()=>[o.title?(m(),h(K,{key:0,class:"d-flex align-center"},{default:n(()=>[o.icon?(m(),h(g,{key:0,icon:o.icon,class:"mr-2"},null,8,["icon"])):b("",!0),a(" "+v(o.title),1)]),_:1})):b("",!0),o.description?(m(),h(Ke,{key:1},{default:n(()=>[a(v(o.description),1)]),_:1})):b("",!0),t(j,null,{default:n(()=>[t(O,null,{default:n(()=>[Ye(s.$slots,"default",{},void 0,!0)]),_:3})]),_:3}),s.$slots.actions?(m(),h(ue,{key:2},{default:n(()=>[Ye(s.$slots,"actions",{},void 0,!0)]),_:3})):b("",!0)]),_:3},8,["border"])}const nt=Q(oi,[["render",ai],["__scopeId","data-v-acac458a"]]),ri={subjects:{语文:{books:{课本:["第一单元","第二单元"],练习册:["第一章","第二章"]}},数学:{books:{课本:["第一章","第二章"],习题册:["基础练习","提高练习"]}},英语:{books:{课本:["Unit 1","Unit 2"],练习册:["Chapter 1","Chapter 2"]}}},commonSubject:{books:{试卷:["单元测试","期中测试","期末测试"],假期作业:["必做题","选做题"]}},actions:["写完","下一课","不交","明天交"]},ui={name:"HomeworkTemplateCard",components:{SettingsCard:W,SettingGroup:nt},data(){return{loading:!1,error:null,config:Rn(JSON.parse(JSON.stringify(ri))),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 o=await ie.loadData("classworks-config-homework-template");if(o){const u=o;Object.assign(this.config,u),this.originalConfig=JSON.parse(JSON.stringify(u)),this.isNewConfig=!1,this.showMessage("配置已加载","success")}else if(((s=o.error)==null?void 0:s.code)==="NOT_FOUND")this.showMessage("使用默认配置","info"),this.isNewConfig=!0;else{const u=((e=o.error)==null?void 0:e.message)||"加载失败";this.showMessage(`加载失败: ${u},可继续编辑当前配置`,"warning")}}catch(o){console.error("Failed to load config:",o),this.showMessage("加载失败,可继续编辑当前配置","warning")}this.loading=!1},async saveConfig(){this.loading=!0;try{const s=await ie.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 o=this.config.subjects[s];this.config.subjects[e]=o,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 o=`${s}-${e}`,u=this.editedBookTypes[o];if(u&&u!==e){const i=this.config.subjects[s].books[e];this.config.subjects[s].books[u]=i,delete this.config.subjects[s].books[e]}delete this.editedBookTypes[o]},deleteBookType(s,e){s==="common"?delete this.config.commonSubject.books[e]:delete this.config.subjects[s].books[e]},addBook(s,e){const o=`${s}-${e}`,u=this.newBooks[o];u&&(this.config.subjects[s].books[e].includes(u)||this.config.subjects[s].books[e].push(u),this.newBooks[o]="")},removeBook(s,e,o){const u=this.config.subjects[s].books[e],i=u.indexOf(o);i>-1&&u.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,o){this.dialog.show=!0,this.dialog.title="编辑需完成部分",this.dialog.nameLabel="部分名称",this.dialog.editedItem={name:o,type:"book",subject:s,bookType:e,originalName:o,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,o){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(o)?[...o]:[]}},saveDialog(){const{type:s,name:e,subject:o,originalName:u,tasks:i}=this.dialog.editedItem;if(!e){this.showMessage("名称不能为空","error");return}let l;const d=o==="common"?this.config.commonSubject.books:o?this.config.subjects[o].books:null;switch(s){case"subjectBook":d&&(u!==e?(d[e]=i||[],delete d[u]):d[e]=i||[]);break;case"action":l=this.config.actions.indexOf(u),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=""}}},di={class:"d-flex justify-space-between align-center mb-6"};function ci(s,e,o,u,i,l){const d=nt,f=W;return m(),h(f,{loading:i.loading,border:"",icon:"mdi-book-edit",title:"作业模板配置"},{default:n(()=>[i.error?(m(),h(Y,{key:0,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.error),1)]),_:1})):b("",!0),c("div",di,[c("div",null,[t(p,{loading:i.loading,class:"mr-2",color:"primary","prepend-icon":"mdi-refresh",size:"large",onClick:l.loadConfig},{default:n(()=>[...e[7]||(e[7]=[a(" 重新加载配置 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{loading:i.loading,color:"success","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveConfig},{default:n(()=>[...e[8]||(e[8]=[a(" 保存所有更改 ",-1)])]),_:1},8,["loading","onClick"])]),l.hasChanges?(m(),h(G,{key:0,color:"warning",variant:"elevated"},{default:n(()=>[...e[9]||(e[9]=[a(" 有未保存的更改 ",-1)])]),_:1})):b("",!0)]),t(de,null,{default:n(()=>[t(R,{cols:"12",md:"6"},{default:n(()=>[t(d,{border:"",icon:"mdi-book",title:"科目配置"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{default:n(()=>[t(N,{modelValue:i.newSubject,"onUpdate:modelValue":e[0]||(e[0]=r=>i.newSubject=r),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加新科目",variant:"outlined","onClick:appendInner":l.addSubject,onKeyup:_e(l.addSubject,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),(m(!0),y(H,null,te(l.subjectList,r=>(m(),h(D,{key:r},{default:n(()=>[t(M,{border:"",class:"w-100 mb-2"},{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(N,{modelValue:i.editedSubjects[r],"onUpdate:modelValue":w=>i.editedSubjects[r]=w,placeholder:r,density:"comfortable","hide-details":"",variant:"plain",onBlur:w=>l.updateSubject(r)},null,8,["modelValue","onUpdate:modelValue","placeholder","onBlur"]),t(Z),t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:w=>l.deleteSubject(r)},null,8,["onClick"])]),_:2},1024),t(j,null,{default:n(()=>[t(N,{modelValue:i.newBookTypes[r],"onUpdate:modelValue":w=>i.newBookTypes[r]=w,"append-inner-icon":"mdi-plus",class:"mb-2",density:"comfortable",label:"添加作业本名称",variant:"outlined","onClick:appendInner":()=>l.addBookType(r),onKeyup:_e(()=>l.addBookType(r),["enter"])},null,8,["modelValue","onUpdate:modelValue","onClick:appendInner","onKeyup"]),t(O,{border:"",density:"compact",rounded:""},{default:n(()=>[(m(!0),y(H,null,te(i.config.subjects[r].books,(w,x)=>(m(),h(D,{key:x,title:x,onClick:I=>l.openSubjectBookDialog(r,x,w)},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-book-open-variant"})]),append:n(()=>[t(G,{class:"mr-2",color:"info",size:"small"},{default:n(()=>[a(v(w.length)+"个部分 ",1)]),_:2},1024),t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:Ae(()=>l.deleteBookType(r,x),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:2},1024)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),t(R,{cols:"12",md:"6"},{default:n(()=>[t(d,{border:"",icon:"mdi-cog",title:"通用配置"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{default:n(()=>[t(N,{modelValue:i.newCommonBook,"onUpdate:modelValue":e[1]||(e[1]=r=>i.newCommonBook=r),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加作业本名称",variant:"outlined","onClick:appendInner":l.addCommonBook,onKeyup:_e(l.addCommonBook,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),t(D,null,{default:n(()=>[t(O,{border:"",density:"compact",rounded:""},{default:n(()=>[(m(!0),y(H,null,te(i.config.commonSubject.books,(r,w)=>(m(),h(D,{key:w,title:w,onClick:x=>l.openSubjectBookDialog("common",w,r)},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-book-multiple"})]),append:n(()=>[t(G,{class:"mr-2",color:"info",size:"small"},{default:n(()=>[a(v(r.length)+"个部分 ",1)]),_:2},1024),t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:Ae(()=>l.deleteBookType("common",w),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1}),t(T,{class:"my-2"}),t(D,null,{default:n(()=>[t(N,{modelValue:i.newAction,"onUpdate:modelValue":e[2]||(e[2]=r=>i.newAction=r),"append-inner-icon":"mdi-plus",density:"comfortable",label:"添加操作",variant:"outlined","onClick:appendInner":l.addAction,onKeyup:_e(l.addAction,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1}),t(D,null,{default:n(()=>[t(O,{border:"",density:"compact",rounded:""},{default:n(()=>[(m(!0),y(H,null,te(i.config.actions,r=>(m(),h(D,{key:r,title:r,onClick:w=>l.openActionDialog(r)},{append:n(()=>[t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:Ae(w=>l.removeAction(r),["stop"])},null,8,["onClick"])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(we,{modelValue:i.dialog.show,"onUpdate:modelValue":e[5]||(e[5]=r=>i.dialog.show=r),"max-width":"600px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"text-h5 pa-4"},{default:n(()=>[a(v(i.dialog.title),1)]),_:1}),t(j,null,{default:n(()=>[t(bt,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{cols:"12"},{default:n(()=>[t(N,{modelValue:i.dialog.editedItem.name,"onUpdate:modelValue":e[3]||(e[3]=r=>i.dialog.editedItem.name=r),label:i.dialog.nameLabel,rules:[r=>!!r||"名称不能为空"],density:"comfortable",variant:"outlined"},null,8,["modelValue","label","rules"])]),_:1}),i.dialog.editedItem.type==="subjectBook"?(m(),h(R,{key:0,cols:"12"},{default:n(()=>[e[10]||(e[10]=c("div",{class:"text-subtitle-2 mb-2"}," 所属科目 ",-1)),t(G,{color:"primary"},{default:n(()=>[a(v(i.dialog.editedItem.subject),1)]),_:1})]),_:1})):b("",!0),["subjectBook","commonBook"].includes(i.dialog.editedItem.type)?(m(),h(R,{key:1,cols:"12"},{default:n(()=>[t(M,{variant:"outlined"},{default:n(()=>[t(K,{class:"text-subtitle-1 py-2"},{default:n(()=>[...e[11]||(e[11]=[a(" 需完成部分 ",-1)])]),_:1}),t(j,{class:"pt-0"},{default:n(()=>[t(O,{border:"",class:"mb-2",density:"compact",rounded:""},{default:n(()=>[(m(!0),y(H,null,te(i.dialog.editedItem.tasks,(r,w)=>(m(),h(D,{key:w},{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-checkbox-blank-circle-outline",size:"small"})]),append:n(()=>[t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:x=>l.removeTask(w)},null,8,["onClick"])]),default:n(()=>[t(N,{modelValue:i.dialog.editedItem.tasks[w],"onUpdate:modelValue":x=>i.dialog.editedItem.tasks[w]=x,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]=r=>i.newTask=r),"append-inner-icon":"mdi-plus",class:"mt-2",density:"comfortable",label:"添加需完成部分",variant:"outlined","onClick:appendInner":l.addTask,onKeyup:_e(l.addTask,["enter"])},null,8,["modelValue","onClick:appendInner","onKeyup"])]),_:1})]),_:1})]),_:1})):b("",!0)]),_:1})]),_:1})]),_:1}),t(ue,{class:"pa-4"},{default:n(()=>[t(Z),t(p,{color:"primary",variant:"elevated",onClick:l.saveDialog},{default:n(()=>[...e[12]||(e[12]=[a(" 关闭 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"error",variant:"text",onClick:l.closeDialog},{default:n(()=>[...e[13]||(e[13]=[a(" 取消 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(ft,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[6]||(e[6]=r=>i.showSnackbar=r),color:i.snackbarColor,timeout:3e3},{default:n(()=>[a(v(i.snackbarText),1)]),_:1},8,["modelValue","color"])]),_:1},8,["loading"])}const tn=Q(ui,[["render",ci],["__scopeId","data-v-a2517340"]]),mi={name:"SubjectManagementCard",components:{SettingsCard:W},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 ie.loadData("classworks-config-subject");s?(this.subjects=s.map((e,o)=>({name:e.name,order:e.order??o})).sort((e,o)=>e.order-o.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 ie.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(o=>o.order===s.order);e>-1&&(this.subjects[e]={...s})},deleteSubject(s){const e=this.subjects.findIndex(o=>o.order===s.order);e>-1&&(this.subjects.splice(e,1),this.subjects.forEach((o,u)=>{o.order=u}))},moveSubject(s,e){const o=s+e;if(o>=0&&o{i.order=l})}},resetToDefault(){this.subjects=JSON.parse(JSON.stringify(this.defaultSubjects)),this.showMessage("已重置为默认科目列表","info")}}},fi={class:"d-flex justify-space-between align-center mb-6"},pi={class:"d-flex flex-column align-center mr-2"};function hi(s,e,o,u,i,l){const d=W;return m(),h(d,{loading:i.loading,border:"",icon:"mdi-book-multiple",title:"科目管理"},{default:n(()=>[i.error?(m(),h(Y,{key:0,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.error),1)]),_:1})):b("",!0),c("div",fi,[c("div",null,[t(p,{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]=[a(" 重新加载 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{loading:i.loading,color:"success","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveConfig},{default:n(()=>[...e[3]||(e[3]=[a(" 保存 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{loading:i.loading,class:"mr-2","prepend-icon":"mdi-restore",variant:"text",onClick:l.resetToDefault},{default:n(()=>[...e[4]||(e[4]=[a(" 重置为默认 ",-1)])]),_:1},8,["loading","onClick"])]),l.hasChanges?(m(),h(G,{key:0,color:"warning",variant:"elevated"},{default:n(()=>[...e[5]||(e[5]=[a(" 有未保存的更改 ",-1)])]),_:1})):b("",!0)]),t(M,{class:"mb-4",variant:"outlined"},{default:n(()=>[t(j,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{cols:"12",sm:"6"},{default:n(()=>[t(N,{modelValue:i.newSubjectName,"onUpdate:modelValue":e[0]||(e[0]=f=>i.newSubjectName=f),rules:[f=>!!f||"科目名称不能为空"],"append-inner-icon":"mdi-plus",density:"comfortable",label:"科目名称",variant:"outlined",onKeyup:_e(l.addSubject,["enter"]),"onClick:appendInner":l.addSubject},null,8,["modelValue","rules","onKeyup","onClick:appendInner"])]),_:1})]),_:1})]),_:1})]),_:1}),t(M,{variant:"outlined"},{default:n(()=>[t(j,{class:"pa-0"},{default:n(()=>[t(O,{lines:"one"},{default:n(()=>[(m(!0),y(H,null,te(i.subjects,(f,r)=>(m(),h(D,{key:f.order},{prepend:n(()=>[c("div",pi,[t(p,{disabled:r===0,icon:"mdi-chevron-up",size:"small",variant:"text",onClick:w=>l.moveSubject(r,-1)},null,8,["disabled","onClick"]),t(p,{disabled:r===i.subjects.length-1,icon:"mdi-chevron-down",size:"small",variant:"text",onClick:w=>l.moveSubject(r,1)},null,8,["disabled","onClick"])])]),append:n(()=>[t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:w=>l.deleteSubject(f)},null,8,["onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[t(N,{modelValue:f.name,"onUpdate:modelValue":w=>f.name=w,density:"compact","hide-details":"",variant:"plain",onBlur:w=>l.updateSubject(f)},null,8,["modelValue","onUpdate:modelValue","onBlur"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),t(ft,{modelValue:i.showSnackbar,"onUpdate:modelValue":e[1]||(e[1]=f=>i.showSnackbar=f),color:i.snackbarColor,timeout:3e3},{default:n(()=>[a(v(i.snackbarText),1)]),_:1},8,["modelValue","color"])]),_:1},8,["loading"])}const nn=Q(mi,[["render",hi],["__scopeId","data-v-22202eda"]]),gi={};function wi(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{icon:"mdi-cog",title:"编辑设置"},{default:n(()=>[t(O,null,{default:n(()=>[t(d,{"setting-key":"randomPicker.enabled"}),t(T,{class:"my-2"}),t(d,{"setting-key":"randomPicker.mode"}),t(T,{class:"my-2"}),t(d,{"setting-key":"randomPicker.minNumber"}),t(T,{class:"my-2"}),t(d,{"setting-key":"randomPicker.maxNumber"}),t(T,{class:"my-2"}),t(d,{"setting-key":"randomPicker.defaultCount"}),t(T,{class:"my-2"}),t(d,{"setting-key":"randomPicker.animation"})]),_:1})]),_:1})}const sn=Q(gi,[["render",wi]]),vi={name:"HitokotoSettings",components:{SettingGroup:nt,SettingItem:ve},data(){return{kvConfig:{sources:["zhaoyu"],sensitiveWords:"",jinrishiciToken:null,hitokotoCategories:[]},hitokotoCategories:[{value:"a",label:"动画"},{value:"b",label:"漫画"},{value:"c",label:"游戏"},{value:"d",label:"文学"},{value:"e",label:"原创"},{value:"f",label:"来自网络"},{value:"g",label:"其他"},{value:"h",label:"影视"},{value:"i",label:"诗词"},{value:"j",label:"网易云"},{value:"k",label:"哲学"},{value:"l",label:"抖机灵"}],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 ie.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,hitokotoCategories:Array.isArray(e.hitokotoCategories)?e.hitokotoCategories:[]})}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 Xe.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 ie.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 o={};this.kvConfig.jinrishiciToken&&(o["X-User-Token"]=this.kvConfig.jinrishiciToken);const u=await Xe.get("https://v2.jinrishici.com/info?X-User-Token="+encodeURIComponent(this.kvConfig.jinrishiciToken));if(u.data&&u.data.status==="success"){this.testResultData=u.data,this.testResultDialog=!0;const i=(s=u.data.data)==null?void 0:s.token,l=(e=u.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(o){console.error("Failed to test jinrishici info",o),this.testColor="error",this.testMessage="接口测试失败,请检查网络或 Token。"}finally{this.testLoading=!1}}}},bi={class:"d-flex flex-wrap gap-2"},yi={class:"text-caption text-orange mt-2"},ki={class:"d-flex flex-wrap gap-2"},xi={class:"d-flex flex-column flex-sm-row align-center w-100"},Si={key:3,class:"text-center pb-4"},Ci={class:"d-flex align-center mb-2"},Vi={class:"text-body-1 font-weight-medium"},_i={class:"d-flex align-center mb-2"},Di={class:"text-body-1 font-weight-medium"},Ai={class:"d-flex align-center mb-2"},Ii={class:"text-body-1 font-weight-medium"},Ti={class:"d-flex align-center mb-2"},Ui={class:"text-body-2 font-weight-medium"},ji={class:"d-flex align-center mb-2"},Bi={class:"text-body-1 font-weight-medium"},Mi={class:"d-flex align-center mb-2"},Ni={class:"text-body-1 font-weight-medium"},Pi={class:"px-4 py-3"},zi={class:"d-flex flex-wrap gap-2"};function Ei(s,e,o,u,i,l){const d=ve,f=nt;return m(),y("div",null,[t(f,{title:"一言设置",icon:"mdi-comment-quote"},{default:n(()=>[t(d,{"setting-key":"hitokoto.enabled"}),t(d,{"setting-key":"hitokoto.refreshInterval"})]),_:1}),t(f,{title:"数据源配置",icon:"mdi-cloud-sync",class:"mt-4"},{default:n(()=>[e[16]||(e[16]=c("div",{class:"text-caption text-grey px-4 pt-2 pb-2"}," 以下配置将同步到云端,对所有连接此班级的设备生效。 ",-1)),t(D,null,{default:n(()=>[t(z,{class:"mb-2"},{default:n(()=>[...e[8]||(e[8]=[a(" 启用数据源 ",-1)])]),_:1}),c("div",bi,[t(Se,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[0]||(e[0]=r=>i.kvConfig.sources=r),l.saveKvSettings],label:"一言 (Hitokoto)",value:"hitokoto","hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"]),t(Se,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[1]||(e[1]=r=>i.kvConfig.sources=r),l.saveKvSettings],label:"诏预 (Zhaoyu)",value:"zhaoyu","hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"]),t(Se,{modelValue:i.kvConfig.sources,"onUpdate:modelValue":[e[2]||(e[2]=r=>i.kvConfig.sources=r),l.saveKvSettings],label:"今日诗词 (Jinrishici)",value:"jinrishici","hide-details":"",density:"compact",disabled:i.loading},null,8,["modelValue","disabled","onUpdate:modelValue"])]),c("div",yi,[t(g,{size:"x-small",color:"orange",class:"mr-1"},{default:n(()=>[...e[9]||(e[9]=[a(" mdi-alert ",-1)])]),_:1}),e[10]||(e[10]=a(" 一言(Hitokoto)数据源已收到关于存在负面内容的大量反馈,请用户谨慎启用。 ",-1))])]),_:1}),i.kvConfig.sources.includes("hitokoto")?(m(),h(D,{key:0},{default:n(()=>[t(z,{class:"mb-2"},{default:n(()=>[...e[11]||(e[11]=[a(" 一言句子类型 ",-1)])]),_:1}),e[12]||(e[12]=c("div",{class:"text-caption text-grey mb-2"}," 不选则返回所有类型;可多选。 ",-1)),c("div",ki,[(m(!0),y(H,null,te(i.hitokotoCategories,r=>(m(),h(Se,{key:r.value,modelValue:i.kvConfig.hitokotoCategories,"onUpdate:modelValue":[e[3]||(e[3]=w=>i.kvConfig.hitokotoCategories=w),l.saveKvSettings],label:r.label,value:r.value,"hide-details":"",density:"compact",class:"mr-4",disabled:i.loading},null,8,["modelValue","label","value","disabled","onUpdate:modelValue"]))),128))])]),_:1})):b("",!0),i.kvConfig.sources.includes("jinrishici")?(m(),h(D,{key:1},{default:n(()=>[t(N,{modelValue:i.kvConfig.jinrishiciToken,"onUpdate:modelValue":e[4]||(e[4]=r=>i.kvConfig.jinrishiciToken=r),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})):b("",!0),i.kvConfig.sources.includes("jinrishici")?(m(),h(D,{key:2},{default:n(()=>[c("div",xi,[t(p,{loading:i.testLoading,color:"primary",variant:"outlined",class:"mr-sm-4 mb-2 mb-sm-0",onClick:l.testJinrishici},{default:n(()=>[...e[13]||(e[13]=[a(" 测试今日诗词接口 ",-1)])]),_:1},8,["loading","onClick"]),i.testMessage?(m(),h(Y,{key:0,type:i.testColor,density:"comfortable",border:"start",class:"flex-grow-1"},{default:n(()=>[a(v(i.testMessage),1)]),_:1},8,["type"])):b("",!0)])]),_:1})):b("",!0),t(D,null,{default:n(()=>[t(Pe,{modelValue:i.kvConfig.sensitiveWords,"onUpdate:modelValue":e[5]||(e[5]=r=>i.kvConfig.sensitiveWords=r),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(D,null,{default:n(()=>[t(Se,{modelValue:i.enableCloudSensitiveWords,"onUpdate:modelValue":e[6]||(e[6]=r=>i.enableCloudSensitiveWords=r),label:"启用云端敏感词列表","hide-details":"",density:"compact",disabled:"",class:"mb-2"},null,8,["modelValue"]),e[14]||(e[14]=c("div",{class:"text-caption text-grey"},[a(" 已启用的数据源将在获取一言时随机尝试,直到成功获取内容为止。"),c("br"),a(" 敏感词过滤会将包含任意敏感词的句子过滤掉,避免显示不当内容。"),c("br")],-1))]),_:1}),i.loading?(m(),y("div",Si,[t(Jt,{indeterminate:"",size:"24",color:"primary"}),e[15]||(e[15]=c("span",{class:"ml-2 text-caption"},"正在同步配置...",-1))])):b("",!0)]),_:1}),t(we,{modelValue:i.testResultDialog,"onUpdate:modelValue":e[7]||(e[7]=r=>i.testResultDialog=r),"max-width":"600"},{default:n(()=>[i.testResultData?(m(),h(M,{key:0,class:"rounded-lg"},{default:n(()=>[t(j,{class:"pa-0"},{default:n(()=>[t(O,{lines:"two",class:"py-0"},{default:n(()=>[t(D,{class:"px-4 py-3"},{prepend:n(()=>[t(et,{color:"primary",variant:"tonal",class:"mr-2"},{default:n(()=>[t(g,{icon:"mdi-key-variant"})]),_:1})]),default:n(()=>[t(z,{class:"text-subtitle-2 font-weight-bold mb-1"},{default:n(()=>[...e[17]||(e[17]=[a(" Token ",-1)])]),_:1}),t(ne,{class:"text-body-2 text-high-emphasis",style:{"word-break":"break-all"}},{default:n(()=>[a(v(i.testResultData.data.token),1)]),_:1})]),_:1}),t(T),t(de,{"no-gutters":""},{default:n(()=>[t(R,{cols:"6"},{default:n(()=>[t(D,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-ip-network",color:"grey-darken-1",class:"mr-2"})]),default:n(()=>[t(z,{class:"text-caption text-grey-darken-1"},{default:n(()=>[...e[18]||(e[18]=[a(" IP 地址 ",-1)])]),_:1}),t(ne,{class:"text-body-2"},{default:n(()=>[a(v(i.testResultData.data.ip),1)]),_:1})]),_:1})]),_:1}),t(R,{cols:"6"},{default:n(()=>[t(D,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-map-marker-radius",color:"grey-darken-1",class:"mr-2"})]),default:n(()=>[t(z,{class:"text-caption text-grey-darken-1"},{default:n(()=>[...e[19]||(e[19]=[a(" 地区 ",-1)])]),_:1}),t(ne,{class:"text-body-2"},{default:n(()=>[a(v(i.testResultData.data.region),1)]),_:1})]),_:1})]),_:1})]),_:1}),t(T),t(bt,{class:"px-4 py-3"},{default:n(()=>[t(de,{dense:""},{default:n(()=>[t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",Ci,[t(g,{icon:"mdi-thermometer",color:"orange",class:"mr-2"}),c("div",null,[e[20]||(e[20]=c("div",{class:"text-caption text-grey"}," 温度 ",-1)),c("div",Vi,v(i.testResultData.data.weatherData.temperature)+"°C ",1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",_i,[t(g,{icon:"mdi-weather-cloudy",color:"blue-grey",class:"mr-2"}),c("div",null,[e[21]||(e[21]=c("div",{class:"text-caption text-grey"}," 天气 ",-1)),c("div",Di,v(i.testResultData.data.weatherData.weather),1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",Ai,[t(g,{icon:"mdi-water-percent",color:"blue",class:"mr-2"}),c("div",null,[e[22]||(e[22]=c("div",{class:"text-caption text-grey"}," 湿度 ",-1)),c("div",Ii,v(i.testResultData.data.weatherData.humidity)+"% ",1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",Ti,[t(g,{icon:"mdi-weather-windy",color:"teal",class:"mr-2"}),c("div",null,[e[23]||(e[23]=c("div",{class:"text-caption text-grey"}," 风向/风力 ",-1)),c("div",Ui,v(i.testResultData.data.weatherData.windDirection)+" "+v(i.testResultData.data.weatherData.windPower)+"级 ",1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",ji,[t(g,{icon:"mdi-blur",color:"grey",class:"mr-2"}),c("div",null,[e[24]||(e[24]=c("div",{class:"text-caption text-grey"}," PM2.5 ",-1)),c("div",Bi,v(i.testResultData.data.weatherData.pm25),1)])])]),_:1}),t(R,{cols:"6",sm:"4"},{default:n(()=>[c("div",Mi,[t(g,{icon:"mdi-eye",color:"indigo",class:"mr-2"}),c("div",null,[e[25]||(e[25]=c("div",{class:"text-caption text-grey"}," 能见度 ",-1)),c("div",Ni,v(i.testResultData.data.weatherData.visibility),1)])])]),_:1})]),_:1})]),_:1}),t(T),c("div",Pi,[e[26]||(e[26]=c("div",{class:"text-caption text-grey mb-2"}," 环境标签 ",-1)),c("div",zi,[(m(!0),y(H,null,te(i.testResultData.data.tags,r=>(m(),h(G,{key:r,size:"small",color:"primary",variant:"tonal",class:"mr-1 mb-1"},{default:n(()=>[a(v(r),1)]),_:2},1024))),128))])]),t(T),t(D,{class:"px-4 py-2"},{prepend:n(()=>[t(g,{icon:"mdi-clock-outline",size:"small",class:"mr-2"})]),default:n(()=>[t(z,{class:"text-caption text-grey-darken-1"},{default:n(()=>[a(" 北京时间: "+v(new Date(i.testResultData.data.beijingTime).toLocaleString()),1)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})):b("",!0)]),_:1},8,["modelValue"])])}const ln=Q(vi,[["render",Ei]]),Li={name:"NotificationSoundSettings",data(){return{singleSound:"",urgentSound:"",currentAudio:null,showAutoplayWarning:!0}},computed:{soundOptions(){return is.map(s=>({title:s.replace(".mp3",""),value:s}))}},mounted(){this.loadSettings()},beforeUnmount(){this.stopPreview()},methods:{loadSettings(){this.singleSound=k("notification.singleSound"),this.urgentSound=k("notification.urgentSound")},onSingleSoundChange(s){var e;re("notification.singleSound",s),(e=this.$message)==null||e.success("设置已保存",`单次通知铃声: ${s}`)},onUrgentSoundChange(s){var e;re("notification.urgentSound",s),(e=this.$message)==null||e.success("设置已保存",`紧急通知铃声: ${s}`)},async previewSound(s){var e,o;this.showAutoplayWarning=!1,this.stopPreview();try{const u=await this.playSoundWithPromise(s,!1);this.currentAudio=u,this.currentAudio&&this.currentAudio.addEventListener("ended",()=>{this.currentAudio=null},{once:!0})}catch(u){console.error("播放音频失败:",u),u.name==="NotAllowedError"?(e=this.$message)==null||e.warning("无法播放音频","浏览器阻止了自动播放,请再次点击试听按钮"):(o=this.$message)==null||o.error("播放失败","音频文件加载失败,请稍后重试")}},playSoundWithPromise(s,e=!1){return new Promise((o,u)=>{const i=this.getSoundPath(s);if(!i){u(new Error("音频文件不存在"));return}try{const l=new Audio(i);l.loop=e,l.play().then(()=>{o(l)}).catch(d=>{u(d)})}catch(l){u(l)}})},getSoundPath(s){if(!s)return null;try{return`/sounds/${s}`}catch{return null}},stopPreview(){this.currentAudio&&(ss(this.currentAudio),this.currentAudio=null)},resetSingleSound(){var s;this.singleSound="Teams 默认.mp3",re("notification.singleSound",this.singleSound),(s=this.$message)==null||s.success("已恢复单次通知铃声默认设置")},resetUrgentSound(){var s;this.urgentSound="Teams 默认通话铃.mp3",re("notification.urgentSound",this.urgentSound),(s=this.$message)==null||s.success("已恢复紧急通知铃声默认设置")}}},Ri={class:"d-flex align-center"},Ki={class:"mt-3 d-flex gap-2"},Fi={class:"mt-3 d-flex gap-2"};function Oi(s,e,o,u,i,l){return m(),h(M,{class:"notification-sound-settings"},{default:n(()=>[t(K,null,{default:n(()=>[...e[5]||(e[5]=[a(" 通知铃声设置 ",-1)])]),_:1}),t(j,null,{default:n(()=>[i.showAutoplayWarning?(m(),h(Y,{key:0,type:"info",variant:"tonal",closable:"",class:"mb-4","onClick:close":e[0]||(e[0]=d=>i.showAutoplayWarning=!1)},{default:n(()=>[c("div",Ri,[t(g,{class:"mr-2"},{default:n(()=>[...e[6]||(e[6]=[a(" mdi-information ",-1)])]),_:1}),e[7]||(e[7]=c("span",null,"首次使用请点击试听按钮测试音频播放是否正常",-1))])]),_:1})):b("",!0),t(de,null,{default:n(()=>[t(R,{cols:"12"},{default:n(()=>[t(M,{border:""},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[8]||(e[8]=[a(" mdi-bell-ring ",-1)])]),_:1}),e[9]||(e[9]=a(" 单次通知铃声 ",-1))]),_:1}),t(j,null,{default:n(()=>[t(Ze,{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:f})=>[t(D,Ve(d,{onClick:r=>l.previewSound(f.value)}),{prepend:n(()=>[t(g,null,{default:n(()=>[...e[10]||(e[10]=[a("mdi-music-note",-1)])]),_:1})]),append:n(()=>[t(p,{icon:"",size:"small",variant:"text",onClick:Ae(r=>l.previewSound(f.value),["stop"])},{default:n(()=>[t(g,null,{default:n(()=>[...e[11]||(e[11]=[a("mdi-play",-1)])]),_:1})]),_:1},8,["onClick"])]),_:2},1040,["onClick"])]),_:1},8,["modelValue","items","onUpdate:modelValue"]),c("div",Ki,[t(p,{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]=[a(" mdi-play ",-1)])]),_:1}),e[13]||(e[13]=a(" 试听 ",-1))]),_:1}),t(p,{onClick:l.resetSingleSound},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[14]||(e[14]=[a(" mdi-restore ",-1)])]),_:1}),e[15]||(e[15]=a(" 恢复 ",-1))]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1}),t(R,{cols:"12"},{default:n(()=>[t(M,{border:""},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{left:"",color:"error"},{default:n(()=>[...e[16]||(e[16]=[a(" mdi-bell-alert ",-1)])]),_:1}),e[17]||(e[17]=a(" 紧急通知铃声 ",-1))]),_:1}),t(j,null,{default:n(()=>[t(Ze,{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:f})=>[t(D,Ve(d,{onClick:r=>l.previewSound(f.value)}),{prepend:n(()=>[t(g,null,{default:n(()=>[...e[18]||(e[18]=[a("mdi-music-note",-1)])]),_:1})]),append:n(()=>[t(p,{icon:"",size:"small",variant:"text",onClick:Ae(r=>l.previewSound(f.value),["stop"])},{default:n(()=>[t(g,null,{default:n(()=>[...e[19]||(e[19]=[a("mdi-play",-1)])]),_:1})]),_:1},8,["onClick"])]),_:2},1040,["onClick"])]),_:1},8,["modelValue","items","onUpdate:modelValue"]),c("div",Fi,[t(p,{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]=[a(" mdi-play ",-1)])]),_:1}),e[21]||(e[21]=a(" 试听 ",-1))]),_:1}),t(p,{onClick:l.resetUrgentSound},{default:n(()=>[t(g,{left:""},{default:n(()=>[...e[22]||(e[22]=[a(" mdi-restore ",-1)])]),_:1}),e[23]||(e[23]=a(" 恢复 ",-1))]),_:1},8,["onClick"])])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})}const on=Q(Li,[["render",Oi],["__scopeId","data-v-632dcdba"]]),Lt={sessions:[{name:"第1节晚自习",start:"19:20",duration:70,enabled:!0},{name:"第2节晚自习",start:"20:20",duration:110,enabled:!0}],alertThresholdDb:55},Ji={name:"NoiseSettingsCard",components:{SettingsCard:W,SettingItem:ve},data(){return{sessionLoading:!0,sessionSaving:!1,editSessions:[],editAlertThreshold:55,timePickerMenus:{}}},mounted(){this.loadSessionConfig()},methods:{async loadSessionConfig(){this.sessionLoading=!0;try{const s=await ie.loadData("noise-session-config"),e=(s==null?void 0:s.data)||s;e&&e.sessions?(this.editSessions=JSON.parse(JSON.stringify(e.sessions)),this.editAlertThreshold=e.alertThresholdDb||55):this.resetSessionConfig()}catch{this.resetSessionConfig()}finally{this.sessionLoading=!1}},async saveSessionConfig(){this.sessionSaving=!0;try{const s={sessions:this.editSessions,alertThresholdDb:this.editAlertThreshold};await ie.saveData("noise-session-config",s)}catch(s){console.error("保存自习配置失败:",s)}finally{this.sessionSaving=!1}},resetSessionConfig(){this.editSessions=JSON.parse(JSON.stringify(Lt.sessions)),this.editAlertThreshold=Lt.alertThresholdDb},addSession(){this.editSessions.push({name:`第${this.editSessions.length+1}节晚自习`,start:"19:00",duration:70,enabled:!0})},sessionEndTime(s){if(!(s!=null&&s.start)||!(s!=null&&s.duration))return"--:--";const[e,o]=s.start.split(":").map(Number),u=e*60+o+(s.duration||0),i=Math.floor(u/60)%24,l=u%60;return`${String(i).padStart(2,"0")}:${String(l).padStart(2,"0")}`}}},Hi={class:"px-4 pb-4"},Qi={class:"d-flex align-center mb-4"},Gi={class:"d-flex align-center ga-3 flex-wrap"},Wi={class:"text-caption text-medium-emphasis"},Yi={key:0,class:"text-center text-medium-emphasis py-4"},qi={class:"d-flex align-center mb-4"},Zi={class:"d-flex align-center flex-wrap ga-4 mb-4"},Xi={class:"d-flex justify-end ga-3 mb-2"};function $i(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{border:"",icon:"mdi-microphone",title:"噪音监测"},{default:n(()=>[t(O,null,{default:n(()=>[t(d,{"setting-key":"noiseMonitor.enabled"}),t(T,{class:"my-2"}),t(d,{"setting-key":"noiseMonitor.autoStart"}),t(T,{class:"my-2"}),t(d,{"setting-key":"noiseMonitor.permissionDismissed"})]),_:1}),t(T,{class:"mb-4"}),c("div",Hi,[c("div",Qi,[t(g,{class:"mr-2",color:"teal"},{default:n(()=>[...e[1]||(e[1]=[a(" mdi-clock-edit-outline ",-1)])]),_:1}),e[3]||(e[3]=c("span",{class:"text-subtitle-1 font-weight-bold"},"晚自习时间段",-1)),t(Z),t(p,{color:"primary",variant:"tonal",size:"small","prepend-icon":"mdi-plus",onClick:l.addSession},{default:n(()=>[...e[2]||(e[2]=[a(" 添加时段 ",-1)])]),_:1},8,["onClick"])]),e[10]||(e[10]=c("div",{class:"text-caption text-medium-emphasis mb-4"}," 配置晚自习时间段后,系统会在对应时段内自动开启噪音监测并记录统计报告。时间段外不会长期记录。 ",-1)),i.sessionLoading?(m(),h(ls,{key:0,type:"card",class:"mb-4"})):(m(),y(H,{key:1},[(m(!0),y(H,null,te(i.editSessions,(r,w)=>(m(),y("div",{key:w,class:"mb-3"},[t(M,{variant:"outlined",rounded:"xl"},{default:n(()=>[t(j,{class:"pa-4"},{default:n(()=>[c("div",Gi,[t(N,{modelValue:r.name,"onUpdate:modelValue":x=>r.name=x,density:"compact",variant:"outlined",label:"名称","hide-details":"",style:{"max-width":"160px"}},null,8,["modelValue","onUpdate:modelValue"]),t(gt,{modelValue:i.timePickerMenus[w],"onUpdate:modelValue":x=>i.timePickerMenus[w]=x,"close-on-content-click":!1,location:"bottom"},{activator:n(({props:x})=>[t(N,Ve({ref_for:!0},x,{"model-value":r.start,density:"compact",variant:"outlined",label:"开始时间",readonly:"","hide-details":"","prepend-inner-icon":"mdi-clock-outline",style:{"max-width":"170px"}}),null,16,["model-value"])]),default:n(()=>[t(os,{modelValue:r.start,"onUpdate:modelValue":[x=>r.start=x,x=>i.timePickerMenus[w]=!1],color:"primary",format:"24hr",scrollable:""},null,8,["modelValue","onUpdate:modelValue"])]),_:2},1032,["modelValue","onUpdate:modelValue"]),t(N,{modelValue:r.duration,"onUpdate:modelValue":x=>r.duration=x,modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"时长",suffix:"分钟","hide-details":"",style:{"max-width":"130px"},min:10,max:300},null,8,["modelValue","onUpdate:modelValue"]),c("span",Wi," 至 "+v(l.sessionEndTime(r)),1),t(ht,{modelValue:r.enabled,"onUpdate:modelValue":x=>r.enabled=x,density:"compact",color:"primary","hide-details":"",label:"启用"},null,8,["modelValue","onUpdate:modelValue"]),t(p,{icon:"mdi-delete",color:"error",size:"x-small",variant:"text",onClick:x=>i.editSessions.splice(w,1)},null,8,["onClick"])])]),_:2},1024)]),_:2},1024)]))),128)),i.editSessions.length===0?(m(),y("div",Yi,[t(g,{class:"mb-1"},{default:n(()=>[...e[4]||(e[4]=[a(" mdi-clock-outline ",-1)])]),_:1}),e[5]||(e[5]=c("div",{class:"text-caption"}," 暂无时间段,点击上方「添加时段」创建 ",-1))])):b("",!0)],64)),t(T,{class:"my-5"}),c("div",qi,[t(g,{class:"mr-2",color:"orange"},{default:n(()=>[...e[6]||(e[6]=[a(" mdi-alert-decagram ",-1)])]),_:1}),e[7]||(e[7]=c("span",{class:"text-subtitle-1 font-weight-bold"},"监测参数",-1))]),c("div",Zi,[t(N,{modelValue:i.editAlertThreshold,"onUpdate:modelValue":e[0]||(e[0]=r=>i.editAlertThreshold=r),modelModifiers:{number:!0},density:"compact",variant:"outlined",type:"number",label:"噪音报警阈值",suffix:"dB","hide-details":"",style:{"max-width":"200px"},min:30,max:90},null,8,["modelValue"])]),c("div",Xi,[t(p,{variant:"text","prepend-icon":"mdi-restore",onClick:l.resetSessionConfig},{default:n(()=>[...e[8]||(e[8]=[a(" 重置 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"primary",variant:"elevated","prepend-icon":"mdi-content-save",loading:i.sessionSaving,onClick:l.saveSessionConfig},{default:n(()=>[...e[9]||(e[9]=[a(" 保存配置 ",-1)])]),_:1},8,["loading","onClick"])])])]),_:1})}const an=Q(Ji,[["render",$i]]),el={name:"DisplaySettingsCard",components:{SettingsCard:W,SettingItem:ve},setup(){return{theme:Xn()}},data(){return{localTheme:k("theme.mode")}},watch:{localTheme(s){re("theme.mode",s),this.theme.global.name.value=s}}};function tl(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{border:"",icon:"mdi-monitor",title:"显示设置"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-theme-light-dark"})]),append:n(()=>[t(Ot,{modelValue:i.localTheme,"onUpdate:modelValue":e[0]||(e[0]=r=>i.localTheme=r),color:"primary",density:"comfortable"},{default:n(()=>[t(p,{value:"light"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-white-balance-sunny"}),e[3]||(e[3]=a(" 明亮 ",-1))]),_:1}),t(p,{value:"dark"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-moon-waning-crescent"}),e[4]||(e[4]=a(" 暗黑 ",-1))]),_:1})]),_:1},8,["modelValue"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[1]||(e[1]=[a("主题模式",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[2]||(e[2]=[a("选择明亮或暗黑主题",-1)])]),_:1})]),_:1}),t(T,{class:"my-2"}),t(d,{"setting-key":"timeCard.enabled"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.emptySubjectDisplay"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.dynamicSort"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.showRandomButton"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.showFullscreenButton"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.cardHoverEffect"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.enhancedTouchMode"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.showQuickTools"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.showAntiScreenBurnCard"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.showExamScheduleButton"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.showUafTransfer"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.forceDesktopMode"}),t(T,{class:"my-2"}),t(d,{"setting-key":"display.lateStudentsArePresent"})]),_:1})]),_:1})}const rn=Q(el,[["render",tl]]),nl={};function sl(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{icon:"mdi-cog",title:"编辑设置"},{default:n(()=>[t(O,null,{default:n(()=>[t(d,{"setting-key":"edit.autoSave"}),t(T,{class:"my-2"}),t(d,{"setting-key":"edit.blockNonTodayAutoSave"}),t(T,{class:"my-2"}),t(d,{"setting-key":"edit.confirmNonTodaySave"}),t(T,{class:"my-2"}),t(d,{"setting-key":"edit.refreshBeforeEdit"}),t(T,{class:"my-2"}),t(d,{"setting-key":"edit.autoSavePromptText"}),t(T,{class:"my-2"}),t(d,{"setting-key":"edit.manualSavePromptText"})]),_:1})]),_:1})}const un=Q(nl,[["render",sl]]),il={name:"RefreshSettingsCard",components:{SettingsCard:W},data(){return{}}};function ll(s,e,o,u,i,l){const d=ve,f=W;return m(),h(f,{icon:"mdi-refresh-circle",title:"刷新设置"},{default:n(()=>[t(Yt,null,{default:n(()=>[t(O,null,{default:n(()=>[t(d,{"setting-key":"refresh.auto",title:"自动刷新"}),t(T,{class:"my-2"}),t(d,{"setting-key":"refresh.interval",title:"刷新间隔"})]),_:1})]),_:1})]),_:1})}const dn=Q(il,[["render",ll]]),ol={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=Re(),e=[];for(const[o,u]of Object.entries(ut)){if(u.requireDeveloper&&!s["developer.enabled"])continue;const i=s[o]!==u.default;e.push({key:o,description:u.description||o,value:s[o],icon:u.icon||"mdi-cog",isChanged:i,defaultValue:u.default})}return e.sort((o,u)=>o.key.localeCompare(u.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 o=e.description.toLowerCase(),u=e.key.toLowerCase(),i=String(e.value).toLowerCase(),l=e.isChanged?"已修改":"默认";return o.includes(s)||u.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=Re();return this.selectedItems.some(e=>{const o=ut[e];return o&&s[e]!==o.default})}},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()}}},methods:{handleSelectionChange(s){this.selectedItems=s.map(e=>e.key),this.generateLink()},generateLink(){const s=`${window.location.protocol}//${window.location.host}/`,e=Re(),o={};for(const u of this.selectedItems)o[u]=e[u];if(Object.keys(o).length===0){this.generatedLink=s;return}try{const u=JSON.stringify(o),l=new TextEncoder().encode(u),f={config:btoa(Array.from(l).map(I=>String.fromCharCode(I)).join(""))},w=new URLSearchParams(window.location.search).get("date");w&&(f.date=w);const x=new URLSearchParams(f).toString();this.generatedLink=`${s}?${x}`}catch(u){console.error("生成链接失败:",u),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(o=>o.key.startsWith(`${s}.`)).map(o=>o.key);this.selectedItems=e},autoGenerateLink(){this.selectedItems.length>0?this.generateLink():this.generatedLink=""},getSettingDescription(s){const e=this.settingItems.find(o=>o.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 o=Re(),u={};for(const r of this.selectedItems)u[r]=o[r];const i=JSON.stringify(u),d=new TextEncoder().encode(i),f=btoa(Array.from(d).map(r=>String.fromCharCode(r)).join(""));e.append("config",f)}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}}},al={class:"d-flex mb-3 gap-2 flex-wrap"},rl={class:"d-flex align-center mb-3 flex-wrap gap-2"},ul={class:"d-flex align-center"},dl={class:"d-flex align-center"},cl={key:0},ml={key:1},fl={key:2},pl={class:"text-caption text-grey"},hl={class:"d-flex mb-3 gap-2 flex-wrap"},gl={class:"d-flex flex-wrap gap-1"};function wl(s,e,o,u,i,l){return m(),y("div",null,[t(M,{border:"",class:"unified-link-generator"},{default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-link-variant",start:""}),e[6]||(e[6]=a(" 统一链接生成器 ",-1))]),_:1}),t(j,null,{default:n(()=>[e[35]||(e[35]=c("div",{class:"text-body-2 text-medium-emphasis mb-4"}," 生成包含预配置认证信息和设置的统一链接。可以同时预配置设备认证和应用设置。 ",-1)),t(M,{class:"mb-4",variant:"tonal"},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[7]||(e[7]=[a(" mdi-account-key ",-1)])]),_:1}),e[8]||(e[8]=a(" 预配置认证信息 ",-1))]),_:1}),t(j,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{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(R,{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(de,{class:"mt-2"},{default:n(()=>[t(R,{cols:"12"},{default:n(()=>[t(Se,{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?(m(),h(Y,{key:0,class:"mt-3",type:"info",variant:"tonal"},{default:n(()=>[e[13]||(e[13]=c("div",{class:"text-subtitle-2 mb-2"}," 预配置信息: ",-1)),t(G,{class:"mr-2 mb-1",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[9]||(e[9]=[a(" mdi-identifier ",-1)])]),_:1}),a(" 命名空间: "+v(i.preconfigForm.namespace),1)]),_:1}),i.preconfigForm.authCode?(m(),h(G,{key:0,class:"mr-2 mb-1",color:"warning",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[10]||(e[10]=[a(" mdi-lock ",-1)])]),_:1}),a(" 认证码: "+v(i.preconfigForm.authCode.length>8?i.preconfigForm.authCode.substring(0,8)+"...":i.preconfigForm.authCode),1)]),_:1})):(m(),h(G,{key:1,class:"mr-2 mb-1",color:"grey",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[11]||(e[11]=[a(" mdi-lock-open ",-1)])]),_:1}),e[12]||(e[12]=a(" 无认证码 ",-1))]),_:1})),t(G,{color:i.preconfigForm.autoExecute?"success":"orange",class:"mr-2 mb-1",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[a(v(i.preconfigForm.autoExecute?"mdi-play-circle":"mdi-hand-back-left"),1)]),_:1}),a(" "+v(i.preconfigForm.autoExecute?"自动认证":"手动认证"),1)]),_:1},8,["color"])]),_:1})):b("",!0)]),_:1})]),_:1}),t(M,{class:"mb-4",variant:"tonal"},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[14]||(e[14]=[a(" mdi-cog-transfer ",-1)])]),_:1}),e[15]||(e[15]=a(" 设置分享(可选) ",-1))]),_:1}),t(j,null,{default:n(()=>[e[22]||(e[22]=c("div",{class:"text-body-2 text-medium-emphasis mb-3"}," 选择需要包含在链接中的设置项。如果不选择任何设置,将只生成预配置认证链接。 ",-1)),c("div",al,[t(p,{color:"primary","prepend-icon":"mdi-server-network",size:"small",variant:"tonal",onClick:l.selectDataSourceSettings},{default:n(()=>[...e[16]||(e[16]=[a(" 数据源设置 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"primary","prepend-icon":"mdi-compare",size:"small",variant:"tonal",onClick:l.selectChangedSettings},{default:n(()=>[...e[17]||(e[17]=[a(" 已变更设置 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"success","prepend-icon":"mdi-select-all",size:"small",variant:"tonal",onClick:l.selectAll},{default:n(()=>[...e[18]||(e[18]=[a(" 全选 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"error","prepend-icon":"mdi-select-remove",size:"small",variant:"tonal",onClick:l.resetSelection},{default:n(()=>[...e[19]||(e[19]=[a(" 清除选择 ",-1)])]),_:1},8,["onClick"])]),c("div",rl,[t(G,{class:"mr-2",color:"primary"},{default:n(()=>[a(" 已选 "+v(i.selectedItems.length)+" 项设置 ",1)]),_:1}),i.selectedItems.length>0?(m(),y(H,{key:0},[(m(!0),y(H,null,te(i.selectedItems.slice(0,3),d=>(m(),h(G,{key:d,class:"mr-1",size:"small",variant:"text"},{default:n(()=>[a(v(l.getSettingDescription(d)),1)]),_:2},1024))),128)),i.selectedItems.length>3?(m(),h(G,{key:0,color:"grey",size:"small",variant:"text"},{default:n(()=>[a(" +"+v(i.selectedItems.length-3)+" 更多 ",1)]),_:1})):b("",!0)],64)):b("",!0)]),t(yt,{variant:"accordion"},{default:n(()=>[t(kt,null,{default:n(()=>[t(qt,null,{default:n(({expanded:d})=>[c("div",ul,[t(g,{class:"mr-2"},{default:n(()=>[a(v(d?"mdi-chevron-up":"mdi-chevron-down"),1)]),_:2},1024),e[20]||(e[20]=a(" 显示设置列表详情 ",-1))])]),_:1}),t(xt,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(Zt,{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})=>[c("div",dl,[t(g,{icon:d.icon,class:"mr-2",size:"small"},null,8,["icon"]),a(" "+v(d.description)+" ",1),d.key==="server.kvToken"?(m(),h(G,{key:0,class:"ml-2",color:"error",size:"x-small"},{default:n(()=>[...e[21]||(e[21]=[a(" 敏感 ",-1)])]),_:1})):b("",!0)])]),"item.value":n(({item:d})=>[typeof d.value=="boolean"?(m(),y("span",cl,v(d.value?"是":"否"),1)):d.key==="server.kvToken"&&d.value?(m(),y("span",ml,v(d.value.substring(0,8))+"... ",1)):(m(),y("span",fl,v(d.value),1))]),"item.key":n(({item:d})=>[c("span",pl,v(d.key),1)]),"item.isChanged":n(({item:d})=>[t(G,{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(M,{class:"mb-4",variant:"outlined"},{default:n(()=>[t(K,{class:"text-subtitle-1"},{default:n(()=>[t(g,{start:""},{default:n(()=>[...e[23]||(e[23]=[a(" mdi-link ",-1)])]),_:1}),e[24]||(e[24]=a(" 生成的统一链接 ",-1))]),_:1}),t(j,null,{default:n(()=>[c("div",hl,[t(p,{disabled:!i.preconfigForm.namespace.trim(),color:"primary","prepend-icon":"mdi-auto-fix",variant:"flat",onClick:l.generateUnifiedLink},{default:n(()=>[...e[25]||(e[25]=[a(" 生成统一链接 ",-1)])]),_:1},8,["disabled","onClick"]),t(p,{disabled:!i.unifiedLink,color:"success","prepend-icon":"mdi-test-tube",variant:"tonal",onClick:l.openTestLink},{default:n(()=>[...e[26]||(e[26]=[a(" 测试链接 ",-1)])]),_:1},8,["disabled","onClick"]),t(p,{color:"error","prepend-icon":"mdi-delete",variant:"tonal",onClick:l.clearAll},{default:n(()=>[...e[27]||(e[27]=[a(" 清空所有 ",-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?(m(),h(Y,{key:0,class:"mb-3",type:"success",variant:"tonal"},{default:n(()=>[e[33]||(e[33]=c("div",{class:"text-subtitle-2 mb-2"}," 链接包含内容: ",-1)),c("div",gl,[t(G,{color:"primary",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[28]||(e[28]=[a(" mdi-account-key ",-1)])]),_:1}),e[29]||(e[29]=a(" 预配置认证 ",-1))]),_:1}),i.selectedItems.length>0?(m(),h(G,{key:0,color:"secondary",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[30]||(e[30]=[a(" mdi-cog ",-1)])]),_:1}),a(" "+v(i.selectedItems.length)+" 项设置 ",1)]),_:1})):(m(),h(G,{key:1,color:"grey",size:"small"},{default:n(()=>[t(g,{size:"small",start:""},{default:n(()=>[...e[31]||(e[31]=[a(" mdi-cog-off ",-1)])]),_:1}),e[32]||(e[32]=a(" 无额外设置 ",-1))]),_:1}))])]),_:1})):b("",!0)]),_:1})]),_:1}),t(Y,{type:"warning",variant:"tonal"},{default:n(()=>[...e[34]||(e[34]=[c("div",{class:"text-subtitle-2 mb-2"}," ⚠️ 安全提醒 ",-1),c("ul",{class:"text-body-2 pl-4"},[c("li",null,"认证码和设置信息会在URL中传输,请谨慎分发"),c("li",null,"建议仅在受信任的网络环境中使用"),c("li",null,"生产环境建议使用HTTPS协议"),c("li",null,"数据源设置和已变更设置默认不包含敏感Token信息")],-1)])]),_:1})]),_:1})]),_:1})])}const cn=Q(ol,[["render",wl]]),vl={name:"UnsavedWarning",props:{show:Boolean,message:{type:String,default:"未保存"}}},bl={class:"warning-container"};function yl(s,e,o,u,i,l){return m(),y("div",bl,[o.show?(m(),h(G,{key:0,class:"warning-chip",color:"warning",size:"small"},{default:n(()=>[a(v(o.message),1)]),_:1})):b("",!0)])}const st=Q(vl,[["render",yl],["__scopeId","data-v-0f36b655"]]),kl=Fe({disabled:Boolean,modelValue:{type:Boolean,default:null},...Bn()},"VHover"),mn=tt()({name:"VHover",props:kl(),emits:{"update:modelValue":s=>!0},setup(s,e){let{slots:o}=e;const u=Wt(s,"modelValue"),{runOpenDelay:i,runCloseDelay:l}=jn(s,d=>!s.disabled&&(u.value=d));return()=>{var d;return(d=o.default)==null?void 0:d.call(o,{isHovering:u.value,props:{onMouseenter:i,onMouseleave:l}})}}}),xl={name:"TeacherListCard",components:{UnsavedWarning:st},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,!k("server.classNumber"))throw new Error("请先设置班号");try{const o=await ie.loadData("classworks-list-teacher");o.success!==!1&&Array.isArray(o)&&(this.modelValue.list=o.map(u=>({name:u.name||"",subjects:Array.isArray(u.subjects)?u.subjects:[],isHeadTeacher:!!u.isHeadTeacher})),this.modelValue.text=JSON.stringify(this.modelValue.list,null,2),this.lastSavedData=JSON.parse(JSON.stringify(this.modelValue.list)),this.unsavedChanges=!1)}catch(o){console.warn("Failed to load teacher list, initializing empty list",o),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,o;try{if(!k("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 ie.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(u){console.error("保存教师列表失败:",u),(o=this.$message)==null||o.error("保存失败",u.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(o=>({name:o.name||"",subjects:Array.isArray(o.subjects)?o.subjects:[],isHeadTeacher:!!o.isHeadTeacher})),this.error=null):this.error="JSON 必须是一个数组"}catch(e){this.error="JSON 格式错误: "+e.message}},addTeacher(){var e,o;const s=this.newTeacher.name.trim();if(!s){(e=this.$message)==null||e.warning("提示","请输入教师姓名");return}if(this.newTeacher.subjects.length===0){(o=this.$message)==null||o.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 o=this.editState.teacher.name.trim();if(!o){(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:o,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)}}},Sl={key:0},Cl={class:"d-flex align-start mb-3"},Vl={class:"flex-grow-1"},_l={class:"d-flex align-center mb-1"},Dl=["onClick"],Al={key:0,class:"mt-2"},Il={key:1,class:"mt-1"},Tl={key:1,class:"pt-2"};function Ul(s,e,o,u,i,l){const d=st;return m(),h(M,{class:pe({"unsaved-changes":i.unsavedChanges}),color:i.unsavedChanges?"warning-subtle":void 0,border:""},{default:n(()=>[t(ze,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(p,{color:i.modelValue.advanced?"primary":void 0,"prepend-icon":"mdi-code-braces",variant:"text",onClick:l.toggleAdvanced},{default:n(()=>[a(v(i.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[...e[4]||(e[4]=[a(" 教师列表 ",-1)])]),_:1})]),_:1}),t(j,null,{default:n(()=>[i.loading?(m(),h($e,{key:0,class:"mb-4",color:"primary",indeterminate:""})):b("",!0),i.error?(m(),h(Y,{key:1,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.error),1)]),_:1})):b("",!0),t(Ht,null,{default:n(()=>[i.modelValue.advanced?(m(),y("div",Tl,[t(Pe,{modelValue:i.modelValue.text,"onUpdate:modelValue":[e[3]||(e[3]=f=>i.modelValue.text=f),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"])])):(m(),y("div",Sl,[t(M,{class:"mb-6",variant:"outlined"},{default:n(()=>[t(j,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{cols:"12",md:"4"},{default:n(()=>[t(N,{modelValue:i.newTeacher.name,"onUpdate:modelValue":e[0]||(e[0]=f=>i.newTeacher.name=f),density:"comfortable","hide-details":"",label:"教师姓名",placeholder:"输入教师姓名","prepend-inner-icon":"mdi-account",variant:"outlined"},null,8,["modelValue"])]),_:1}),t(R,{cols:"12",md:"5"},{default:n(()=>[t(Ut,{modelValue:i.newTeacher.subjects,"onUpdate:modelValue":e[1]||(e[1]=f=>i.newTeacher.subjects=f),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(R,{cols:"12",md:"3",class:"d-flex align-center gap-2"},{default:n(()=>[t(Se,{modelValue:i.newTeacher.isHeadTeacher,"onUpdate:modelValue":e[2]||(e[2]=f=>i.newTeacher.isHeadTeacher=f),density:"comfortable","hide-details":"",label:"班主任"},null,8,["modelValue"]),t(p,{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]=[a(" 添加教师 ",-1)])]),_:1},8,["disabled","onClick"])]),_:1})]),_:1})]),_:1})]),_:1}),i.modelValue.list.length===0?(m(),h(de,{key:0},{default:n(()=>[t(R,{cols:"12"},{default:n(()=>[t(Y,{type:"info",variant:"tonal"},{default:n(()=>[...e[6]||(e[6]=[a(" 暂无教师信息,请添加教师 ",-1)])]),_:1})]),_:1})]),_:1})):(m(),h(de,{key:1},{default:n(()=>[(m(!0),y(H,null,te(i.modelValue.list,(f,r)=>(m(),h(R,{key:r,cols:"12",lg:"6",xl:"4"},{default:n(()=>[t(mn,null,{default:n(({isHovering:w,props:x})=>[t(M,Ve({elevation:o.isMobile?1:w?4:1,border:"",class:"teacher-card"},{ref_for:!0},x),{default:n(()=>[t(j,{class:"pa-4"},{default:n(()=>[c("div",Cl,[t(et,{color:f.isHeadTeacher?"primary":"grey-lighten-1",class:"mr-3",size:"48"},{default:n(()=>[t(g,{icon:f.isHeadTeacher?"mdi-star":"mdi-account",size:"28"},null,8,["icon"])]),_:2},1032,["color"]),c("div",Vl,[c("div",_l,[i.editState.index===r?(m(),h(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"])):(m(),y("span",{key:1,class:"text-h6 font-weight-medium",onClick:I=>l.handleClick(r,f)},v(f.name),9,Dl)),f.isHeadTeacher?(m(),h(G,{key:2,class:"ml-2",color:"primary",density:"comfortable",size:"small",variant:"flat"},{default:n(()=>[...e[7]||(e[7]=[a(" 班主任 ",-1)])]),_:1})):b("",!0)]),i.editState.index===r?(m(),y("div",Al,[t(Ut,{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(Se,{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"])])):(m(),y("div",Il,[(m(!0),y(H,null,te(f.subjects,(I,F)=>(m(),h(G,{key:F,class:"mr-1 mb-1",density:"comfortable",size:"small",variant:"tonal"},{default:n(()=>[a(v(I),1)]),_:2},1024))),128))]))]),c("div",{class:pe([{"opacity-100":w||o.isMobile||i.editState.index===r},"d-flex gap-1 action-buttons ml-2"])},[i.editState.index===r?(m(),h(p,{key:0,color:"success",icon:"mdi-check",size:"small",variant:"text",onClick:l.saveEdit},null,8,["onClick"])):b("",!0),i.editState.index===r?(m(),h(p,{key:1,color:"grey",icon:"mdi-close",size:"small",variant:"text",onClick:l.cancelEdit},null,8,["onClick"])):(m(),h(p,{key:2,color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:I=>l.startEdit(r,f)},null,8,["onClick"])),i.editState.index!==r?(m(),h(p,{key:3,color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:I=>l.removeTeacher(r)},null,8,["onClick"])):b("",!0)],2)])]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1}))]))]),_:1}),t(de,{class:"mt-6"},{default:n(()=>[t(R,{class:"d-flex gap-2",cols:"12"},{default:n(()=>[t(p,{disabled:i.loading,loading:i.loading,color:"primary","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveTeachers},{default:n(()=>[...e[8]||(e[8]=[a(" 保存教师列表 ",-1)])]),_:1},8,["disabled","loading","onClick"]),t(p,{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]=[a(" 重载教师列表 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["class","color"])}const fn=Q(xl,[["render",Ul],["__scopeId","data-v-96a84acd"]]);let rt=null;async function jl(){return rt||(rt=(await Ft(async()=>{const{pinyin:s}=await import("./index-DdToQrR8.js");return{pinyin:s}},[],import.meta.url)).pinyin),rt}const Bl={name:"StudentListCard",components:{UnsavedWarning:st},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,o)=>e.id-o.id).map(e=>e.name).join(` +`))},deep:!0}},mounted(){this.loadStudents()},methods:{async loadStudents(){var s;this.error=null;try{if(this.loading=!0,!k("server.classNumber"))throw new Error("请先设置班号");try{const o=await ie.loadData("classworks-list-main");o.success!=!1&&Array.isArray(o)&&(this.modelValue.list=o.map((u,i)=>typeof u=="string"?{id:i+1,name:u}:{id:u.id||i+1,name:u.name||u.toString()}),this.modelValue.list.sort((u,i)=>u.id-i.id),this.modelValue.text=this.modelValue.list.map(u=>u.name).join(` +`),this.lastSavedData=JSON.parse(JSON.stringify(this.modelValue.list)),this.unsavedChanges=!1)}catch(o){console.warn("Failed to load student list from dedicated key, falling back to config",o)}}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,o;try{if(!k("server.classNumber"))throw new Error("请先设置班号");const i=this.modelValue.list.slice().sort((d,f)=>d.id-f.id).map((d,f)=>({id:f+1,name:d.name})),l=await ie.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(u){console.error("保存学生列表失败:",u),(o=this.$message)==null||o.error("保存失败",u.message||"请重试")}},toggleAdvanced(){this.modelValue.advanced=!this.modelValue.advanced},handleTextInput(s){if(!this.modelValue.advanced)return;const e=s.split(` +`).filter(l=>l.trim()),o=new Map(this.modelValue.list.map(l=>[l.name,l.id]));let u=Math.max(0,...this.modelValue.list.map(l=>l.id));const i=e.map(l=>(l=l.trim(),o.has(l)?{id:o.get(l),name:l}:{id:++u,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(o=>o.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 o=this.modelValue.list[s];this.modelValue.list.splice(s,1),this.modelValue.list.unshift(o),this.modelValue.list.forEach((u,i)=>u.id=i+1)}}else{const o=e==="up"?s-1:s+1;o>=0&&o{const i=s(o.name,{toneType:"none"}),l=s(u.name,{toneType:"none"});return i.localeCompare(l)});e.forEach((o,u)=>o.id=u+1),this.modelValue.list=e}}},Ml={key:0},Nl=["onClick"],Pl={key:1,class:"pt-2"};function zl(s,e,o,u,i,l){const d=st;return m(),h(M,{class:pe({"unsaved-changes":i.unsavedChanges}),color:i.unsavedChanges?"warning-subtle":void 0,border:""},{default:n(()=>[t(ze,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(p,{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]=[a(" 按姓名首字母排序 ",-1)])]),_:1},8,["disabled","onClick"]),t(p,{color:i.modelValue.advanced?"primary":void 0,"prepend-icon":"mdi-code-braces",variant:"text",onClick:l.toggleAdvanced},{default:n(()=>[a(v(i.modelValue.advanced?"返回基础编辑":"高级编辑"),1)]),_:1},8,["color","onClick"])]),default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[...e[3]||(e[3]=[a(" 学生列表 ",-1)])]),_:1})]),_:1}),t(j,null,{default:n(()=>[i.loading?(m(),h($e,{key:0,class:"mb-4",color:"primary",indeterminate:""})):b("",!0),i.error?(m(),h(Y,{key:1,class:"mb-4",closable:"",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.error),1)]),_:1})):b("",!0),t(Ht,null,{default:n(()=>[i.modelValue.advanced?(m(),y("div",Pl,[t(Pe,{modelValue:i.modelValue.text,"onUpdate:modelValue":[e[2]||(e[2]=f=>i.modelValue.text=f),l.handleTextInput],hint:"使用文本编辑模式批量编辑学生名单,保存时会自动去除空行",label:"批量编辑学生列表","persistent-hint":"",placeholder:"每行输入一个学生姓名",rows:"10",variant:"outlined"},null,8,["modelValue","onUpdate:modelValue"])])):(m(),y("div",Ml,[t(de,{class:"mb-6"},{default:n(()=>[t(R,{cols:"12",md:"4",sm:"6"},{default:n(()=>[t(N,{modelValue:i.newStudentName,"onUpdate:modelValue":e[0]||(e[0]=f=>i.newStudentName=f),class:"mb-4","hide-details":"",label:"添加学生",placeholder:"输入学生姓名后回车添加","prepend-inner-icon":"mdi-account-plus",variant:"outlined",onKeyup:_e(l.addStudent,["enter"])},{append:n(()=>[t(p,{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(de,null,{default:n(()=>[(m(!0),y(H,null,te(i.modelValue.list,(f,r)=>(m(),h(R,{key:r,cols:"12",lg:"3",md:"4",sm:"6"},{default:n(()=>[t(mn,null,{default:n(({isHovering:w,props:x})=>[t(M,Ve({elevation:o.isMobile?1:w?4:1,border:"",class:"student-card"},{ref_for:!0},x),{default:n(()=>[t(j,{class:"d-flex align-center pa-3"},{default:n(()=>[t(gt,{"open-on-hover":!o.isMobile,location:"bottom"},{activator:n(({props:I})=>[t(p,Ve({class:"mr-3 font-weight-medium",size:"small"},{ref_for:!0},I,{variant:"tonal"}),{default:n(()=>[a(v(r+1),1)]),_:2},1040)]),default:n(()=>[t(O,{density:"compact",nav:""},{default:n(()=>[t(D,{disabled:r===0,"prepend-icon":"mdi-arrow-up-bold",onClick:I=>l.moveStudent(r,"top")},{default:n(()=>[...e[5]||(e[5]=[a(" 置顶 ",-1)])]),_:1},8,["disabled","onClick"]),t(T),t(D,{disabled:r===0,"prepend-icon":"mdi-arrow-up",onClick:I=>l.moveStudent(r,"up")},{default:n(()=>[...e[6]||(e[6]=[a(" 上移 ",-1)])]),_:1},8,["disabled","onClick"]),t(D,{disabled:r===i.modelValue.list.length-1,"prepend-icon":"mdi-arrow-down",onClick:I=>l.moveStudent(r,"down")},{default:n(()=>[...e[7]||(e[7]=[a(" 下移 ",-1)])]),_:1},8,["disabled","onClick"])]),_:2},1024)]),_:2},1032,["open-on-hover"]),i.editState.index===r?(m(),h(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:_e(l.saveEdit,["enter"])},null,8,["modelValue","onBlur","onKeyup"])):(m(),y("span",{key:1,class:"text-body-1 flex-grow-1",onClick:I=>l.handleClick(r,f)},v(f.name),9,Nl)),c("div",{class:pe([{"opacity-100":w||o.isMobile},"d-flex gap-1 action-buttons"])},[t(p,{color:"primary",icon:"mdi-pencil",size:"small",variant:"text",onClick:I=>l.startEdit(r,f)},null,8,["onClick"]),t(p,{color:"error",icon:"mdi-delete",size:"small",variant:"text",onClick:I=>l.removeStudent(r)},null,8,["onClick"])],2)]),_:2},1024)]),_:2},1040,["elevation"])]),_:2},1024)]),_:2},1024))),128))]),_:1})]))]),_:1}),t(de,{class:"mt-6"},{default:n(()=>[t(R,{class:"d-flex gap-2",cols:"12"},{default:n(()=>[t(p,{disabled:i.loading,loading:i.loading,color:"primary","prepend-icon":"mdi-content-save",size:"large",onClick:l.saveStudents},{default:n(()=>[...e[8]||(e[8]=[a(" 保存名单 ",-1)])]),_:1},8,["disabled","loading","onClick"]),t(p,{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]=[a(" 重载名单 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1})]),_:1},8,["class","color"])}const pn=Q(Bl,[["render",zl],["__scopeId","data-v-a0226a40"]]),El={key:0,class:"d-flex justify-center align-center fill-height"},Ll={key:1,class:"d-flex justify-center align-center fill-height"},Rl={key:2},Kl={class:"text-caption ml-4 text-medium-emphasis"},Fl={key:0},Ol={key:1},Jl={class:"text-error"},hn={__name:"CloudMigrationDialog",props:{modelValue:Boolean},emits:["update:modelValue"],setup(s,{emit:e}){const o=s,u=e,i=se(!1),l=se(!1),d=se(!1),f=se([]),r=se([]),w=se(!1),x=se(null),I=se(null),F=[{id:"student-list",label:"学生列表",description:"classworks-list-main",matcher:C=>C==="classworks-list-main"||C.startsWith("classworks-list-main")},{id:"homework-data",label:"作业数据",description:"classworks-data-*",matcher:C=>C.startsWith("classworks-data-")},{id:"lists",label:"列表",description:"classworks-list-*",matcher:C=>C.startsWith("classworks-list-")},{id:"other",label:"其他",description:"所有其他键",matcher:C=>!C.startsWith("classworks-data-")&&!C.startsWith("classworks-list-")}];ct(()=>o.modelValue,C=>{i.value=C,C&&$()}),ct(i,C=>{u("update:modelValue",C)});const $=async()=>{l.value=!0;try{const C=await Tt.loadKeys({limit:1e3});f.value=C.keys||[],r.value=[]}catch(C){console.error(C)}finally{l.value=!1}},J=C=>f.value.filter(C.matcher),he=C=>J(C).length,ae=C=>{const V=J(C);return V.length===0?!1:V.filter(_=>r.value.includes(_)).length===V.length},ce=C=>{const V=J(C);if(V.length===0)return!1;const U=V.filter(_=>r.value.includes(_)).length;return U>0&&U{const V=J(C);if(V.length===0)return;const U=ae(C),_=new Set(r.value);U?V.forEach(E=>_.delete(E)):V.forEach(E=>_.add(E)),r.value=Array.from(_)},oe=async()=>{var C,V,U;d.value=!0,I.value=null,x.value=null;try{const _={};for(const A of r.value){const X=await Tt.loadData(A);if(X){if(X&&X.success===!1&&X.error){console.warn(`Skipping key ${A} due to load error`,X.error);continue}_[A]=X}}const E=k("server.domain"),q=k("server.kvToken");if(!E||!q)throw new Error("请先配置服务器地址和 Token");const P=E.replace(/\/$/,""),ee=await es.post(`${P}/kv/_batchimport`,_,{headers:{Authorization:`Bearer ${q}`,"Content-Type":"application/json"}});if(ee.data&&ee.data.code===200)x.value=ee.data.data,w.value=!0,i.value=!1;else throw new Error(((C=ee.data)==null?void 0:C.message)||"迁移失败")}catch(_){console.error(_),I.value=((U=(V=_.response)==null?void 0:V.data)==null?void 0:U.message)||_.message||"发生未知错误",w.value=!0}finally{d.value=!1}};return(C,V)=>(m(),y(H,null,[t(we,{modelValue:i.value,"onUpdate:modelValue":V[2]||(V[2]=U=>i.value=U),"max-width":"600",scrollable:""},{default:n(()=>[t(M,null,{default:n(()=>[t(K,null,{default:n(()=>[...V[5]||(V[5]=[a("迁移到云端",-1)])]),_:1}),t(j,{style:{height:"400px"}},{default:n(()=>[l.value?(m(),y("div",El,[t(Jt,{indeterminate:"",color:"primary"})])):f.value.length===0?(m(),y("div",Ll," 没有找到本地数据 ")):(m(),y("div",Rl,[t(O,{"select-strategy":"classic",class:"mb-4"},{default:n(()=>[t(Mn,null,{default:n(()=>[...V[6]||(V[6]=[a("选择数据类型",-1)])]),_:1}),(m(),y(H,null,te(F,U=>t(D,{key:U.id,onClick:_=>le(U)},{prepend:n(()=>[t(jt,{"model-value":ae(U),indeterminate:ce(U),onClick:Ae(_=>le(U),["stop"])},null,8,["model-value","indeterminate","onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[a(v(U.label),1)]),_:2},1024),t(ne,null,{default:n(()=>[a(v(U.description)+" ("+v(he(U))+" 项)",1)]),_:2},1024)]),_:2},1032,["onClick"])),64))]),_:1}),t(T,{class:"mb-4"}),t(yt,null,{default:n(()=>[t(kt,{title:"详细数据列表"},{default:n(()=>[t(xt,null,{default:n(()=>[t(O,{"select-strategy":"classic",density:"compact"},{default:n(()=>[(m(!0),y(H,null,te(f.value,U=>(m(),h(D,{key:U,value:U},{prepend:n(()=>[t(jt,{modelValue:r.value,"onUpdate:modelValue":V[0]||(V[0]=_=>r.value=_),value:U},null,8,["modelValue","value"])]),default:n(()=>[t(z,null,{default:n(()=>[a(v(U),1)]),_:2},1024)]),_:2},1032,["value"]))),128))]),_:1})]),_:1})]),_:1})]),_:1})]))]),_:1}),t(T),t(ue,null,{default:n(()=>[c("div",Kl," 已选择 "+v(r.value.length)+" 项 ",1),t(Z),t(p,{variant:"text",onClick:V[1]||(V[1]=U=>i.value=!1)},{default:n(()=>[...V[7]||(V[7]=[a(" 取消 ",-1)])]),_:1}),t(p,{color:"primary",loading:d.value,disabled:r.value.length===0,onClick:oe},{default:n(()=>[...V[8]||(V[8]=[a(" 开始迁移 ",-1)])]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:w.value,"onUpdate:modelValue":V[4]||(V[4]=U=>w.value=U),"max-width":"500"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,null,{default:n(()=>[...V[9]||(V[9]=[a("迁移结果",-1)])]),_:1}),t(j,null,{default:n(()=>[x.value?(m(),y("div",Fl,[c("p",null,"总计: "+v(x.value.summary.total),1),c("p",null,"成功: "+v(x.value.summary.successful),1),c("p",null,"失败: "+v(x.value.summary.failed),1)])):I.value?(m(),y("div",Ol,[c("p",Jl,v(I.value),1)])):b("",!0)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{color:"primary",onClick:V[3]||(V[3]=U=>w.value=!1)},{default:n(()=>[...V[10]||(V[10]=[a(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"])],64))}},Hl={name:"KvDatabaseCard",components:{SettingsCard:W,CloudMigrationDialog:hn},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 k("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 ie.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(o=>({key:o,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 ie.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),o=this.newKey.trim(),u=await ie.saveData(o,e);if(u&&!u.error)this.kvData.push({key:o,value:e,loaded:!0}),this.$message.success("数据创建成功"),this.closeCreateDialog();else throw new Error(((s=u.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),o=await ie.saveData(this.editingItem.key,e);if(o&&!o.error){const u=this.kvData.findIndex(i=>i.key===this.editingItem.key);u!==-1&&(this.kvData[u].value=e,this.kvData[u].loaded=!0),this.$message.success("数据保存成功"),this.closeEditDialog()}else throw new Error(((s=o.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 ns("ClassworksDB",2)).transaction("kv","readwrite").objectStore("kv").delete(this.itemToDelete.key):await ie.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 ie.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)}}}},Ql={class:"text-primary"},Gl={class:"mt-2"},Wl={key:0,class:"mb-2"},Yl={key:1,class:"mb-2"};function ql(s,e,o,u,i,l){const d=hn,f=W;return m(),h(f,{loading:i.loading,icon:"mdi-database-edit",title:"KV数据库管理"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{prepend:n(()=>[t(g,{color:l.connectionColor,icon:l.connectionIcon,class:"mr-3"},null,8,["color","icon"])]),append:n(()=>[t(p,{loading:i.loading,variant:"tonal",onClick:l.refreshConnection},{default:n(()=>[...e[20]||(e[20]=[a(" 刷新 ",-1)])]),_:1},8,["loading","onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[19]||(e[19]=[a("数据库状态",-1)])]),_:1}),t(ne,null,{default:n(()=>[a(v(l.connectionStatus),1)]),_:1})]),_:1}),t(U,{class:"my-2"}),t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-format-list-bulleted"})]),append:n(()=>[t(_t,{variant:"tonal"},{default:n(()=>[t(p,{loading:i.loadingData,onClick:l.loadKvData},{default:n(()=>[...e[22]||(e[22]=[a(" 加载数据 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{disabled:!l.isKvProvider,onClick:l.createNewItem},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-plus"}),e[23]||(e[23]=a(" 新建 ",-1))]),_:1},8,["disabled","onClick"]),t(p,{onClick:e[0]||(e[0]=r=>i.showMigrationDialog=!0)},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-cloud-upload"}),e[24]||(e[24]=a(" 从本地迁移 ",-1))]),_:1})]),_:1})]),default:n(()=>[t(z,null,{default:n(()=>[...e[21]||(e[21]=[a("数据条目",-1)])]),_:1}),t(ne,null,{default:n(()=>[a("共 "+v(i.kvData.length)+" 条记录",1)]),_:1})]),_:1})]),_:1}),i.kvData.length>0?(m(),h(M,{key:0,class:"mt-4",variant:"outlined"},{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-table"}),e[25]||(e[25]=a(" KV数据列表 ",-1)),t(Z),t(N,{modelValue:i.searchQuery,"onUpdate:modelValue":e[1]||(e[1]=r=>i.searchQuery=r),clearable:"",density:"compact","hide-details":"",label:"搜索键名","prepend-inner-icon":"mdi-magnify",style:{"max-width":"300px"},variant:"outlined"},null,8,["modelValue"])]),_:1}),t(Zt,{headers:i.tableHeaders,items:l.filteredKvData,"items-per-page":10,loading:i.loadingData,class:"elevation-0","item-value":"key"},{"item.key":n(({item:r})=>[c("code",Ql,v(r.key),1)]),"item.actions":n(({item:r})=>[t(_t,{density:"compact",variant:"text"},{default:n(()=>[t(p,{icon:"mdi-eye",size:"small",title:"查看",onClick:w=>l.viewItem(r)},null,8,["onClick"]),t(p,{icon:"mdi-pencil",size:"small",title:"编辑",onClick:w=>l.editItem(r)},null,8,["onClick"]),t(p,{color:"primary",icon:"mdi-cloud-download",size:"small",title:"获取云端地址",onClick:w=>l.getCloudUrl(r)},null,8,["onClick"]),t(p,{color:"error",icon:"mdi-delete",size:"small",title:"删除",onClick:w=>l.confirmDelete(r)},null,8,["onClick"])]),_:2},1024)]),_:2},1032,["headers","items","loading"])]),_:1})):b("",!0),t(we,{modelValue:i.viewDialog,"onUpdate:modelValue":e[5]||(e[5]=r=>i.viewDialog=r),"max-width":"800px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-eye"}),e[26]||(e[26]=a(" 查看数据 ",-1)),t(Z),t(p,{icon:"mdi-close",variant:"text",onClick:e[2]||(e[2]=r=>i.viewDialog=!1)})]),_:1}),i.selectedItem?(m(),h(Ke,{key:0},{default:n(()=>[e[27]||(e[27]=a(" 键名: ",-1)),c("code",null,v(i.selectedItem.key),1)]),_:1})):b("",!0),t(j,null,{default:n(()=>[i.selectedItem?(m(),h(Pe,{key:0,"model-value":l.formatJsonData(i.selectedItem.value),class:"font-monospace",label:"数据内容",readonly:"",rows:"15",variant:"outlined"},null,8,["model-value"])):b("",!0)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"tonal",onClick:e[3]||(e[3]=r=>{var w;return l.copyToClipboard((w=i.selectedItem)==null?void 0:w.value)})},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-content-copy"}),e[28]||(e[28]=a(" 复制数据 ",-1))]),_:1}),t(p,{variant:"text",onClick:e[4]||(e[4]=r=>i.viewDialog=!1)},{default:n(()=>[...e[29]||(e[29]=[a(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:i.editDialog,"onUpdate:modelValue":e[7]||(e[7]=r=>i.editDialog=r),"max-width":"800px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-pencil"}),e[30]||(e[30]=a(" 编辑数据 ",-1)),t(Z),t(p,{icon:"mdi-close",variant:"text",onClick:l.closeEditDialog},null,8,["onClick"])]),_:1}),i.editingItem?(m(),h(Ke,{key:0},{default:n(()=>[e[31]||(e[31]=a(" 键名: ",-1)),c("code",null,v(i.editingItem.key),1)]),_:1})):b("",!0),t(j,null,{default:n(()=>[t(Pe,{modelValue:i.editingData,"onUpdate:modelValue":e[6]||(e[6]=r=>i.editingData=r),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(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:l.closeEditDialog},{default:n(()=>[...e[32]||(e[32]=[a(" 取消 ",-1)])]),_:1},8,["onClick"]),t(p,{disabled:!l.isValidJson,loading:i.savingData,color:"primary",variant:"tonal",onClick:l.saveEditedData},{default:n(()=>[...e[33]||(e[33]=[a(" 保存 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:i.createDialog,"onUpdate:modelValue":e[10]||(e[10]=r=>i.createDialog=r),"max-width":"800px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-plus"}),e[34]||(e[34]=a(" 新建数据 ",-1)),t(Z),t(p,{icon:"mdi-close",variant:"text",onClick:l.closeCreateDialog},null,8,["onClick"])]),_:1}),t(j,null,{default:n(()=>[t(N,{modelValue:i.newKey,"onUpdate:modelValue":e[8]||(e[8]=r=>i.newKey=r),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]=r=>i.newData=r),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(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:l.closeCreateDialog},{default:n(()=>[...e[35]||(e[35]=[a(" 取消 ",-1)])]),_:1},8,["onClick"]),t(p,{disabled:!l.isValidKey||!l.isValidNewJson,loading:i.savingData,color:"primary",variant:"tonal",onClick:l.saveNewData},{default:n(()=>[...e[36]||(e[36]=[a(" 创建 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:i.cloudUrlDialog,"onUpdate:modelValue":e[15]||(e[15]=r=>i.cloudUrlDialog=r),"max-width":"800px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cloud-download"}),e[37]||(e[37]=a(" 获取云端访问地址 ",-1)),t(Z),t(p,{icon:"mdi-close",variant:"text",onClick:e[11]||(e[11]=r=>i.cloudUrlDialog=!1)})]),_:1}),i.selectedCloudItem?(m(),h(Ke,{key:0},{default:n(()=>[e[38]||(e[38]=a(" 键名: ",-1)),c("code",null,v(i.selectedCloudItem.key),1)]),_:1})):b("",!0),t(j,null,{default:n(()=>[i.cloudUrlError?(m(),h(Y,{key:0,class:"mb-4",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.cloudUrlError),1)]),_:1})):b("",!0),i.cloudUrlResult&&i.cloudUrlResult.success?(m(),h(Y,{key:1,class:"mb-4",type:"success",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[39]||(e[39]=[a("云端地址获取成功",-1)])]),_:1}),c("div",Gl,[i.cloudUrlResult.migrated?(m(),k("div",Wl,[t(g,{class:"mr-1",color:"success",icon:"mdi-database-arrow-up"}),e[40]||(e[40]=a(" 数据已从本地迁移到云端 ",-1))])):b("",!0),i.cloudUrlResult.configured?(m(),k("div",Yl,[t(g,{class:"mr-1",color:"info",icon:"mdi-cog"}),e[41]||(e[41]=a(" 云端配置已自动设置 ",-1))])):b("",!0)])]),_:1})):b("",!0),i.cloudUrlResult&&i.cloudUrlResult.url?(m(),h(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"])):b("",!0),i.cloudUrlResult&&i.cloudUrlResult.url?(m(),h(kt,{key:3,class:"mt-4"},{default:n(()=>[t(yt,null,{default:n(()=>[t(qt,null,{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cog"}),e[42]||(e[42]=a(" 高级选项 ",-1))]),_:1}),t(xt,null,{default:n(()=>[t(Se,{modelValue:i.cloudUrlOptions.migrateFromLocal,"onUpdate:modelValue":e[12]||(e[12]=r=>i.cloudUrlOptions.migrateFromLocal=r),density:"compact",label:"从本地迁移数据到云端"},null,8,["modelValue"]),t(Se,{modelValue:i.cloudUrlOptions.autoConfigureCloud,"onUpdate:modelValue":e[13]||(e[13]=r=>i.cloudUrlOptions.autoConfigureCloud=r),density:"compact",label:"自动配置云端默认设置"},null,8,["modelValue"]),t(p,{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]=a(" 重新获取 ",-1))]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1})):b("",!0)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:e[14]||(e[14]=r=>i.cloudUrlDialog=!1)},{default:n(()=>[...e[44]||(e[44]=[a(" 关闭 ",-1)])]),_:1}),i.cloudUrlResult&&i.cloudUrlResult.url?(m(),h(p,{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]=a(" 在新窗口打开 ",-1))]),_:1},8,["onClick"])):b("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:i.deleteDialog,"onUpdate:modelValue":e[17]||(e[17]=r=>i.deleteDialog=r),"max-width":"400px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center text-error"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-alert"}),e[46]||(e[46]=a(" 确认删除 ",-1))]),_:1}),t(j,null,{default:n(()=>{var r;return[e[48]||(e[48]=a(" 确定要删除键名为 ",-1)),c("code",null,v((r=i.itemToDelete)==null?void 0:r.key),1),e[49]||(e[49]=a(" 的数据吗? ",-1)),e[50]||(e[50]=c("br",null,null,-1)),e[51]||(e[51]=c("br",null,null,-1)),t(Y,{class:"mt-2",type:"warning",variant:"tonal"},{default:n(()=>[...e[47]||(e[47]=[a(" 此操作不可撤销,请谨慎操作! ",-1)])]),_:1})]}),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:e[16]||(e[16]=r=>i.deleteDialog=!1)},{default:n(()=>[...e[52]||(e[52]=[a(" 取消 ",-1)])]),_:1}),t(p,{loading:i.deletingData,color:"error",variant:"tonal",onClick:l.deleteItem},{default:n(()=>[...e[53]||(e[53]=[a(" 删除 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(d,{modelValue:i.showMigrationDialog,"onUpdate:modelValue":e[18]||(e[18]=r=>i.showMigrationDialog=r)},null,8,["modelValue"])]),_:1},8,["loading"])}const gn=Q(Hl,[["render",ql],["__scopeId","data-v-5227ec24"]]),Zl={name:"DataProviderSettingsCard",components:{SettingsCard:W},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"),o={Accept:"application/json"};if(e&&(o["x-site-key"]=e),rs()){const u=await us(async f=>{const r=await Xe.get(`${f}/check`,{method:"GET",headers:o});if(r.data.status!=="success")throw new Error("服务器响应异常");return r},{onServerTried:({url:f,status:r,tried:w})=>{s.length=0,s.push(...w)}}),i=new Date-this.serverchecktime,l=s.find(f=>f.status==="success");let d=`服务器连接正常 延迟${i}ms`;if(s.length>1){const f=s.map((r,w)=>`${w+1}. ${r.url} (${r.status==="success"?"成功":"失败"})`).join(` +}`,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),o=this.newKey.trim(),u=await ie.saveData(o,e);if(u&&!u.error)this.kvData.push({key:o,value:e,loaded:!0}),this.$message.success("数据创建成功"),this.closeCreateDialog();else throw new Error(((s=u.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),o=await ie.saveData(this.editingItem.key,e);if(o&&!o.error){const u=this.kvData.findIndex(i=>i.key===this.editingItem.key);u!==-1&&(this.kvData[u].value=e,this.kvData[u].loaded=!0),this.$message.success("数据保存成功"),this.closeEditDialog()}else throw new Error(((s=o.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 ts("ClassworksDB",2)).transaction("kv","readwrite").objectStore("kv").delete(this.itemToDelete.key):await ie.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 ie.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)}}}},Ql={class:"text-primary"},Gl={class:"mt-2"},Wl={key:0,class:"mb-2"},Yl={key:1,class:"mb-2"};function ql(s,e,o,u,i,l){const d=hn,f=W;return m(),h(f,{loading:i.loading,icon:"mdi-database-edit",title:"KV数据库管理"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{prepend:n(()=>[t(g,{color:l.connectionColor,icon:l.connectionIcon,class:"mr-3"},null,8,["color","icon"])]),append:n(()=>[t(p,{loading:i.loading,variant:"tonal",onClick:l.refreshConnection},{default:n(()=>[...e[20]||(e[20]=[a(" 刷新 ",-1)])]),_:1},8,["loading","onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[19]||(e[19]=[a("数据库状态",-1)])]),_:1}),t(ne,null,{default:n(()=>[a(v(l.connectionStatus),1)]),_:1})]),_:1}),t(T,{class:"my-2"}),t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-format-list-bulleted"})]),append:n(()=>[t(_t,{variant:"tonal"},{default:n(()=>[t(p,{loading:i.loadingData,onClick:l.loadKvData},{default:n(()=>[...e[22]||(e[22]=[a(" 加载数据 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{disabled:!l.isKvProvider,onClick:l.createNewItem},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-plus"}),e[23]||(e[23]=a(" 新建 ",-1))]),_:1},8,["disabled","onClick"]),t(p,{onClick:e[0]||(e[0]=r=>i.showMigrationDialog=!0)},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-cloud-upload"}),e[24]||(e[24]=a(" 从本地迁移 ",-1))]),_:1})]),_:1})]),default:n(()=>[t(z,null,{default:n(()=>[...e[21]||(e[21]=[a("数据条目",-1)])]),_:1}),t(ne,null,{default:n(()=>[a("共 "+v(i.kvData.length)+" 条记录",1)]),_:1})]),_:1})]),_:1}),i.kvData.length>0?(m(),h(M,{key:0,class:"mt-4",variant:"outlined"},{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-table"}),e[25]||(e[25]=a(" KV数据列表 ",-1)),t(Z),t(N,{modelValue:i.searchQuery,"onUpdate:modelValue":e[1]||(e[1]=r=>i.searchQuery=r),clearable:"",density:"compact","hide-details":"",label:"搜索键名","prepend-inner-icon":"mdi-magnify",style:{"max-width":"300px"},variant:"outlined"},null,8,["modelValue"])]),_:1}),t(Zt,{headers:i.tableHeaders,items:l.filteredKvData,"items-per-page":10,loading:i.loadingData,class:"elevation-0","item-value":"key"},{"item.key":n(({item:r})=>[c("code",Ql,v(r.key),1)]),"item.actions":n(({item:r})=>[t(_t,{density:"compact",variant:"text"},{default:n(()=>[t(p,{icon:"mdi-eye",size:"small",title:"查看",onClick:w=>l.viewItem(r)},null,8,["onClick"]),t(p,{icon:"mdi-pencil",size:"small",title:"编辑",onClick:w=>l.editItem(r)},null,8,["onClick"]),t(p,{color:"primary",icon:"mdi-cloud-download",size:"small",title:"获取云端地址",onClick:w=>l.getCloudUrl(r)},null,8,["onClick"]),t(p,{color:"error",icon:"mdi-delete",size:"small",title:"删除",onClick:w=>l.confirmDelete(r)},null,8,["onClick"])]),_:2},1024)]),_:2},1032,["headers","items","loading"])]),_:1})):b("",!0),t(we,{modelValue:i.viewDialog,"onUpdate:modelValue":e[5]||(e[5]=r=>i.viewDialog=r),"max-width":"800px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-eye"}),e[26]||(e[26]=a(" 查看数据 ",-1)),t(Z),t(p,{icon:"mdi-close",variant:"text",onClick:e[2]||(e[2]=r=>i.viewDialog=!1)})]),_:1}),i.selectedItem?(m(),h(Ke,{key:0},{default:n(()=>[e[27]||(e[27]=a(" 键名: ",-1)),c("code",null,v(i.selectedItem.key),1)]),_:1})):b("",!0),t(j,null,{default:n(()=>[i.selectedItem?(m(),h(Pe,{key:0,"model-value":l.formatJsonData(i.selectedItem.value),class:"font-monospace",label:"数据内容",readonly:"",rows:"15",variant:"outlined"},null,8,["model-value"])):b("",!0)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"tonal",onClick:e[3]||(e[3]=r=>{var w;return l.copyToClipboard((w=i.selectedItem)==null?void 0:w.value)})},{default:n(()=>[t(g,{class:"mr-1",icon:"mdi-content-copy"}),e[28]||(e[28]=a(" 复制数据 ",-1))]),_:1}),t(p,{variant:"text",onClick:e[4]||(e[4]=r=>i.viewDialog=!1)},{default:n(()=>[...e[29]||(e[29]=[a(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:i.editDialog,"onUpdate:modelValue":e[7]||(e[7]=r=>i.editDialog=r),"max-width":"800px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-pencil"}),e[30]||(e[30]=a(" 编辑数据 ",-1)),t(Z),t(p,{icon:"mdi-close",variant:"text",onClick:l.closeEditDialog},null,8,["onClick"])]),_:1}),i.editingItem?(m(),h(Ke,{key:0},{default:n(()=>[e[31]||(e[31]=a(" 键名: ",-1)),c("code",null,v(i.editingItem.key),1)]),_:1})):b("",!0),t(j,null,{default:n(()=>[t(Pe,{modelValue:i.editingData,"onUpdate:modelValue":e[6]||(e[6]=r=>i.editingData=r),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(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:l.closeEditDialog},{default:n(()=>[...e[32]||(e[32]=[a(" 取消 ",-1)])]),_:1},8,["onClick"]),t(p,{disabled:!l.isValidJson,loading:i.savingData,color:"primary",variant:"tonal",onClick:l.saveEditedData},{default:n(()=>[...e[33]||(e[33]=[a(" 保存 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:i.createDialog,"onUpdate:modelValue":e[10]||(e[10]=r=>i.createDialog=r),"max-width":"800px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-plus"}),e[34]||(e[34]=a(" 新建数据 ",-1)),t(Z),t(p,{icon:"mdi-close",variant:"text",onClick:l.closeCreateDialog},null,8,["onClick"])]),_:1}),t(j,null,{default:n(()=>[t(N,{modelValue:i.newKey,"onUpdate:modelValue":e[8]||(e[8]=r=>i.newKey=r),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]=r=>i.newData=r),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(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:l.closeCreateDialog},{default:n(()=>[...e[35]||(e[35]=[a(" 取消 ",-1)])]),_:1},8,["onClick"]),t(p,{disabled:!l.isValidKey||!l.isValidNewJson,loading:i.savingData,color:"primary",variant:"tonal",onClick:l.saveNewData},{default:n(()=>[...e[36]||(e[36]=[a(" 创建 ",-1)])]),_:1},8,["disabled","loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:i.cloudUrlDialog,"onUpdate:modelValue":e[15]||(e[15]=r=>i.cloudUrlDialog=r),"max-width":"800px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cloud-download"}),e[37]||(e[37]=a(" 获取云端访问地址 ",-1)),t(Z),t(p,{icon:"mdi-close",variant:"text",onClick:e[11]||(e[11]=r=>i.cloudUrlDialog=!1)})]),_:1}),i.selectedCloudItem?(m(),h(Ke,{key:0},{default:n(()=>[e[38]||(e[38]=a(" 键名: ",-1)),c("code",null,v(i.selectedCloudItem.key),1)]),_:1})):b("",!0),t(j,null,{default:n(()=>[i.cloudUrlError?(m(),h(Y,{key:0,class:"mb-4",type:"error",variant:"tonal"},{default:n(()=>[a(v(i.cloudUrlError),1)]),_:1})):b("",!0),i.cloudUrlResult&&i.cloudUrlResult.success?(m(),h(Y,{key:1,class:"mb-4",type:"success",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[39]||(e[39]=[a("云端地址获取成功",-1)])]),_:1}),c("div",Gl,[i.cloudUrlResult.migrated?(m(),y("div",Wl,[t(g,{class:"mr-1",color:"success",icon:"mdi-database-arrow-up"}),e[40]||(e[40]=a(" 数据已从本地迁移到云端 ",-1))])):b("",!0),i.cloudUrlResult.configured?(m(),y("div",Yl,[t(g,{class:"mr-1",color:"info",icon:"mdi-cog"}),e[41]||(e[41]=a(" 云端配置已自动设置 ",-1))])):b("",!0)])]),_:1})):b("",!0),i.cloudUrlResult&&i.cloudUrlResult.url?(m(),h(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"])):b("",!0),i.cloudUrlResult&&i.cloudUrlResult.url?(m(),h(yt,{key:3,class:"mt-4"},{default:n(()=>[t(kt,null,{default:n(()=>[t(qt,null,{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cog"}),e[42]||(e[42]=a(" 高级选项 ",-1))]),_:1}),t(xt,null,{default:n(()=>[t(Se,{modelValue:i.cloudUrlOptions.migrateFromLocal,"onUpdate:modelValue":e[12]||(e[12]=r=>i.cloudUrlOptions.migrateFromLocal=r),density:"compact",label:"从本地迁移数据到云端"},null,8,["modelValue"]),t(Se,{modelValue:i.cloudUrlOptions.autoConfigureCloud,"onUpdate:modelValue":e[13]||(e[13]=r=>i.cloudUrlOptions.autoConfigureCloud=r),density:"compact",label:"自动配置云端默认设置"},null,8,["modelValue"]),t(p,{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]=a(" 重新获取 ",-1))]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1})):b("",!0)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:e[14]||(e[14]=r=>i.cloudUrlDialog=!1)},{default:n(()=>[...e[44]||(e[44]=[a(" 关闭 ",-1)])]),_:1}),i.cloudUrlResult&&i.cloudUrlResult.url?(m(),h(p,{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]=a(" 在新窗口打开 ",-1))]),_:1},8,["onClick"])):b("",!0)]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:i.deleteDialog,"onUpdate:modelValue":e[17]||(e[17]=r=>i.deleteDialog=r),"max-width":"400px"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,{class:"d-flex align-center text-error"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-alert"}),e[46]||(e[46]=a(" 确认删除 ",-1))]),_:1}),t(j,null,{default:n(()=>{var r;return[e[48]||(e[48]=a(" 确定要删除键名为 ",-1)),c("code",null,v((r=i.itemToDelete)==null?void 0:r.key),1),e[49]||(e[49]=a(" 的数据吗? ",-1)),e[50]||(e[50]=c("br",null,null,-1)),e[51]||(e[51]=c("br",null,null,-1)),t(Y,{class:"mt-2",type:"warning",variant:"tonal"},{default:n(()=>[...e[47]||(e[47]=[a(" 此操作不可撤销,请谨慎操作! ",-1)])]),_:1})]}),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:e[16]||(e[16]=r=>i.deleteDialog=!1)},{default:n(()=>[...e[52]||(e[52]=[a(" 取消 ",-1)])]),_:1}),t(p,{loading:i.deletingData,color:"error",variant:"tonal",onClick:l.deleteItem},{default:n(()=>[...e[53]||(e[53]=[a(" 删除 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(d,{modelValue:i.showMigrationDialog,"onUpdate:modelValue":e[18]||(e[18]=r=>i.showMigrationDialog=r)},null,8,["modelValue"])]),_:1},8,["loading"])}const gn=Q(Hl,[["render",ql],["__scopeId","data-v-5227ec24"]]),Zl={name:"DataProviderSettingsCard",components:{SettingsCard:W},data(){return{loading:!1,serverchecktime:{},confirmDialog:!1,confirmTitle:"",confirmMessage:"",confirmAction:null,machineId:null,migrateLoading:!1}},computed:{currentProvider(){return k("server.provider")},isKvProvider(){return this.currentProvider==="kv-local"||this.currentProvider==="kv-server"||this.currentProvider==="classworkscloud"}},async created(){this.machineId=k("device.uuid")},methods:{async checkServerConnection(){this.loading=!0,this.serverchecktime=new Date;const s=[];try{const e=k("server.siteKey"),o={Accept:"application/json"};if(e&&(o["x-site-key"]=e),as()){const u=await rs(async f=>{const r=await Xe.get(`${f}/check`,{method:"GET",headers:o});if(r.data.status!=="success")throw new Error("服务器响应异常");return r},{onServerTried:({url:f,status:r,tried:w})=>{s.length=0,s.push(...w)}}),i=new Date-this.serverchecktime,l=s.find(f=>f.status==="success");let d=`服务器连接正常 延迟${i}ms`;if(s.length>1){const f=s.map((r,w)=>`${w+1}. ${r.url} (${r.status==="success"?"成功":"失败"})`).join(` `);d+=` 依次尝试的服务器: ${f}`}else l&&(d+=` -服务器: ${l.url}`);this.$message.success("连接成功",d)}else{const u=y("server.domain");if((await Xe.get(`${u}/check`,{method:"GET",headers:o})).data.status==="success")this.$message.success("连接成功","服务器连接正常 延迟"+(new Date-this.serverchecktime)+"ms");else throw new Error("服务器响应异常")}}catch(e){let o=e.message||"无法连接到服务器";if(s.length>0){const u=s.map((i,l)=>`${l+1}. ${i.url} (失败${i.error?`: ${i.error}`:""})`).join(` +服务器: ${l.url}`);this.$message.success("连接成功",d)}else{const u=k("server.domain");if((await Xe.get(`${u}/check`,{method:"GET",headers:o})).data.status==="success")this.$message.success("连接成功","服务器连接正常 延迟"+(new Date-this.serverchecktime)+"ms");else throw new Error("服务器响应异常")}}catch(e){let o=e.message||"无法连接到服务器";if(s.length>0){const u=s.map((i,l)=>`${l+1}. ${i.url} (失败${i.error?`: ${i.error}`:""})`).join(` `);o+=` 依次尝试的服务器: ${u} -所有服务器均连接失败`}this.$message.error("连接失败",o)}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:{}},o=await new Promise((r,w)=>{const x=window.indexedDB.open(s);x.onerror=()=>w(x.error),x.onsuccess=()=>r(x.result)}),u=Array.from(o.objectStoreNames);for(const r of u){const x=o.transaction(r,"readonly").objectStore(r),I=await new Promise((F,$)=>{const J=x.getAll();J.onerror=()=>$(J.error),J.onsuccess=()=>F(J.result)});e.indexedDB[r]=I}const i=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),l=URL.createObjectURL(i),d=document.createElement("a"),f=new Date().toISOString().split("T")[0];d.href=l,d.download=`homework-indexeddb-${f}.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 Xl(s,e,o,u,i,l){const d=W;return m(),h(d,{icon:"mdi-database-cog",title:"数据源设置"},{default:n(()=>[t(O,null,{default:n(()=>[l.currentProvider==="kv-server"||l.currentProvider==="classworkscloud"?(m(),h(D,{key:0},{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-lan-connect"})]),append:n(()=>[t(p,{loading:i.loading,variant:"tonal",onClick:l.checkServerConnection},{default:n(()=>[...e[3]||(e[3]=[a(" 测试连接 ",-1)])]),_:1},8,["loading","onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[2]||(e[2]=[a("检查服务器连接",-1)])]),_:1})]),_:1})):b("",!0),l.currentProvider==="kv-local"?(m(),k(H,{key:1},[t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-database"})]),append:n(()=>[t(p,{color:"error",variant:"tonal",onClick:l.confirmClearIndexedDB},{default:n(()=>[...e[6]||(e[6]=[a(" 清除 ",-1)])]),_:1},8,["onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[4]||(e[4]=[a("清除数据库缓存",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[5]||(e[5]=[a(" 这将清除所有本地数据库中的数据 ",-1)])]),_:1})]),_:1}),t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-database-export"})]),append:n(()=>[t(p,{variant:"tonal",onClick:l.exportData},{default:n(()=>[...e[8]||(e[8]=[a(" 导出 ",-1)])]),_:1},8,["onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[7]||(e[7]=[a("导出数据库",-1)])]),_:1})]),_:1})],64)):b("",!0),t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-lan-connect"})]),append:n(()=>[t(p,{to:"/cachemanagement",variant:"tonal"},{default:n(()=>[...e[10]||(e[10]=[a(" 查看 ",-1)])]),_:1})]),default:n(()=>[t(z,null,{default:n(()=>[...e[9]||(e[9]=[a("查看本地缓存",-1)])]),_:1})]),_:1})]),_:1}),t(we,{modelValue:i.confirmDialog,"onUpdate:modelValue":e[1]||(e[1]=f=>i.confirmDialog=f),"max-width":"400"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,null,{default:n(()=>[a(v(i.confirmTitle),1)]),_:1}),t(j,null,{default:n(()=>[a(v(i.confirmMessage),1)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{color:"grey",variant:"text",onClick:e[0]||(e[0]=f=>i.confirmDialog=!1)},{default:n(()=>[...e[11]||(e[11]=[a(" 取消 ",-1)])]),_:1}),t(p,{color:"error",variant:"tonal",onClick:l.handleConfirm},{default:n(()=>[...e[12]||(e[12]=[a(" 确认 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const wn=Q(Zl,[["render",Xl]]),$l={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 ss.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,o;const s=(o=(e=this.namespaceInfo)==null?void 0:e.device)==null?void 0:o.uuid;return s?`${this.defaultAuthServer}?uuid=${encodeURIComponent(s)}&tolinktoaccount=true`:this.defaultAuthServer},confirmReinitialize(){re("server.kvToken",""),re("device.uuid",""),this.showReinitDialog=!1,this.$router.push("/")}}},eo={key:0,class:"mb-4"},to={key:1,class:"d-flex align-center mb-4"},no={class:"d-flex flex-column gap-1"},so={class:"d-flex align-center"},io={class:"d-flex align-center"},lo={key:0,class:"d-flex align-center"},oo={class:"text-truncate"},ao={class:"d-flex align-center"},ro={key:1,class:"d-flex align-center"};function uo(s,e,o,u,i,l){return m(),h(M,{disabled:!i.hasNamespaceInfo,loading:i.loading,class:"my-4"},{loader:n(()=>[i.loading?(m(),h($e,{key:0,color:"primary",indeterminate:""})):b("",!0)]),default:n(()=>[t(K,null,{default:n(()=>[t(g,{class:"me-2"},{default:n(()=>[...e[3]||(e[3]=[a(" mdi-cloud-check ",-1)])]),_:1}),e[4]||(e[4]=a(" 设备信息 ",-1))]),_:1}),i.hasNamespaceInfo?(m(),h(j,{key:0},{default:n(()=>[i.namespaceInfo.hasAccount===!1?(m(),k("div",eo,[t(Y,{border:"",type:"warning",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[5]||(e[5]=[a("设备未绑定账号",-1)])]),_:1}),e[7]||(e[7]=c("div",null,"当前设备尚未绑定账号,部分功能可能受限。请前往绑定账号以获得完整体验。",-1)),t(p,{href:l.getBindAccountUrl(),"append-icon":"mdi-open-in-new",class:"mt-3",target:"_blank",variant:"outlined"},{default:n(()=>[...e[6]||(e[6]=[a(" 前往绑定账号 ",-1)])]),_:1},8,["href"])]),_:1})])):b("",!0),i.namespaceInfo.hasAccount&&i.namespaceInfo.account?(m(),k("div",to,[t(M,{"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(j,null,{default:n(()=>[...e[8]||(e[8]=[a(" 此设备由贵校或贵单位管理,该管理员系此空间所有者,如有疑问请咨询他,对于恶意绑定、滥用行为请反馈。 ",-1)])]),_:1})]),_:1},8,["prepend-avatar","subtitle","title"])])):b("",!0),i.namespaceInfo.device?(m(),h(M,{key:2,border:"",class:"mb-4",hover:"",variant:"tonal"},{default:n(()=>[t(K,{class:"pb-1"},{default:n(()=>[...e[9]||(e[9]=[a(" 设备信息 ",-1)])]),_:1}),t(j,null,{default:n(()=>[c("div",no,[c("div",so,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[10]||(e[10]=[a(" mdi-tag ",-1)])]),_:1}),e[11]||(e[11]=c("span",{class:"font-weight-medium me-2"},"设备名称:",-1)),c("span",null,v(i.namespaceInfo.device.name||"未命名设备"),1)]),c("div",io,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[12]||(e[12]=[a(" mdi-identifier ",-1)])]),_:1}),e[13]||(e[13]=c("span",{class:"font-weight-medium me-2"},"设备 ID:",-1)),c("span",null,v(i.namespaceInfo.device.id),1)]),i.namespaceInfo.hasAccount===!1&&i.namespaceInfo.device.uuid?(m(),k("div",lo,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[14]||(e[14]=[a(" mdi-uuid ",-1)])]),_:1}),e[15]||(e[15]=c("span",{class:"font-weight-medium me-2"},"UUID:",-1)),c("span",oo,v(i.namespaceInfo.device.uuid),1)])):b("",!0),c("div",ao,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[16]||(e[16]=[a(" mdi-calendar ",-1)])]),_:1}),e[17]||(e[17]=c("span",{class:"font-weight-medium me-2"},"创建时间:",-1)),c("span",null,v(l.formatDate(i.namespaceInfo.device.createdAt)),1)]),i.namespaceInfo.device.updatedAt?(m(),k("div",ro,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[18]||(e[18]=[a(" mdi-calendar-clock ",-1)])]),_:1}),e[19]||(e[19]=c("span",{class:"font-weight-medium me-2"},"更新时间:",-1)),c("span",null,v(l.formatDate(i.namespaceInfo.device.updatedAt)),1)])):b("",!0)])]),_:1})]),_:1})):b("",!0),t(M,{border:"",hover:"",subtitle:"文档形键值数据库",title:"Classworks KV"},{default:n(()=>[t(j,null,{default:n(()=>[...e[20]||(e[20]=[a(" Classworks KV 是厚浪云推出的文档形键值数据库,其是一个开放的云应用平台,为各种应用提供存储服务。此设备正在使用其服务,如果您希望管理设备信息,请前往 Classworks KV 的网站,如果您在服务推出前就在使用 Classworks,您的数据已被自动迁移。 ",-1),c("br",null,null,-1),c("br",null,null,-1),a(" Classworks KV 的全域管理员是 ",-1),c("a",{href:"https://wuyuan.dev",target:"_blank"}," 孙悟元 ",-1)])]),_:1}),t(ue,null,{default:n(()=>[t(p,{href:i.defaultAuthServer,"append-icon":"mdi-open-in-new",class:"text-none",target:"_blank"},{default:n(()=>[...e[21]||(e[21]=[a(" 前往 Classworks KV ",-1)])]),_:1},8,["href"])]),_:1})]),_:1})]),_:1})):(m(),h(j,{key:1},{default:n(()=>[t(Y,{type:"info",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[22]||(e[22]=[a("未获取到设备信息",-1)])]),_:1}),e[23]||(e[23]=c("p",null,"您尚未完成云端存储授权或连接失败,请点击下方按钮进行初始化。",-1))]),_:1})]),_:1})),t(ue,null,{default:n(()=>[t(Z),t(p,{loading:i.loading,color:"primary",variant:"outlined",onClick:l.reloadInfo},{default:n(()=>[...e[24]||(e[24]=[a(" 刷新设备信息 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{color:"error",variant:"outlined",onClick:e[0]||(e[0]=d=>i.showReinitDialog=!0)},{default:n(()=>[...e[25]||(e[25]=[a(" 重新初始化云端存储 ",-1)])]),_:1})]),_:1}),t(we,{modelValue:i.showReinitDialog,"onUpdate:modelValue":e[2]||(e[2]=d=>i.showReinitDialog=d),"max-width":"500"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,null,{default:n(()=>[...e[26]||(e[26]=[a("确认重新初始化",-1)])]),_:1}),t(j,null,{default:n(()=>[t(Y,{class:"mb-3",type:"warning",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[27]||(e[27]=[a("警告",-1)])]),_:1}),e[28]||(e[28]=a(" 此操作将清除当前的云端存储配置(包括 Token),您需要重新进行授权。 ",-1))]),_:1}),e[29]||(e[29]=c("p",null,"您确定要重新初始化云端存储吗?",-1))]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:e[1]||(e[1]=d=>i.showReinitDialog=!1)},{default:n(()=>[...e[30]||(e[30]=[a(" 取消 ",-1)])]),_:1}),t(p,{color:"error",onClick:l.confirmReinitialize},{default:n(()=>[...e[31]||(e[31]=[a(" 确认 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["disabled","loading"])}const vn=Q($l,[["render",uo]]),co={name:"ServerSettingsCard",components:{SettingsCard:W,CloudNamespaceInfoCard:vn},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=pt(()=>{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 o=`server.${s}`,u=y(o);e!==u&&(re(o,e)?console.log(`设置已更新: ${o} = ${e}`):(console.error(`设置失败: ${o}`),this.serverSettings[s]=u))})}}},mo={key:0},fo={key:2},po={key:3},ho={key:4};function go(s,e,o,u,i,l){const d=vn,f=W;return m(),h(f,{loading:o.loading,icon:"mdi-database",title:"数据源设置"},{default:n(()=>[t(Yt,null,{default:n(()=>[t(Ze,{modelValue:i.serverSettings.provider,"onUpdate:modelValue":e[0]||(e[0]=r=>i.serverSettings.provider=r),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?(m(),h(Y,{key:0,class:"my-2",type:"info",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[5]||(e[5]=[a("KV 存储系统",-1)])]),_:1}),e[7]||(e[7]=c("p",null,"KV存储系统使用本机唯一标识符(UUID)来区分不同设备的数据。",-1)),l.currentProvider==="kv-server"?(m(),k("p",mo,[...e[6]||(e[6]=[a(" 服务器端点格式: ",-1),c("code",null,"http(s)://服务器域名/",-1),c("br",null,null,-1),a(" 在服务器域名处仅填写基础URL,不需要任何路径。 ",-1)])])):b("",!0)]),_:1})):b("",!0),l.isClassworksCloud?(m(),h(Y,{key:1,class:"my-2",color:"success",type:"info",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[8]||(e[8]=[a("Classworks云端存储",-1)])]),_:1}),e[9]||(e[9]=c("p",null,"Classworks云端存储是官方提供的存储解决方案,自动配置了最优的访问设置。",-1)),e[10]||(e[10]=c("p",null,"使用此选项时,服务器域名和网站令牌将自动配置,无需手动设置。",-1))]),_:1})):b("",!0),t(U,{class:"my-2"}),l.isClassworksCloud?(m(),k("div",fo,[t(N,{modelValue:i.serverSettings.kvToken,"onUpdate:modelValue":e[1]||(e[1]=r=>i.serverSettings.kvToken=r),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"?(m(),k("div",po,[t(N,{modelValue:i.serverSettings.domain,"onUpdate:modelValue":e[2]||(e[2]=r=>i.serverSettings.domain=r),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]=r=>i.serverSettings.kvToken=r),class:"mb-2",density:"comfortable",hint:"令牌用于服务器验证",label:"KV 授权令牌","persistent-hint":"","prepend-icon":"mdi-shield-key",variant:"outlined"},null,8,["modelValue"])])):l.currentProvider==="kv-local"?(m(),k("div",ho,[t(N,{modelValue:i.serverSettings.classNumber,"onUpdate:modelValue":e[4]||(e[4]=r=>i.serverSettings.classNumber=r),class:"mb-2",density:"comfortable",hint:"例如: 高三八班",label:"班级编号","persistent-hint":"","prepend-icon":"mdi-account-group",variant:"outlined"},null,8,["modelValue"])])):b("",!0)]),_:1})]),_:1},8,["loading"])}const bn=Q(co,[["render",go]]),wo="classworks",vo="module",bo="0.0.0",ko={dev:"vite --host",build:"vite build","build:store":"node scripts/generate-sound-list.js && vite build && node scripts/validate-pwa-build.js",preview:"vite preview",lint:"eslint . --fix","pwa:validate":"node scripts/validate-pwa-build.js",prebuild:"node scripts/generate-sound-list.js"},yo={"@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","@wydev/noise-core":"^0.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",vite:"^5.4.11"},xo={"@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-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"},Le={name:wo,private:!0,type:vo,version:bo,scripts:ko,dependencies:yo,devDependencies:xo},So="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=",Co={name:"AboutCard",setup(){const s=se([]),e=se(!1),o=se(!1),u=se(""),i=se(!1),l=se(!1),d="964979747",f="https://qm.qq.com/q/T6qImKJjGi",r=Kn(),w=()=>{try{const _={...Le.dependencies||{},...Le.devDependencies||{}},E=Object.entries(_).map(([q,P])=>({name:q,version:P.replace(/[\^~]/g,""),description:x(q)}));s.value=E}catch(_){console.error("加载依赖信息失败:",_),s.value=[]}},x=_=>({vue:"渐进式 JavaScript 框架",vuetify:"材料设计组件框架",axios:"Promise 基础的 HTTP 客户端",pinia:"Vue 状态管理库","vue-router":"Vue.js 官方路由管理器","@vitejs/plugin-vue":"Vite 的 Vue 插件"})[_]||"",I=()=>{r.push("/debug")},F=async()=>{i.value=!0;try{const _=await ds();u.value=_||""}catch(_){console.error("获取访客ID失败",_)}finally{i.value=!1}},$=()=>F(),J=async()=>{o.value=!0,u.value||await F()},he=async()=>{try{await navigator.clipboard.writeText(ce.value),l.value=!0,setTimeout(()=>l.value=!1,1800)}catch(_){console.error("复制失败",_)}},ae=L(()=>{var A,X;const _=navigator||{},E=typeof Intl<"u"&&Intl.DateTimeFormat?Intl.DateTimeFormat().resolvedOptions():{},q=E&&E.timeZone?E.timeZone:"",P=((X=(A=r.currentRoute)==null?void 0:A.value)==null?void 0:X.fullPath)||location.pathname;return[`App 版本: v${Le==null?void 0:Le.version}`,`URL: ${location.href}`,`路由: ${P}`,`UserAgent: ${_.userAgent||""}`,`语言: ${_.language||""}`,`时区: ${q}`,`平台: ${_.platform||""}`,`在线: ${String(_.onLine)}`,`屏幕: ${(screen==null?void 0:screen.width)||"-"}x${(screen==null?void 0:screen.height)||"-"}`,`视口: ${window.innerWidth||"-"}x${window.innerHeight||"-"}`].join(` +所有服务器均连接失败`}this.$message.error("连接失败",o)}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:{}},o=await new Promise((r,w)=>{const x=window.indexedDB.open(s);x.onerror=()=>w(x.error),x.onsuccess=()=>r(x.result)}),u=Array.from(o.objectStoreNames);for(const r of u){const x=o.transaction(r,"readonly").objectStore(r),I=await new Promise((F,$)=>{const J=x.getAll();J.onerror=()=>$(J.error),J.onsuccess=()=>F(J.result)});e.indexedDB[r]=I}const i=new Blob([JSON.stringify(e,null,2)],{type:"application/json"}),l=URL.createObjectURL(i),d=document.createElement("a"),f=new Date().toISOString().split("T")[0];d.href=l,d.download=`homework-indexeddb-${f}.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 Xl(s,e,o,u,i,l){const d=W;return m(),h(d,{icon:"mdi-database-cog",title:"数据源设置"},{default:n(()=>[t(O,null,{default:n(()=>[l.currentProvider==="kv-server"||l.currentProvider==="classworkscloud"?(m(),h(D,{key:0},{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-lan-connect"})]),append:n(()=>[t(p,{loading:i.loading,variant:"tonal",onClick:l.checkServerConnection},{default:n(()=>[...e[3]||(e[3]=[a(" 测试连接 ",-1)])]),_:1},8,["loading","onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[2]||(e[2]=[a("检查服务器连接",-1)])]),_:1})]),_:1})):b("",!0),l.currentProvider==="kv-local"?(m(),y(H,{key:1},[t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-database"})]),append:n(()=>[t(p,{color:"error",variant:"tonal",onClick:l.confirmClearIndexedDB},{default:n(()=>[...e[6]||(e[6]=[a(" 清除 ",-1)])]),_:1},8,["onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[4]||(e[4]=[a("清除数据库缓存",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[5]||(e[5]=[a(" 这将清除所有本地数据库中的数据 ",-1)])]),_:1})]),_:1}),t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-database-export"})]),append:n(()=>[t(p,{variant:"tonal",onClick:l.exportData},{default:n(()=>[...e[8]||(e[8]=[a(" 导出 ",-1)])]),_:1},8,["onClick"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[7]||(e[7]=[a("导出数据库",-1)])]),_:1})]),_:1})],64)):b("",!0),t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-lan-connect"})]),append:n(()=>[t(p,{to:"/cachemanagement",variant:"tonal"},{default:n(()=>[...e[10]||(e[10]=[a(" 查看 ",-1)])]),_:1})]),default:n(()=>[t(z,null,{default:n(()=>[...e[9]||(e[9]=[a("查看本地缓存",-1)])]),_:1})]),_:1})]),_:1}),t(we,{modelValue:i.confirmDialog,"onUpdate:modelValue":e[1]||(e[1]=f=>i.confirmDialog=f),"max-width":"400"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,null,{default:n(()=>[a(v(i.confirmTitle),1)]),_:1}),t(j,null,{default:n(()=>[a(v(i.confirmMessage),1)]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{color:"grey",variant:"text",onClick:e[0]||(e[0]=f=>i.confirmDialog=!1)},{default:n(()=>[...e[11]||(e[11]=[a(" 取消 ",-1)])]),_:1}),t(p,{color:"error",variant:"tonal",onClick:l.handleConfirm},{default:n(()=>[...e[12]||(e[12]=[a(" 确认 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})}const wn=Q(Zl,[["render",Xl]]),$l={name:"CloudNamespaceInfoCard",props:{visible:{type:Boolean,default:!0}},data(){return{namespaceInfo:{},loading:!1,hasNamespaceInfo:!1,showReinitDialog:!1,defaultAuthServer:k("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 ns.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,o;const s=(o=(e=this.namespaceInfo)==null?void 0:e.device)==null?void 0:o.uuid;return s?`${this.defaultAuthServer}?uuid=${encodeURIComponent(s)}&tolinktoaccount=true`:this.defaultAuthServer},confirmReinitialize(){re("server.kvToken",""),re("device.uuid",""),this.showReinitDialog=!1,this.$router.push("/")}}},eo={key:0,class:"mb-4"},to={key:1,class:"d-flex align-center mb-4"},no={class:"d-flex flex-column gap-1"},so={class:"d-flex align-center"},io={class:"d-flex align-center"},lo={key:0,class:"d-flex align-center"},oo={class:"text-truncate"},ao={class:"d-flex align-center"},ro={key:1,class:"d-flex align-center"};function uo(s,e,o,u,i,l){return m(),h(M,{disabled:!i.hasNamespaceInfo,loading:i.loading,class:"my-4"},{loader:n(()=>[i.loading?(m(),h($e,{key:0,color:"primary",indeterminate:""})):b("",!0)]),default:n(()=>[t(K,null,{default:n(()=>[t(g,{class:"me-2"},{default:n(()=>[...e[3]||(e[3]=[a(" mdi-cloud-check ",-1)])]),_:1}),e[4]||(e[4]=a(" 设备信息 ",-1))]),_:1}),i.hasNamespaceInfo?(m(),h(j,{key:0},{default:n(()=>[i.namespaceInfo.hasAccount===!1?(m(),y("div",eo,[t(Y,{border:"",type:"warning",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[5]||(e[5]=[a("设备未绑定账号",-1)])]),_:1}),e[7]||(e[7]=c("div",null,"当前设备尚未绑定账号,部分功能可能受限。请前往绑定账号以获得完整体验。",-1)),t(p,{href:l.getBindAccountUrl(),"append-icon":"mdi-open-in-new",class:"mt-3",target:"_blank",variant:"outlined"},{default:n(()=>[...e[6]||(e[6]=[a(" 前往绑定账号 ",-1)])]),_:1},8,["href"])]),_:1})])):b("",!0),i.namespaceInfo.hasAccount&&i.namespaceInfo.account?(m(),y("div",to,[t(M,{"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(j,null,{default:n(()=>[...e[8]||(e[8]=[a(" 此设备由贵校或贵单位管理,该管理员系此空间所有者,如有疑问请咨询他,对于恶意绑定、滥用行为请反馈。 ",-1)])]),_:1})]),_:1},8,["prepend-avatar","subtitle","title"])])):b("",!0),i.namespaceInfo.device?(m(),h(M,{key:2,border:"",class:"mb-4",hover:"",variant:"tonal"},{default:n(()=>[t(K,{class:"pb-1"},{default:n(()=>[...e[9]||(e[9]=[a(" 设备信息 ",-1)])]),_:1}),t(j,null,{default:n(()=>[c("div",no,[c("div",so,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[10]||(e[10]=[a(" mdi-tag ",-1)])]),_:1}),e[11]||(e[11]=c("span",{class:"font-weight-medium me-2"},"设备名称:",-1)),c("span",null,v(i.namespaceInfo.device.name||"未命名设备"),1)]),c("div",io,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[12]||(e[12]=[a(" mdi-identifier ",-1)])]),_:1}),e[13]||(e[13]=c("span",{class:"font-weight-medium me-2"},"设备 ID:",-1)),c("span",null,v(i.namespaceInfo.device.id),1)]),i.namespaceInfo.hasAccount===!1&&i.namespaceInfo.device.uuid?(m(),y("div",lo,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[14]||(e[14]=[a(" mdi-uuid ",-1)])]),_:1}),e[15]||(e[15]=c("span",{class:"font-weight-medium me-2"},"UUID:",-1)),c("span",oo,v(i.namespaceInfo.device.uuid),1)])):b("",!0),c("div",ao,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[16]||(e[16]=[a(" mdi-calendar ",-1)])]),_:1}),e[17]||(e[17]=c("span",{class:"font-weight-medium me-2"},"创建时间:",-1)),c("span",null,v(l.formatDate(i.namespaceInfo.device.createdAt)),1)]),i.namespaceInfo.device.updatedAt?(m(),y("div",ro,[t(g,{class:"me-2",size:"small"},{default:n(()=>[...e[18]||(e[18]=[a(" mdi-calendar-clock ",-1)])]),_:1}),e[19]||(e[19]=c("span",{class:"font-weight-medium me-2"},"更新时间:",-1)),c("span",null,v(l.formatDate(i.namespaceInfo.device.updatedAt)),1)])):b("",!0)])]),_:1})]),_:1})):b("",!0),t(M,{border:"",hover:"",subtitle:"文档形键值数据库",title:"Classworks KV"},{default:n(()=>[t(j,null,{default:n(()=>[...e[20]||(e[20]=[a(" Classworks KV 是厚浪云推出的文档形键值数据库,其是一个开放的云应用平台,为各种应用提供存储服务。此设备正在使用其服务,如果您希望管理设备信息,请前往 Classworks KV 的网站,如果您在服务推出前就在使用 Classworks,您的数据已被自动迁移。 ",-1),c("br",null,null,-1),c("br",null,null,-1),a(" Classworks KV 的全域管理员是 ",-1),c("a",{href:"https://wuyuan.dev",target:"_blank"}," 孙悟元 ",-1)])]),_:1}),t(ue,null,{default:n(()=>[t(p,{href:i.defaultAuthServer,"append-icon":"mdi-open-in-new",class:"text-none",target:"_blank"},{default:n(()=>[...e[21]||(e[21]=[a(" 前往 Classworks KV ",-1)])]),_:1},8,["href"])]),_:1})]),_:1})]),_:1})):(m(),h(j,{key:1},{default:n(()=>[t(Y,{type:"info",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[22]||(e[22]=[a("未获取到设备信息",-1)])]),_:1}),e[23]||(e[23]=c("p",null,"您尚未完成云端存储授权或连接失败,请点击下方按钮进行初始化。",-1))]),_:1})]),_:1})),t(ue,null,{default:n(()=>[t(Z),t(p,{loading:i.loading,color:"primary",variant:"outlined",onClick:l.reloadInfo},{default:n(()=>[...e[24]||(e[24]=[a(" 刷新设备信息 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{color:"error",variant:"outlined",onClick:e[0]||(e[0]=d=>i.showReinitDialog=!0)},{default:n(()=>[...e[25]||(e[25]=[a(" 重新初始化云端存储 ",-1)])]),_:1})]),_:1}),t(we,{modelValue:i.showReinitDialog,"onUpdate:modelValue":e[2]||(e[2]=d=>i.showReinitDialog=d),"max-width":"500"},{default:n(()=>[t(M,null,{default:n(()=>[t(K,null,{default:n(()=>[...e[26]||(e[26]=[a("确认重新初始化",-1)])]),_:1}),t(j,null,{default:n(()=>[t(Y,{class:"mb-3",type:"warning",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[27]||(e[27]=[a("警告",-1)])]),_:1}),e[28]||(e[28]=a(" 此操作将清除当前的云端存储配置(包括 Token),您需要重新进行授权。 ",-1))]),_:1}),e[29]||(e[29]=c("p",null,"您确定要重新初始化云端存储吗?",-1))]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:e[1]||(e[1]=d=>i.showReinitDialog=!1)},{default:n(()=>[...e[30]||(e[30]=[a(" 取消 ",-1)])]),_:1}),t(p,{color:"error",onClick:l.confirmReinitialize},{default:n(()=>[...e[31]||(e[31]=[a(" 确认 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1},8,["disabled","loading"])}const vn=Q($l,[["render",uo]]),co={name:"ServerSettingsCard",components:{SettingsCard:W,CloudNamespaceInfoCard:vn},props:{loading:Boolean},data(){return{unwatch:null,serverSettings:{provider:k("server.provider"),domain:k("server.domain"),classNumber:k("server.classNumber"),kvToken:k("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=pt(()=>{this.loadAllSettings(),this.$forceUpdate&&this.$forceUpdate()})},beforeUnmount(){this.unwatch&&this.unwatch()},methods:{loadAllSettings(){this.serverSettings={provider:k("server.provider"),domain:k("server.domain"),classNumber:k("server.classNumber"),kvToken:k("server.kvToken")}},saveAllSettings(){Object.entries(this.serverSettings).forEach(([s,e])=>{const o=`server.${s}`,u=k(o);e!==u&&(re(o,e)?console.log(`设置已更新: ${o} = ${e}`):(console.error(`设置失败: ${o}`),this.serverSettings[s]=u))})}}},mo={key:0},fo={key:2},po={key:3},ho={key:4};function go(s,e,o,u,i,l){const d=vn,f=W;return m(),h(f,{loading:o.loading,icon:"mdi-database",title:"数据源设置"},{default:n(()=>[t(Yt,null,{default:n(()=>[t(Ze,{modelValue:i.serverSettings.provider,"onUpdate:modelValue":e[0]||(e[0]=r=>i.serverSettings.provider=r),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?(m(),h(Y,{key:0,class:"my-2",type:"info",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[5]||(e[5]=[a("KV 存储系统",-1)])]),_:1}),e[7]||(e[7]=c("p",null,"KV存储系统使用本机唯一标识符(UUID)来区分不同设备的数据。",-1)),l.currentProvider==="kv-server"?(m(),y("p",mo,[...e[6]||(e[6]=[a(" 服务器端点格式: ",-1),c("code",null,"http(s)://服务器域名/",-1),c("br",null,null,-1),a(" 在服务器域名处仅填写基础URL,不需要任何路径。 ",-1)])])):b("",!0)]),_:1})):b("",!0),l.isClassworksCloud?(m(),h(Y,{key:1,class:"my-2",color:"success",type:"info",variant:"tonal"},{default:n(()=>[t(Ne,null,{default:n(()=>[...e[8]||(e[8]=[a("Classworks云端存储",-1)])]),_:1}),e[9]||(e[9]=c("p",null,"Classworks云端存储是官方提供的存储解决方案,自动配置了最优的访问设置。",-1)),e[10]||(e[10]=c("p",null,"使用此选项时,服务器域名和网站令牌将自动配置,无需手动设置。",-1))]),_:1})):b("",!0),t(T,{class:"my-2"}),l.isClassworksCloud?(m(),y("div",fo,[t(N,{modelValue:i.serverSettings.kvToken,"onUpdate:modelValue":e[1]||(e[1]=r=>i.serverSettings.kvToken=r),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"?(m(),y("div",po,[t(N,{modelValue:i.serverSettings.domain,"onUpdate:modelValue":e[2]||(e[2]=r=>i.serverSettings.domain=r),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]=r=>i.serverSettings.kvToken=r),class:"mb-2",density:"comfortable",hint:"令牌用于服务器验证",label:"KV 授权令牌","persistent-hint":"","prepend-icon":"mdi-shield-key",variant:"outlined"},null,8,["modelValue"])])):l.currentProvider==="kv-local"?(m(),y("div",ho,[t(N,{modelValue:i.serverSettings.classNumber,"onUpdate:modelValue":e[4]||(e[4]=r=>i.serverSettings.classNumber=r),class:"mb-2",density:"comfortable",hint:"例如: 高三八班",label:"班级编号","persistent-hint":"","prepend-icon":"mdi-account-group",variant:"outlined"},null,8,["modelValue"])])):b("",!0)]),_:1})]),_:1},8,["loading"])}const bn=Q(co,[["render",go]]),wo="classworks",vo="module",bo="0.0.0",yo={dev:"vite --host",build:"vite build","build:store":"node scripts/generate-sound-list.js && vite build && node scripts/validate-pwa-build.js",preview:"vite preview",lint:"eslint . --fix","pwa:validate":"node scripts/validate-pwa-build.js",prebuild:"node scripts/generate-sound-list.js","sync:uaf":"node scripts/sync-uaf-browser.js","test:uaf":"node scripts/test-uaf-export.js"},ko={"@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","@wydev/noise-core":"^0.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",vite:"^5.4.11"},xo={"@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-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"},Le={name:wo,private:!0,type:vo,version:bo,scripts:yo,dependencies:ko,devDependencies:xo},So="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=",Co={name:"AboutCard",setup(){const s=se([]),e=se(!1),o=se(!1),u=se(""),i=se(!1),l=se(!1),d="964979747",f="https://qm.qq.com/q/T6qImKJjGi",r=Kn(),w=()=>{try{const _={...Le.dependencies||{},...Le.devDependencies||{}},E=Object.entries(_).map(([q,P])=>({name:q,version:P.replace(/[\^~]/g,""),description:x(q)}));s.value=E}catch(_){console.error("加载依赖信息失败:",_),s.value=[]}},x=_=>({vue:"渐进式 JavaScript 框架",vuetify:"材料设计组件框架",axios:"Promise 基础的 HTTP 客户端",pinia:"Vue 状态管理库","vue-router":"Vue.js 官方路由管理器","@vitejs/plugin-vue":"Vite 的 Vue 插件"})[_]||"",I=()=>{r.push("/debug")},F=async()=>{i.value=!0;try{const _=await us();u.value=_||""}catch(_){console.error("获取访客ID失败",_)}finally{i.value=!1}},$=()=>F(),J=async()=>{o.value=!0,u.value||await F()},he=async()=>{try{await navigator.clipboard.writeText(ce.value),l.value=!0,setTimeout(()=>l.value=!1,1800)}catch(_){console.error("复制失败",_)}},ae=L(()=>{var A,X;const _=navigator||{},E=typeof Intl<"u"&&Intl.DateTimeFormat?Intl.DateTimeFormat().resolvedOptions():{},q=E&&E.timeZone?E.timeZone:"",P=((X=(A=r.currentRoute)==null?void 0:A.value)==null?void 0:X.fullPath)||location.pathname;return[`App 版本: v${Le==null?void 0:Le.version}`,`URL: ${location.href}`,`路由: ${P}`,`UserAgent: ${_.userAgent||""}`,`语言: ${_.language||""}`,`时区: ${q}`,`平台: ${_.platform||""}`,`在线: ${String(_.onLine)}`,`屏幕: ${(screen==null?void 0:screen.width)||"-"}x${(screen==null?void 0:screen.height)||"-"}`,`视口: ${window.innerWidth||"-"}x${window.innerHeight||"-"}`].join(` `)}),ce=L(()=>`调试ID: ${u.value||"获取失败"} 浏览器/环境信息: ${ae.value}`),le=L(()=>["问题描述:","1. 期望行为:","2. 实际行为:","3. 复现步骤:","",ce.value].join(` -`)),oe=L(()=>{const _="https://github.com/ZeroCatDev/Classworks/issues/new",E=encodeURIComponent("问题报告"),q=encodeURIComponent(le.value);return`${_}?title=${E}&body=${q}`}),C=L(()=>{const _=encodeURIComponent("Classworks 问题报告"),E=encodeURIComponent(le.value);return`mailto:sun@wuyuan.dev?subject=${_}&body=${E}`}),V=()=>{console.warn("Sentry Feedback 功能不可用")},T=()=>{window.open("https://afdian.com/a/wydev","_blank")};return Fn(()=>{w()}),{Dependencies:s,showDeps:e,showReportDialog:o,debugIdInput:u,visitorLoading:i,copyOk:l,qqGroupNumber:d,qqGroupLink:f,goToDebug:I,reloadVisitorId:$,openReportDialog:J,copyEnvInfo:he,openFeedback:V,openDonationLink:T,envBoxText:ce,envInfo:ae,reportBody:le,githubIssueUrl:oe,mailtoLink:C}}},Vo={class:"mt-4"},_o={class:"d-flex flex-column align-start"},Do={class:"d-flex gap-2 flex-wrap mb-6"},Ao={class:"text-body-2",style:{"white-space":"pre-wrap",margin:"0"}},Io={class:"d-flex gap-2 flex-wrap mb-4"},To={class:"d-flex gap-2 mb-4"},Uo={class:"text-caption text-medium-emphasis"};function jo(s,e,o,u,i,l){return m(),h(M,{border:"",hover:"",rounded:"xl"},{default:n(()=>[t(ze,null,{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-information",size:"large"})]),default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[...e[6]||(e[6]=[a(" 关于 ",-1)])]),_:1})]),_:1}),t(j,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{class:"mx-auto",cols:"12",md:"8"},{default:n(()=>[t(M,{border:"",class:"donation-card gradient-donation clickable mb-6",color:"pink-lighten-4",elevation:"8",hover:"",rounded:"xl",variant:"tonal",onClick:u.openDonationLink},{default:n(()=>[t(ze,null,{default:n(()=>[...e[7]||(e[7]=[c("div",{class:"card-content"},[c("div",null,[c("div",{class:"text-h6 font-weight-bold"}," 请支持我们 Classworks ")])],-1)])]),_:1}),t(j,null,{default:n(()=>[e[9]||(e[9]=c("p",{class:"text-body-2 mb-3"}," 我是Classworks的开发者孙悟元,是一名高二的中国在校学生。Classworks 是一个完全开源免费的项目。如果可以,欢迎打赏。 ",-1)),c("div",Vo,[t(p,{"append-icon":"mdi-heart","aria-label":"Support Classworks on Aifadian",class:"text-none",color:"pink",rounded:"xl",variant:"elevated",onClick:u.openDonationLink},{default:n(()=>[...e[8]||(e[8]=[a(" 爱发电 ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["onClick"]),c("div",_o,[t(et,{class:"mb-4",size:"120"},{default:n(()=>[t(Kt,{alt:"Classworks",src:So})]),_:1}),e[40]||(e[40]=c("h2",{class:"text-h5 mb-2"}," Classworks ",-1)),e[41]||(e[41]=c("p",{class:"text-body-1 mb-4"}," 适用于班级大屏的作业板小工具 ",-1)),c("div",Do,[t(p,{color:"red","prepend-icon":"mdi-bug",variant:"tonal",onClick:u.openReportDialog},{default:n(()=>[...e[10]||(e[10]=[a(" 报告问题 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"primary",href:"https://qm.qq.com/q/qNBX4ZZVeg","prepend-icon":"mdi-qqchat",target:"_blank",variant:"tonal"},{default:n(()=>[...e[11]||(e[11]=[a(" QQ 群 ",-1)])]),_:1}),t(p,{href:"https://github.com/ClassworksDev/Classworks","prepend-icon":"mdi-github",target:"_blank",variant:"text"},{default:n(()=>[...e[12]||(e[12]=[a(" 前端 ",-1)])]),_:1}),t(p,{href:"https://github.com/ClassworksDev/ClassworksServer","prepend-icon":"mdi-github",target:"_blank",variant:"text"},{default:n(()=>[...e[13]||(e[13]=[a(" 后端 ",-1)])]),_:1})]),t(U,{class:"mb-4 w-100"}),e[42]||(e[42]=c("h3",{class:"text-h6 mb-2"}," 备注与致谢 ",-1)),t(O,{class:"mb-4 bg-transparent"},{default:n(()=>[t(D,{"append-icon":"mdi-link",href:"https://github.com/EnderWolf006/HomeworkBoard",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[14]||(e[14]=[a(" 本项目受到 HomeworkBoard 的启发而开发 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[15]||(e[15]=[a(" 感谢 EnderWolf006 (@EnderWolf) fhzit(@Hellofhz) KeyFac 等人的贡献 ",-1)])]),_:1})]),_:1}),t(D,{"append-icon":"mdi-link",href:"https://hlyun.org",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[16]||(e[16]=[a(" Classworks 由",-1),c("strong",null,"厚浪云",-1),a("提供 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[17]||(e[17]=[a(" 长江后浪推前浪 浮事新人换旧人 ",-1)])]),_:1})]),_:1}),t(D,{"append-icon":"mdi-link",href:"https://clock.qqhkx.com/",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[18]||(e[18]=[a(" 感谢 沉浸式时钟 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[19]||(e[19]=[a(" https://clock.qqhkx.com/ ",-1)])]),_:1})]),_:1}),t(U,{class:"ma-1"}),t(D,{"append-icon":"mdi-link",href:"https://github.com/HUSX100/IslandCaller",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[20]||(e[20]=[a(" 本项目与 IslandCaller 没有从属关系 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[21]||(e[21]=[a(" IslandCaller 是由 HUSX100 开发的基于 ClassIsland 提醒服务的轻量级点名器 ",-1)])]),_:1})]),_:1}),t(D,{"append-icon":"mdi-link",href:"https://classisland.tech",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[22]||(e[22]=[a(" 本项目与 ClassIsland 没有从属关系 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[23]||(e[23]=[a(" ClassIsland 是由 HelloWRC 开发的适用于班级大屏的课表信息显示工具 ",-1)])]),_:1})]),_:1})]),_:1}),t(p,{class:"mb-4","prepend-icon":"mdi-package-variant",variant:"text",onClick:e[0]||(e[0]=d=>u.showDeps=!0)},{default:n(()=>[...e[24]||(e[24]=[a(" 查看使用的第三方库 ",-1)])]),_:1}),t(we,{modelValue:u.showDeps,"onUpdate:modelValue":e[2]||(e[2]=d=>u.showDeps=d),fullscreen:"",transition:"dialog-bottom-transition"},{default:n(()=>[t(M,null,{default:n(()=>[t(Bt,null,{default:n(()=>[t(p,{icon:"mdi-close",onClick:e[1]||(e[1]=d=>u.showDeps=!1)}),t(Mt,null,{default:n(()=>[...e[25]||(e[25]=[a("使用的第三方库",-1)])]),_:1}),t(Z)]),_:1}),t(j,null,{default:n(()=>[t(O,null,{default:n(()=>[(m(!0),k(H,null,te(u.Dependencies,d=>(m(),h(D,{key:d.name,href:"https://www.npmjs.com/package/"+d.name,"append-icon":"mdi-link",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[a(v(d.name),1)]),_:2},1024),t(ne,null,{default:n(()=>[a(" v"+v(d.version),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:u.showReportDialog,"onUpdate:modelValue":e[5]||(e[5]=d=>u.showReportDialog=d),"max-width":"640"},{default:n(()=>[t(M,null,{default:n(()=>[t(Bt,{density:"compact"},{default:n(()=>[t(p,{icon:"mdi-close",onClick:e[3]||(e[3]=d=>u.showReportDialog=!1)}),t(Mt,null,{default:n(()=>[...e[26]||(e[26]=[a("报告问题",-1)])]),_:1}),t(Z)]),_:1}),t(j,null,{default:n(()=>[e[37]||(e[37]=c("p",{class:"mb-4"}," 调试ID与下方的浏览器环境信息将帮助我们快速定位问题,请在反馈中一并附上。 ",-1)),t(Yn,{class:"mb-3 pa-3 bg-grey-lighten-4 rounded",style:{"max-height":"260px",overflow:"auto"}},{default:n(()=>[c("pre",Ao,v(u.envBoxText),1)]),_:1}),c("div",Io,[t(p,{size:"small",variant:"text","prepend-icon":"mdi-refresh",loading:u.visitorLoading,onClick:u.reloadVisitorId},{default:n(()=>[...e[27]||(e[27]=[a(" 刷新 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{size:"small",variant:"text","prepend-icon":"mdi-content-copy",onClick:u.copyEnvInfo},{default:n(()=>[...e[28]||(e[28]=[a(" 复制信息 ",-1)])]),_:1},8,["onClick"]),t(p,{size:"small",variant:"text","prepend-icon":"mdi-open-in-new",onClick:u.goToDebug},{default:n(()=>[...e[29]||(e[29]=[a(" 查看 /debug 页面 ",-1)])]),_:1},8,["onClick"])]),u.copyOk?(m(),h(Y,{key:0,type:"success",density:"compact",class:"mb-4"},{default:n(()=>[...e[30]||(e[30]=[a(" 已复制到剪贴板 ",-1)])]),_:1})):b("",!0),c("div",To,[t(p,{size:"small",color:"primary",variant:"elevated","prepend-icon":"mdi-message-alert",block:"",onClick:u.openFeedback},{default:n(()=>[...e[31]||(e[31]=[a(" 发送错误反馈到 Sentry ",-1)])]),_:1},8,["onClick"])]),e[38]||(e[38]=c("h4",{class:"text-subtitle-1 mb-2"}," 反馈渠道 ",-1)),t(O,{lines:"one",class:"bg-transparent"},{default:n(()=>[t(D,{href:u.qqGroupLink,target:"_blank","prepend-icon":"mdi-qqchat"},{default:n(()=>[t(z,null,{default:n(()=>[a("QQ群 ("+v(u.qqGroupNumber)+")",1)]),_:1}),t(ne,null,{default:n(()=>[...e[32]||(e[32]=[a("964979747",-1)])]),_:1})]),_:1},8,["href"]),t(D,{href:u.githubIssueUrl,target:"_blank","prepend-icon":"mdi-github"},{default:n(()=>[t(z,null,{default:n(()=>[...e[33]||(e[33]=[a("GitHub Issue",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[34]||(e[34]=[a("ZeroCatDev/Classworks",-1)])]),_:1})]),_:1},8,["href"]),t(D,{href:u.mailtoLink,target:"_blank","prepend-icon":"mdi-email"},{default:n(()=>[t(z,null,{default:n(()=>[...e[35]||(e[35]=[a("邮件",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[36]||(e[36]=[a("sun@wuyuan.dev",-1)])]),_:1})]),_:1},8,["href"])]),_:1})]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:e[4]||(e[4]=d=>u.showReportDialog=!1)},{default:n(()=>[...e[39]||(e[39]=[a(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),c("p",Uo," Copyright © "+v(new Date().getFullYear())+" Sunwuyuan ",1)])]),_:1})]),_:1})]),_:1})]),_:1})}const kn=Q(Co,[["render",jo],["__scopeId","data-v-a69da39b"]]),Bo={name:"Settings",components:{ServerSettingsCard:bn,EditSettingsCard:un,RefreshSettingsCard:dn,DisplaySettingsCard:rn,MessageLog:Rt,SettingsCard:W,StudentListCard:pn,TeacherListCard:fn,AboutCard:kn,DataProviderSettingsCard:wn,EchoChamberCard:Xt,SettingsExplorer:$t,SettingsLinkGenerator:cn,RandomPickerCard:sn,HomeworkTemplateCard:tn,SubjectManagementCard:nn,KvDatabaseCard:gn,HitokotoSettings:ln,NotificationSoundSettings:on,NoiseSettingsCard:an,BackgroundSettingsCard:en},setup(){const{mobile:s}=es();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-microphone",value:"noise"},{title:"通知铃声",icon:"mdi-bell-ring",value:"notification"},{title:"一言",icon:"mdi-comment-quote",value:"hitokoto"},{title:"随机点名",icon:"mdi-dice-multiple",value:"randomPicker"},{title:"背景",icon:"mdi-image",value:"background"},{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=pt(()=>{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,o])=>{Object.entries(o).forEach(([u,i])=>{const l=`${e}.${u}`,d=y(l);i!==d&&(re(l,i)?this.showMessage("设置已更新",`${l} 已保存`):(this.showError("保存失败",`${l} 设置失败`),this.settings[e][u]=d))})})},100)},showMessage(s,e="",o="success"){this.$message[o](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 o=e==="up"?s-1:s+1;o>=0&&o=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(){Te("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 o=this.settings.font.size;s==="up"&&o<100?this.settings.font.size=o+2:s==="down"&&o>16&&(this.settings.font.size=o-2),this.handleSettingsChange(this.settings)},onSettingsSaved(){this.showMessage("设置已更新","您的设置已成功保存")},onSettingUpdate(s,e){this.showMessage("设置已更新",`${s} 已保存为 ${e}`)}}},Mo={class:"settings-page"},No={class:"mt-4"};function Po(s,e,o,u,i,l){const d=kn,f=bn,r=wn,w=gn,x=pn,I=fn,F=cn,$=dn,J=un,he=rn,ae=an,ce=on,le=ln,oe=sn,C=nn,V=tn,T=en,_=W,E=On("developer-settings-card"),q=$t,P=Xt,ee=Rt;return m(),k("div",Mo,[t(ms,{elevation:"1"},{prepend:n(()=>[t(p,{icon:"mdi-arrow-left",variant:"text",onClick:e[0]||(e[0]=A=>s.$router.push("/"))}),t(p,{icon:"mdi-menu",variant:"text",onClick:e[1]||(e[1]=A=>i.drawer=!i.drawer)})]),default:n(()=>[t(cs,{class:"text-h6"},{default:n(()=>[...e[5]||(e[5]=[a(" 设置 ",-1)])]),_:1})]),_:1}),t(bt,{fluid:""},{default:n(()=>[t(Sn,{modelValue:i.drawer,"onUpdate:modelValue":e[2]||(e[2]=A=>i.drawer=A),permanent:!u.isMobile,temporary:u.isMobile},{default:n(()=>[t(O,null,{default:n(()=>[(m(!0),k(H,null,te(i.settingsTabs,A=>(m(),h(D,{key:A.value,active:i.settingsTab===A.value,color:i.settingsTab===A.value?"primary":"default","prepend-icon":A.icon,class:"rounded-e-xl",onClick:X=>i.settingsTab=A.value},{default:n(()=>[t(z,null,{default:n(()=>[a(v(A.title),1)]),_:2},1024)]),_:2},1032,["active","color","prepend-icon","onClick"]))),128))]),_:1})]),_:1},8,["modelValue","permanent","temporary"]),t(fs,{modelValue:i.settingsTab,"onUpdate:modelValue":e[4]||(e[4]=A=>i.settingsTab=A),direction:"vertical",style:{width:"100%"}},{default:n(()=>[t(fe,{value:"index"},{default:n(()=>[t(M,{border:"",class:"service-card gradient-right clickable mb-4",color:"primary",elevation:"8",hover:"",rounded:"xl",variant:"tonal",onClick:l.openClassworksKV},{default:n(()=>[t(ze,null,{default:n(()=>[...e[6]||(e[6]=[c("div",{class:"card-title"},[c("div",null,[c("div",{class:"text-h6"}," 在寻找 Classworks KV ? "),c("div",{class:"text-caption text-medium-emphasis"}," 文档形键值数据库 ")])],-1)])]),_:1}),t(j,null,{default:n(()=>[c("div",No,[t(p,{"append-icon":"mdi-arrow-right",class:"text-none",rounded:"xl",variant:"text",onClick:l.openClassworksKV},{default:n(()=>[...e[7]||(e[7]=[a(" 打开 Classworks KV ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["onClick"]),t(M,{border:"",class:"rounded-xl mb-4",subtitle:"设置",title:"Classworks"},{default:n(()=>[t(j,null,{default:n(()=>[t(Y,{class:"rounded-xl",color:"error",icon:"mdi-alert-circle",variant:"tonal"},{default:n(()=>[...e[8]||(e[8]=[a(" Classworks 是开源免费的软件,官方没有提供任何形式的付费支持服务,源代码仓库地址在 ",-1),c("a",{href:"https://github.com/ZeroCatDev/Classworks",target:"_blank"},"https://github.com/ZeroCatDev/Classworks",-1),a("。如果您通过有偿协助等付费方式取得本应用,在遇到问题时请在与卖家约定的服务框架下,优先向卖家求助。如果卖家没有提供您预期的服务,请退款或通过其它形式积极维护您的合法权益。 ",-1)])]),_:1}),t(Y,{class:"mt-4 rounded-xl",color:"info",icon:"mdi-information",variant:"tonal"},{default:n(()=>[...e[9]||(e[9]=[a(" 请不要使用浏览器清除缓存功能,否则会导致配置丢失。 ",-1),c("del",null,"恶意的操作可能导致您受到贵校教师的处理 ",-1)])]),_:1}),t(Y,{class:"mt-4 rounded-xl",color:"warning",icon:"mdi-information",variant:"tonal"},{default:n(()=>[e[11]||(e[11]=c("p",null," 请不要使用包括但不限于360极速浏览器、360安全浏览器、夸克浏览器、QQ浏览器等浏览器使用 Classworks ,这些浏览器过时且存在严重的一致性问题。在Windows上,使用新版 Microsoft Edge 浏览器是最推荐的选择。 ",-1)),e[12]||(e[12]=c("p",{style:{color:"#666"}}," 上述浏览器商标为其所属公司所有,Classworks™ 与上述浏览器所属公司无竞争关系。 ",-1)),e[13]||(e[13]=c("br",null,null,-1)),t(p,{"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]=[a(" 下载 Microsoft Edge(微软边缘浏览器) ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),t(d)]),_:1}),t(fe,{value:"server"},{default:n(()=>[t(f,{loading:i.loading.server,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"]),t(r,{border:"",class:"mt-4"}),t(w,{border:"",class:"mt-4"})]),_:1}),t(fe,{value:"student"},{default:n(()=>[t(x,{"is-mobile":u.isMobile,border:""},null,8,["is-mobile"]),t(I,{"is-mobile":u.isMobile,border:"",class:"mt-4"},null,8,["is-mobile"])]),_:1}),t(fe,{value:"share"},{default:n(()=>[t(F,{border:"",class:"mt-4"})]),_:1}),t(fe,{value:"refresh"},{default:n(()=>[t($,{loading:i.loading.refresh,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(fe,{value:"edit"},{default:n(()=>[t(J,{loading:i.loading.edit,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(fe,{value:"display"},{default:n(()=>[t(he,{loading:i.loading.display,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(fe,{value:"noise"},{default:n(()=>[t(ae,{border:""})]),_:1}),t(fe,{value:"notification"},{default:n(()=>[t(ce,{border:""})]),_:1}),t(fe,{value:"hitokoto"},{default:n(()=>[t(le,{border:""})]),_:1}),t(fe,{value:"randomPicker"},{default:n(()=>[t(oe,{"is-mobile":u.isMobile,border:""},null,8,["is-mobile"])]),_:1}),t(fe,{value:"subject"},{default:n(()=>[t(C,{border:""}),e[14]||(e[14]=c("br",null,null,-1)),t(V,{border:""})]),_:1}),t(fe,{value:"background"},{default:n(()=>[t(T,{border:""})]),_:1}),t(fe,{value:"developer"},{default:n(()=>[t(_,{border:"",icon:"mdi-developer-board",title:"开发者选项"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-code-tags"})]),append:n(()=>[t(ht,{modelValue:i.settings.developer.enabled,"onUpdate:modelValue":e[3]||(e[3]=A=>i.settings.developer.enabled=A),density:"comfortable","hide-details":"",onChange:l.handleDeveloperChange},null,8,["modelValue","onChange"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[15]||(e[15]=[a("启用开发者选项",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[16]||(e[16]=[a(" 启用后可以查看和修改开发者设置 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),t(E,{loading:i.loading.developer,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"]),i.settings.developer.enabled?(m(),h(M,{key:0,border:"",class:"mt-4 rounded-lg"},{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cog-outline"}),e[17]||(e[17]=a(" 所有设置 ",-1))]),_:1}),t(Ke,null,{default:n(()=>[...e[18]||(e[18]=[a(" 浏览和修改所有可用设置",-1)])]),_:1}),t(j,null,{default:n(()=>[t(q,{onUpdate:l.onSettingUpdate},null,8,["onUpdate"])]),_:1})]),_:1})):b("",!0),i.settings.developer.enabled?(m(),h(R,{key:1,cols:"12"})):b("",!0)]),_:1}),t(fe,{value:"about"},{default:n(()=>[t(d),t(P,{border:"",class:"mt-4"})]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(ee,{ref:"messageLog"},null,512)])}const fa=Q(Bo,[["render",Po]]);export{fa as default}; +`)),oe=L(()=>{const _="https://github.com/ZeroCatDev/Classworks/issues/new",E=encodeURIComponent("问题报告"),q=encodeURIComponent(le.value);return`${_}?title=${E}&body=${q}`}),C=L(()=>{const _=encodeURIComponent("Classworks 问题报告"),E=encodeURIComponent(le.value);return`mailto:sun@wuyuan.dev?subject=${_}&body=${E}`}),V=()=>{console.warn("Sentry Feedback 功能不可用")},U=()=>{window.open("https://afdian.com/a/wydev","_blank")};return Fn(()=>{w()}),{Dependencies:s,showDeps:e,showReportDialog:o,debugIdInput:u,visitorLoading:i,copyOk:l,qqGroupNumber:d,qqGroupLink:f,goToDebug:I,reloadVisitorId:$,openReportDialog:J,copyEnvInfo:he,openFeedback:V,openDonationLink:U,envBoxText:ce,envInfo:ae,reportBody:le,githubIssueUrl:oe,mailtoLink:C}}},Vo={class:"mt-4"},_o={class:"d-flex flex-column align-start"},Do={class:"d-flex gap-2 flex-wrap mb-6"},Ao={class:"text-body-2",style:{"white-space":"pre-wrap",margin:"0"}},Io={class:"d-flex gap-2 flex-wrap mb-4"},To={class:"d-flex gap-2 mb-4"},Uo={class:"text-caption text-medium-emphasis"};function jo(s,e,o,u,i,l){return m(),h(M,{border:"",hover:"",rounded:"xl"},{default:n(()=>[t(ze,null,{prepend:n(()=>[t(g,{class:"mr-2",icon:"mdi-information",size:"large"})]),default:n(()=>[t(K,{class:"text-h6"},{default:n(()=>[...e[6]||(e[6]=[a(" 关于 ",-1)])]),_:1})]),_:1}),t(j,null,{default:n(()=>[t(de,null,{default:n(()=>[t(R,{class:"mx-auto",cols:"12",md:"8"},{default:n(()=>[t(M,{border:"",class:"donation-card gradient-donation clickable mb-6",color:"pink-lighten-4",elevation:"8",hover:"",rounded:"xl",variant:"tonal",onClick:u.openDonationLink},{default:n(()=>[t(ze,null,{default:n(()=>[...e[7]||(e[7]=[c("div",{class:"card-content"},[c("div",null,[c("div",{class:"text-h6 font-weight-bold"}," 请支持我们 Classworks ")])],-1)])]),_:1}),t(j,null,{default:n(()=>[e[9]||(e[9]=c("p",{class:"text-body-2 mb-3"}," 我是Classworks的开发者孙悟元,是一名高二的中国在校学生。Classworks 是一个完全开源免费的项目。如果可以,欢迎打赏。 ",-1)),c("div",Vo,[t(p,{"append-icon":"mdi-heart","aria-label":"Support Classworks on Aifadian",class:"text-none",color:"pink",rounded:"xl",variant:"elevated",onClick:u.openDonationLink},{default:n(()=>[...e[8]||(e[8]=[a(" 爱发电 ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["onClick"]),c("div",_o,[t(et,{class:"mb-4",size:"120"},{default:n(()=>[t(Kt,{alt:"Classworks",src:So})]),_:1}),e[40]||(e[40]=c("h2",{class:"text-h5 mb-2"}," Classworks ",-1)),e[41]||(e[41]=c("p",{class:"text-body-1 mb-4"}," 适用于班级大屏的作业板小工具 ",-1)),c("div",Do,[t(p,{color:"red","prepend-icon":"mdi-bug",variant:"tonal",onClick:u.openReportDialog},{default:n(()=>[...e[10]||(e[10]=[a(" 报告问题 ",-1)])]),_:1},8,["onClick"]),t(p,{color:"primary",href:"https://qm.qq.com/q/qNBX4ZZVeg","prepend-icon":"mdi-qqchat",target:"_blank",variant:"tonal"},{default:n(()=>[...e[11]||(e[11]=[a(" QQ 群 ",-1)])]),_:1}),t(p,{href:"https://github.com/ClassworksDev/Classworks","prepend-icon":"mdi-github",target:"_blank",variant:"text"},{default:n(()=>[...e[12]||(e[12]=[a(" 前端 ",-1)])]),_:1}),t(p,{href:"https://github.com/ClassworksDev/ClassworksServer","prepend-icon":"mdi-github",target:"_blank",variant:"text"},{default:n(()=>[...e[13]||(e[13]=[a(" 后端 ",-1)])]),_:1})]),t(T,{class:"mb-4 w-100"}),e[42]||(e[42]=c("h3",{class:"text-h6 mb-2"}," 备注与致谢 ",-1)),t(O,{class:"mb-4 bg-transparent"},{default:n(()=>[t(D,{"append-icon":"mdi-link",href:"https://github.com/EnderWolf006/HomeworkBoard",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[14]||(e[14]=[a(" 本项目受到 HomeworkBoard 的启发而开发 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[15]||(e[15]=[a(" 感谢 EnderWolf006 (@EnderWolf) fhzit(@Hellofhz) KeyFac 等人的贡献 ",-1)])]),_:1})]),_:1}),t(D,{"append-icon":"mdi-link",href:"https://hlyun.org",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[16]||(e[16]=[a(" Classworks 由",-1),c("strong",null,"厚浪云",-1),a("提供 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[17]||(e[17]=[a(" 长江后浪推前浪 浮事新人换旧人 ",-1)])]),_:1})]),_:1}),t(D,{"append-icon":"mdi-link",href:"https://clock.qqhkx.com/",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[18]||(e[18]=[a(" 感谢 沉浸式时钟 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[19]||(e[19]=[a(" https://clock.qqhkx.com/ ",-1)])]),_:1})]),_:1}),t(T,{class:"ma-1"}),t(D,{"append-icon":"mdi-link",href:"https://github.com/HUSX100/IslandCaller",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[20]||(e[20]=[a(" 本项目与 IslandCaller 没有从属关系 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[21]||(e[21]=[a(" IslandCaller 是由 HUSX100 开发的基于 ClassIsland 提醒服务的轻量级点名器 ",-1)])]),_:1})]),_:1}),t(D,{"append-icon":"mdi-link",href:"https://classisland.tech",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[...e[22]||(e[22]=[a(" 本项目与 ClassIsland 没有从属关系 ",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[23]||(e[23]=[a(" ClassIsland 是由 HelloWRC 开发的适用于班级大屏的课表信息显示工具 ",-1)])]),_:1})]),_:1})]),_:1}),t(p,{class:"mb-4","prepend-icon":"mdi-package-variant",variant:"text",onClick:e[0]||(e[0]=d=>u.showDeps=!0)},{default:n(()=>[...e[24]||(e[24]=[a(" 查看使用的第三方库 ",-1)])]),_:1}),t(we,{modelValue:u.showDeps,"onUpdate:modelValue":e[2]||(e[2]=d=>u.showDeps=d),fullscreen:"",transition:"dialog-bottom-transition"},{default:n(()=>[t(M,null,{default:n(()=>[t(Bt,null,{default:n(()=>[t(p,{icon:"mdi-close",onClick:e[1]||(e[1]=d=>u.showDeps=!1)}),t(Mt,null,{default:n(()=>[...e[25]||(e[25]=[a("使用的第三方库",-1)])]),_:1}),t(Z)]),_:1}),t(j,null,{default:n(()=>[t(O,null,{default:n(()=>[(m(!0),y(H,null,te(u.Dependencies,d=>(m(),h(D,{key:d.name,href:"https://www.npmjs.com/package/"+d.name,"append-icon":"mdi-link",target:"_blank"},{default:n(()=>[t(z,null,{default:n(()=>[a(v(d.name),1)]),_:2},1024),t(ne,null,{default:n(()=>[a(" v"+v(d.version),1)]),_:2},1024)]),_:2},1032,["href"]))),128))]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),t(we,{modelValue:u.showReportDialog,"onUpdate:modelValue":e[5]||(e[5]=d=>u.showReportDialog=d),"max-width":"640"},{default:n(()=>[t(M,null,{default:n(()=>[t(Bt,{density:"compact"},{default:n(()=>[t(p,{icon:"mdi-close",onClick:e[3]||(e[3]=d=>u.showReportDialog=!1)}),t(Mt,null,{default:n(()=>[...e[26]||(e[26]=[a("报告问题",-1)])]),_:1}),t(Z)]),_:1}),t(j,null,{default:n(()=>[e[37]||(e[37]=c("p",{class:"mb-4"}," 调试ID与下方的浏览器环境信息将帮助我们快速定位问题,请在反馈中一并附上。 ",-1)),t(ms,{class:"mb-3 pa-3 bg-grey-lighten-4 rounded",style:{"max-height":"260px",overflow:"auto"}},{default:n(()=>[c("pre",Ao,v(u.envBoxText),1)]),_:1}),c("div",Io,[t(p,{size:"small",variant:"text","prepend-icon":"mdi-refresh",loading:u.visitorLoading,onClick:u.reloadVisitorId},{default:n(()=>[...e[27]||(e[27]=[a(" 刷新 ",-1)])]),_:1},8,["loading","onClick"]),t(p,{size:"small",variant:"text","prepend-icon":"mdi-content-copy",onClick:u.copyEnvInfo},{default:n(()=>[...e[28]||(e[28]=[a(" 复制信息 ",-1)])]),_:1},8,["onClick"]),t(p,{size:"small",variant:"text","prepend-icon":"mdi-open-in-new",onClick:u.goToDebug},{default:n(()=>[...e[29]||(e[29]=[a(" 查看 /debug 页面 ",-1)])]),_:1},8,["onClick"])]),u.copyOk?(m(),h(Y,{key:0,type:"success",density:"compact",class:"mb-4"},{default:n(()=>[...e[30]||(e[30]=[a(" 已复制到剪贴板 ",-1)])]),_:1})):b("",!0),c("div",To,[t(p,{size:"small",color:"primary",variant:"elevated","prepend-icon":"mdi-message-alert",block:"",onClick:u.openFeedback},{default:n(()=>[...e[31]||(e[31]=[a(" 发送错误反馈到 Sentry ",-1)])]),_:1},8,["onClick"])]),e[38]||(e[38]=c("h4",{class:"text-subtitle-1 mb-2"}," 反馈渠道 ",-1)),t(O,{lines:"one",class:"bg-transparent"},{default:n(()=>[t(D,{href:u.qqGroupLink,target:"_blank","prepend-icon":"mdi-qqchat"},{default:n(()=>[t(z,null,{default:n(()=>[a("QQ群 ("+v(u.qqGroupNumber)+")",1)]),_:1}),t(ne,null,{default:n(()=>[...e[32]||(e[32]=[a("964979747",-1)])]),_:1})]),_:1},8,["href"]),t(D,{href:u.githubIssueUrl,target:"_blank","prepend-icon":"mdi-github"},{default:n(()=>[t(z,null,{default:n(()=>[...e[33]||(e[33]=[a("GitHub Issue",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[34]||(e[34]=[a("ZeroCatDev/Classworks",-1)])]),_:1})]),_:1},8,["href"]),t(D,{href:u.mailtoLink,target:"_blank","prepend-icon":"mdi-email"},{default:n(()=>[t(z,null,{default:n(()=>[...e[35]||(e[35]=[a("邮件",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[36]||(e[36]=[a("sun@wuyuan.dev",-1)])]),_:1})]),_:1},8,["href"])]),_:1})]),_:1}),t(ue,null,{default:n(()=>[t(Z),t(p,{variant:"text",onClick:e[4]||(e[4]=d=>u.showReportDialog=!1)},{default:n(()=>[...e[39]||(e[39]=[a(" 关闭 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),c("p",Uo," Copyright © "+v(new Date().getFullYear())+" Sunwuyuan ",1)])]),_:1})]),_:1})]),_:1})]),_:1})}const yn=Q(Co,[["render",jo],["__scopeId","data-v-a69da39b"]]),Bo={name:"Settings",components:{ServerSettingsCard:bn,EditSettingsCard:un,RefreshSettingsCard:dn,DisplaySettingsCard:rn,MessageLog:Rt,SettingsCard:W,StudentListCard:pn,TeacherListCard:fn,AboutCard:yn,DataProviderSettingsCard:wn,EchoChamberCard:Xt,SettingsExplorer:$t,SettingsLinkGenerator:cn,RandomPickerCard:sn,HomeworkTemplateCard:tn,SubjectManagementCard:nn,KvDatabaseCard:gn,HitokotoSettings:ln,NotificationSoundSettings:on,NoiseSettingsCard:an,BackgroundSettingsCard:en},setup(){const{mobile:s}=$n();return{isMobile:s}},data(){return k("server.provider"),{settings:{server:{domain:k("server.domain"),classNumber:k("server.classNumber"),provider:k("server.provider")},refresh:{auto:k("refresh.auto"),interval:k("refresh.interval")},font:{size:k("font.size")},edit:{autoSave:k("edit.autoSave"),blockNonTodayAutoSave:k("edit.blockNonTodayAutoSave"),confirmNonTodaySave:k("edit.confirmNonTodaySave"),refreshBeforeEdit:k("edit.refreshBeforeEdit")},display:{emptySubjectDisplay:k("display.emptySubjectDisplay"),dynamicSort:k("display.dynamicSort"),showRandomButton:k("display.showRandomButton"),showFullscreenButton:k("display.showFullscreenButton")},developer:{enabled:k("developer.enabled"),showDebugConfig:k("developer.showDebugConfig")},message:{showSidebar:k("message.showSidebar"),maxActiveMessages:k("message.maxActiveMessages"),timeout:k("message.timeout"),saveHistory:k("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-microphone",value:"noise"},{title:"通知铃声",icon:"mdi-bell-ring",value:"notification"},{title:"一言",icon:"mdi-comment-quote",value:"hitokoto"},{title:"随机点名",icon:"mdi-dice-multiple",value:"randomPicker"},{title:"背景",icon:"mdi-image",value:"background"},{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=pt(()=>{this.loadAllSettings()}),this.drawer=!this.isMobile},beforeUnmount(){this.unwatchSettings&&this.unwatchSettings()},methods:{openClassworksKV(){window.open(k("server.authDomain"),"_blank")},loadAllSettings(){Object.keys(this.settings).forEach(s=>{Object.keys(this.settings[s]).forEach(e=>{this.settings[s][e]=k(`${s}.${e}`)})})},handleSettingsChange(s){this.settingsChangeTimeout&&clearTimeout(this.settingsChangeTimeout),this.settingsChangeTimeout=setTimeout(()=>{Object.entries(s).forEach(([e,o])=>{Object.entries(o).forEach(([u,i])=>{const l=`${e}.${u}`,d=k(l);i!==d&&(re(l,i)?this.showMessage("设置已更新",`${l} 已保存`):(this.showError("保存失败",`${l} 设置失败`),this.settings[e][u]=d))})})},100)},showMessage(s,e="",o="success"){this.$message[o](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 o=e==="up"?s-1:s+1;o>=0&&o=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(){Te("font.size"),this.settings.font.size=k("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 o=this.settings.font.size;s==="up"&&o<100?this.settings.font.size=o+2:s==="down"&&o>16&&(this.settings.font.size=o-2),this.handleSettingsChange(this.settings)},onSettingsSaved(){this.showMessage("设置已更新","您的设置已成功保存")},onSettingUpdate(s,e){this.showMessage("设置已更新",`${s} 已保存为 ${e}`)}}},Mo={class:"settings-page"},No={class:"mt-4"};function Po(s,e,o,u,i,l){const d=yn,f=bn,r=wn,w=gn,x=pn,I=fn,F=cn,$=dn,J=un,he=rn,ae=an,ce=on,le=ln,oe=sn,C=nn,V=tn,U=en,_=W,E=On("developer-settings-card"),q=$t,P=Xt,ee=Rt;return m(),y("div",Mo,[t(cs,{elevation:"1"},{prepend:n(()=>[t(p,{icon:"mdi-arrow-left",variant:"text",onClick:e[0]||(e[0]=A=>s.$router.push("/"))}),t(p,{icon:"mdi-menu",variant:"text",onClick:e[1]||(e[1]=A=>i.drawer=!i.drawer)})]),default:n(()=>[t(ds,{class:"text-h6"},{default:n(()=>[...e[5]||(e[5]=[a(" 设置 ",-1)])]),_:1})]),_:1}),t(bt,{fluid:""},{default:n(()=>[t(Sn,{modelValue:i.drawer,"onUpdate:modelValue":e[2]||(e[2]=A=>i.drawer=A),permanent:!u.isMobile,temporary:u.isMobile},{default:n(()=>[t(O,null,{default:n(()=>[(m(!0),y(H,null,te(i.settingsTabs,A=>(m(),h(D,{key:A.value,active:i.settingsTab===A.value,color:i.settingsTab===A.value?"primary":"default","prepend-icon":A.icon,class:"rounded-e-xl",onClick:X=>i.settingsTab=A.value},{default:n(()=>[t(z,null,{default:n(()=>[a(v(A.title),1)]),_:2},1024)]),_:2},1032,["active","color","prepend-icon","onClick"]))),128))]),_:1})]),_:1},8,["modelValue","permanent","temporary"]),t(fs,{modelValue:i.settingsTab,"onUpdate:modelValue":e[4]||(e[4]=A=>i.settingsTab=A),direction:"vertical",style:{width:"100%"}},{default:n(()=>[t(fe,{value:"index"},{default:n(()=>[t(M,{border:"",class:"service-card gradient-right clickable mb-4",color:"primary",elevation:"8",hover:"",rounded:"xl",variant:"tonal",onClick:l.openClassworksKV},{default:n(()=>[t(ze,null,{default:n(()=>[...e[6]||(e[6]=[c("div",{class:"card-title"},[c("div",null,[c("div",{class:"text-h6"}," 在寻找 Classworks KV ? "),c("div",{class:"text-caption text-medium-emphasis"}," 文档形键值数据库 ")])],-1)])]),_:1}),t(j,null,{default:n(()=>[c("div",No,[t(p,{"append-icon":"mdi-arrow-right",class:"text-none",rounded:"xl",variant:"text",onClick:l.openClassworksKV},{default:n(()=>[...e[7]||(e[7]=[a(" 打开 Classworks KV ",-1)])]),_:1},8,["onClick"])])]),_:1})]),_:1},8,["onClick"]),t(M,{border:"",class:"rounded-xl mb-4",subtitle:"设置",title:"Classworks"},{default:n(()=>[t(j,null,{default:n(()=>[t(Y,{class:"rounded-xl",color:"error",icon:"mdi-alert-circle",variant:"tonal"},{default:n(()=>[...e[8]||(e[8]=[a(" Classworks 是开源免费的软件,官方没有提供任何形式的付费支持服务,源代码仓库地址在 ",-1),c("a",{href:"https://github.com/ZeroCatDev/Classworks",target:"_blank"},"https://github.com/ZeroCatDev/Classworks",-1),a("。如果您通过有偿协助等付费方式取得本应用,在遇到问题时请在与卖家约定的服务框架下,优先向卖家求助。如果卖家没有提供您预期的服务,请退款或通过其它形式积极维护您的合法权益。 ",-1)])]),_:1}),t(Y,{class:"mt-4 rounded-xl",color:"info",icon:"mdi-information",variant:"tonal"},{default:n(()=>[...e[9]||(e[9]=[a(" 请不要使用浏览器清除缓存功能,否则会导致配置丢失。 ",-1),c("del",null,"恶意的操作可能导致您受到贵校教师的处理 ",-1)])]),_:1}),t(Y,{class:"mt-4 rounded-xl",color:"warning",icon:"mdi-information",variant:"tonal"},{default:n(()=>[e[11]||(e[11]=c("p",null," 请不要使用包括但不限于360极速浏览器、360安全浏览器、夸克浏览器、QQ浏览器等浏览器使用 Classworks ,这些浏览器过时且存在严重的一致性问题。在Windows上,使用新版 Microsoft Edge 浏览器是最推荐的选择。 ",-1)),e[12]||(e[12]=c("p",{style:{color:"#666"}}," 上述浏览器商标为其所属公司所有,Classworks™ 与上述浏览器所属公司无竞争关系。 ",-1)),e[13]||(e[13]=c("br",null,null,-1)),t(p,{"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]=[a(" 下载 Microsoft Edge(微软边缘浏览器) ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),t(d)]),_:1}),t(fe,{value:"server"},{default:n(()=>[t(f,{loading:i.loading.server,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"]),t(r,{border:"",class:"mt-4"}),t(w,{border:"",class:"mt-4"})]),_:1}),t(fe,{value:"student"},{default:n(()=>[t(x,{"is-mobile":u.isMobile,border:""},null,8,["is-mobile"]),t(I,{"is-mobile":u.isMobile,border:"",class:"mt-4"},null,8,["is-mobile"])]),_:1}),t(fe,{value:"share"},{default:n(()=>[t(F,{border:"",class:"mt-4"})]),_:1}),t(fe,{value:"refresh"},{default:n(()=>[t($,{loading:i.loading.refresh,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(fe,{value:"edit"},{default:n(()=>[t(J,{loading:i.loading.edit,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(fe,{value:"display"},{default:n(()=>[t(he,{loading:i.loading.display,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"])]),_:1}),t(fe,{value:"noise"},{default:n(()=>[t(ae,{border:""})]),_:1}),t(fe,{value:"notification"},{default:n(()=>[t(ce,{border:""})]),_:1}),t(fe,{value:"hitokoto"},{default:n(()=>[t(le,{border:""})]),_:1}),t(fe,{value:"randomPicker"},{default:n(()=>[t(oe,{"is-mobile":u.isMobile,border:""},null,8,["is-mobile"])]),_:1}),t(fe,{value:"subject"},{default:n(()=>[t(C,{border:""}),e[14]||(e[14]=c("br",null,null,-1)),t(V,{border:""})]),_:1}),t(fe,{value:"background"},{default:n(()=>[t(U,{border:""})]),_:1}),t(fe,{value:"developer"},{default:n(()=>[t(_,{border:"",icon:"mdi-developer-board",title:"开发者选项"},{default:n(()=>[t(O,null,{default:n(()=>[t(D,null,{prepend:n(()=>[t(g,{class:"mr-3",icon:"mdi-code-tags"})]),append:n(()=>[t(ht,{modelValue:i.settings.developer.enabled,"onUpdate:modelValue":e[3]||(e[3]=A=>i.settings.developer.enabled=A),density:"comfortable","hide-details":"",onChange:l.handleDeveloperChange},null,8,["modelValue","onChange"])]),default:n(()=>[t(z,null,{default:n(()=>[...e[15]||(e[15]=[a("启用开发者选项",-1)])]),_:1}),t(ne,null,{default:n(()=>[...e[16]||(e[16]=[a(" 启用后可以查看和修改开发者设置 ",-1)])]),_:1})]),_:1})]),_:1})]),_:1}),t(E,{loading:i.loading.developer,border:"",onSaved:l.onSettingsSaved},null,8,["loading","onSaved"]),i.settings.developer.enabled?(m(),h(M,{key:0,border:"",class:"mt-4 rounded-lg"},{default:n(()=>[t(K,{class:"d-flex align-center"},{default:n(()=>[t(g,{class:"mr-2",icon:"mdi-cog-outline"}),e[17]||(e[17]=a(" 所有设置 ",-1))]),_:1}),t(Ke,null,{default:n(()=>[...e[18]||(e[18]=[a(" 浏览和修改所有可用设置",-1)])]),_:1}),t(j,null,{default:n(()=>[t(q,{onUpdate:l.onSettingUpdate},null,8,["onUpdate"])]),_:1})]),_:1})):b("",!0),i.settings.developer.enabled?(m(),h(R,{key:1,cols:"12"})):b("",!0)]),_:1}),t(fe,{value:"about"},{default:n(()=>[t(d),t(P,{border:"",class:"mt-4"})]),_:1})]),_:1},8,["modelValue"])]),_:1}),t(ee,{ref:"messageLog"},null,512)])}const pa=Q(Bo,[["render",Po]]);export{pa as default}; diff --git a/assets/socket-debugger-AgrQ1Sap.js b/assets/socket-debugger-CKswW_PL.js similarity index 96% rename from assets/socket-debugger-AgrQ1Sap.js rename to assets/socket-debugger-CKswW_PL.js index 11814af..05e0f08 100644 --- a/assets/socket-debugger-AgrQ1Sap.js +++ b/assets/socket-debugger-CKswW_PL.js @@ -1,4 +1,4 @@ -import{c as Ce,g as I,d as se}from"./socketClient-BKHEsaLg.js";import{_ as Se,e as g,c as D,f as L,g as re,d as k,p as Y,q as _,r as y,t as x,i as ue,h as V}from"./index-DGIAsv4W.js";import{V as Z,a as m}from"./VRow-Cjhiymuu.js";import{V as Q}from"./VChip-mRzIPuM0.js";import{V as we}from"./VTextField-BurlcggD.js";import{V as Le}from"./VTextarea-vGWmTJww.js";import{V as $e}from"./VSwitch-k6hfPfa2.js";import{V as Re}from"./VAlert-BZ4-f-hy.js";import{V as De}from"./VContainer-DZyPrcqa.js";import{b as c,D as Ie,a3 as Te,X as C,Y as H,Z as t,j as n,a1 as o,S as u,k as p,$ as q,_ as z,F as de,a2 as ie,n as Ue,I as Be,e as ce}from"./vendor-vue-BiQC5iF7.js";import"./vendor-socket-dm1FmSOd.js";import"./serverRotation-BtcwvdZJ.js";import"./vendor-vuetify-DsKlzgKp.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(qe){const fe=c(Ce()),$=c(!1),G=c(""),S=c(""),W=c(0),h=c(""),M=c(null),K=c("00:00:00"),X=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(),X.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);K.value=`${String(a).padStart(2,"0")}:${String(i).padStart(2,"0")}:${String(f).padStart(2,"0")}`}else K.value="00:00:00"}let T=null;function ne(){var U;const l=I();T&&le();const e=()=>{var r,B,ae;$.value=!0,G.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,G.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-DJ8u9nXv.js";import{_ as Se,e as g,c as D,f as L,g as re,d as k,p as Y,q as _,r as y,t as x,i as ue,h as V}from"./index-Ceq_468-.js";import{V as Z,a as m}from"./VRow-BiiRXDj9.js";import{V as Q}from"./VChip-BdtDOEwz.js";import{V as we}from"./VTextField-DpXLMPq7.js";import{V as Le}from"./VTextarea-UKN-Avq_.js";import{V as $e}from"./VSwitch-d4Yvphn0.js";import{V as Re}from"./VAlert-C02HdytA.js";import{V as De}from"./VContainer-BisEDTd3.js";import{b as c,D as Ie,a3 as Te,X as C,Y as H,Z as t,j as n,a1 as o,S as u,k as p,$ as q,_ as z,F as de,a2 as ie,n as Ue,I as Be,e as ce}from"./vendor-vue-BiQC5iF7.js";import"./vendor-socket-dm1FmSOd.js";import"./serverRotation-Bs3NH0Jb.js";import"./vendor-vuetify-rtu3DHX4.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(qe){const fe=c(Ce()),$=c(!1),G=c(""),S=c(""),W=c(0),h=c(""),M=c(null),K=c("00:00:00"),X=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(),X.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);K.value=`${String(a).padStart(2,"0")}:${String(i).padStart(2,"0")}:${String(f).padStart(2,"0")}`}else K.value="00:00:00"}let T=null;function ne(){var U;const l=I();T&&le();const e=()=>{var r,B,ae;$.value=!0,G.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,G.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?` `+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(Z,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(Y,{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(G.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(K.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(Z,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(Y,{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(Y,{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})):q("",!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:X.value,"onUpdate:modelValue":e[2]||(e[2]=a=>X.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)):q("",!0)],2))),128)),R.value.length===0?(C(),z("div",Je," 暂无日志 ")):q("",!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(Z,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"])):q("",!0)]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}))}},at=Se(He,[["__scopeId","data-v-a4520d11"]]);export{at as default}; diff --git a/assets/socketClient-BKHEsaLg.js b/assets/socketClient-DJ8u9nXv.js similarity index 88% rename from assets/socketClient-BKHEsaLg.js rename to assets/socketClient-DJ8u9nXv.js index 1092706..4db865b 100644 --- a/assets/socketClient-BKHEsaLg.js +++ b/assets/socketClient-DJ8u9nXv.js @@ -1 +1 @@ -import{l as f}from"./vendor-socket-dm1FmSOd.js";import{n as l}from"./index-DGIAsv4W.js";import{i as a,g as u}from"./serverRotation-BtcwvdZJ.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}),()=>v(n,t)}function v(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-dm1FmSOd.js";import{n as l}from"./index-Ceq_468-.js";import{i as a,g as u}from"./serverRotation-Bs3NH0Jb.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}),()=>v(n,t)}function v(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/vendor-utils-DwALrQNc.js b/assets/vendor-utils-2lvrqI0-.js similarity index 92% rename from assets/vendor-utils-DwALrQNc.js rename to assets/vendor-utils-2lvrqI0-.js index 00a67c8..4ca22dc 100644 --- a/assets/vendor-utils-DwALrQNc.js +++ b/assets/vendor-utils-2lvrqI0-.js @@ -6,4 +6,4 @@ function Dt(e,t){return function(){return e.apply(t,arguments)}}const{toString:E `);return i===-1?"":s.stack.slice(i+1)})();try{if(!r.stack)r.stack=o;else if(o){const i=o.indexOf(` `),c=i===-1?-1:o.indexOf(` `,i+1),l=c===-1?"":o.slice(c+1);String(r.stack).endsWith(l)||(r.stack+=` -`+o)}}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=G(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&Oe.assertOptions(r,{silentJSONParsing:N.transitional(N.boolean),forcedJSONParsing:N.transitional(N.boolean),clarifyTimeoutError:N.transitional(N.boolean),legacyInterceptorReqResOrdering:N.transitional(N.boolean),advertiseZstdAcceptEncoding:N.transitional(N.boolean),validateStatusUndefinedResolves:N.transitional(N.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:Oe.assertOptions(s,{encode:N.function,serialize:N.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Oe.assertOptions(n,{baseUrl:N.spelling("baseURL"),withXsrfToken:N.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[n.method]);o&&a.forEach(["delete","get","head","post","put","patch","query","common"],g=>{delete o[g]}),n.headers=F.concat(i,o);const c=[];let l=!0;this.interceptors.request.forEach(function(S){if(typeof S.runWhen=="function"&&S.runWhen(n)===!1)return;l=l&&S.synchronous;const m=n.transitional||Xe;m&&m.legacyInterceptorReqResOrdering?c.unshift(S.fulfilled,S.rejected):c.push(S.fulfilled,S.rejected)});const f=[];this.interceptors.response.forEach(function(S){f.push(S.fulfilled,S.rejected)});let u,p=0,b;if(!l){const g=[Ot.bind(this),void 0];for(g.unshift(...c),g.push(...f),b=g.length,u=Promise.resolve(n);p{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{r.subscribe(c),o=c}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,c){r.reason||(r.reason=new me(o,i,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new en(function(s){t=s}),cancel:t}}};function ms(e){return function(n){return e.apply(null,n)}}function ys(e){return a.isObject(e)&&e.isAxiosError===!0}const ve={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ve).forEach(([e,t])=>{ve[t]=e});function tn(e){const t=new X(e),n=Dt(X.prototype.request,t);return a.extend(n,X.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return tn(G(e,s))},n}const x=tn(he);x.Axios=X;x.CanceledError=me;x.CancelToken=hs;x.isCancel=Kt;x.VERSION=Ge;x.toFormData=Pe;x.AxiosError=h;x.Cancel=x.CanceledError;x.all=function(t){return Promise.all(t)};x.spread=ms;x.isAxiosError=ys;x.mergeConfig=G;x.AxiosHeaders=F;x.formToJSON=e=>Wt(a.isHTMLForm(e)?new FormData(e):e);x.getAdapter=Yt.getAdapter;x.HttpStatusCode=ve;x.default=x;const{Axios:Ls,AxiosError:Is,CanceledError:js,isCancel:ks,CancelToken:qs,VERSION:Hs,all:Ms,Cancel:zs,isAxiosError:vs,spread:$s,toFormData:Vs,AxiosHeaders:Js,HttpStatusCode:Ws,formToJSON:Ks,getAdapter:Xs,mergeConfig:Zs,create:Gs}=x,nn="3.8.0",bs=nn,oe=typeof Buffer=="function",_t=typeof TextDecoder=="function"?new TextDecoder("utf-8",{ignoreBOM:!0}):void 0,xt=typeof TextEncoder=="function"?new TextEncoder:void 0,ws="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",ue=Array.prototype.slice.call(ws),Re=(e=>{let t={};return e.forEach((n,r)=>t[n]=r),t})(ue),Es=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,P=String.fromCharCode.bind(String),Tt=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):e=>new Uint8Array(Array.prototype.slice.call(e,0)),rn=e=>e.replace(/=/g,"").replace(/[+\/]/g,t=>t=="+"?"-":"_"),sn=e=>e.replace(/[^A-Za-z0-9\+\/]/g,""),on=e=>{let t,n,r,s,o="";const i=e.length%3;for(let c=0;c255||(r=e.charCodeAt(c++))>255||(s=e.charCodeAt(c++))>255)throw new TypeError("invalid character found");t=n<<16|r<<8|s,o+=ue[t>>18&63]+ue[t>>12&63]+ue[t>>6&63]+ue[t&63]}return i?o.slice(0,i-3)+"===".substring(i):o},Ye=typeof btoa=="function"?e=>btoa(e):oe?e=>Buffer.from(e,"binary").toString("base64"):on,$e=oe?e=>Buffer.from(e).toString("base64"):e=>{let n=[];for(let r=0,s=e.length;rt?rn($e(e)):$e(e),Rs=e=>{if(e.length<2){var t=e.charCodeAt(0);return t<128?e:t<2048?P(192|t>>>6)+P(128|t&63):P(224|t>>>12&15)+P(128|t>>>6&63)+P(128|t&63)}else{var t=65536+(e.charCodeAt(0)-55296)*1024+(e.charCodeAt(1)-56320);return P(240|t>>>18&7)+P(128|t>>>12&63)+P(128|t>>>6&63)+P(128|t&63)}},gs=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,an=e=>e.replace(gs,Rs),Ct=oe?e=>Buffer.from(e,"utf8").toString("base64"):xt?e=>$e(xt.encode(e)):e=>Ye(an(e)),ee=(e,t=!1)=>t?rn(Ct(e)):Ct(e),Pt=e=>ee(e,!0),Ss=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,Os=e=>{switch(e.length){case 4:var t=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),n=t-65536;return P((n>>>10)+55296)+P((n&1023)+56320);case 3:return P((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return P((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},cn=e=>e.replace(Ss,Os),ln=e=>{if(e=e.replace(/\s+/g,""),!Es.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(e.length&3));let t,n,r,s=[];for(let o=0;o>16&255)):r===64?s.push(P(t>>16&255,t>>8&255)):s.push(P(t>>16&255,t>>8&255,t&255));return s.join("")},et=typeof atob=="function"?e=>atob(sn(e)):oe?e=>Buffer.from(e,"base64").toString("binary"):ln,un=oe?e=>Tt(Buffer.from(e,"base64")):e=>Tt(et(e).split("").map(t=>t.charCodeAt(0))),fn=e=>un(dn(e)),As=oe?e=>Buffer.from(e,"base64").toString("utf8"):_t?e=>_t.decode(un(e)):e=>cn(et(e)),dn=e=>sn(e.replace(/[-_]/g,t=>t=="-"?"+":"/")),Ve=e=>As(dn(e)),_s=e=>{if(typeof e!="string")return!1;const t=e.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},pn=e=>({value:e,enumerable:!1,writable:!0,configurable:!0}),hn=function(){const e=(t,n)=>Object.defineProperty(String.prototype,t,pn(n));e("fromBase64",function(){return Ve(this)}),e("toBase64",function(t){return ee(this,t)}),e("toBase64URI",function(){return ee(this,!0)}),e("toBase64URL",function(){return ee(this,!0)}),e("toUint8Array",function(){return fn(this)})},mn=function(){const e=(t,n)=>Object.defineProperty(Uint8Array.prototype,t,pn(n));e("toBase64",function(t){return Ae(this,t)}),e("toBase64URI",function(){return Ae(this,!0)}),e("toBase64URL",function(){return Ae(this,!0)})},xs=()=>{hn(),mn()},Qs={version:nn,VERSION:bs,atob:et,atobPolyfill:ln,btoa:Ye,btoaPolyfill:on,fromBase64:Ve,toBase64:ee,encode:ee,encodeURI:Pt,encodeURL:Pt,utob:an,btou:cn,decode:Ve,isValid:_s,fromUint8Array:Ae,toUint8Array:fn,extendString:hn,extendUint8Array:mn,extendBuiltins:xs},C=[];for(let e=0;e<256;++e)C.push((e+256).toString(16).slice(1));function Ts(e,t=0){return(C[e[t+0]]+C[e[t+1]]+C[e[t+2]]+C[e[t+3]]+"-"+C[e[t+4]]+C[e[t+5]]+"-"+C[e[t+6]]+C[e[t+7]]+"-"+C[e[t+8]]+C[e[t+9]]+"-"+C[e[t+10]]+C[e[t+11]]+C[e[t+12]]+C[e[t+13]]+C[e[t+14]]+C[e[t+15]]).toLowerCase()}let qe;const Cs=new Uint8Array(16);function Ps(){if(!qe){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");qe=crypto.getRandomValues.bind(crypto)}return qe(Cs)}const Us=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Ut={randomUUID:Us};function Ds(e,t,n){var s;e=e||{};const r=e.random??((s=e.rng)==null?void 0:s.call(e))??Ps();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=r[6]&15|64,r[8]=r[8]&63|128,Ts(r)}function Ys(e,t,n){return Ut.randomUUID&&!e?Ut.randomUUID():Ds(e)}export{x as a,Qs as g,Ys as v}; +`+o)}}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=G(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&Oe.assertOptions(r,{silentJSONParsing:N.transitional(N.boolean),forcedJSONParsing:N.transitional(N.boolean),clarifyTimeoutError:N.transitional(N.boolean),legacyInterceptorReqResOrdering:N.transitional(N.boolean),advertiseZstdAcceptEncoding:N.transitional(N.boolean),validateStatusUndefinedResolves:N.transitional(N.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:Oe.assertOptions(s,{encode:N.function,serialize:N.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Oe.assertOptions(n,{baseUrl:N.spelling("baseURL"),withXsrfToken:N.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[n.method]);o&&a.forEach(["delete","get","head","post","put","patch","query","common"],g=>{delete o[g]}),n.headers=F.concat(i,o);const c=[];let l=!0;this.interceptors.request.forEach(function(S){if(typeof S.runWhen=="function"&&S.runWhen(n)===!1)return;l=l&&S.synchronous;const m=n.transitional||Xe;m&&m.legacyInterceptorReqResOrdering?c.unshift(S.fulfilled,S.rejected):c.push(S.fulfilled,S.rejected)});const f=[];this.interceptors.response.forEach(function(S){f.push(S.fulfilled,S.rejected)});let u,p=0,b;if(!l){const g=[Ot.bind(this),void 0];for(g.unshift(...c),g.push(...f),b=g.length,u=Promise.resolve(n);p{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{r.subscribe(c),o=c}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,c){r.reason||(r.reason=new me(o,i,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new en(function(s){t=s}),cancel:t}}};function ms(e){return function(n){return e.apply(null,n)}}function ys(e){return a.isObject(e)&&e.isAxiosError===!0}const ve={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ve).forEach(([e,t])=>{ve[t]=e});function tn(e){const t=new X(e),n=Dt(X.prototype.request,t);return a.extend(n,X.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return tn(G(e,s))},n}const x=tn(he);x.Axios=X;x.CanceledError=me;x.CancelToken=hs;x.isCancel=Kt;x.VERSION=Ge;x.toFormData=Pe;x.AxiosError=h;x.Cancel=x.CanceledError;x.all=function(t){return Promise.all(t)};x.spread=ms;x.isAxiosError=ys;x.mergeConfig=G;x.AxiosHeaders=F;x.formToJSON=e=>Wt(a.isHTMLForm(e)?new FormData(e):e);x.getAdapter=Yt.getAdapter;x.HttpStatusCode=ve;x.default=x;const{Axios:Ls,AxiosError:Is,CanceledError:js,isCancel:ks,CancelToken:qs,VERSION:Hs,all:Ms,Cancel:zs,isAxiosError:vs,spread:$s,toFormData:Vs,AxiosHeaders:Js,HttpStatusCode:Ws,formToJSON:Ks,getAdapter:Xs,mergeConfig:Zs,create:Gs}=x,nn="3.8.1",bs=nn,oe=typeof Buffer=="function",_t=typeof TextDecoder=="function"?new TextDecoder("utf-8",{ignoreBOM:!0}):void 0,xt=typeof TextEncoder=="function"?new TextEncoder:void 0,ws="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",ue=Array.prototype.slice.call(ws),Re=(e=>{let t={};return e.forEach((n,r)=>t[n]=r),t})(ue),Es=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,P=String.fromCharCode.bind(String),Tt=typeof Uint8Array.from=="function"?Uint8Array.from.bind(Uint8Array):e=>new Uint8Array(Array.prototype.slice.call(e,0)),rn=e=>e.replace(/=/g,"").replace(/[+\/]/g,t=>t=="+"?"-":"_"),sn=e=>e.replace(/[^A-Za-z0-9\+\/]/g,""),on=e=>{let t,n,r,s,o="";const i=e.length%3;for(let c=0;c255||(r=e.charCodeAt(c++))>255||(s=e.charCodeAt(c++))>255)throw new TypeError("invalid character found");t=n<<16|r<<8|s,o+=ue[t>>18&63]+ue[t>>12&63]+ue[t>>6&63]+ue[t&63]}return i?o.slice(0,i-3)+"===".substring(i):o},Ye=typeof btoa=="function"?e=>btoa(e):oe?e=>{if(/[^\x00-\xff]/.test(e))throw new TypeError("invalid character found");return Buffer.from(e,"binary").toString("base64")}:on,$e=oe?e=>Buffer.from(e).toString("base64"):e=>{let n=[];for(let r=0,s=e.length;rt?rn($e(e)):$e(e),Rs=e=>{if(e.length<2){var t=e.charCodeAt(0);return t<128?e:t<2048?P(192|t>>>6)+P(128|t&63):P(224|t>>>12&15)+P(128|t>>>6&63)+P(128|t&63)}else{var t=65536+(e.charCodeAt(0)-55296)*1024+(e.charCodeAt(1)-56320);return P(240|t>>>18&7)+P(128|t>>>12&63)+P(128|t>>>6&63)+P(128|t&63)}},gs=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,an=e=>e.replace(gs,Rs),Ct=oe?e=>Buffer.from(e,"utf8").toString("base64"):xt?e=>$e(xt.encode(e)):e=>Ye(an(e)),ee=(e,t=!1)=>t?rn(Ct(e)):Ct(e),Pt=e=>ee(e,!0),Ss=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,Os=e=>{switch(e.length){case 4:var t=(7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3),n=t-65536;return P((n>>>10)+55296)+P((n&1023)+56320);case 3:return P((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return P((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},cn=e=>e.replace(Ss,Os),ln=e=>{if(e=e.replace(/\s+/g,""),!Es.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(e.length&3));let t,n,r,s=[];for(let o=0;o>16&255)):r===64?s.push(P(t>>16&255,t>>8&255)):s.push(P(t>>16&255,t>>8&255,t&255));return s.join("")},et=typeof atob=="function"?e=>atob(sn(e)):oe?e=>Buffer.from(e,"base64").toString("binary"):ln,un=oe?e=>Tt(Buffer.from(e,"base64")):e=>Tt(et(e).split("").map(t=>t.charCodeAt(0))),fn=e=>un(dn(e)),As=oe?e=>Buffer.from(e,"base64").toString("utf8"):_t?e=>_t.decode(un(e)):e=>cn(et(e)),dn=e=>sn(e.replace(/[-_]/g,t=>t=="-"?"+":"/")),Ve=e=>As(dn(e)),_s=e=>{if(typeof e!="string")return!1;const t=e.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},pn=e=>({value:e,enumerable:!1,writable:!0,configurable:!0}),hn=function(){const e=(t,n)=>Object.defineProperty(String.prototype,t,pn(n));e("fromBase64",function(){return Ve(this)}),e("toBase64",function(t){return ee(this,t)}),e("toBase64URI",function(){return ee(this,!0)}),e("toBase64URL",function(){return ee(this,!0)}),e("toUint8Array",function(){return fn(this)})},mn=function(){const e=(t,n)=>Object.defineProperty(Uint8Array.prototype,t,pn(n));e("toBase64",function(t){return Ae(this,t)}),e("toBase64URI",function(){return Ae(this,!0)}),e("toBase64URL",function(){return Ae(this,!0)})},xs=()=>{hn(),mn()},Qs={version:nn,VERSION:bs,atob:et,atobPolyfill:ln,btoa:Ye,btoaPolyfill:on,fromBase64:Ve,toBase64:ee,encode:ee,encodeURI:Pt,encodeURL:Pt,utob:an,btou:cn,decode:Ve,isValid:_s,fromUint8Array:Ae,toUint8Array:fn,extendString:hn,extendUint8Array:mn,extendBuiltins:xs},C=[];for(let e=0;e<256;++e)C.push((e+256).toString(16).slice(1));function Ts(e,t=0){return(C[e[t+0]]+C[e[t+1]]+C[e[t+2]]+C[e[t+3]]+"-"+C[e[t+4]]+C[e[t+5]]+"-"+C[e[t+6]]+C[e[t+7]]+"-"+C[e[t+8]]+C[e[t+9]]+"-"+C[e[t+10]]+C[e[t+11]]+C[e[t+12]]+C[e[t+13]]+C[e[t+14]]+C[e[t+15]]).toLowerCase()}let qe;const Cs=new Uint8Array(16);function Ps(){if(!qe){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");qe=crypto.getRandomValues.bind(crypto)}return qe(Cs)}const Us=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto),Ut={randomUUID:Us};function Ds(e,t,n){var s;e=e||{};const r=e.random??((s=e.rng)==null?void 0:s.call(e))??Ps();if(r.length<16)throw new Error("Random bytes length must be >= 16");return r[6]=r[6]&15|64,r[8]=r[8]&63|128,Ts(r)}function Ys(e,t,n){return Ut.randomUUID&&!e?Ut.randomUUID():Ds(e)}export{x as a,Qs as g,Ys as v}; diff --git a/assets/vendor-vuetify-DsKlzgKp.js b/assets/vendor-vuetify-rtu3DHX4.js similarity index 99% rename from assets/vendor-vuetify-DsKlzgKp.js rename to assets/vendor-vuetify-rtu3DHX4.js index 7d82e19..347ed7d 100644 --- a/assets/vendor-vuetify-DsKlzgKp.js +++ b/assets/vendor-vuetify-rtu3DHX4.js @@ -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);M&&G(c,()=>{O.patch(g)})}else M?(h.addHeadObjs(k(g)),ke(()=>h.updateDOM())):h.addHeadObjs(g())}else{let g=function(){Fa(t.stylesheetId,t.cspNonce,c.value)};M?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 C=new Proxy(s,{get(d,h){return Reflect.get(d,h)},set(d,h,g){return h==="value"&&Tn(`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:C,current:i}}}function Gs(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 Us(){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(M){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,Zs=U({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),Ks=U({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function _s(){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 Xs(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 qs(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"}})),C=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=>C.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(()=>C.value.findIndex(J=>J.id===D)),Te=S(()=>n.value+m.value.length*2-Ze.value*2),sn=S(()=>{const J=x.value==="left"||x.value==="right",Ce=x.value==="right",un=x.value==="bottom",Me=B.value??I.value,cn=Me===0?"%":"px",Ke={[x.value]:0,zIndex:Te.value,transform:`translate${J?"X":"Y"}(${(q.value?0:-(Me===0?100:Me))*(Ce||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=C.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:Ce?void 0:`${P.left}px`,right:Ce?`${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:Te.value-1}));return{layoutItemStyles:sn,layoutItemScrimStyles:on,zIndex:Te}},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:C,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:C,layoutRect:f,layoutRef:c}}function Na(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:t,...n}=e,r=T(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=Tr(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),M&&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 C(){i.stop()}return{install:E,unmount:C,defaults:u,display:c,theme:f,icons:l,locale:m,date:p,goTo:y}})}const La="3.12.8";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,fs as B,Cr as C,ts as D,M as E,ja as F,N as G,ys as H,Sr as I,$s as J,Qa as K,Ps as L,vs as M,hs as N,ps as O,Mn as P,ms as Q,ds as R,Va as S,bs as T,gs as U,zt as V,ss as W,Vn as X,Ds as Y,Ss as Z,as as _,xs as a,Ys as a0,ls as a1,Cs as a2,Is as a3,ws as a4,Fn as a5,Ms as a6,_s as a7,Rt as a8,xe as a9,Fs as aA,Ga as aB,Xs as aC,Ks as aD,Hs as aE,Ft as aF,js as aG,tt as aH,rs as aI,Hn as aJ,is as aK,Ua as aL,us as aM,_a as aN,cs as aO,Wn as aP,os as aQ,Bs as aR,Ws as aS,wa as aT,Ts as aa,Os as ab,As as ac,Ns as ad,ce as ae,Tn as af,es as ag,ve as ah,Ya as ai,On as aj,Bn as ak,qs as al,Zs as am,Pr as an,Za as ao,Nn as ap,qa as aq,Qe as ar,$t as as,Xa as at,za as au,Es as av,Ha as aw,$e as ax,ns as ay,Vs as az,L as b,Na as c,Ja as d,lr as e,jt as f,dr as g,Gs as h,nr as i,ks as j,fr as k,W as l,zs as m,Mr as n,br as o,U as p,te as q,Re as r,me as s,Us as t,Rs as u,Ls 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);M&&G(c,()=>{O.patch(g)})}else M?(h.addHeadObjs(k(g)),ke(()=>h.updateDOM())):h.addHeadObjs(g())}else{let g=function(){Fa(t.stylesheetId,t.cspNonce,c.value)};M?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 C=new Proxy(s,{get(d,h){return Reflect.get(d,h)},set(d,h,g){return h==="value"&&Tn(`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:C,current:i}}}function Gs(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 Us(){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(M){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,Zs=U({overlaps:{type:Array,default:()=>[]},fullHeight:Boolean},"layout"),Ks=U({name:{type:String},order:{type:[Number,String],default:0},absolute:Boolean},"layout-item");function _s(){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 Xs(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 qs(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"}})),C=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=>C.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(()=>C.value.findIndex(J=>J.id===D)),Te=S(()=>n.value+m.value.length*2-Ze.value*2),sn=S(()=>{const J=x.value==="left"||x.value==="right",Ce=x.value==="right",un=x.value==="bottom",Me=B.value??I.value,cn=Me===0?"%":"px",Ke={[x.value]:0,zIndex:Te.value,transform:`translate${J?"X":"Y"}(${(q.value?0:-(Me===0?100:Me))*(Ce||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=C.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:Ce?void 0:`${P.left}px`,right:Ce?`${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:Te.value-1}));return{layoutItemStyles:sn,layoutItemScrimStyles:on,zIndex:Te}},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:C,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:C,layoutRect:f,layoutRef:c}}function Na(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{blueprint:t,...n}=e,r=T(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=Tr(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),M&&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 C(){i.stop()}return{install:E,unmount:C,defaults:u,display:c,theme:f,icons:l,locale:m,date:p,goTo:y}})}const La="3.12.9";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,fs as B,Cr as C,ts as D,M as E,ja as F,N as G,ys as H,Sr as I,$s as J,Qa as K,Ps as L,vs as M,hs as N,ps as O,Mn as P,ms as Q,ds as R,Va as S,bs as T,gs as U,zt as V,ss as W,Vn as X,Ds as Y,Ss as Z,as as _,xs as a,Ys as a0,ls as a1,Cs as a2,Is as a3,ws as a4,Fn as a5,Ms as a6,_s as a7,Rt as a8,xe as a9,Wn as aA,os as aB,Xs as aC,Ks as aD,Hs as aE,Ft as aF,js as aG,Nn as aH,tt as aI,qa as aJ,rs as aK,Hn as aL,is as aM,Ua as aN,us as aO,_a as aP,cs as aQ,Bs as aR,Ws as aS,wa as aT,Ts as aa,Os as ab,As as ac,Ns as ad,ce as ae,Tn as af,es as ag,ve as ah,Ya as ai,On as aj,Bn as ak,qs as al,Zs as am,Pr as an,Qe as ao,$t as ap,Xa as aq,za as ar,Za as as,Es as at,Ha as au,$e as av,ns as aw,Vs as ax,Fs as ay,Ga as az,L as b,Na as c,Ja as d,lr as e,jt as f,dr as g,Gs as h,nr as i,ks as j,fr as k,W as l,zs as m,Mr as n,br as o,U as p,te as q,Re as r,me as s,Us as t,Rs as u,Ls as v,Ka as w,Rn as x,$a as y,He as z}; diff --git a/assets/visitorId-D_nwlNzA.js b/assets/visitorId-D2J8zjxI.js similarity index 85% rename from assets/visitorId-D_nwlNzA.js rename to assets/visitorId-D2J8zjxI.js index 90f9f1f..dbc981c 100644 --- a/assets/visitorId-D_nwlNzA.js +++ b/assets/visitorId-D2J8zjxI.js @@ -1 +1 @@ -import{x as e}from"./index-DGIAsv4W.js";import"./vendor-vuetify-DsKlzgKp.js";import"./vendor-vue-BiQC5iF7.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-p88LZBod.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{x as e}from"./index-Ceq_468-.js";import"./vendor-vuetify-rtu3DHX4.js";import"./vendor-vue-BiQC5iF7.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-p88LZBod.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 230a567..afca991 100644 --- a/index.html +++ b/index.html @@ -47,9 +47,9 @@ - + - + diff --git a/sw.js b/sw.js index 816f7a5..3bbb34f 100644 --- a/sw.js +++ b/sw.js @@ -1 +1 @@ -if(!self.define){let s,e={};const i=(i,n)=>(i=new URL(i+".js",n).href,e[i]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()}).then(()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didn’t register its module`);return s}));self.define=(n,l)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let a={};const u=s=>i(s,r),o={module:{uri:r},exports:a,require:u};e[r]=Promise.all(n.map(s=>o[s]||u(s))).then(s=>(l(...s),a))}}define(["./workbox-7334f08a"],function(s){"use strict";importScripts("sw-cache-manager.js"),self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"sw-cache-manager.js",revision:"e1c99eed8d27ad84cb5fc7c56efd223b"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"manifest.webmanifest",revision:"81f614d50e129c134b1d5ddd6a19081e"},{url:"index.html",revision:"3c2e9b15f242db6e80aa93721b08aa51"},{url:"favicon.ico",revision:"8e3a55390cf66d227f765a6063bb6c31"},{url:"banner.png",revision:"98c56bcdd08a6e6e50c613f73e270353"},{url:"328a0e159cf9b3fb3caacaab9c83bf17.txt",revision:"d06a7b1a4998b04f6c949893fa6b3c3b"},{url:"sounds/Teams 默认通话铃.mp3",revision:"bda21cf4dbfbac23f7c078d02b136f0c"},{url:"sounds/Teams 默认.mp3",revision:"7d0ea80d3ab8272d8f28a4ad4e6ef238"},{url:"sounds/Teams 高分.mp3",revision:"b5342507ead401ddc8e9ad27b684cf29"},{url:"sounds/Teams 颤振.mp3",revision:"7d92c46c0ca199446c1fd72d0504b7d7"},{url:"sounds/Teams 重复振铃.mp3",revision:"fb902955f401306811d6cd51d14c6c97"},{url:"sounds/Teams 进阶.mp3",revision:"9edb48fc85646c06728f727334f153c4"},{url:"sounds/Teams 轻弹.mp3",revision:"3c22478acb22b9825374bc386626e1e5"},{url:"sounds/Teams 赋予希望.mp3",revision:"61d4dbcf5f3af0be8b237864b566f647"},{url:"sounds/Teams 警报.mp3",revision:"13185400beeaab47be5d9f05fc469b4a"},{url:"sounds/Teams 蜂鸣声.mp3",revision:"60894252e2c86a66bb36f581b36c6c56"},{url:"sounds/Teams 点击.mp3",revision:"7f0ac7ce255b0440aa1ff460ae534418"},{url:"sounds/Teams 滴水.mp3",revision:"56d6127071c4514a0230061d6e692205"},{url:"sounds/Teams 波纹.mp3",revision:"67d993bbe556c6b06f0c1de58b5ffc79"},{url:"sounds/Teams 波普.mp3",revision:"a2092a6219357df7f239cc59cbb2447f"},{url:"sounds/Teams 气泡.mp3",revision:"bf21272379428e85205f66592894b881"},{url:"sounds/Teams 气泡(大声).mp3",revision:"ccbffede0f91fb2fc4c1e3b700885299"},{url:"sounds/Teams 时空.mp3",revision:"21d5f825d18cf541314659eb058ea997"},{url:"sounds/Teams 摇摆.mp3",revision:"cc593fc7586d4ca8f357324caed7392b"},{url:"sounds/Teams 提醒.mp3",revision:"1bb92bf7e9ff6c7580bd4c07b0da5d26"},{url:"sounds/Teams 弹拨.mp3",revision:"dbca54d79ab2dc7f58e0c815d1e52c76"},{url:"sounds/Teams 尤里卡.mp3",revision:"f959ac97e8113c13fbef4640d701bb46"},{url:"sounds/Teams 增强.mp3",revision:"aff4c45773c33ee949dbb2fd176ead9c"},{url:"sounds/Teams 叮铃.mp3",revision:"740bf4b245b232b81cb46beccd085ffc"},{url:"sounds/Teams 召唤.mp3",revision:"5f22a60afb21d7ef32c02ef604a0586a"},{url:"sounds/Teams 共鸣.mp3",revision:"0da491cc59a0a2c88e1cdfdb26e31194"},{url:"sounds/Teams 优先处理.mp3",revision:"5117fd6695056edd9fe7d13bdd981bbc"},{url:"sounds/Teams teams_notification.mp3",revision:"c0a3e466772e808ff0cfa0e9c76e4440"},{url:"sounds/Teams teams_meet_up_reminder.mp3",revision:"c18a464074c423def70a420418b80365"},{url:"sounds/Teams screenshare_ring.mp3",revision:"c18a464074c423def70a420418b80365"},{url:"sounds/Teams meetup_ring.mp3",revision:"ec5fdebfd3fa2f4f9f60673074a4e35e"},{url:"sounds/Teams incoming-ringtone-level40.mp3",revision:"d7298eb35126dd4f60d07e6aaeeae96f"},{url:"sounds/Teams incoming-ringtone-level30.mp3",revision:"dbe2f213d90800fb9b02aca8356b2e44"},{url:"sounds/Teams bounce.mp3",revision:"2ddc0b2c7e515045d31276dbd20cc5e3"},{url:"sounds/Teams Remix.mp3",revision:"bdbc0b25f3c1a1d09a157ae5923573cd"},{url:"sounds/Teams Ping.mp3",revision:"9c4446c079e89828abcae8aca5663c12"},{url:"pwa/image/pwa-64x64.png",revision:"b4ca4c3d8333391f20cddbb3f6cca2df"},{url:"pwa/image/pwa-512x512.png",revision:"57cc60501279a6d172b32211b1c67688"},{url:"pwa/image/pwa-192x192.png",revision:"81802c789e8b735f7f8b181f002932f8"},{url:"pwa/image/maskable-icon-512x512.png",revision:"dfa412c4bbe0f716216ac5db7a4c706d"},{url:"pwa/image/logo.svg",revision:"899b27b2269e41899c7422cfa4c389e5"},{url:"pwa/image/favicon.ico",revision:"8e3a55390cf66d227f765a6063bb6c31"},{url:"pwa/image/apple-touch-icon-180x180.png",revision:"3180606ea2115ea1af7e66dbeb1b28fd"},{url:"assets/visitorId-D_nwlNzA.js",revision:null},{url:"assets/vendor-vuetify-DsKlzgKp.js",revision:null},{url:"assets/vendor-vue-BiQC5iF7.js",revision:null},{url:"assets/vendor-utils-DwALrQNc.js",revision:null},{url:"assets/vendor-socket-dm1FmSOd.js",revision:null},{url:"assets/soundList-D9U-Grcp.js",revision:null},{url:"assets/socketClient-BKHEsaLg.js",revision:null},{url:"assets/socket-debugger-B22H3Il3.css",revision:null},{url:"assets/socket-debugger-AgrQ1Sap.js",revision:null},{url:"assets/settings-DjXlifwc.js",revision:null},{url:"assets/settings-BxfdCqX7.css",revision:null},{url:"assets/serverRotation-BtcwvdZJ.js",revision:null},{url:"assets/materialdesignicons-webfont-Dp5v-WZN.woff2",revision:null},{url:"assets/materialdesignicons-webfont-B7mPwVP_.ttf",revision:null},{url:"assets/index-ghQi_28l.js",revision:null},{url:"assets/index-Yfd4JoUB.css",revision:null},{url:"assets/index-DdToQrR8.js",revision:null},{url:"assets/index-DGIAsv4W.js",revision:null},{url:"assets/index-DCuIjJC4.js",revision:null},{url:"assets/index-BFmbztHq.css",revision:null},{url:"assets/index-7Awvo4-J.js",revision:null},{url:"assets/fp.esm-p88LZBod.js",revision:null},{url:"assets/examschedule-D7wPNFui.css",revision:null},{url:"assets/examschedule-BZ-idwf4.js",revision:null},{url:"assets/deviceEvents-HN9RDua9.js",revision:null},{url:"assets/default-VxHjJPAZ.js",revision:null},{url:"assets/default-CmdaPMSp.css",revision:null},{url:"assets/debug-socket-iwz8uZ6l.js",revision:null},{url:"assets/debug-init-57thZXh2.js",revision:null},{url:"assets/debug-DCZMB0S_.js",revision:null},{url:"assets/debug-CbS14biG.css",revision:null},{url:"assets/dataProvider-GWPC-0Vt.js",revision:null},{url:"assets/cses2wakeup-DRhHxOpY.js",revision:null},{url:"assets/cses2wakeup-DFUa6tSq.css",revision:null},{url:"assets/core-Cy2g3AD-.js",revision:null},{url:"assets/authorize-CZL9tEmI.js",revision:null},{url:"assets/_id_-DjPmieQy.js",revision:null},{url:"assets/_id_-DMpTK4Oz.js",revision:null},{url:"assets/VTooltip-D7EaNDeY.css",revision:null},{url:"assets/VTooltip-2IUjfpCS.js",revision:null},{url:"assets/VTimePicker-BkWY3_8P.css",revision:null},{url:"assets/VTimePicker-BApLLZ8X.js",revision:null},{url:"assets/VTextarea-vGWmTJww.js",revision:null},{url:"assets/VTextarea-_xVwaw_z.css",revision:null},{url:"assets/VTextField-DTDEIDq0.css",revision:null},{url:"assets/VTextField-BurlcggD.js",revision:null},{url:"assets/VTabs-DqmvmKGK.js",revision:null},{url:"assets/VTabs-566n5b08.css",revision:null},{url:"assets/VTable-Cq72iBVc.js",revision:null},{url:"assets/VTable-CNLJxQof.css",revision:null},{url:"assets/VSwitch-k6hfPfa2.js",revision:null},{url:"assets/VSwitch-Bk42mIwg.css",revision:null},{url:"assets/VSkeletonLoader-DwE_iqTb.js",revision:null},{url:"assets/VSkeletonLoader-C11ZEozu.css",revision:null},{url:"assets/VSheet-DxsDksIw.css",revision:null},{url:"assets/VSheet-BBnSA_kJ.js",revision:null},{url:"assets/VSelect-oxA0t9CG.js",revision:null},{url:"assets/VSelect-DHZViySU.css",revision:null},{url:"assets/VRow-D2ArqUC2.css",revision:null},{url:"assets/VRow-Cjhiymuu.js",revision:null},{url:"assets/VPicker-SM18M-iq.js",revision:null},{url:"assets/VPicker-Dm9DplUc.css",revision:null},{url:"assets/VPagination-DLzhjdaP.js",revision:null},{url:"assets/VPagination-BF2MZmld.css",revision:null},{url:"assets/VForm-ObW_L7SS.js",revision:null},{url:"assets/VExpansionPanels-kEj4ZJQK.css",revision:null},{url:"assets/VExpansionPanels-BDI8gHu5.js",revision:null},{url:"assets/VDatePicker-zglzEVGT.css",revision:null},{url:"assets/VDatePicker-CuGF0KeL.js",revision:null},{url:"assets/VDataTable-DmTCHg4b.js",revision:null},{url:"assets/VDataTable-Cl7qiDOP.css",revision:null},{url:"assets/VContainer-DZyPrcqa.js",revision:null},{url:"assets/VContainer-B1KSavhG.css",revision:null},{url:"assets/VCombobox-r6cc1Iy_.css",revision:null},{url:"assets/VCombobox-BGa7K58w.js",revision:null},{url:"assets/VChip-mRzIPuM0.js",revision:null},{url:"assets/VChip-Dmz_1Lnv.css",revision:null},{url:"assets/VCheckboxBtn-BKcSogH0.js",revision:null},{url:"assets/VCheckbox-ZL-u1kGB.css",revision:null},{url:"assets/VCheckbox-BRi_fHJs.js",revision:null},{url:"assets/VAutocomplete-Ygy_KjMW.css",revision:null},{url:"assets/VAutocomplete-N0zTUlyj.js",revision:null},{url:"assets/VAppBarTitle-DheyIZnb.js",revision:null},{url:"assets/VAppBarTitle-CczdD-Q2.css",revision:null},{url:"assets/VAlert-D_OX1cfW.css",revision:null},{url:"assets/VAlert-BZ4-f-hy.js",revision:null},{url:"assets/UrgentTestDialog-BqTcJt8c.js",revision:null},{url:"assets/UrgentTestDialog-65OEJ5uz.css",revision:null},{url:"assets/StudentNameManager-tn0RQdqM.css",revision:null},{url:"assets/StudentNameManager-DB-P5C67.js",revision:null},{url:"assets/RandomPicker-CsXS_sbB.js",revision:null},{url:"assets/RandomPicker-CU-edGvg.css",revision:null},{url:"assets/PwaInstallCard-DM1cBO1c.js",revision:null},{url:"assets/MessageLog-CZsTVP4i.js",revision:null},{url:"assets/MessageLog-BGkFwivK.css",revision:null},{url:"assets/InitServiceChooser-Cm36vuZZ.js",revision:null},{url:"assets/InitServiceChooser-BSZJBnhr.css",revision:null},{url:"assets/HomeworkEditDialog-DSAcf9mw.css",revision:null},{url:"assets/HomeworkEditDialog-BpaBTmY_.js",revision:null},{url:"assets/FloatingToolbar-BZD3ZR8B.js",revision:null},{url:"assets/FloatingToolbar-5gVX85mk.css",revision:null},{url:"assets/ExamScheduleCard-DhbbmO7J.js",revision:null},{url:"assets/ExamScheduleCard-BJuKYvRa.css",revision:null},{url:"assets/ExamConfigEditor-HgNV6CVV.css",revision:null},{url:"assets/ExamConfigEditor-BVwEXehR.js",revision:null},{url:"assets/ChatWidget-ChgL-O5B.css",revision:null},{url:"assets/ChatWidget-BXhjl6gS.js",revision:null},{url:"assets/CacheManagement-3L-v8_PB.js",revision:null},{url:"assets/AttendanceSidebar-DmtvE998.js",revision:null},{url:"assets/AttendanceManagementDialog-D0prZwJd.css",revision:null},{url:"assets/AttendanceManagementDialog-BpjEre5P.js",revision:null},{url:"assets/404-D89xq0CT.js",revision:null},{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:"81f614d50e129c134b1d5ddd6a19081e"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{denylist:[/^\/api\//,/^\/socket\.io\//]})),s.registerRoute(({url:s,sameOrigin:e})=>e&&s.pathname.startsWith("/assets/"),new s.CacheFirst({cacheName:"assets-cache",plugins:[new s.ExpirationPlugin({maxEntries:200,maxAgeSeconds:5184e3}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),s.registerRoute(({url:s,sameOrigin:e})=>e&&s.pathname.startsWith("/sounds/"),new s.CacheFirst({cacheName:"sound-cache",plugins:[new s.ExpirationPlugin({maxEntries:80,maxAgeSeconds:2592e3}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),s.registerRoute(({url:s,sameOrigin:e})=>e&&s.pathname.startsWith("/pwa/"),new s.StaleWhileRevalidate({cacheName:"pwa-cache",plugins:[new s.ExpirationPlugin({maxEntries:50,maxAgeSeconds:604800}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),s.registerRoute(({url:s,sameOrigin:e})=>{if(!e)return!1;const i=s.pathname;return!(i.includes("/assets/")||i.includes("/pwa/")||i.includes("/sounds/"))},new s.NetworkFirst({cacheName:"other-resources",networkTimeoutSeconds:10,plugins:[new s.ExpirationPlugin({maxEntries:100,maxAgeSeconds:86400}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET")}); +if(!self.define){let s,e={};const i=(i,n)=>(i=new URL(i+".js",n).href,e[i]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()}).then(()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didn’t register its module`);return s}));self.define=(n,l)=>{const r=s||("document"in self?document.currentScript.src:"")||location.href;if(e[r])return;let a={};const u=s=>i(s,r),o={module:{uri:r},exports:a,require:u};e[r]=Promise.all(n.map(s=>o[s]||u(s))).then(s=>(l(...s),a))}}define(["./workbox-7334f08a"],function(s){"use strict";importScripts("sw-cache-manager.js"),self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"sw-cache-manager.js",revision:"e1c99eed8d27ad84cb5fc7c56efd223b"},{url:"registerSW.js",revision:"402b66900e731ca748771b6fc5e7a068"},{url:"manifest.webmanifest",revision:"81f614d50e129c134b1d5ddd6a19081e"},{url:"index.html",revision:"9bffefd42b35f2b80ea820a180203ea2"},{url:"favicon.ico",revision:"8e3a55390cf66d227f765a6063bb6c31"},{url:"banner.png",revision:"98c56bcdd08a6e6e50c613f73e270353"},{url:"328a0e159cf9b3fb3caacaab9c83bf17.txt",revision:"d06a7b1a4998b04f6c949893fa6b3c3b"},{url:"sounds/Teams 默认通话铃.mp3",revision:"bda21cf4dbfbac23f7c078d02b136f0c"},{url:"sounds/Teams 默认.mp3",revision:"7d0ea80d3ab8272d8f28a4ad4e6ef238"},{url:"sounds/Teams 高分.mp3",revision:"b5342507ead401ddc8e9ad27b684cf29"},{url:"sounds/Teams 颤振.mp3",revision:"7d92c46c0ca199446c1fd72d0504b7d7"},{url:"sounds/Teams 重复振铃.mp3",revision:"fb902955f401306811d6cd51d14c6c97"},{url:"sounds/Teams 进阶.mp3",revision:"9edb48fc85646c06728f727334f153c4"},{url:"sounds/Teams 轻弹.mp3",revision:"3c22478acb22b9825374bc386626e1e5"},{url:"sounds/Teams 赋予希望.mp3",revision:"61d4dbcf5f3af0be8b237864b566f647"},{url:"sounds/Teams 警报.mp3",revision:"13185400beeaab47be5d9f05fc469b4a"},{url:"sounds/Teams 蜂鸣声.mp3",revision:"60894252e2c86a66bb36f581b36c6c56"},{url:"sounds/Teams 点击.mp3",revision:"7f0ac7ce255b0440aa1ff460ae534418"},{url:"sounds/Teams 滴水.mp3",revision:"56d6127071c4514a0230061d6e692205"},{url:"sounds/Teams 波纹.mp3",revision:"67d993bbe556c6b06f0c1de58b5ffc79"},{url:"sounds/Teams 波普.mp3",revision:"a2092a6219357df7f239cc59cbb2447f"},{url:"sounds/Teams 气泡.mp3",revision:"bf21272379428e85205f66592894b881"},{url:"sounds/Teams 气泡(大声).mp3",revision:"ccbffede0f91fb2fc4c1e3b700885299"},{url:"sounds/Teams 时空.mp3",revision:"21d5f825d18cf541314659eb058ea997"},{url:"sounds/Teams 摇摆.mp3",revision:"cc593fc7586d4ca8f357324caed7392b"},{url:"sounds/Teams 提醒.mp3",revision:"1bb92bf7e9ff6c7580bd4c07b0da5d26"},{url:"sounds/Teams 弹拨.mp3",revision:"dbca54d79ab2dc7f58e0c815d1e52c76"},{url:"sounds/Teams 尤里卡.mp3",revision:"f959ac97e8113c13fbef4640d701bb46"},{url:"sounds/Teams 增强.mp3",revision:"aff4c45773c33ee949dbb2fd176ead9c"},{url:"sounds/Teams 叮铃.mp3",revision:"740bf4b245b232b81cb46beccd085ffc"},{url:"sounds/Teams 召唤.mp3",revision:"5f22a60afb21d7ef32c02ef604a0586a"},{url:"sounds/Teams 共鸣.mp3",revision:"0da491cc59a0a2c88e1cdfdb26e31194"},{url:"sounds/Teams 优先处理.mp3",revision:"5117fd6695056edd9fe7d13bdd981bbc"},{url:"sounds/Teams teams_notification.mp3",revision:"c0a3e466772e808ff0cfa0e9c76e4440"},{url:"sounds/Teams teams_meet_up_reminder.mp3",revision:"c18a464074c423def70a420418b80365"},{url:"sounds/Teams screenshare_ring.mp3",revision:"c18a464074c423def70a420418b80365"},{url:"sounds/Teams meetup_ring.mp3",revision:"ec5fdebfd3fa2f4f9f60673074a4e35e"},{url:"sounds/Teams incoming-ringtone-level40.mp3",revision:"d7298eb35126dd4f60d07e6aaeeae96f"},{url:"sounds/Teams incoming-ringtone-level30.mp3",revision:"dbe2f213d90800fb9b02aca8356b2e44"},{url:"sounds/Teams bounce.mp3",revision:"2ddc0b2c7e515045d31276dbd20cc5e3"},{url:"sounds/Teams Remix.mp3",revision:"bdbc0b25f3c1a1d09a157ae5923573cd"},{url:"sounds/Teams Ping.mp3",revision:"9c4446c079e89828abcae8aca5663c12"},{url:"pwa/image/pwa-64x64.png",revision:"b4ca4c3d8333391f20cddbb3f6cca2df"},{url:"pwa/image/pwa-512x512.png",revision:"57cc60501279a6d172b32211b1c67688"},{url:"pwa/image/pwa-192x192.png",revision:"81802c789e8b735f7f8b181f002932f8"},{url:"pwa/image/maskable-icon-512x512.png",revision:"dfa412c4bbe0f716216ac5db7a4c706d"},{url:"pwa/image/logo.svg",revision:"899b27b2269e41899c7422cfa4c389e5"},{url:"pwa/image/favicon.ico",revision:"8e3a55390cf66d227f765a6063bb6c31"},{url:"pwa/image/apple-touch-icon-180x180.png",revision:"3180606ea2115ea1af7e66dbeb1b28fd"},{url:"assets/visitorId-D2J8zjxI.js",revision:null},{url:"assets/vendor-vuetify-rtu3DHX4.js",revision:null},{url:"assets/vendor-vue-BiQC5iF7.js",revision:null},{url:"assets/vendor-utils-2lvrqI0-.js",revision:null},{url:"assets/vendor-socket-dm1FmSOd.js",revision:null},{url:"assets/soundList-D9U-Grcp.js",revision:null},{url:"assets/socketClient-DJ8u9nXv.js",revision:null},{url:"assets/socket-debugger-CKswW_PL.js",revision:null},{url:"assets/socket-debugger-B22H3Il3.css",revision:null},{url:"assets/settings-CDDXJDZW.js",revision:null},{url:"assets/settings-BxfdCqX7.css",revision:null},{url:"assets/serverRotation-Bs3NH0Jb.js",revision:null},{url:"assets/materialdesignicons-webfont-Dp5v-WZN.woff2",revision:null},{url:"assets/materialdesignicons-webfont-B7mPwVP_.ttf",revision:null},{url:"assets/index-ghQi_28l.js",revision:null},{url:"assets/index-Yfd4JoUB.css",revision:null},{url:"assets/index-DdToQrR8.js",revision:null},{url:"assets/index-Ceq_468-.js",revision:null},{url:"assets/index-CbUii4LM.js",revision:null},{url:"assets/index-CVHPTbQ0.js",revision:null},{url:"assets/index-BFmbztHq.css",revision:null},{url:"assets/fp.esm-p88LZBod.js",revision:null},{url:"assets/examschedule-D7wPNFui.css",revision:null},{url:"assets/examschedule-Bjj5pPD_.js",revision:null},{url:"assets/deviceEvents-Wy8_E1wQ.js",revision:null},{url:"assets/default-CmdaPMSp.css",revision:null},{url:"assets/default-CGkACEC3.js",revision:null},{url:"assets/debug-socket-Cawza1cL.js",revision:null},{url:"assets/debug-init-BXJK30rf.js",revision:null},{url:"assets/debug-DkHlxsJi.js",revision:null},{url:"assets/debug-CbS14biG.css",revision:null},{url:"assets/dataProvider-D5waPBEc.js",revision:null},{url:"assets/cses2wakeup-Qc4GsQy3.css",revision:null},{url:"assets/cses2wakeup-CYA5ZLcv.js",revision:null},{url:"assets/core-Cy2g3AD-.js",revision:null},{url:"assets/browser-BcesygxY.js",revision:null},{url:"assets/authorize-LEIDOvih.js",revision:null},{url:"assets/_id_-Dw-jkNll.js",revision:null},{url:"assets/_id_-C03QyIMT.js",revision:null},{url:"assets/VTooltip-D7EaNDeY.css",revision:null},{url:"assets/VTooltip-CWhmSQeX.js",revision:null},{url:"assets/VTimePicker-DXcm5dub.js",revision:null},{url:"assets/VTimePicker-BkWY3_8P.css",revision:null},{url:"assets/VTextarea-_xVwaw_z.css",revision:null},{url:"assets/VTextarea-UKN-Avq_.js",revision:null},{url:"assets/VTextField-DpXLMPq7.js",revision:null},{url:"assets/VTextField-DTDEIDq0.css",revision:null},{url:"assets/VTabs-B7ztkrUN.js",revision:null},{url:"assets/VTabs-566n5b08.css",revision:null},{url:"assets/VTable-CNLJxQof.css",revision:null},{url:"assets/VTable-CJ8evfI8.js",revision:null},{url:"assets/VSwitch-d4Yvphn0.js",revision:null},{url:"assets/VSwitch-Bk42mIwg.css",revision:null},{url:"assets/VSkeletonLoader-C11ZEozu.css",revision:null},{url:"assets/VSkeletonLoader-B0OOafGJ.js",revision:null},{url:"assets/VSheet-MW0wxrpj.js",revision:null},{url:"assets/VSheet-DW_b51tO.css",revision:null},{url:"assets/VSelect-OEnAsVY5.js",revision:null},{url:"assets/VSelect-DHZViySU.css",revision:null},{url:"assets/VRow-D2ArqUC2.css",revision:null},{url:"assets/VRow-BiiRXDj9.js",revision:null},{url:"assets/VPicker-DxbAs-x1.js",revision:null},{url:"assets/VPicker-Dm9DplUc.css",revision:null},{url:"assets/VPagination-BQZD6rf1.js",revision:null},{url:"assets/VPagination-BF2MZmld.css",revision:null},{url:"assets/VMenu-DqtPWEMI.js",revision:null},{url:"assets/VMenu-C31D-C2L.css",revision:null},{url:"assets/VForm-vCieX1EY.js",revision:null},{url:"assets/VFileInput-D2ZU5WsA.js",revision:null},{url:"assets/VFileInput-CRcZ0Lr3.css",revision:null},{url:"assets/VExpansionPanels-kEj4ZJQK.css",revision:null},{url:"assets/VExpansionPanels-DbwaqF41.js",revision:null},{url:"assets/VDatePicker-zglzEVGT.css",revision:null},{url:"assets/VDatePicker-C_lQuyln.js",revision:null},{url:"assets/VDataTable-Cl7qiDOP.css",revision:null},{url:"assets/VDataTable-BtP49-4R.js",revision:null},{url:"assets/VContainer-BisEDTd3.js",revision:null},{url:"assets/VContainer-B1KSavhG.css",revision:null},{url:"assets/VCombobox-r6cc1Iy_.css",revision:null},{url:"assets/VCombobox-CjTuZar9.js",revision:null},{url:"assets/VChip-Dmz_1Lnv.css",revision:null},{url:"assets/VChip-BdtDOEwz.js",revision:null},{url:"assets/VCheckboxBtn-snLiE5D5.js",revision:null},{url:"assets/VCheckbox-ZL-u1kGB.css",revision:null},{url:"assets/VCheckbox-BM0AQhRG.js",revision:null},{url:"assets/VAutocomplete-Ygy_KjMW.css",revision:null},{url:"assets/VAutocomplete-C-Az_ynh.js",revision:null},{url:"assets/VAppBarTitle-q97S07ao.js",revision:null},{url:"assets/VAppBarTitle-CczdD-Q2.css",revision:null},{url:"assets/VAlert-D_OX1cfW.css",revision:null},{url:"assets/VAlert-C02HdytA.js",revision:null},{url:"assets/UrgentTestDialog-DIoDIryQ.js",revision:null},{url:"assets/UrgentTestDialog-65OEJ5uz.css",revision:null},{url:"assets/UafTransferDialog-zULs-G2u.css",revision:null},{url:"assets/UafTransferDialog-BiTNoR1z.js",revision:null},{url:"assets/StudentNameManager-tn0RQdqM.css",revision:null},{url:"assets/StudentNameManager-CfZ3q6RU.js",revision:null},{url:"assets/RandomPicker-CZHJEJmO.js",revision:null},{url:"assets/RandomPicker-CU-edGvg.css",revision:null},{url:"assets/PwaInstallCard-CPjNY6NL.js",revision:null},{url:"assets/MessageLog-C_EKPx-f.js",revision:null},{url:"assets/MessageLog-BGkFwivK.css",revision:null},{url:"assets/InitServiceChooser-jMiMsbAb.js",revision:null},{url:"assets/InitServiceChooser-BSZJBnhr.css",revision:null},{url:"assets/HomeworkEditDialog-DSAcf9mw.css",revision:null},{url:"assets/HomeworkEditDialog-CT_lOawC.js",revision:null},{url:"assets/FloatingToolbar-Bh03SB2m.js",revision:null},{url:"assets/FloatingToolbar-5gVX85mk.css",revision:null},{url:"assets/ExamScheduleCard-BMCIwBI1.js",revision:null},{url:"assets/ExamScheduleCard-BJuKYvRa.css",revision:null},{url:"assets/ExamConfigEditor-o_7l6zek.js",revision:null},{url:"assets/ExamConfigEditor-HgNV6CVV.css",revision:null},{url:"assets/ChatWidget-ChgL-O5B.css",revision:null},{url:"assets/ChatWidget-CdFpE857.js",revision:null},{url:"assets/CacheManagement-D69xlD6i.js",revision:null},{url:"assets/AttendanceSidebar-Cz4nwVcc.js",revision:null},{url:"assets/AttendanceManagementDialog-D0prZwJd.css",revision:null},{url:"assets/AttendanceManagementDialog-CCCxW1vX.js",revision:null},{url:"assets/404-BC-9JvcA.js",revision:null},{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:"81f614d50e129c134b1d5ddd6a19081e"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{denylist:[/^\/api\//,/^\/socket\.io\//]})),s.registerRoute(({url:s,sameOrigin:e})=>e&&s.pathname.startsWith("/assets/"),new s.CacheFirst({cacheName:"assets-cache",plugins:[new s.ExpirationPlugin({maxEntries:200,maxAgeSeconds:5184e3}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),s.registerRoute(({url:s,sameOrigin:e})=>e&&s.pathname.startsWith("/sounds/"),new s.CacheFirst({cacheName:"sound-cache",plugins:[new s.ExpirationPlugin({maxEntries:80,maxAgeSeconds:2592e3}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),s.registerRoute(({url:s,sameOrigin:e})=>e&&s.pathname.startsWith("/pwa/"),new s.StaleWhileRevalidate({cacheName:"pwa-cache",plugins:[new s.ExpirationPlugin({maxEntries:50,maxAgeSeconds:604800}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),s.registerRoute(({url:s,sameOrigin:e})=>{if(!e)return!1;const i=s.pathname;return!(i.includes("/assets/")||i.includes("/pwa/")||i.includes("/sounds/"))},new s.NetworkFirst({cacheName:"other-resources",networkTimeoutSeconds:10,plugins:[new s.ExpirationPlugin({maxEntries:100,maxAgeSeconds:86400}),new s.CacheableResponsePlugin({statuses:[0,200]})]}),"GET")}); diff --git a/uaf/NotoSansSC-Regular.otf b/uaf/NotoSansSC-Regular.otf new file mode 100644 index 0000000..fb0637b Binary files /dev/null and b/uaf/NotoSansSC-Regular.otf differ diff --git a/uaf/hb-subset.wasm b/uaf/hb-subset.wasm new file mode 100644 index 0000000..ed394df Binary files /dev/null and b/uaf/hb-subset.wasm differ