You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
11 lines
39 KiB
11 lines
39 KiB
var K=Object.defineProperty;var q=(t,e,i)=>e in t?K(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i;var n=(t,e,i)=>q(t,typeof e!="symbol"?e+"":e,i);import{a as J,r as Q,V as X,A as Z,D as _,b as O,c as ee,d as T,e as l,f as te,M as w,X as se,u as G,I as ie,C as oe,_ as ne,g as k,h as u,i as d,j as s,k as a,w as c,l as b,t as m,m as y,v as E,n as F,o as I,p as re,q as j,T as ae,s as P,F as le,x as p}from"./index-BLqts8WY.js";import{t as N,r as de,b as H,D as W,a as Y,o as pe,f as ue,c as me,g as fe,d as ge}from"./index-MyY_xqVN.js";import"./dexie-export-import-B7Ze1sjn.js";import{u as we}from"./index-CsfPLOYu.js";import{E as be}from"./EntityIcon-CF1RwQI5.js";import{I as ye}from"./ImageMethodDialog-B6b8zZ7c.js";import{P as ve}from"./PushNotificationPermission-9Wf_h46a.js";import{Q as he}from"./QuickNav-DgCyvgDx.js";import{T as ce}from"./TopMessage-BE0GBIgW.js";import{U as Se}from"./UserNameDialog-B8a82q1n.js";import"./PhotoDialog-Dn3GjI9b.js";const{Axios:ts,AxiosError:ke,CanceledError:ss,isCancel:is,CancelToken:os,VERSION:ns,all:rs,Cancel:as,isAxiosError:ls,spread:ds,toFormData:ps,AxiosHeaders:us,HttpStatusCode:ms,formToJSON:fs,getAdapter:gs,mergeConfig:ws}=J;var Ie=Object.defineProperty,Ce=Object.getOwnPropertyDescriptor,xe=(t,e,i,r)=>{for(var f=r>1?void 0:r?Ce(e,i):e,v=t.length-1,S;v>=0;v--)(S=t[v])&&(f=(r?S(e,i,f):S(f))||f);return r&&f&&Ie(e,i,f),f};const C=Q();let D=class extends X{constructor(){super(...arguments);n(this,"$notify");n(this,"AppConstants",Z);n(this,"DEFAULT_PUSH_SERVER",_);n(this,"DEFAULT_IMAGE_API_SERVER",O);n(this,"DEFAULT_PARTNER_API_SERVER",ee);n(this,"activeDid","");n(this,"apiServer","");n(this,"apiServerInput","");n(this,"derivationPath","");n(this,"downloadUrl","");n(this,"endorserLimits",null);n(this,"givenName","");n(this,"hideRegisterPromptOnNewContact",!1);n(this,"imageLimits",null);n(this,"imageServer","");n(this,"isRegistered",!1);n(this,"limitsMessage","");n(this,"loadingLimits",!1);n(this,"notifyingNewActivity",!1);n(this,"notifyingNewActivityTime","");n(this,"notifyingReminder",!1);n(this,"notifyingReminderMessage","");n(this,"notifyingReminderTime","");n(this,"partnerApiServer","");n(this,"partnerApiServerInput","");n(this,"passkeyExpirationDescription","");n(this,"passkeyExpirationMinutes",T);n(this,"previousPasskeyExpirationMinutes",T);n(this,"profileImageUrl");n(this,"publicHex","");n(this,"publicBase64","");n(this,"showAdvanced",!1);n(this,"showB64Copy",!1);n(this,"showContactGives",!1);n(this,"showDidCopy",!1);n(this,"showDerCopy",!1);n(this,"showGeneralAdvanced",!1);n(this,"showLargeIdenticonId");n(this,"showLargeIdenticonUrl");n(this,"showPubCopy",!1);n(this,"showShortcutBvc",!1);n(this,"subscription",null);n(this,"warnIfProdServer",!1);n(this,"warnIfTestServer",!1);n(this,"webPushServer","");n(this,"webPushServerInput","")}async mounted(){var i;try{await this.initializeState(),await this.processIdentity()}catch(r){console.error("Telling user to clear cache at page create because:",r),console.error("To repeat with concatenated error: telling user to clear cache at page create because: "+r),this.$notify({group:"alert",type:"danger",title:"Error Loading Profile",text:"See the Help page about errors with your personal data."},-1)}try{const r=await((i=navigator.serviceWorker)==null?void 0:i.ready);this.subscription=await r.pushManager.getSubscription(),this.subscription||(this.notifyingNewActivity||this.notifyingReminder)&&this.turnOffNotifyingFlags()}catch{this.$notify({group:"alert",type:"warning",title:"Cannot Set Notifications",text:"This browser does not support notifications. Use Chrome, or install this to the home screen, or try other suggestions on the 'Troubleshoot your notifications' page."},3e3)}this.passkeyExpirationDescription=N()}beforeUnmount(){this.downloadUrl&&URL.revokeObjectURL(this.downloadUrl)}async initializeState(){await l.open();const i=await te();this.activeDid=i.activeDid||"",this.apiServer=i.apiServer||"",this.apiServerInput=i.apiServer||"",this.givenName=((i==null?void 0:i.firstName)||"")+(i!=null&&i.lastName?` ${i.lastName}`:""),this.hideRegisterPromptOnNewContact=!!i.hideRegisterPromptOnNewContact,this.isRegistered=!!(i!=null&&i.isRegistered),this.imageServer=i.imageServer||"",this.notifyingNewActivity=!!i.notifyingNewActivityTime,this.notifyingNewActivityTime=i.notifyingNewActivityTime||"",this.notifyingReminder=!!i.notifyingReminderTime,this.notifyingReminderMessage=i.notifyingReminderMessage||"",this.notifyingReminderTime=i.notifyingReminderTime||"",this.partnerApiServer=i.partnerApiServer||"",this.partnerApiServerInput=i.partnerApiServer||"",this.profileImageUrl=i.profileImageUrl,this.showContactGives=!!i.showContactGivesInline,this.passkeyExpirationMinutes=i.passkeyExpirationMinutes??T,this.previousPasskeyExpirationMinutes=this.passkeyExpirationMinutes,this.showGeneralAdvanced=!!i.showGeneralAdvanced,this.showShortcutBvc=!!i.showShortcutBvc,this.warnIfProdServer=!!i.warnIfProdServer,this.warnIfTestServer=!!i.warnIfTestServer,this.webPushServer=i.webPushServer||"",this.webPushServerInput=i.webPushServer||""}doCopyTwoSecRedo(i,r){r(),we().copy(i).then(()=>setTimeout(r,2e3))}async toggleShowContactAmounts(){this.showContactGives=!this.showContactGives,await l.open(),await l.settings.update(w,{showContactGivesInline:this.showContactGives})}async toggleShowGeneralAdvanced(){this.showGeneralAdvanced=!this.showGeneralAdvanced,await l.open(),await l.settings.update(w,{showGeneralAdvanced:this.showGeneralAdvanced})}async toggleProdWarning(){this.warnIfProdServer=!this.warnIfProdServer,await l.open(),await l.settings.update(w,{warnIfProdServer:this.warnIfProdServer})}async toggleTestWarning(){this.warnIfTestServer=!this.warnIfTestServer,await l.open(),await l.settings.update(w,{warnIfTestServer:this.warnIfTestServer})}async toggleShowShortcutBvc(){this.showShortcutBvc=!this.showShortcutBvc,await l.open(),await l.settings.update(w,{showShortcutBvc:this.showShortcutBvc})}readableDate(i){return i.substring(0,i.indexOf("T"))}async processIdentity(){var r;const i=await de(this.activeDid);if(i!=null&&i.identity){const f=JSON.parse(i.identity);this.publicHex=f.keys[0].publicKeyHex,this.publicBase64=H.Buffer.from(this.publicHex,"hex").toString("base64"),this.derivationPath=(r=f.keys[0].meta)==null?void 0:r.derivationPath,await this.checkLimitsFor(this.activeDid)}else i!=null&&i.publicKeyHex&&(this.publicHex=i.publicKeyHex,this.publicBase64=H.Buffer.from(this.publicHex,"hex").toString("base64"),await this.checkLimitsFor(this.activeDid))}async showNewActivityNotificationInfo(){this.$notify({group:"modal",type:"confirm",title:"New Activity Notification",text:`
|
|
This will only notify you when there is new relevant activity for you personally.
|
|
Note that it runs on your device and many factors may affect delivery,
|
|
so if you want a reliable but simple daily notification then choose a 'Reminder'.
|
|
Do you want more details?
|
|
`,onYes:async()=>{await this.$router.push({name:"help-notification-types"})},yesText:"tell me more."},-1)}async showNewActivityNotificationChoice(){this.notifyingNewActivity?this.$notify({group:"modal",type:"notification-off",title:W,text:"",callback:async i=>{i&&(await l.settings.update(w,{notifyingNewActivityTime:""}),this.notifyingNewActivity=!1,this.notifyingNewActivityTime="")}},-1):this.$refs.pushNotificationPermission.open(W,async(i,r)=>{i&&(await l.settings.update(w,{notifyingNewActivityTime:r}),this.notifyingNewActivity=!0,this.notifyingNewActivityTime=r)})}async showReminderNotificationInfo(){this.$notify({group:"modal",type:"confirm",title:"Reminder Notification",text:`
|
|
This will notify you at a specific time each day.
|
|
Note that it does not give you personalized notifications,
|
|
so if you want less reliable but personalized notification then choose a 'New Activity' Notification.
|
|
Do you want more details?
|
|
`,onYes:async()=>{await this.$router.push({name:"help-notification-types"})},yesText:"tell me more."},-1)}async showReminderNotificationChoice(){this.notifyingReminder?this.$notify({group:"modal",type:"notification-off",title:Y,text:"",callback:async i=>{i&&(await l.settings.update(w,{notifyingReminderMessage:"",notifyingReminderTime:""}),this.notifyingReminder=!1,this.notifyingReminderMessage="",this.notifyingReminderTime="")}},-1):this.$refs.pushNotificationPermission.open(Y,async(i,r,f)=>{i&&(await l.settings.update(w,{notifyingReminderMessage:f,notifyingReminderTime:r}),this.notifyingReminder=!0,this.notifyingReminderMessage=f||"",this.notifyingReminderTime=r)})}async toggleHideRegisterPromptOnNewContact(){const i=!this.hideRegisterPromptOnNewContact;await l.open(),await l.settings.update(w,{hideRegisterPromptOnNewContact:i}),this.hideRegisterPromptOnNewContact=i}async updatePasskeyExpiration(){await l.open(),await l.settings.update(w,{passkeyExpirationMinutes:this.passkeyExpirationMinutes}),ge(),this.passkeyExpirationDescription=N()}async turnOffNotifyingFlags(){await l.open(),await l.settings.update(w,{notifyingNewActivityTime:"",notifyingReminderMessage:"",notifyingReminderTime:""}),this.notifyingNewActivity=!1,this.notifyingNewActivityTime="",this.notifyingReminder=!1,this.notifyingReminderMessage="",this.notifyingReminderTime=""}async exportDatabase(){try{const i=await this.generateDatabaseBlob();this.downloadUrl=this.createBlobURL(i),this.downloadDatabaseBackup(this.downloadUrl),this.notifyDownloadStarted(),setTimeout(()=>URL.revokeObjectURL(this.downloadUrl),1e3)}catch(i){this.handleExportError(i)}}async generateDatabaseBlob(){return await l.export({prettyJson:!0})}createBlobURL(i){return URL.createObjectURL(i)}downloadDatabaseBackup(i){const r=this.$refs.downloadLink;r.href=i,r.download=`${l.name}-backup.json`,r.click()}computedStartDownloadLinkClassNames(){return{hidden:this.downloadUrl}}computedDownloadLinkClassNames(){return{hidden:!this.downloadUrl}}notifyDownloadStarted(){this.$notify({group:"alert",type:"success",title:"Download Started",text:"See your downloads directory for the backup. It is in the Dexie format."},-1)}handleExportError(i){console.error("Export Error:",i),this.$notify({group:"alert",type:"danger",title:"Export Error",text:"There was an error exporting the data."},-1)}async uploadImportFile(i){C.value=i.target.files[0]}showContactImport(){return!!C.value}confirmSubmitImportFile(){C.value!=null&&this.$notify({group:"modal",type:"confirm",title:"Replace All",text:"This will replace all settings and contacts, so we recommend you first do the backup step above. Are you sure you want to import and replace all contacts and settings?",onYes:this.submitImportFile},-1)}async submitImportFile(){C.value!=null&&(await l.delete(),await se.import(C.value,{progressCallback:this.progressCallback}))}async checkContactImports(){const i=new FileReader;i.onload=r=>{var v,S,A,h;const f=((v=r.target)==null?void 0:v.result)||"{}";try{const x=((h=(A=(S=JSON.parse(f).data)==null?void 0:S.data)==null?void 0:A.find(R=>R.tableName==="contacts"))==null?void 0:h.rows).map(R=>pe(["$types"],R));this.$router.push({name:"contact-import",query:{contacts:JSON.stringify(x)}})}catch(g){console.error("Error checking contact imports:",g),this.$notify({group:"alert",type:"danger",title:"Error Importing",text:"There was an error reading that Dexie file."},3e3)}},i.readAsText(C.value)}progressCallback(i){return console.log(`Import progress: ${i.completedRows} of ${i.totalRows} rows completed.`),i.done&&this.$notify({group:"alert",type:"success",title:"Import Complete",text:""},5e3),!0}async checkLimits(){this.activeDid?this.checkLimitsFor(this.activeDid):this.limitsMessage="You have no identifier, or your data has been corrupted."}async checkLimitsFor(i){this.loadingLimits=!0,this.limitsMessage="";try{const r=await ue(this.apiServer,this.axios,i);if(r.status===200){if(this.endorserLimits=r.data,!this.isRegistered)try{await G(i,{isRegistered:!0}),this.isRegistered=!0}catch(v){console.error("Got an error updating settings:",v),this.$notify({group:"alert",type:"danger",title:"Update Error",text:"Unable to update your settings. Check claim limits again."},-1)}const f=await me(this.axios,i);f.status===200&&(this.imageLimits=f.data)}}catch(r){this.handleRateLimitsError(r)}this.loadingLimits=!1}handleRateLimitsError(i){var r,f;if(i instanceof ke){const v=(r=i.response)==null?void 0:r.data;this.limitsMessage=((f=v==null?void 0:v.error)==null?void 0:f.message)||"Bad server response.",console.error("Got bad response retrieving limits, which usually means user isn't registered.",i)}else this.limitsMessage="Got an error retrieving limits.",console.error("Got some error retrieving limits:",i)}async onClickSaveApiServer(){await l.open(),await l.settings.update(w,{apiServer:this.apiServerInput}),this.apiServer=this.apiServerInput}async onClickSavePartnerServer(){await l.open(),await l.settings.update(w,{partnerApiServer:this.partnerApiServerInput}),this.partnerApiServer=this.partnerApiServerInput}async onClickSavePushServer(){await l.open(),await l.settings.update(w,{webPushServer:this.webPushServerInput}),this.webPushServer=this.webPushServerInput,this.$notify({group:"alert",type:"warning",title:"Reload",text:"Now reload the app to get a new VAPID to use with this push server."},-1)}openImageDialog(){this.$refs.imageMethodDialog.open(async i=>{await l.open(),await l.settings.update(w,{profileImageUrl:i}),this.profileImageUrl=i},ie,!0)}confirmDeleteImage(){this.$notify({group:"modal",type:"confirm",title:"Note that anyone with you already as a contact will no longer see a picture, and you will have to reshare your data with them if you save a new picture. Are you sure you want to delete your profile picture?",text:"",onYes:this.deleteImage},-1)}async deleteImage(){if(this.profileImageUrl)try{const i=await fe(this.activeDid);this.passkeyExpirationDescription=N();const r=await this.axios.delete(O+"/image/"+encodeURIComponent(this.profileImageUrl),{headers:i});r.status===204||(console.error("Non-success deleting image:",r),this.$notify({group:"alert",type:"danger",title:"Error",text:"There was a problem deleting the image. Contact support if you want it removed from the servers."},-1)),await l.open(),await l.settings.update(w,{profileImageUrl:void 0}),this.profileImageUrl=void 0}catch(i){console.error("Error deleting image:",i),i.response.status===404?(console.error("The image was already deleted:",i),await G(this.activeDid,{profileImageUrl:void 0}),this.profileImageUrl=void 0):this.$notify({group:"alert",type:"danger",title:"Error",text:"There was an error deleting the image."},5e3)}}};D=xe([oe({components:{EntityIcon:be,ImageMethodDialog:ye,PushNotificationPermission:ve,QuickNav:he,TopMessage:ce,UserNameDialog:Se}})],D);const Re={id:"Content",class:"p-6 pb-24 max-w-3xl mx-auto"},Ae={key:0,id:"noticeBeforeShare",class:"bg-amber-200 text-amber-900 border-amber-500 border-dashed border text-center rounded-md overflow-hidden px-4 py-3 mt-4"},Ee={id:"sectionIdentityDetails",class:"bg-slate-100 rounded-md overflow-hidden px-4 py-3 mt-4"},Pe={key:0},Te={class:"text-xl font-semibold mb-2"},Ne={class:"whitespace-nowrap"},De={key:1,class:"block w-full text-center text-md bg-amber-200 border border-dashed border-slate-400 px-1.5 py-2 rounded-md mb-2"},Ue={class:"flex justify-center mt-4"},Le={key:0,class:"flex justify-between"},$e={key:1,class:"text-center"},Me={class:"mt-6"},Be={class:"flex justify-center text-center"},Ve={class:"flex justify-center"},Oe={key:2,class:"fixed z-[100] top-0 inset-x-0 w-full"},Ge={class:"absolute inset-0 h-screen flex flex-col items-center justify-center bg-slate-900/50"},Fe={class:"text-sm text-slate-500 flex justify-start items-center mb-1","data-testId":"didWrapper"},je={class:"truncate"},He={class:"text-blue-500 text-sm font-bold"},We={key:1,id:"noticeBeforeAnnounce",class:"bg-amber-200 text-amber-900 border-amber-500 border-dashed border text-center rounded-md overflow-hidden px-4 py-3 mt-4"},Ye={id:"sectionNotifications",class:"bg-slate-100 rounded-md overflow-hidden px-4 py-4 mt-8 mb-8"},ze={class:"flex items-center justify-between"},Ke={key:0,class:"w-full flex justify-between"},qe={class:"ml-8 mr-8"},Je={class:"mt-2 flex items-center justify-between"},Qe={key:1,class:"w-full text-right"},Xe={id:"sectionSearchLocation",class:"bg-slate-100 rounded-md overflow-hidden px-4 py-4 mt-8 mb-8"},Ze={key:2,id:"sectionUsageLimits",class:"bg-slate-100 rounded-md overflow-hidden px-4 py-4 mt-8 mb-8"},_e={key:0,class:"text-center"},et={key:1},tt={class:"text-sm"},st={class:"whitespace-nowrap"},it={class:"mt-3 text-sm"},ot={class:"whitespace-nowrap"},nt={key:0,class:"mt-3 text-sm"},rt={class:"whitespace-nowrap"},at={id:"sectionDataExport",class:"bg-slate-100 rounded-md overflow-hidden px-4 py-4 mt-8 mb-8"},lt={class:"mt-4"},dt={class:"list-disc list-outside ml-4"},pt={key:3,id:"sectionAdvanced"},ut={id:"sectionDeepIdentifier",class:"bg-slate-100 rounded-md overflow-hidden px-4 py-3 mb-4"},mt={class:"text-sm text-slate-500 flex justify-start items-center mb-1"},ft={class:"truncate"},gt={class:"text-sm text-slate-500 flex justify-start items-center mb-1"},wt={class:"truncate"},bt={key:0,class:"text-sm text-slate-500 flex justify-start items-center mb-1"},yt={class:"truncate"},vt={key:1,class:"text-sm text-slate-500 flex justify-start items-center mb-1"},ht={id:"sectionImportContactsSettings",class:"mt-4"},ct={class:"ml-4 mt-2"},St={key:0,class:"mt-4"},kt={class:"flex justify-center"},It={class:"flex justify-center"},Ct={class:"relative ml-2"},xt={id:"sectionClaimServer"},Rt={class:"px-4 py-4"},At={class:"relative ml-2"},Et={class:"relative ml-2"},Pt={id:"sectionNotificationPushServer",class:"px-3 py-4"},Tt={key:0,class:"px-4 text-sm"},Nt={class:"px-3 py-4"},Dt={key:1,class:"px-4 text-sm"},Ut={id:"sectionImageServerURL",class:"mt-2"},Lt={class:"text-sm"},$t={class:"relative ml-2"},Mt={class:"relative ml-2"},Bt={class:"flex mt-4"},Vt={id:"sectionPasskeyExpiration",class:"flex justify-between"},Ot={class:"text-sm ml-2"},Gt={class:"relative ml-2"},Ft={class:"relative ml-2"};function jt(t,e,i,r,f,v){var L,$,M,B,V;const S=k("QuickNav"),A=k("TopMessage"),h=k("router-link"),g=k("fa"),U=k("UserNameDialog"),x=k("EntityIcon"),R=k("ImageMethodDialog"),z=k("PushNotificationPermission");return p(),u(le,null,[d(S,{selected:"Profile"}),d(A),s("section",Re,[e[123]||(e[123]=s("h1",{id:"ViewHeading",class:"text-4xl text-center font-light"}," Your Identity ",-1)),t.activeDid?b("",!0):(p(),u("div",Ae,[e[50]||(e[50]=s("p",{class:"mb-4"},[s("b",null,"Note:"),a(" Before you can share with others or take any action, you need an identifier. ")],-1)),d(h,{to:{name:"start"},class:"inline-block text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md"},{default:c(()=>e[49]||(e[49]=[a(" Create An Identifier ")])),_:1})])),s("div",Ee,[t.givenName?(p(),u("div",Pe,[s("h2",Te,[s("span",Ne,[d(h,{to:{name:"contact-qr"},class:"bg-slate-500 text-white px-1.5 py-1 rounded-md"},{default:c(()=>[d(g,{icon:"qrcode",class:"fa-fw text-xl"})]),_:1})]),a(" "+m(t.givenName)+" ",1),d(h,{to:{name:"new-edit-account"}},{default:c(()=>[d(g,{icon:"pen",class:"text-xs text-blue-500 ml-2 mb-1"})]),_:1})])])):(p(),u("span",De,[s("button",{onClick:e[0]||(e[0]=()=>this.$refs.userNameDialog.open(o=>this.givenName=o)),class:"inline-block text-md uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md"}," Set Your Name "),d(U,{ref:"userNameDialog"},null,512)])),s("div",Ue,[t.profileImageUrl?(p(),u("span",Le,[d(x,{"icon-size":96,profileImageUrl:t.profileImageUrl,class:"inline-block align-text-bottom border border-slate-300 rounded",onClick:e[1]||(e[1]=o=>t.showLargeIdenticonUrl=t.profileImageUrl)},null,8,["profileImageUrl"]),d(g,{icon:"trash-can",onClick:t.confirmDeleteImage,class:"text-red-500 fa-fw ml-8 mt-8 w-12 h-12"},null,8,["onClick"])])):(p(),u("div",$e,[s("div",{class:"",onClick:e[3]||(e[3]=o=>t.openImageDialog())},[d(g,{icon:"camera",class:"bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-2 rounded-l"}),d(g,{icon:"image-portrait",class:"bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-2 rounded-r",onClick:e[2]||(e[2]=o=>t.openImageDialog())})])])),d(R,{ref:"imageMethodDialog"},null,512)]),s("div",Me,[s("div",Be,[a(" People "+m(t.profileImageUrl?"without your image":"")+" see this ",1),e[51]||(e[51]=s("br",null,null,-1)),e[52]||(e[52]=a(" (if you've let them see your activity): "))]),s("div",Ve,[d(x,{entityId:t.activeDid,iconSize:64,class:"inline-block align-middle border border-slate-300 rounded-md mr-1",onClick:e[4]||(e[4]=o=>t.showLargeIdenticonId=t.activeDid)},null,8,["entityId"])])]),t.showLargeIdenticonId||t.showLargeIdenticonUrl?(p(),u("div",Oe,[s("div",Ge,[d(x,{entityId:t.showLargeIdenticonId,iconSize:512,profileImageUrl:t.showLargeIdenticonUrl,class:"flex w-11/12 max-w-sm mx-auto mb-3 overflow-hidden bg-white rounded-lg shadow-lg",onClick:e[5]||(e[5]=o=>{t.showLargeIdenticonId=void 0,t.showLargeIdenticonUrl=void 0})},null,8,["entityId","profileImageUrl"])])])):b("",!0),e[54]||(e[54]=s("div",{class:"text-slate-500 text-sm font-bold"},"ID",-1)),s("div",Fe,[s("code",je,m(t.activeDid),1),s("button",{onClick:e[6]||(e[6]=o=>t.doCopyTwoSecRedo(t.activeDid,()=>t.showDidCopy=!t.showDidCopy)),class:"ml-2"},[d(g,{icon:"copy",class:"text-slate-400 fa-fw"})]),y(s("span",null,"Copied",512),[[E,t.showDidCopy]])]),s("div",He,[d(h,{to:{path:"/did/"+encodeURIComponent(t.activeDid)}},{default:c(()=>e[53]||(e[53]=[a(" Your Activity ")])),_:1},8,["to"])])]),!t.loadingLimits&&!((L=t.endorserLimits)!=null&&L.nextWeekBeginDateTime)?(p(),u("div",We,[e[56]||(e[56]=s("p",{class:"mb-4"},[s("b",null,"Note:"),a(" Before you can publicly announce a new project or time commitment, a friend needs to register you. ")],-1)),d(h,{to:{name:"contact-qr"},class:"inline-block text-md uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md"},{default:c(()=>e[55]||(e[55]=[a(" Share Your Info ")])),_:1})])):b("",!0),s("div",Ye,[e[64]||(e[64]=s("div",{class:"mb-2 font-bold"},"Notifications",-1)),s("div",ze,[s("div",null,[e[57]||(e[57]=a(" Reminder Notification ")),d(g,{icon:"question-circle",class:"text-slate-400 fa-fw ml-2 cursor-pointer",onClick:F(t.showReminderNotificationInfo,["stop"])},null,8,["onClick"])]),s("div",{class:"relative ml-2 cursor-pointer",onClick:e[8]||(e[8]=o=>t.showReminderNotificationChoice())},[y(s("input",{type:"checkbox","onUpdate:modelValue":e[7]||(e[7]=o=>t.notifyingReminder=o),class:"sr-only"},null,512),[[I,t.notifyingReminder]]),e[58]||(e[58]=s("div",{class:"block bg-slate-500 w-14 h-8 rounded-full"},null,-1)),e[59]||(e[59]=s("div",{class:"dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"},null,-1))])]),t.notifyingReminder?(p(),u("div",Ke,[s("span",qe,'Message: "'+m(t.notifyingReminderMessage)+'"',1),s("span",null,m(t.notifyingReminderTime.replace(" "," ")),1)])):b("",!0),s("div",Je,[s("div",null,[e[60]||(e[60]=a(" New Activity Notification ")),d(g,{icon:"question-circle",class:"text-slate-400 fa-fw ml-2 cursor-pointer",onClick:F(t.showNewActivityNotificationInfo,["stop"])},null,8,["onClick"])]),s("div",{class:"relative ml-2 cursor-pointer",onClick:e[10]||(e[10]=o=>t.showNewActivityNotificationChoice())},[y(s("input",{type:"checkbox","onUpdate:modelValue":e[9]||(e[9]=o=>t.notifyingNewActivity=o),class:"sr-only"},null,512),[[I,t.notifyingNewActivity]]),e[61]||(e[61]=s("div",{class:"block bg-slate-500 w-14 h-8 rounded-full"},null,-1)),e[62]||(e[62]=s("div",{class:"dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"},null,-1))])]),t.notifyingNewActivityTime?(p(),u("div",Qe,m(t.notifyingNewActivityTime.replace(" "," ")),1)):b("",!0),d(h,{class:"pl-4 text-sm text-blue-500",to:"/help-notifications"},{default:c(()=>e[63]||(e[63]=[a(" Troubleshoot your notifications. ")])),_:1})]),d(z,{ref:"pushNotificationPermission"},null,512),s("div",Xe,[e[66]||(e[66]=s("div",{class:"mb-2 font-bold"},"Location for Searches",-1)),d(h,{to:{name:"search-area"},class:"block w-full text-center text-m bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-2 mt-6"},{default:c(()=>e[65]||(e[65]=[a(" Set Search Area… ")])),_:1})]),t.activeDid?(p(),u("div",Ze,[e[79]||(e[79]=s("div",{class:"mb-2 font-bold"},"Usage Limits",-1)),t.loadingLimits?(p(),u("div",_e,[e[67]||(e[67]=a(" Checking… ")),d(g,{icon:"spinner",class:"fa-spin"})])):b("",!0),s("div",null,m(t.limitsMessage),1),($=t.endorserLimits)!=null&&$.nextWeekBeginDateTime?(p(),u("div",et,[s("p",tt,[e[68]||(e[68]=a(" You have done ")),s("b",null,m(t.endorserLimits.doneClaimsThisWeek)+" claims",1),e[69]||(e[69]=a(" out of ")),s("b",null,m(t.endorserLimits.maxClaimsPerWeek),1),e[70]||(e[70]=a(" for this week. Your claims counter resets at ")),s("b",st,m(t.readableDate(t.endorserLimits.nextWeekBeginDateTime)),1)]),s("p",it,[e[71]||(e[71]=a(" You have done ")),s("b",null,m(t.endorserLimits.doneRegistrationsThisMonth)+" registrations",1),e[72]||(e[72]=a(" out of ")),s("b",null,m(t.endorserLimits.maxRegistrationsPerMonth),1),e[73]||(e[73]=a(" for this month. ")),e[74]||(e[74]=s("i",null,"(You cannot register anyone else on your first day.)",-1)),e[75]||(e[75]=a(" Your registration counter resets at ")),s("b",ot,m(t.readableDate(t.endorserLimits.nextMonthBeginDateTime)),1)]),t.imageLimits?(p(),u("p",nt,[e[76]||(e[76]=a(" You have uploaded ")),s("b",null,m((M=t.imageLimits)==null?void 0:M.doneImagesThisWeek)+" images",1),e[77]||(e[77]=a(" out of ")),s("b",null,m((B=t.imageLimits)==null?void 0:B.maxImagesPerWeek),1),e[78]||(e[78]=a(" for this week. Your image counter resets at ")),s("b",rt,m(t.readableDate((V=t.imageLimits)==null?void 0:V.nextWeekBeginDateTime)),1)])):b("",!0)])):b("",!0),s("button",{class:"block float-right w-fit text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md mt-2",onClick:e[11]||(e[11]=o=>t.checkLimits())}," Recheck Limits ")])):b("",!0),s("div",at,[e[86]||(e[86]=s("div",{class:"mb-2 font-bold"},"Data Export",-1)),t.activeDid?(p(),re(h,{key:0,to:{name:"seed-backup"},class:"block w-full text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-2 mt-2"},{default:c(()=>e[80]||(e[80]=[a(" Backup Identifier Seed ")])),_:1})):b("",!0),s("button",{class:j([t.computedStartDownloadLinkClassNames(),"block w-full text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"]),onClick:e[12]||(e[12]=o=>t.exportDatabase())},e[81]||(e[81]=[a(" Download Settings & Contacts "),s("br",null,null,-1),a(" (excluding Identifier Data) ")]),2),s("a",{ref:"downloadLink",class:j([t.computedDownloadLinkClassNames(),"block w-full text-center text-md bg-gradient-to-b from-green-500 to-green-800 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-6"])}," If no download happened yet, click again here to download now. ",2),s("div",lt,[e[85]||(e[85]=s("p",null," After the download, you can save the file in your preferred storage location. ",-1)),s("ul",null,[e[84]||(e[84]=s("li",{class:"list-disc list-outside ml-4"},' On iOS: Choose "More..." and select a place in iCloud, or go "Back" and save to another location. ',-1)),s("li",dt,[e[82]||(e[82]=a(' On Android: Choose "Open" and then share ')),d(g,{icon:"share-nodes",class:"fa-fw"}),e[83]||(e[83]=a(" to your prefered place. "))])])])]),s("h3",{id:"advanced",class:"text-sm uppercase font-semibold mb-3",onClick:e[13]||(e[13]=o=>t.showAdvanced=!t.showAdvanced)}," Advanced "),t.showAdvanced||t.showGeneralAdvanced?(p(),u("div",pt,[e[119]||(e[119]=s("p",{class:"text-rose-600 mb-8"}," Beware: the features here can be confusing and even change data in ways you do not expect. But we support your freedom! ",-1)),e[120]||(e[120]=s("span",{class:"text-slate-500 text-sm font-bold mb-2"}," Deep Identifier Details ",-1)),s("div",ut,[e[87]||(e[87]=s("div",{class:"text-slate-500 text-sm font-bold"},"Public Key (base 64)",-1)),s("div",mt,[s("code",ft,m(t.publicBase64),1),s("button",{onClick:e[14]||(e[14]=o=>t.doCopyTwoSecRedo(t.publicBase64,()=>t.showB64Copy=!t.showB64Copy)),class:"ml-2"},[d(g,{icon:"copy",class:"text-slate-400 fa-fw"})]),y(s("span",null,"Copied",512),[[E,t.showB64Copy]])]),e[88]||(e[88]=s("div",{class:"text-slate-500 text-sm font-bold"},"Public Key (hex)",-1)),s("div",gt,[s("code",wt,m(t.publicHex),1),s("button",{onClick:e[15]||(e[15]=o=>t.doCopyTwoSecRedo(t.publicHex,()=>t.showPubCopy=!t.showPubCopy)),class:"ml-2"},[d(g,{icon:"copy",class:"text-slate-400 fa-fw"})]),y(s("span",null,"Copied",512),[[E,t.showPubCopy]])]),e[89]||(e[89]=s("div",{class:"text-slate-500 text-sm font-bold"},"Derivation Path",-1)),t.derivationPath?(p(),u("div",bt,[s("code",yt,m(t.derivationPath),1),s("button",{onClick:e[16]||(e[16]=o=>t.doCopyTwoSecRedo(t.derivationPath,()=>t.showDerCopy=!t.showDerCopy)),class:"ml-2"},[d(g,{icon:"copy",class:"text-slate-400 fa-fw"})]),y(s("span",null,"Copied",512),[[E,t.showDerCopy]])])):(p(),u("div",vt," (none) "))]),d(h,{id:"switch-identity-link",to:{name:"identity-switcher"},class:"block w-fit text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md mb-2"},{default:c(()=>e[90]||(e[90]=[a(" Switch Identifier ")])),_:1}),s("div",ht,[e[93]||(e[93]=s("h2",{class:"text-slate-500 text-sm font-bold"}," Import Contacts & Settings Database ",-1)),s("div",ct,[s("input",{type:"file",onChange:e[17]||(e[17]=(...o)=>t.uploadImportFile&&t.uploadImportFile(...o)),class:"ml-2"},null,32),d(ae,{"enter-active-class":"transform ease-out duration-300 transition","enter-from-class":"translate-y-2 opacity-0 sm:translate-y-4","enter-to-class":"translate-y-0 opacity-100 sm:translate-y-0","leave-active-class":"transition ease-in duration-500","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:c(()=>[t.showContactImport()?(p(),u("div",St,[s("div",kt,[s("button",{class:"block text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-6",onClick:e[18]||(e[18]=o=>t.confirmSubmitImportFile())},e[91]||(e[91]=[a(" Overwrite Settings & Contacts "),s("br",null,null,-1),a(" (which doesn't include Identifier Data) ")]))]),s("div",It,[s("button",{class:"block text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-6",onClick:e[19]||(e[19]=o=>t.checkContactImports())},e[92]||(e[92]=[a(" Import Only Contacts "),s("br",null,null,-1),a(" after comparing ")]))])])):b("",!0)]),_:1})])]),s("label",{for:"toggleShowAmounts",class:"flex items-center justify-between cursor-pointer my-4",onClick:e[21]||(e[21]=(...o)=>t.toggleShowContactAmounts&&t.toggleShowContactAmounts(...o))},[e[96]||(e[96]=s("span",{class:"text-slate-500 text-sm font-bold"},"Contacts Display",-1)),e[97]||(e[97]=s("span",{class:"ml-2"},"Show hours given & received",-1)),s("div",Ct,[y(s("input",{type:"checkbox","onUpdate:modelValue":e[20]||(e[20]=o=>t.showContactGives=o),name:"showContactGives",class:"sr-only"},null,512),[[I,t.showContactGives]]),e[94]||(e[94]=s("div",{class:"block bg-slate-500 w-14 h-8 rounded-full"},null,-1)),e[95]||(e[95]=s("div",{class:"dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"},null,-1))])]),s("div",xt,[e[104]||(e[104]=s("h2",{class:"text-slate-500 text-sm font-bold mt-4"},"Claim Server",-1)),s("div",Rt,[y(s("input",{type:"text",class:"block w-full rounded border border-slate-400 px-4 py-2","onUpdate:modelValue":e[22]||(e[22]=o=>t.apiServerInput=o)},null,512),[[P,t.apiServerInput]]),t.apiServerInput!=t.apiServer?(p(),u("button",{key:0,class:"w-full px-4 rounded bg-yellow-500 border border-slate-400",onClick:e[23]||(e[23]=o=>t.onClickSaveApiServer())},[d(g,{icon:"floppy-disk",class:"fa-fw",color:"white"})])):b("",!0),s("button",{class:"px-3 rounded bg-slate-200 border border-slate-400",onClick:e[24]||(e[24]=o=>t.apiServerInput=t.AppConstants.PROD_ENDORSER_API_SERVER)}," Use Prod "),s("button",{class:"px-3 rounded bg-slate-200 border border-slate-400",onClick:e[25]||(e[25]=o=>t.apiServerInput=t.AppConstants.TEST_ENDORSER_API_SERVER)}," Use Test "),s("button",{class:"px-3 rounded bg-slate-200 border border-slate-400",onClick:e[26]||(e[26]=o=>t.apiServerInput=t.AppConstants.LOCAL_ENDORSER_API_SERVER)}," Use Local ")]),s("label",{for:"toggleProdWarningMessage",class:"flex items-center justify-between cursor-pointer px-4 py-4",onClick:e[28]||(e[28]=(...o)=>t.toggleProdWarning&&t.toggleProdWarning(...o))},[e[100]||(e[100]=s("h2",null,"Show warning if on prod server",-1)),s("div",At,[y(s("input",{type:"checkbox","onUpdate:modelValue":e[27]||(e[27]=o=>t.warnIfProdServer=o),class:"sr-only"},null,512),[[I,t.warnIfProdServer]]),e[98]||(e[98]=s("div",{class:"block bg-slate-500 w-14 h-8 rounded-full"},null,-1)),e[99]||(e[99]=s("div",{class:"dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"},null,-1))])]),s("label",{for:"toggleTestWarningMessage",class:"flex items-center justify-between cursor-pointer px-4 py-4",onClick:e[30]||(e[30]=(...o)=>t.toggleTestWarning&&t.toggleTestWarning(...o))},[e[103]||(e[103]=s("h2",null,"Show warning if on non-prod server",-1)),s("div",Et,[y(s("input",{type:"checkbox","onUpdate:modelValue":e[29]||(e[29]=o=>t.warnIfTestServer=o),class:"sr-only"},null,512),[[I,t.warnIfTestServer]]),e[101]||(e[101]=s("div",{class:"block bg-slate-500 w-14 h-8 rounded-full"},null,-1)),e[102]||(e[102]=s("div",{class:"dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"},null,-1))])])]),e[121]||(e[121]=s("h2",{class:"text-slate-500 text-sm font-bold mb-2"}," Notification Push Server ",-1)),s("div",Pt,[y(s("input",{type:"text",class:"block w-full rounded border border-slate-400 px-3 py-2","onUpdate:modelValue":e[31]||(e[31]=o=>t.webPushServerInput=o)},null,512),[[P,t.webPushServerInput]]),t.webPushServerInput!=t.webPushServer?(p(),u("button",{key:0,class:"w-full px-4 rounded bg-yellow-500 border border-slate-400",onClick:e[32]||(e[32]=o=>t.onClickSavePushServer())},[d(g,{icon:"floppy-disk",class:"fa-fw",color:"white"})])):b("",!0),s("button",{class:"px-3 rounded bg-slate-200 border border-slate-400",onClick:e[33]||(e[33]=o=>t.webPushServerInput=t.AppConstants.PROD_PUSH_SERVER)}," Use Prod "),s("button",{class:"px-3 rounded bg-slate-200 border border-slate-400",onClick:e[34]||(e[34]=o=>t.webPushServerInput=t.AppConstants.TEST1_PUSH_SERVER)}," Use Test 1 "),s("button",{class:"px-3 rounded bg-slate-200 border border-slate-400",onClick:e[35]||(e[35]=o=>t.webPushServerInput=t.AppConstants.TEST2_PUSH_SERVER)}," Use Test 2 ")]),t.webPushServerInput?b("",!0):(p(),u("span",Tt," When that setting is blank, this app will use the default web push server URL: "+m(t.DEFAULT_PUSH_SERVER),1)),e[122]||(e[122]=s("h2",{class:"text-slate-500 text-sm font-bold mb-2"},"Partner Server URL",-1)),s("div",Nt,[y(s("input",{type:"text",class:"block w-full rounded border border-slate-400 px-3 py-2","onUpdate:modelValue":e[36]||(e[36]=o=>t.partnerApiServerInput=o)},null,512),[[P,t.partnerApiServerInput]]),t.partnerApiServerInput!=t.partnerApiServer?(p(),u("button",{key:0,class:"w-full px-4 rounded bg-yellow-500 border border-slate-400",onClick:e[37]||(e[37]=o=>t.onClickSavePartnerServer())},[d(g,{icon:"floppy-disk",class:"fa-fw",color:"white"})])):b("",!0),s("button",{class:"px-3 rounded bg-slate-200 border border-slate-400",onClick:e[38]||(e[38]=o=>t.partnerApiServerInput=t.AppConstants.PROD_PARTNER_API_SERVER)}," Use Prod "),s("button",{class:"px-3 rounded bg-slate-200 border border-slate-400",onClick:e[39]||(e[39]=o=>t.partnerApiServerInput=t.AppConstants.TEST_PARTNER_API_SERVER)}," Use Test "),s("button",{class:"px-3 rounded bg-slate-200 border border-slate-400",onClick:e[40]||(e[40]=o=>t.partnerApiServerInput=t.AppConstants.LOCAL_PARTNER_API_SERVER)}," Use Local ")]),t.partnerApiServerInput?b("",!0):(p(),u("span",Dt," When that setting is blank, this app will use the default partner server URL: "+m(t.DEFAULT_PARTNER_API_SERVER),1)),s("div",Ut,[e[105]||(e[105]=s("span",{class:"text-slate-500 text-sm font-bold"},"Image Server URL",-1)),e[106]||(e[106]=a(" ")),s("span",Lt,m(t.DEFAULT_IMAGE_API_SERVER),1)]),s("label",{for:"toggleHideRegisterPromptOnNewContact",class:"flex items-center justify-between cursor-pointer mt-4",onClick:e[42]||(e[42]=o=>t.toggleHideRegisterPromptOnNewContact())},[e[109]||(e[109]=s("span",{class:"text-slate-500 text-sm font-bold"}," Hide Register Prompt on New Contact ",-1)),s("div",$t,[y(s("input",{type:"checkbox","onUpdate:modelValue":e[41]||(e[41]=o=>t.hideRegisterPromptOnNewContact=o),class:"sr-only"},null,512),[[I,t.hideRegisterPromptOnNewContact]]),e[107]||(e[107]=s("div",{class:"block bg-slate-500 w-14 h-8 rounded-full"},null,-1)),e[108]||(e[108]=s("div",{class:"dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"},null,-1))])]),s("label",{for:"toggleShowShortcutBvc",class:"flex items-center justify-between cursor-pointer mt-4",onClick:e[44]||(e[44]=(...o)=>t.toggleShowShortcutBvc&&t.toggleShowShortcutBvc(...o))},[e[112]||(e[112]=s("span",{class:"text-slate-500 text-sm font-bold"}," Show BVC Shortcut on Home Page ",-1)),s("div",Mt,[y(s("input",{type:"checkbox","onUpdate:modelValue":e[43]||(e[43]=o=>t.showShortcutBvc=o),class:"sr-only"},null,512),[[I,t.showShortcutBvc]]),e[110]||(e[110]=s("div",{class:"block bg-slate-500 w-14 h-8 rounded-full"},null,-1)),e[111]||(e[111]=s("div",{class:"dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"},null,-1))])]),s("div",Bt,[s("button",null,[d(h,{to:{name:"statistics"},class:"block w-fit text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md mb-2"},{default:c(()=>e[113]||(e[113]=[a(" See Global Animated History of Giving ")])),_:1})])]),s("div",Vt,[s("span",null,[e[114]||(e[114]=s("span",{class:"text-slate-500 text-sm font-bold mb-2"}," Passkey Expiration Minutes ",-1)),e[115]||(e[115]=s("br",null,null,-1)),s("span",Ot,m(t.passkeyExpirationDescription),1)]),s("div",Gt,[y(s("input",{type:"number",class:"border border-slate-400 rounded px-2 py-2 text-center w-20","onUpdate:modelValue":e[45]||(e[45]=o=>t.passkeyExpirationMinutes=o),onChange:e[46]||(e[46]=(...o)=>t.updatePasskeyExpiration&&t.updatePasskeyExpiration(...o))},null,544),[[P,t.passkeyExpirationMinutes]])])]),s("label",{for:"toggleShowGeneralAdvanced",class:"flex items-center justify-between cursor-pointer mt-4",onClick:e[48]||(e[48]=(...o)=>t.toggleShowGeneralAdvanced&&t.toggleShowGeneralAdvanced(...o))},[e[118]||(e[118]=s("span",{class:"text-slate-500 text-sm font-bold"}," Show All General Advanced Functions ",-1)),s("div",Ft,[y(s("input",{type:"checkbox","onUpdate:modelValue":e[47]||(e[47]=o=>t.showGeneralAdvanced=o),class:"sr-only"},null,512),[[I,t.showGeneralAdvanced]]),e[116]||(e[116]=s("div",{class:"block bg-slate-500 w-14 h-8 rounded-full"},null,-1)),e[117]||(e[117]=s("div",{class:"dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"},null,-1))])])])):b("",!0)])],64)}const ys=ne(D,[["render",jt]]);export{ys as default};
|
|
|