import{_ as A,c as r,a as e,m,b as n,h as y,y as v,n as $,t as x,z as w,D as k,A as C,f as i,d as g,v as K,e as D,j as _,F as S,w as V,T as F,k as M,g as T,i as E,o as N,r as I,u as f,C as U}from"./index-B-HmZe8h.js";import{L as c}from"./localeText-BYI7KSyb.js";import{d as P}from"./dayjs.min-Y9bTY-cC.js";import{Q as Y}from"./vue-datepicker-4IJfMFl_.js";const H={name:"accountSettingsInputUsername",components:{LocaleText:c},props:{targetData:String,title:String},setup(){const t=k(),s=`input_${C()}`;return{store:t,uuid:s}},data(){return{value:"",invalidFeedback:"",showInvalidFeedback:!1,isValid:!1,timeout:void 0,changed:!1,updating:!1}},mounted(){this.value=this.store.Configuration.Account[this.targetData]},methods:{async useValidation(t){this.changed&&(this.updating=!0,await w("/api/updateDashboardConfigurationItem",{section:"Account",key:this.targetData,value:this.value},s=>{s.status?(this.isValid=!0,this.showInvalidFeedback=!1,this.store.Configuration.Account[this.targetData]=this.value,clearTimeout(this.timeout),this.timeout=setTimeout(()=>this.isValid=!1,5e3)):(this.isValid=!1,this.showInvalidFeedback=!0,this.invalidFeedback=s.message),this.changed=!1,this.updating=!1}))}}},R={class:"form-group mb-2"},j=["for"],B=["id","disabled"],z={class:"invalid-feedback"};function G(t,s,p,h,u,b){const o=y("LocaleText");return i(),r("div",R,[e("label",{for:this.uuid,class:"text-muted mb-1"},[e("strong",null,[e("small",null,[n(o,{t:this.title},null,8,["t"])])])],8,j),m(e("input",{type:"text",class:$(["form-control",{"is-invalid":u.showInvalidFeedback,"is-valid":u.isValid}]),id:this.uuid,"onUpdate:modelValue":s[0]||(s[0]=a=>this.value=a),onKeydown:s[1]||(s[1]=a=>this.changed=!0),onBlur:s[2]||(s[2]=a=>b.useValidation()),disabled:this.updating},null,42,B),[[v,this.value]]),e("div",z,x(this.invalidFeedback),1)])}const pt=A(H,[["render",G]]),W={name:"accountSettingsInputPassword",components:{LocaleText:c},props:{targetData:String,warning:!1,warningText:""},setup(){const t=k(),s=`input_${C()}`;return{store:t,uuid:s}},data(){return{value:{currentPassword:"",newPassword:"",repeatNewPassword:""},invalidFeedback:"",showInvalidFeedback:!1,isValid:!1,timeout:void 0}},methods:{async useValidation(){Object.values(this.value).find(t=>t.length===0)===void 0?this.value.newPassword===this.value.repeatNewPassword?await w("/api/updateDashboardConfigurationItem",{section:"Account",key:this.targetData,value:this.value},t=>{t.status?(this.isValid=!0,this.showInvalidFeedback=!1,this.store.Configuration.Account[this.targetData]=this.value,clearTimeout(this.timeout),this.timeout=setTimeout(()=>{this.isValid=!1,this.value={currentPassword:"",newPassword:"",repeatNewPassword:""}},5e3)):(this.isValid=!1,this.showInvalidFeedback=!0,this.invalidFeedback=t.message)}):(this.showInvalidFeedback=!0,this.invalidFeedback="New passwords does not match"):(this.showInvalidFeedback=!0,this.invalidFeedback="Please fill in all required fields.")}},computed:{passwordValid(){return Object.values(this.value).find(t=>t.length===0)===void 0&&this.value.newPassword===this.value.repeatNewPassword}}},O={class:"d-flex flex-column gap-2"},q={class:"row g-2"},Q={class:"col-sm"},J={class:"form-group"},X=["for"],Z=["id"],ee={key:0,class:"invalid-feedback d-block"},se={class:"col-sm"},te={class:"form-group"},ae=["for"],ie=["id"],oe={class:"col-sm"},ne={class:"form-group"},le=["for"],de=["id"],re=["disabled"];function ue(t,s,p,h,u,b){const o=y("LocaleText");return i(),r("div",null,[e("h6",null,[n(o,{t:"Update Password"})]),e("form",O,[e("div",q,[e("div",Q,[e("div",J,[e("label",{for:"currentPassword_"+this.uuid,class:"text-muted mb-1"},[e("strong",null,[e("small",null,[n(o,{t:"Current Password"})])])],8,X),m(e("input",{type:"password",class:$(["form-control",{"is-invalid":u.showInvalidFeedback,"is-valid":u.isValid}]),autocomplete:"current-password","onUpdate:modelValue":s[0]||(s[0]=a=>this.value.currentPassword=a),id:"currentPassword_"+this.uuid},null,10,Z),[[v,this.value.currentPassword]]),u.showInvalidFeedback?(i(),r("div",ee,x(this.invalidFeedback),1)):g("",!0)])]),e("div",se,[e("div",te,[e("label",{for:"newPassword_"+this.uuid,class:"text-muted mb-1"},[e("strong",null,[e("small",null,[n(o,{t:"New Password"})])])],8,ae),m(e("input",{type:"password",class:$(["form-control",{"is-invalid":u.showInvalidFeedback,"is-valid":u.isValid}]),autocomplete:"new-password","onUpdate:modelValue":s[1]||(s[1]=a=>this.value.newPassword=a),id:"newPassword_"+this.uuid},null,10,ie),[[v,this.value.newPassword]])])]),e("div",oe,[e("div",ne,[e("label",{for:"repeatNewPassword_"+this.uuid,class:"text-muted mb-1"},[e("strong",null,[e("small",null,[n(o,{t:"Repeat New Password"})])])],8,le),m(e("input",{type:"password",class:$(["form-control",{"is-invalid":u.showInvalidFeedback,"is-valid":u.isValid}]),autocomplete:"new-password","onUpdate:modelValue":s[2]||(s[2]=a=>this.value.repeatNewPassword=a),id:"repeatNewPassword_"+this.uuid},null,10,de),[[v,this.value.repeatNewPassword]])])])]),e("button",{disabled:!this.passwordValid,class:"ms-auto btn bg-success-subtle text-success-emphasis border-1 border-success-subtle rounded-3 shadow-sm",onClick:s[3]||(s[3]=a=>this.useValidation())},[s[4]||(s[4]=e("i",{class:"bi bi-save2-fill me-2"},null,-1)),n(o,{t:"Save"})],8,re)])])}const ht=A(W,[["render",ue]]),ce={name:"dashboardTheme",components:{LocaleText:c},setup(){return{dashboardConfigurationStore:k()}},methods:{async switchTheme(t){await w("/api/updateDashboardConfigurationItem",{section:"Server",key:"dashboard_theme",value:t},s=>{s.status&&(this.dashboardConfigurationStore.Configuration.Server.dashboard_theme=t)})}}},me={class:"text-muted mb-1 d-block"},pe={class:"d-flex gap-1"};function he(t,s,p,h,u,b){const o=y("LocaleText");return i(),r("div",null,[e("small",me,[e("strong",null,[n(o,{t:"Theme"})])]),e("div",pe,[e("button",{class:$(["btn bg-primary-subtle text-primary-emphasis flex-grow-1",{active:this.dashboardConfigurationStore.Configuration.Server.dashboard_theme==="light"}]),onClick:s[0]||(s[0]=a=>this.switchTheme("light"))},[s[2]||(s[2]=e("i",{class:"bi bi-sun-fill me-2"},null,-1)),n(o,{t:"Light"})],2),e("button",{class:$(["btn bg-primary-subtle text-primary-emphasis flex-grow-1",{active:this.dashboardConfigurationStore.Configuration.Server.dashboard_theme==="dark"}]),onClick:s[1]||(s[1]=a=>this.switchTheme("dark"))},[s[3]||(s[3]=e("i",{class:"bi bi-moon-fill me-2"},null,-1)),n(o,{t:"Dark"})],2)])])}const bt=A(ce,[["render",he]]),be={name:"newDashboardAPIKey",components:{LocaleText:c,VueDatePicker:Y},data(){return{newKeyData:{ExpiredAt:P().add(7,"d").format("YYYY-MM-DD HH:mm:ss"),NeverExpire:!1},submitting:!1}},setup(){return{store:k()}},mounted(){console.log(this.newKeyData.ExpiredAt)},methods:{submitNewAPIKey(){this.submitting=!0,w("/api/newDashboardAPIKey",this.newKeyData,t=>{t.status?(this.$emit("created",t.data),this.store.newMessage("Server","API Key created","success"),this.$emit("close")):this.store.newMessage("Server",t.message,"danger"),this.submitting=!1})},fixDate(t){return console.log(P(t).format("YYYY-MM-DDTHH:mm:ss")),P(t).format("YYYY-MM-DDTHH:mm:ss")},parseTime(t){t?this.newKeyData.ExpiredAt=P(t).format("YYYY-MM-DD HH:mm:ss"):this.newKeyData.ExpiredAt=void 0}}},fe={class:"position-absolute w-100 h-100 top-0 start-0 rounded-bottom-3 p-3 d-flex",style:{"background-color":"#00000060","backdrop-filter":"blur(3px)"}},ge={class:"card m-auto rounded-3 mt-5"},ve={class:"card-header bg-transparent d-flex align-items-center gap-2 border-0 p-4 pb-0"},_e={class:"mb-0"},ye={class:"card-body d-flex gap-2 p-4 flex-column"},we={class:"text-muted"},$e={class:"d-flex align-items-center gap-2"},ke={class:"form-check"},xe=["disabled"],Ae={class:"form-check-label",for:"neverExpire"},Pe={key:0,class:"bi bi-check-lg me-2"};function De(t,s,p,h,u,b){const o=y("LocaleText"),a=y("VueDatePicker");return i(),r("div",fe,[e("div",ge,[e("div",ve,[e("h6",_e,[n(o,{t:"Create API Key"})]),e("button",{type:"button",class:"btn-close ms-auto",onClick:s[0]||(s[0]=l=>this.$emit("close"))})]),e("div",ye,[e("small",we,[n(o,{t:"When should this API Key expire?"})]),e("div",$e,[n(a,{is24:!0,"min-date":new Date,"model-value":this.newKeyData.ExpiredAt,"onUpdate:modelValue":this.parseTime,"time-picker-inline":"",format:"yyyy-MM-dd HH:mm:ss","preview-format":"yyyy-MM-dd HH:mm:ss",clearable:!1,disabled:this.newKeyData.NeverExpire||this.submitting,dark:this.store.Configuration.Server.dashboard_theme==="dark"},null,8,["min-date","model-value","onUpdate:modelValue","disabled","dark"])]),e("div",ke,[m(e("input",{class:"form-check-input",type:"checkbox","onUpdate:modelValue":s[1]||(s[1]=l=>this.newKeyData.NeverExpire=l),id:"neverExpire",disabled:this.submitting},null,8,xe),[[K,this.newKeyData.NeverExpire]]),e("label",Ae,[n(o,{t:"Never Expire"}),s[3]||(s[3]=D(" (")),s[4]||(s[4]=e("i",{class:"bi bi-emoji-grimace-fill me-2"},null,-1)),n(o,{t:"Don't think that's a good idea"}),s[5]||(s[5]=D(") "))])]),e("button",{class:$(["ms-auto btn bg-success-subtle text-success-emphasis border-1 border-success-subtle rounded-3 shadow-sm",{disabled:this.submitting}]),onClick:s[2]||(s[2]=l=>this.submitNewAPIKey())},[this.submitting?g("",!0):(i(),r("i",Pe)),this.submitting?(i(),_(o,{key:1,t:"Creating..."})):(i(),_(o,{key:2,t:"Create"}))],2)])])])}const Ie=A(be,[["render",De]]),Ce={name:"dashboardAPIKey",components:{LocaleText:c},props:{apiKey:Object},setup(){return{store:k()}},data(){return{confirmDelete:!1}},methods:{deleteAPIKey(){w("/api/deleteDashboardAPIKey",{Key:this.apiKey.Key},t=>{t.status?(this.$emit("deleted",t.data),this.store.newMessage("Server","API Key deleted","success")):this.store.newMessage("Server",t.message,"danger")})}}},Ke={class:"card rounded-3 shadow-sm"},Se={key:0,class:"card-body d-flex gap-3 align-items-center apiKey-card-body"},Te={class:"d-flex align-items-center gap-2"},Ve={class:"text-muted"},Ee={style:{"word-break":"break-all"}},Le={class:"d-flex align-items-center gap-2 ms-auto"},Fe={class:"text-muted"},Me={key:0,class:"card-body d-flex gap-3 align-items-center justify-content-end"};function Ne(t,s,p,h,u,b){const o=y("LocaleText");return i(),r("div",Ke,[this.confirmDelete?(i(),r(S,{key:1},[this.store.getActiveCrossServer()?g("",!0):(i(),r("div",Me,[n(o,{t:"Are you sure to delete this API key?"}),e("a",{role:"button",class:"btn btn-sm bg-success-subtle text-success-emphasis rounded-3",onClick:s[1]||(s[1]=a=>this.deleteAPIKey())},s[4]||(s[4]=[e("i",{class:"bi bi-check-lg"},null,-1)])),e("a",{role:"button",class:"btn btn-sm bg-secondary-subtle text-secondary-emphasis rounded-3",onClick:s[2]||(s[2]=a=>this.confirmDelete=!1)},s[5]||(s[5]=[e("i",{class:"bi bi-x-lg"},null,-1)]))]))],64)):(i(),r("div",Se,[e("div",Te,[e("small",Ve,[n(o,{t:"Key"})]),e("span",Ee,x(this.apiKey.Key),1)]),e("div",Le,[e("small",Fe,[n(o,{t:"Expire At"})]),this.apiKey.ExpiredAt?g("",!0):(i(),_(o,{key:0,t:"Never Expire"})),e("span",null,x(this.apiKey.ExpiredAt),1)]),this.store.getActiveCrossServer()?g("",!0):(i(),r("a",{key:0,role:"button",class:"btn btn-sm bg-danger-subtle text-danger-emphasis rounded-3",onClick:s[0]||(s[0]=a=>this.confirmDelete=!0)},s[3]||(s[3]=[e("i",{class:"bi bi-trash-fill"},null,-1)])))]))])}const Ue=A(Ce,[["render",Ne],["__scopeId","data-v-a76253c8"]]),Ye={name:"dashboardAPIKeys",components:{LocaleText:c,DashboardAPIKey:Ue,NewDashboardAPIKey:Ie},setup(){return{store:k()}},data(){return{value:this.store.Configuration.Server.dashboard_api_key,apiKeys:[],newDashboardAPIKey:!1}},methods:{async toggleDashboardAPIKeys(){await w("/api/updateDashboardConfigurationItem",{section:"Server",key:"dashboard_api_key",value:this.value},t=>{t.status?(this.store.Configuration.Peers[this.targetData]=this.value,this.store.newMessage("Server",`API Keys function is successfully ${this.value?"enabled":"disabled"}`,"success")):(this.value=this.store.Configuration.Peers[this.targetData],this.store.newMessage("Server",`API Keys function is failed to ${this.value?"enabled":"disabled"}`,"danger"))})}},watch:{value:{immediate:!0,handler(t){t?T("/api/getDashboardAPIKeys",{},s=>{s.status?this.apiKeys=s.data:(this.apiKeys=[],this.store.newMessage("Server",s.message,"danger"))}):this.apiKeys=[]}}}},He={class:"card rounded-3"},Re={class:"my-2"},je={key:0,class:"form-check form-switch ms-auto"},Be={class:"form-check-label",for:"allowAPIKeysSwitch"},ze={key:0,class:"card-body position-relative d-flex flex-column gap-2"},Ge={key:1,class:"card",style:{height:"300px"}},We={class:"card-body d-flex text-muted"},Oe={class:"m-auto"},qe={key:2,class:"d-flex flex-column gap-2 position-relative",style:{"min-height":"300px"}};function Qe(t,s,p,h,u,b){const o=y("LocaleText"),a=y("DashboardAPIKey"),l=y("NewDashboardAPIKey");return i(),r("div",He,[e("div",{class:$(["card-header d-flex align-items-center",{"border-bottom-0 rounded-3":!this.value}])},[e("h6",Re,[s[6]||(s[6]=e("i",{class:"bi bi-key-fill me-2"},null,-1)),n(o,{t:"API Keys"})]),this.store.getActiveCrossServer()?g("",!0):(i(),r("div",je,[m(e("input",{class:"form-check-input",type:"checkbox","onUpdate:modelValue":s[0]||(s[0]=d=>this.value=d),onChange:s[1]||(s[1]=d=>this.toggleDashboardAPIKeys()),role:"switch",id:"allowAPIKeysSwitch"},null,544),[[K,this.value]]),e("label",Be,[this.value?(i(),_(o,{key:0,t:"Enabled"})):(i(),_(o,{key:1,t:"Disabled"}))])]))],2),this.value?(i(),r("div",ze,[this.store.getActiveCrossServer()?g("",!0):(i(),r("button",{key:0,class:"btn bg-primary-subtle text-primary-emphasis border-1 border-primary-subtle rounded-3 shadow-sm",onClick:s[2]||(s[2]=d=>this.newDashboardAPIKey=!0)},[s[7]||(s[7]=e("i",{class:"bi bi-plus-circle-fill me-2"},null,-1)),n(o,{t:"API Key"})])),this.apiKeys.length===0?(i(),r("div",Ge,[e("div",We,[e("span",Oe,[n(o,{t:"No WGDashboard API Key"})])])])):(i(),r("div",qe,[n(F,{name:"apiKey"},{default:V(()=>[(i(!0),r(S,null,E(this.apiKeys,d=>(i(),_(a,{apiKey:d,key:d.Key,onDeleted:s[3]||(s[3]=L=>this.apiKeys=L)},null,8,["apiKey"]))),128))]),_:1})])),n(M,{name:"zoomReversed"},{default:V(()=>[this.newDashboardAPIKey?(i(),_(l,{key:0,onCreated:s[4]||(s[4]=d=>this.apiKeys=d),onClose:s[5]||(s[5]=d=>this.newDashboardAPIKey=!1)})):g("",!0)]),_:1})])):g("",!0)])}const ft=A(Ye,[["render",Qe],["__scopeId","data-v-f7e62927"]]),Je={name:"accountSettingsMFA",components:{LocaleText:c},setup(){const t=k(),s=`input_${C()}`;return{store:t,uuid:s}},data(){return{status:!1}},mounted(){this.status=this.store.Configuration.Account.enable_totp},methods:{async resetMFA(){await w("/api/updateDashboardConfigurationItem",{section:"Account",key:"totp_verified",value:"false"},async t=>{await w("/api/updateDashboardConfigurationItem",{section:"Account",key:"enable_totp",value:"false"},s=>{s.status&&this.$router.push("/2FASetup")})})}}},Xe={class:"d-flex align-items-center"},Ze={class:"form-check form-switch"},es={for:"allowMFAKeysSwitch"};function ss(t,s,p,h,u,b){const o=y("LocaleText");return i(),r("div",null,[e("div",Xe,[e("div",Ze,[m(e("input",{class:"form-check-input",type:"checkbox","onUpdate:modelValue":s[0]||(s[0]=a=>this.status=a),role:"switch",id:"allowMFAKeysSwitch"},null,512),[[K,this.status]]),e("label",es,[this.status?(i(),_(o,{key:0,t:"Enabled"})):(i(),_(o,{key:1,t:"Disabled"}))])]),this.status?(i(),r("button",{key:0,class:"btn bg-warning-subtle text-warning-emphasis border-1 border-warning-subtle ms-auto rounded-3 shadow-sm",onClick:s[1]||(s[1]=a=>this.resetMFA())},[s[2]||(s[2]=e("i",{class:"bi bi-shield-lock-fill me-2"},null,-1)),this.store.Configuration.Account.totp_verified?(i(),_(o,{key:0,t:"Reset"})):(i(),_(o,{key:1,t:"Setup"})),s[3]||(s[3]=D(" MFA "))])):g("",!0)])])}const gt=A(Je,[["render",ss]]),ts={name:"dashboardLanguage",components:{LocaleText:c},setup(){return{store:k()}},data(){return{languages:void 0}},mounted(){T("/api/locale/available",{},t=>{this.languages=t.data})},methods:{changeLanguage(t){w("/api/locale/update",{lang_id:t},s=>{s.status?(this.store.Configuration.Server.dashboard_language=t,this.store.Locale=s.data):this.store.newMessage("Server","WGDashboard language update failed","danger")})}},computed:{currentLanguage(){let t=this.store.Configuration.Server.dashboard_language;return this.languages.find(s=>s.lang_id===t)}}},as={class:"text-muted d-block mb-1"},is={class:"d-flex gap-2"},os={class:"dropdown w-100"},ns=["disabled"],ls={key:1},ds={class:"dropdown-menu rounded-3 shadow",style:{"max-height":"500px","overflow-y":"scroll"}},rs=["onClick"],us={class:"me-auto mb-0"},cs={class:"d-block",style:{"font-size":"0.8rem"}},ms={key:0,class:"bi bi-check text-primary fs-5"};function ps(t,s,p,h,u,b){const o=y("LocaleText");return i(),r("div",null,[e("small",as,[e("strong",null,[n(o,{t:"Language"})])]),e("div",is,[e("div",os,[e("button",{class:"btn bg-primary-subtle text-primary-emphasis dropdown-toggle w-100 rounded-3",disabled:!this.languages,type:"button","data-bs-toggle":"dropdown","aria-expanded":"false"},[this.languages?(i(),r("span",ls,x(b.currentLanguage?.lang_name_localized),1)):(i(),_(o,{key:0,t:"Loading..."}))],8,ns),e("ul",ds,[(i(!0),r(S,null,E(this.languages,a=>(i(),r("li",null,[e("a",{class:"dropdown-item d-flex align-items-center",role:"button",onClick:l=>this.changeLanguage(a.lang_id)},[e("p",us,[D(x(a.lang_name_localized)+" ",1),e("small",cs,x(a.lang_name),1)]),b.currentLanguage?.lang_id===a.lang_id?(i(),r("i",ms)):g("",!0)],8,rs)]))),256))])])])])}const vt=A(ts,[["render",ps],["__scopeId","data-v-4e34593e"]]),hs={name:"dashboardIPPortInput",components:{LocaleText:c},setup(){return{store:k()}},data(){return{ipAddress:"",port:0,invalidFeedback:"",showInvalidFeedback:!1,isValid:!1,timeout:void 0,changed:!1,updating:!1}},mounted(){this.ipAddress=this.store.Configuration.Server.app_ip,this.port=this.store.Configuration.Server.app_port},methods:{async useValidation(t,s,p){this.changed&&(this.updating=!0,await w("/api/updateDashboardConfigurationItem",{section:"Server",key:s,value:p},h=>{h.status?(t.target.classList.add("is-valid"),this.showInvalidFeedback=!1,this.store.Configuration.Server[s]=p,clearTimeout(this.timeout),this.timeout=setTimeout(()=>{t.target.classList.remove("is-valid")},5e3)):(this.isValid=!1,this.showInvalidFeedback=!0,this.invalidFeedback=h.message),this.changed=!1,this.updating=!1}))}}},bs={class:"row g-2"},fs={class:"col-sm"},gs={class:"form-group"},vs={for:"input_dashboard_ip",class:"text-muted mb-1"},_s=["disabled"],ys={class:"invalid-feedback"},ws={class:"col-sm"},$s={class:"form-group"},ks={for:"input_dashboard_ip",class:"text-muted mb-1"},xs=["disabled"],As={class:"invalid-feedback"},Ps={class:"px-2 py-1 text-warning-emphasis bg-warning-subtle border border-warning-subtle rounded-2 d-inline-block mb-2 mt-2"};function Ds(t,s,p,h,u,b){const o=y("LocaleText");return i(),r("div",null,[e("div",bs,[e("div",fs,[e("div",gs,[e("label",vs,[e("strong",null,[e("small",null,[n(o,{t:"IP Address / Hostname"})])])]),m(e("input",{type:"text",class:$(["form-control",{"is-invalid":u.showInvalidFeedback,"is-valid":u.isValid}]),id:"input_dashboard_ip","onUpdate:modelValue":s[0]||(s[0]=a=>this.ipAddress=a),onKeydown:s[1]||(s[1]=a=>this.changed=!0),onBlur:s[2]||(s[2]=a=>b.useValidation(a,"app_ip",this.ipAddress)),disabled:this.updating},null,42,_s),[[v,this.ipAddress]]),e("div",ys,x(this.invalidFeedback),1)])]),e("div",ws,[e("div",$s,[e("label",ks,[e("strong",null,[e("small",null,[n(o,{t:"Listen Port"})])])]),m(e("input",{type:"number",class:$(["form-control",{"is-invalid":u.showInvalidFeedback,"is-valid":u.isValid}]),id:"input_dashboard_ip","onUpdate:modelValue":s[3]||(s[3]=a=>this.port=a),onKeydown:s[4]||(s[4]=a=>this.changed=!0),onBlur:s[5]||(s[5]=a=>b.useValidation(a,"app_port",this.port)),disabled:this.updating},null,42,xs),[[v,this.port]]),e("div",As,x(this.invalidFeedback),1)])])]),e("div",Ps,[e("small",null,[s[6]||(s[6]=e("i",{class:"bi bi-exclamation-triangle-fill me-2"},null,-1)),n(o,{t:"Manual restart of WGDashboard is needed to apply changes on IP Address and Listen Port"})])])])}const _t=A(hs,[["render",Ds]]),Is={class:"card"},Cs={class:"card-header"},Ks={class:"my-2 d-flex"},Ss={key:0,class:"text-success ms-auto"},Ts={class:"card-body d-flex flex-column gap-3"},Vs={class:"row gx-2 gy-2"},Es={class:"col-12 col-lg-4"},Ls={class:"form-group"},Fs={for:"server",class:"text-muted mb-1"},Ms={class:"col-12 col-lg-4"},Ns={class:"form-group"},Us={for:"port",class:"text-muted mb-1"},Ys={class:"col-12 col-lg-4"},Hs={class:"form-group"},Rs={for:"encryption",class:"text-muted mb-1"},js={value:"NOTLS"},Bs={class:"col-12 col-lg-4"},zs={class:"form-group"},Gs={for:"username",class:"text-muted mb-1"},Ws={class:"col-12 col-lg-4"},Os={class:"form-group"},qs={for:"email_password",class:"text-muted mb-1"},Qs={class:"col-12 col-lg-4"},Js={class:"form-group"},Xs={for:"send_from",class:"text-muted mb-1"},Zs={key:0},et={key:1},st={class:"text-muted mb-1",for:"test_email"},tt={class:"fw-bold"},at=["disabled"],it=["disabled"],ot={key:0,class:"bi bi-send me-2"},nt={key:1,class:"spinner-border spinner-border-sm me-2"},lt={class:"text-muted mb-1",for:"email_template"},dt={class:"fw-bold"},yt={__name:"dashboardEmailSettings",setup(t){const s=k();N(()=>{b(),document.querySelectorAll("#emailAccount input, #emailAccount select, #email_template").forEach(a=>{a.addEventListener("change",async()=>{let l=a.attributes.getNamedItem("id").value;await w("/api/updateDashboardConfigurationItem",{section:"Email",key:l,value:a.value},d=>{d.status?(a.classList.remove("is-invalid"),a.classList.add("is-valid")):(a.classList.remove("is-valid"),a.classList.add("is-invalid")),b()})})})});const p=I(!1),h=I(""),u=I(!1),b=async()=>{await T("/api/email/ready",{},a=>{p.value=a.status})},o=async()=>{u.value=!0,await w("/api/email/send",{Receiver:h.value,Subject:"WGDashboard Testing Email",Body:"Test 1, 2, 3! Hello World :)"},a=>{a.status?s.newMessage("Server","Test email sent successfully!","success"):s.newMessage("Server",`Test email sent failed! Reason: ${a.message}`,"danger"),u.value=!1})};return(a,l)=>(i(),r("div",Is,[e("div",Cs,[e("h6",Ks,[l[11]||(l[11]=e("i",{class:"bi bi-envelope-fill me-2"},null,-1)),n(c,{t:"Email Account"}),p.value?(i(),r("span",Ss,[l[10]||(l[10]=e("i",{class:"bi bi-check-circle-fill me-2"},null,-1)),n(c,{t:"Ready"})])):g("",!0)])]),e("div",Ts,[e("form",{onSubmit:l[6]||(l[6]=d=>d.preventDefault(d)),id:"emailAccount"},[e("div",Vs,[e("div",Es,[e("div",Ls,[e("label",Fs,[e("strong",null,[e("small",null,[n(c,{t:"Server"})])])]),m(e("input",{id:"server","onUpdate:modelValue":l[0]||(l[0]=d=>f(s).Configuration.Email.server=d),type:"text",class:"form-control"},null,512),[[v,f(s).Configuration.Email.server]])])]),e("div",Ms,[e("div",Ns,[e("label",Us,[e("strong",null,[e("small",null,[n(c,{t:"Port"})])])]),m(e("input",{id:"port","onUpdate:modelValue":l[1]||(l[1]=d=>f(s).Configuration.Email.port=d),type:"text",class:"form-control"},null,512),[[v,f(s).Configuration.Email.port]])])]),e("div",Ys,[e("div",Hs,[e("label",Rs,[e("strong",null,[e("small",null,[n(c,{t:"Encryption"})])])]),m(e("select",{class:"form-select","onUpdate:modelValue":l[2]||(l[2]=d=>f(s).Configuration.Email.encryption=d),id:"encryption"},[l[12]||(l[12]=e("option",{value:"STARTTLS"}," STARTTLS ",-1)),e("option",js,[n(c,{t:"No Encryption"})])],512),[[U,f(s).Configuration.Email.encryption]])])]),e("div",Bs,[e("div",zs,[e("label",Gs,[e("strong",null,[e("small",null,[n(c,{t:"Username"})])])]),m(e("input",{id:"username","onUpdate:modelValue":l[3]||(l[3]=d=>f(s).Configuration.Email.username=d),type:"text",class:"form-control"},null,512),[[v,f(s).Configuration.Email.username]])])]),e("div",Ws,[e("div",Os,[e("label",qs,[e("strong",null,[e("small",null,[n(c,{t:"Password"})])])]),m(e("input",{id:"email_password","onUpdate:modelValue":l[4]||(l[4]=d=>f(s).Configuration.Email.email_password=d),type:"password",class:"form-control"},null,512),[[v,f(s).Configuration.Email.email_password]])])]),e("div",Qs,[e("div",Js,[e("label",Xs,[e("strong",null,[e("small",null,[n(c,{t:"Send From"})])])]),m(e("input",{id:"send_from","onUpdate:modelValue":l[5]||(l[5]=d=>f(s).Configuration.Email.send_from=d),type:"text",class:"form-control"},null,512),[[v,f(s).Configuration.Email.send_from]])])])])],32),p.value?(i(),r("hr",Zs)):g("",!0),p.value?(i(),r("div",et,[e("label",st,[e("small",tt,[n(c,{t:"Send Test Email"})])]),e("form",{onSubmit:l[8]||(l[8]=d=>{d.preventDefault(),o()}),class:"input-group"},[m(e("input",{type:"email",class:"form-control rounded-start-3",id:"test_email",placeholder:"john@example.com","onUpdate:modelValue":l[7]||(l[7]=d=>h.value=d),disabled:u.value},null,8,at),[[v,h.value]]),e("button",{class:"btn bg-primary-subtle text-primary-emphasis border-primary-subtle rounded-end-3",type:"submit",value:"Submit",disabled:h.value.length===0||u.value,id:"button-addon2"},[u.value?(i(),r("span",nt)):(i(),r("i",ot)),n(c,{t:u.value?"Sending...":"Send"},null,8,["t"])],8,it)],32)])):g("",!0),l[13]||(l[13]=e("hr",null,null,-1)),e("div",null,[e("label",lt,[e("small",dt,[n(c,{t:"Email Body Template"})])]),m(e("textarea",{class:"form-control rounded-3 font-monospace","onUpdate:modelValue":l[9]||(l[9]=d=>f(s).Configuration.Email.email_template=d),id:"email_template",style:{"min-height":"400px"}},null,512),[[v,f(s).Configuration.Email.email_template]])])])]))}};export{pt as A,bt as D,yt as _,ht as a,ft as b,gt as c,vt as d,_t as e};