PageSourceSearch

https://aoe4guides.com/assets/Account-CZ1uEGRY.js

js aoe4guides.com collected 2026-10-07 18:41:03 UTC 15,879 bytes, 1 lines download raw bytes

1import{r as u,c as b,w as ee,j as U,k as l,D as F,l as v,E as t,af as Ce,ag as Z,v as r,a1 as z,ah as Se,ai as H,Y as y,Q as me,m as K,F as G,a0 as fe,R as ae,S as L,z as oe,t as te,y as Y,V as pe,N as x,q as J,G as Ue,a6 as ne,T as E,ae as De,M as Ae,J as Ie,K as Q,a7 as ie,a8 as j,a9 as X,aa as se,aj as Le,ab as Fe,ad as Ne,W as Re}from"./vuetify-CkRlhSTd.js";import{_ as ve,U as ye,F as Te,P as Be,a as we,c as _e,d as ze,e as Oe,f as Me,b as Ee,g as je}from"./index-CJfJ07H0.js";import{P as S,n as re,e as $,l as de,B as ue,b as ce}from"./useContributorProfile-CAHVX-JY.js";import"./firebase-DN9Njj_A.js";import"./featuredCreatorDefaultProvider-BODcMvAl.js";const Ke={name:"AvatarPicker",components:{PickerDialog:Be,FileDropZone:Te,UserAvatar:ye},props:{modelValue:{type:Boolean,required:!0}},emits:["update:modelValue"],setup(d,{emit:a}){const f=we(),e=u("initials"),D=u(!1),V=u(null),p=u(null),s=u({type:"initials",ref:null}),A=b(()=>{var i;return((i=f.state.user)==null?void 0:i.displayName)??null}),o=b(()=>_e.value.filter(i=>i.shortName!=="ANY"));ee(e,i=>{i==="initials"&&(s.value={type:"initials",ref:null}),i==="civ"&&(s.value={type:"civ",ref:s.value.type==="civ"?s.value.ref:null}),i==="upload"&&(s.value={type:"upload",ref:null}),i!=="upload"&&(V.value=null,p.value=null)}),ee(()=>d.modelValue,i=>{if(!i)return;const m=f.state.userAvatar;!m||m.type==="initials"?(e.value="initials",s.value={type:"initials",ref:null}):m.type==="civ"?(e.value="civ",s.value={type:"civ",ref:m.ref}):(e.value="upload",V.value=m.ref,s.value={type:"upload",ref:m.ref})});const I=b(()=>s.value.type==="initials"?!0:s.value.type==="civ"?!!s.value.ref:s.value.type==="upload"?!!p.value||!!s.value.ref:!1);function N(i){s.value={type:"civ",ref:i.shortName}}function R(i){!i||!i.type.startsWith("image/")||W(i,256).then(m=>{p.value=m,V.value=URL.createObjectURL(m),s.value={type:"upload",ref:null}})}function O(i){R(i[0])}function W(i,m){return new Promise(T=>{const w=new Image,k=URL.createObjectURL(i);w.onload=()=>{const h=document.createElement("canvas");h.width=h.height=m;const le=h.getContext("2d"),g=Math.min(w.width,w.height),B=(w.width-g)/2,_=(w.height-g)/2;le.drawImage(w,B,_,g,g,0,0,m,m),h.toBlob(M=>{URL.revokeObjectURL(k),T(M)},"image/webp",.82)},w.src=k})}async function q(){D.value=!0;try{s.value.type==="upload"&&p.value?await f.dispatch("uploadAndSetAvatar",p.value):await f.dispatch("updateAvatar",s.value),a("update:modelValue",!1)}catch(i){f.dispatch("showSnackbar",{text:(i==null?void 0:i.message)||"Could not save avatar. Please try again.",type:"error"})}finally{D.value=!1}}return{activeTab:e,saving:D,uploadPreview:V,uploadBlob:p,pending:s,displayName:A,availableCivs:o,canSave:I,selectCiv:N,processFiles:O,save:q}}},Ge={class:"d-flex flex-column align-center ga-4 pt-4"},Ye={class:"text-caption text-center mt-1 text-truncate"},We={class:"text-body-2 text-medium-emphasis text-center"};function qe(d,a,f,e,D,V){const p=F("UserAvatar"),s=F("FileDropZone"),A=F("PickerDialog");return v(),U(A,{"model-value":f.modelValue,title:"Choose your avatar","max-width":"480","onUpdate:modelValue":a[3]||(a[3]=o=>d.$emit("update:modelValue",o))},{actions:l(()=>[t(x,{variant:"text",onClick:a[2]||(a[2]=o=>d.$emit("update:modelValue",!1))},{default:l(()=>a[12]||(a[12]=[r("Cancel")])),_:1}),t(x,{color:"primary",variant:"flat",loading:e.saving,disabled:e.saving||!e.canSave,onClick:e.save},{default:l(()=>a[13]||(a[13]=[r(" Save ")])),_:1},8,["loading","disabled","onClick"])]),default:l(()=>[t(Ce,{modelValue:e.activeTab,"onUpdate:modelValue":a[0]||(a[0]=o=>e.activeTab=o),color:"primary",class:"px-4"},{default:l(()=>[t(Z,{value:"initials"},{default:l(()=>a[4]||(a[4]=[r("Initials")])),_:1}),t(Z,{value:"civ"},{default:l(()=>a[5]||(a[5]=[r("Civilizations")])),_:1}),t(Z,{value:"upload"},{default:l(()=>a[6]||(a[6]=[r("Upload")])),_:1})]),_:1},8,["modelValue"]),t(z,{class:"px-6 pt-4 pb-2",style:{"min-height":"260px"}},{default:l(()=>[t(Se,{modelValue:e.activeTab,"onUpdate:modelValue":a[1]||(a[1]=o=>e.activeTab=o)},{default:l(()=>[t(H,{value:"initials"},{default:l(()=>[y("div",Ge,[t(p,{size:"96",name:e.displayName,"text-class":"text-h5"},null,8,["name"]),a[7]||(a[7]=y("p",{class:"text-medium-emphasis text-body-2 text-center"}," Your avatar will show your initials. No image stored. ",-1))])]),_:1}),t(H,{value:"civ"},{default:l(()=>[t(me,{dense:""},{default:l(()=>[(v(!0),K(G,null,fe(e.availableCivs,o=>(v(),U(ae,{key:o.shortName,cols:"3",sm:"2"},{default:l(()=>[t(L,{variant:e.pending.ref===o.shortName?"tonal":"text",color:e.pending.ref===o.shortName?"primary":void 0,rounded:"lg",class:"pa-1 cursor-pointer",onClick:I=>e.selectCiv(o)},{default:l(()=>[t(oe,{src:o.flagLarge,alt:o.title,"aspect-ratio":"1",cover:"",rounded:"lg"},{error:l(()=>[t(te,null,{default:l(()=>a[8]||(a[8]=[r("mdi-shield-outline")])),_:1})]),_:2}
1,1032,["src","alt"]),y("p",Ye,Y(o.title),1)]),_:2},1032,["variant","color","onClick"])]),_:2},1024))),128))]),_:1})]),_:1}),t(H,{value:"upload"},{default:l(()=>[t(s,{accept:"image/*",hint:"Resized to 256×256 px before upload (~10–30 KB)",class:"mt-2",onFiles:e.processFiles},{default:l(()=>[e.uploadPreview?(v(),U(pe,{key:0,size:"80",rounded:"lg"},{default:l(()=>[t(oe,{src:e.uploadPreview,cover:""},null,8,["src"])]),_:1})):(v(),U(te,{key:1,size:"40",color:"medium-emphasis"},{default:l(()=>a[9]||(a[9]=[r("mdi-image-plus")])),_:1})),y("p",We,[e.uploadPreview?(v(),K(G,{key:0},[r("Image ready — click to change")],64)):(v(),K(G,{key:1},[a[10]||(a[10]=r("Drop an image here or ")),a[11]||(a[11]=y("u",null,"click to browse",-1))],64))])]),_:1},8,["onFiles"])]),_:1})]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model-value"])}const Ze=ve(Ke,[["render",qe]]),He={name:"Account",components:{AvatarPicker:Ze,UserAvatar:ye,FundingStatus:ze},setup(){const d=we(),a=Ee(),f=b(()=>d.state.user),e=b(()=>d.state.userAvatar),{src:D,loading:V}=Oe(e),p=b(()=>{var n;return(((n=f.value)==null?void 0:n.providerData)||[]).some(c=>c.providerId==="password")}),s=b(()=>{var n;return(((n=f.value)==null?void 0:n.providerData)||[]).some(c=>c.providerId==="google.com")}),A=b(()=>p.value&&s.value?"Google, or email and password":s.value?"Google":"Email and password"),o=u(!1),I=u(!1),N=u(null),R=u(""),O=u(""),W=u(!1),q=u(!1),i=u(!1),m=u(!1),T=u(!1),w=u(null),k=u(""),h=u(!1),g=u(Object.fromEntries(S.map(n=>[n,""]))),B=u(null),_=u(Object.fromEntries(S.map(n=>[n,null]))),M=b(()=>re(k.value)!==B.value||S.some(n=>$(n,g.value[n])!==_.value[n]));ee(f,async n=>{if(n!=null&&n.uid)try{const c=await je(n.uid);B.value=c.bio??null,k.value=c.bio??"";for(const P of S)_.value[P]=c[P]??null,g.value[P]=c[P]??""}catch{}},{immediate:!0});const ge=[n=>ce(n??"")<=ue||"A little too long — trim it slightly."],be=Object.fromEntries(S.map(n=>[n,[c=>!c||!!$(n,c)||`Use your ${de(n).label} address or name.`]]));async function xe(){if(!M.value)return;const{valid:n}=await w.value.validate();if(n){h.value=!0;try{const c=re(k.value),P=Object.fromEntries(S.map(C=>[C,$(C,g.value[C])]));await Me(f.value.uid,{bio:c,...P}),B.value=c,k.value=c??"";for(const C of S)_.value[C]=P[C],g.value[C]=P[C]??"";d.dispatch("showSnackbar",{text:"Profile saved.",type:"success"})}catch(c){d.dispatch("showSnackbar",{text:c.message,type:"error"})}finally{h.value=!1}}}async function Ve(){await navigator.clipboard.writeText(f.value.uid),d.dispatch("showSnackbar",{text:"User ID copied to clipboard.",type:"success"})}async function ke(){T.value=!0;try{await d.dispatch("verifyEmail"),d.dispatch("showSnackbar",{text:"Verification email sent!",type:"success"})}catch(n){d.dispatch("showSnackbar",{text:n.message,type:"error"})}finally{T.value=!1}}async function he(){const{valid:n}=await N.value.validate();if(n){i.value=!0;try{await d.dispatch("changePassword",{password:R.value}),d.dispatch("showSnackbar",{text:"Password changed successfully!",type:"success"}),R.value="",O.value="",N.value.resetValidation()}catch(c){d.dispatch("showSnackbar",{text:c.message,type:"error"})}finally{i.value=!1}}}async function Pe(){m.value=!0;try{I.value=!1,await d.dispatch("deleteAccount"),d.dispatch("showSnackbar",{text:"Account deleted.",type:"success"}),a.push("/")}catch(n){d.dispatch("showSnackbar",{text:n.message,type:"error"})}finally{m.value=!1}}return{user:f,hasPassword:p,signInMethodLabel:A,authIsReady:b(()=>d.state.authIsReady),avatarSrc:D,avatarLoading:V,pickerOpen:o,deleteDialog:I,passwordForm:N,newPassword:R,confirmPassword:O,showPw:W,showPwConfirm:q,changingPw:i,deleting:m,verifying:T,copyUid:Ve,resendVerification:ke,changePassword:he,confirmDelete:Pe,profileForm:w,bio:k,linkInputs:g,linkKinds:S,linkMeta:de,linkRules:be,savingProfile:h,profileDirty:M,saveProfile:xe,bioRules:ge,bioLength:ce,bioMax:ue}}},Je={class:"d-flex justify-center mb-4"},Qe={class:"text-medium-emphasis text-body-2 mb-3"};function Xe(d,a,f,e,D,V){const p=F("UserAvatar"),s=F("FundingStatus"),A=F("AvatarPicker");return e.authIsReady&&e.user?(v(),U(Ue,{key:0,style:{"max-width":"1100px"}},{default:l(()=>[t(me,{justify:"center"},{default:l(()=>[t(ae,{cols:"12",md:"5"},{default:l(()=>[t(L,{flat:"",rounded:"lg",class:"text-center pa-6"},{default:l(()=>
1[e.user.emailVerified?J("",!0):(v(),U(ne,{key:0,type:"warning",variant:"tonal",density:"comfortable",class:"mb-4 text-left"},{append:l(()=>[t(x,{variant:"text",size:"small",loading:e.verifying,onClick:e.resendVerification},{default:l(()=>a[10]||(a[10]=[r(" Resend email ")])),_:1},8,["loading","onClick"])]),default:l(()=>[a[11]||(a[11]=r(" Please confirm your email address. "))]),_:1})),y("div",Je,[y("div",{style:{position:"relative",display:"inline-block",cursor:"pointer"},onClick:a[0]||(a[0]=o=>e.pickerOpen=!0)},[t(p,{size:"96",src:e.avatarSrc,name:e.user.displayName,loading:e.avatarLoading,"text-class":"text-h5"},null,8,["src","name","loading"]),t(pe,{size:"28",color:"primary",style:{position:"absolute",bottom:"0",right:"0",border:"2px solid rgba(var(--v-theme-surface))"}},{default:l(()=>[t(te,{size:"16"},{default:l(()=>a[12]||(a[12]=[r("mdi-camera")])),_:1})]),_:1})])]),t(E,{class:"pa-0 mb-1"},{default:l(()=>[r(Y(e.user.displayName),1)]),_:1}),y("div",Qe,Y(e.user.email),1),t(De,{color:e.user.emailVerified?"success":"warning",variant:"tonal",size:"small","prepend-icon":e.user.emailVerified?"mdi-check-circle":"mdi-alert-circle"},{default:l(()=>[r(Y(e.user.emailVerified?"Verified":"Unverified"),1)]),_:1},8,["color","prepend-icon"]),t(Ae,{class:"my-5"}),t(Ie,{lines:"two",class:"text-left pa-0"},{default:l(()=>[t(Q,{"prepend-icon":"mdi-email-outline",subtitle:"Email",title:e.user.email},null,8,["title"]),t(Q,{"prepend-icon":"mdi-lock-outline",subtitle:"Sign-in method",title:e.signInMethodLabel},null,8,["title"]),t(Q,{"prepend-icon":"mdi-identifier",subtitle:"User ID",title:e.user.uid},{append:l(()=>[t(x,{icon:"mdi-content-copy",variant:"text",size:"small",onClick:e.copyUid},null,8,["onClick"])]),_:1},8,["title"])]),_:1})]),_:1})]),_:1}),t(ae,{cols:"12",md:"7",class:"d-flex flex-column ga-6"},{default:l(()=>[e.hasPassword?(v(),U(L,{key:0,flat:"",rounded:"lg"},{default:l(()=>[t(E,{class:"px-6 pt-5 pb-2"},{default:l(()=>a[13]||(a[13]=[r("Security")])),_:1}),t(z,{class:"px-6 pb-5"},{default:l(()=>[t(ie,{ref:"passwordForm",onSubmit:j(e.changePassword,["prevent"])},{default:l(()=>[t(X,{modelValue:e.newPassword,"onUpdate:modelValue":a[1]||(a[1]=o=>e.newPassword=o),label:"New password","prepend-inner-icon":"mdi-lock-outline","append-inner-icon":e.showPw?"mdi-eye-outline":"mdi-eye-off-outline",type:e.showPw?"text":"password",variant:"outlined",density:"comfortable",class:"mb-3",autocomplete:"new-password",rules:[o=>!!o||"Password is required.",o=>o&&o.length>=6||"Use at least 6 characters."],"onClick:appendInner":a[2]||(a[2]=o=>e.showPw=!e.showPw),onKeydown:se(j(e.changePassword,["prevent"]),["enter"])},null,8,["modelValue","append-inner-icon","type","rules","onKeydown"]),t(X,{modelValue:e.confirmPassword,"onUpdate:modelValue":a[3]||(a[3]=o=>e.confirmPassword=o),label:"Confirm new password","prepend-inner-icon":"mdi-lock-check-outline","append-inner-icon":e.showPwConfirm?"mdi-eye-outline":"mdi-eye-off-outline",type:e.showPwConfirm?"text":"password",variant:"outlined",density:"comfortable",class:"mb-4",autocomplete:"new-password",rules:[o=>!!o||"Please confirm your password.",o=>o===e.newPassword||"Passwords do not match."],"onClick:appendInner":a[4]||(a[4]=o=>e.showPwConfirm=!e.showPwConfirm),onKeydown:se(j(e.changePassword,["prevent"]),["enter"])},null,8,["modelValue","append-inner-icon","type","rules","onKeydown"]),t(x,{block:"",color:"primary",variant:"flat",type:"submit",loading:e.changingPw,disabled:e.changingPw},{default:l(()=>a[14]||(a[14]=[r(" Change password ")])),_:1},8,["loading","disabled"])]),_:1},8,["onSubmit"])]),_:1})]),_:1})):J("",!0),t(L,{flat:"",rounded:"lg"},{default:l(()=>[t(E,{class:"px-6 pt-5 pb-2"},{default:l(()=>a[15]||(a[15]=[r("Public profile")])),_:1}),t(z,{class:"px-6 pb-5"},{default:l(()=>[t(ie,{ref:"profileForm",onSubmit:j(e.saveProfile,["prevent"])},{default:l(()=>[t(Le,{modelValue:e.bio,"onUpdate:modelValue":a[5]||(a[5]=o=>
1e.bio=o),label:"About you",placeholder:"A sentence or two about how you play.",variant:"outlined",density:"comfortable",rows:"3","auto-grow":"","no-resize":"",counter:"","counter-value":e.bioLength,max:e.bioMax,rules:e.bioRules,class:"mb-3"},null,8,["modelValue","counter-value","max","rules"]),(v(!0),K(G,null,fe(e.linkKinds,o=>(v(),U(X,{key:o,modelValue:e.linkInputs[o],"onUpdate:modelValue":I=>e.linkInputs[o]=I,label:e.linkMeta(o).label,placeholder:e.linkMeta(o).placeholder,"prepend-inner-icon":e.linkMeta(o).icon,variant:"outlined",density:"comfortable",hint:e.linkMeta(o).hint+" Optional.","persistent-hint":"",rules:e.linkRules[o],class:"mb-4"},null,8,["modelValue","onUpdate:modelValue","label","placeholder","prepend-inner-icon","hint","rules"]))),128)),a[17]||(a[17]=y("div",{class:"text-caption text-medium-emphasis mb-4"}," Both appear on your author page, and on the home page if you are featured there. ",-1)),t(x,{block:"",color:"primary",variant:"flat",type:"submit",loading:e.savingProfile,disabled:e.savingProfile||!e.profileDirty},{default:l(()=>a[16]||(a[16]=[r(" Save profile ")])),_:1},8,["loading","disabled"])]),_:1},8,["onSubmit"])]),_:1})]),_:1}),t(s),t(L,{flat:"",rounded:"lg"},{default:l(()=>[t(z,{class:"px-6 py-5"},{default:l(()=>[t(ne,{type:"error",variant:"tonal",density:"comfortable"},{default:l(()=>[a[19]||(a[19]=y("div",{class:"text-subtitle-2 mb-1"},"Danger zone",-1)),a[20]||(a[20]=y("div",{class:"text-body-2 mb-3"}," Permanently delete your account. This cannot be undone. Your published build orders stay on the site so the community can keep using them. ",-1)),t(x,{color:"error",variant:"flat",size:"small",onClick:a[6]||(a[6]=o=>e.deleteDialog=!0)},{default:l(()=>a[18]||(a[18]=[r(" Delete account ")])),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(A,{modelValue:e.pickerOpen,"onUpdate:modelValue":a[7]||(a[7]=o=>e.pickerOpen=o)},null,8,["modelValue"]),t(Fe,{modelValue:e.deleteDialog,"onUpdate:modelValue":a[9]||(a[9]=o=>e.deleteDialog=o),"max-width":"400"},{default:l(()=>[t(L,{rounded:"lg"},{default:l(()=>[t(E,{class:"pt-5 px-6"},{default:l(()=>a[21]||(a[21]=[r("Delete account?")])),_:1}),t(z,{class:"px-6"},{default:l(()=>a[22]||(a[22]=[r(" Your account will be permanently deleted and you will lose access to it. This cannot be undone. Build orders you have published stay on the site — contact us if you need one of them removed. ")])),_:1}),t(Ne,{class:"px-6 pb-5"},{default:l(()=>[t(Re),t(x,{variant:"text",onClick:a[8]||(a[8]=o=>e.deleteDialog=!1)},{default:l(()=>a[23]||(a[23]=[r("Cancel")])),_:1}),t(x,{color:"error",variant:"flat",loading:e.deleting,onClick:e.confirmDelete},{default:l(()=>a[24]||(a[24]=[r(" Delete permanently ")])),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["modelValue"])]),_:1})):J("",!0)}const oa=ve(He,[["render",Xe]]);export{oa as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.