@onescience/onecode-web 1.14.50-202609111047 → 1.14.50-202609141543

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/assets/{3Dmol-oozXMdO8.js → 3Dmol-Cv9jjES5.js} +1 -1
  2. package/assets/{account-system-DKD9iYLE.js → account-system-DlP3EWvl.js} +1 -1
  3. package/assets/{alert-04-D5BNddSq.js → alert-01-Ccr1WLVj.js} +1 -1
  4. package/assets/{alert-05-OHlA5fX0.js → alert-02-DzIvbOBE.js} +1 -1
  5. package/assets/{alert-01-iLtAs75S.js → alert-04-CEP5toAi.js} +1 -1
  6. package/assets/{alert-02-DMn01-sY.js → alert-05-BTfnC-Yi.js} +1 -1
  7. package/assets/alert-06-BDkbVYQv.js +1 -0
  8. package/assets/alert-07-Do3uesLm.js +1 -0
  9. package/assets/alert-08-Cym3Sftd.js +1 -0
  10. package/assets/alert-10-DAiej1-i.js +1 -0
  11. package/assets/{bip-bop-03-CHMF_I8R.js → bip-bop-03-BFhoHXEa.js} +1 -1
  12. package/assets/{bip-bop-04-CR6IBQh5.js → bip-bop-04-DOwhjRvT.js} +1 -1
  13. package/assets/{bip-bop-06-Czwpqai-.js → bip-bop-06-CetOVCU7.js} +1 -1
  14. package/assets/{bip-bop-08-Csu9eiyl.js → bip-bop-08-DIJbHNYt.js} +1 -1
  15. package/assets/bip-bop-09-DwKVciPv.js +1 -0
  16. package/assets/{center-BO4sPNR0.js → center-31HFY6vS.js} +4 -4
  17. package/assets/{current-project-3uZyhYQO.js → current-project-Di4C0C9F.js} +1 -1
  18. package/assets/{dialog-edit-project-CW4KRXv4.js → dialog-edit-project-Czl6dg6O.js} +1 -1
  19. package/assets/{dialog-fork-DvBRiV7V.js → dialog-fork-Hw9alzGL.js} +1 -1
  20. package/assets/{dialog-project-upload-DpW39zJX.js → dialog-project-upload-Wnudm_C7.js} +1 -1
  21. package/assets/{dialog-select-file-DRbDToF0.js → dialog-select-file-D3MuMCLk.js} +1 -1
  22. package/assets/{dialog-select-model-9QyCL5qa.js → dialog-select-model-B5CXvRiQ.js} +2 -2
  23. package/assets/{dialog-terminal-unavailable-BNR9MrpX.js → dialog-terminal-unavailable-C3xKVHGH.js} +2 -2
  24. package/assets/{docs-fDTpjsAo.js → docs-CvfO0cug.js} +1 -1
  25. package/assets/{ghostty-web-CMbck5Ns.js → ghostty-web-Bq1NFRVW.js} +1 -1
  26. package/assets/home-BRnFfQ46.js +1 -0
  27. package/assets/{index-J5aZNTBC.css → index-C9er_qZe.css} +1 -1
  28. package/assets/{index-8N6rOsri.js → index-DbcMt7_5.js} +321 -321
  29. package/assets/{intro-Dg3COWxs.js → intro-MXMX9lXF.js} +1 -1
  30. package/assets/{nope-02-GxdAny7s.js → nope-02-DGkrKeVY.js} +1 -1
  31. package/assets/{nope-05-BFyT2lYm.js → nope-05-DZQ_g1SZ.js} +1 -1
  32. package/assets/{nope-08-BAx5CVAJ.js → nope-08-CRmKOfJP.js} +1 -1
  33. package/assets/{nope-11-CLzsNL-A.js → nope-11-CDcOA0rW.js} +1 -1
  34. package/assets/nope-12-px8OvGAC.js +1 -0
  35. package/assets/{onescience-DrKFtyqG.js → onescience-Dw4cqGYY.js} +1 -1
  36. package/assets/{resources-C849bSBF.js → resources-DpAavQ3Y.js} +1 -1
  37. package/assets/{selection-B5YefTBD.js → selection-jOAcIWt6.js} +1 -1
  38. package/assets/shell-vzr9ziEf.js +2 -0
  39. package/assets/{skills-DLOo_W0X.js → skills-BfiEMtfw.js} +1 -1
  40. package/assets/{staplebops-03-D6xswWw7.js → staplebops-03-D8V3dzGn.js} +1 -1
  41. package/assets/{staplebops-04-DFFdjPS9.js → staplebops-04-D8YpqSfl.js} +1 -1
  42. package/assets/{staplebops-06-KIoWnLdU.js → staplebops-06-CnAfs_Q6.js} +1 -1
  43. package/assets/{staplebops-07-CYqZKgAp.js → staplebops-07-vWEuJdl2.js} +1 -1
  44. package/assets/{status-popover-body-w_ZH2Wv4.js → status-popover-body-DjHKXYUr.js} +2 -2
  45. package/assets/{wizard-jcZD-GOf.js → wizard-BIpkuwc6.js} +1 -1
  46. package/assets/{yup-01-CHMS24Fv.js → yup-01-DgJZcFfl.js} +1 -1
  47. package/assets/{yup-03-Dp0-V-aS.js → yup-03-BMHKpuPl.js} +1 -1
  48. package/assets/{yup-04-B4ArjJDp.js → yup-04-BEoqEhJM.js} +1 -1
  49. package/assets/{yup-05-DyQhoF7H.js → yup-05-BRIjdeh5.js} +1 -1
  50. package/assets/{zh-BsleMGSy.js → zh-B_0loE3I.js} +3 -3
  51. package/index.html +11 -11
  52. package/package.json +2 -2
  53. package/assets/alert-06-COIj_slE.js +0 -1
  54. package/assets/alert-07-884N9JMK.js +0 -1
  55. package/assets/alert-08-Ci-IX_0W.js +0 -1
  56. package/assets/alert-10-BiEsE-ut.js +0 -1
  57. package/assets/bip-bop-09-MbaoLqxT.js +0 -1
  58. package/assets/home-BYs0hcVA.js +0 -1
  59. package/assets/nope-12-DmdDTovG.js +0 -1
  60. package/assets/shell-D0MY8Emg.js +0 -2
@@ -1,4 +1,4 @@
1
- import{eK as getDefaultExportFromCjs}from"./index-8N6rOsri.js";function _mergeNamespaces(K,D){for(var c=0;c<D.length;c++){const y=D[c];if(typeof y!="string"&&!Array.isArray(y)){for(const O in y)if(O!=="default"&&!(O in K)){const w=Object.getOwnPropertyDescriptor(y,O);w&&Object.defineProperty(K,O,w.get?w:{enumerable:!0,get:()=>y[O]})}}}return Object.freeze(Object.defineProperty(K,Symbol.toStringTag,{value:"Module"}))}var _3Dmol$3={exports:{}};/*!
1
+ import{eL as getDefaultExportFromCjs}from"./index-DbcMt7_5.js";function _mergeNamespaces(K,D){for(var c=0;c<D.length;c++){const y=D[c];if(typeof y!="string"&&!Array.isArray(y)){for(const O in y)if(O!=="default"&&!(O in K)){const w=Object.getOwnPropertyDescriptor(y,O);w&&Object.defineProperty(K,O,w.get?w:{enumerable:!0,get:()=>y[O]})}}}return Object.freeze(Object.defineProperty(K,Symbol.toStringTag,{value:"Module"}))}var _3Dmol$3={exports:{}};/*!
2
2
  * 3dmol v2.5.5
3
3
  * JavaScript/TypeScript molecular visualization library
4
4
  * Author: David Koes and contributors
@@ -1 +1 @@
1
- import{k as ee,f as W,u as de,m as me,bS as N,q as te,i,c as C,n as V,o as K,t as v,b as we,S as k,X as z,W as f,Y as E,dY as ve,x as ge,a2 as _e,d8 as Ce,d9 as ye,ac as xe,O as Se,z as Pe,da as fe,dZ as ke,d_ as pe,d$ as qe,e0 as Ae,e1 as Me,e2 as Te,e3 as De,e4 as Ee,dq as oe,e5 as Ue,a5 as le,e6 as He}from"./index-8N6rOsri.js";var Y=v("<p class=os-auth-error>"),Le=v('<form class=os-auth-form><label><span>账户 / 邮箱</span><input autocomplete=username placeholder=账户名或注册邮箱></label><label><span>密码</span><input autocomplete=current-password type=password placeholder=输入密码></label><button type=submit class="os-button os-button-primary os-auth-submit">'),Re=v("<div class=os-auth-links><span>还没有账号?</span><a>创建账号</a><a>忘记密码?"),Ie=v("<p>"),Fe=v('<div class=os-auth-email-verify><button type=button class="os-button os-button-secondary os-auth-submit"></button><label><span></span><input autocomplete=one-time-code>'),Ne=v("<label><span>邀请码</span><input autocomplete=one-time-code placeholder=请输入邀请码><small class=os-auth-hint>当前已开启注册审核,需填写有效邀请码才能注册。"),ze=v('<form class=os-auth-form><label><span>账户</span><input autocomplete=username placeholder="例如 researcher01"><small class=os-auth-hint>用作登录标识及个人工作区目录名称。长度 3–32 个字符,须以小写字母开头,仅可包含小写字母、数字、点(.)、下划线(_)与连字符(-)。</small></label><label><span>邮箱</span><input autocomplete=email inputmode=email placeholder=name@example.com><small class=os-auth-hint>用于账号找回与系统通知,亦可作为登录凭证。</small></label><label><span>密码</span><input autocomplete=new-password type=password placeholder="至少 8 位"></label><label><span>确认密码</span><input autocomplete=new-password type=password placeholder=再次输入密码></label><button type=submit class="os-button os-button-primary os-auth-submit">'),je=v("<div class=os-auth-links><span>已有账号?</span><a>去登录"),Oe=v('<p class=os-auth-hint style="margin:0 0 0.35rem">通过注册邮箱获取验证码后重置密码。若无法收到邮件,请联系管理员。'),Q=v("<p class=os-account-success>"),Be=v('<form class=os-auth-form><label><span>账号邮箱</span><input autocomplete=email inputmode=email placeholder=name@example.com></label><button type=submit class="os-button os-button-secondary os-auth-submit">'),Ve=v("<label><span>邮件验证码</span><input autocomplete=one-time-code placeholder=输入邮件中的验证码>"),We=v('<form class=os-auth-form><label><span>新密码</span><input autocomplete=new-password type=password placeholder="至少 8 位"></label><label><span>确认新密码</span><input autocomplete=new-password type=password placeholder=再次输入新密码></label><button type=submit class="os-button os-button-primary os-auth-submit">'),Ye=v("<div class=os-auth-links><a>返回登录</a><a>创建账号"),Ge=v('<p class=os-auth-hint style="margin:0 0 0.35rem">请设置新密码以完成重置。'),Xe=v("<main class=os-account-page><div class=os-account-shell>"),Ze=v("<section class=os-account-loading><strong>正在加载账号信息</strong><span>请稍候"),Je=v('<section class=os-account-empty-state><strong></strong><span>登录后可以查看账号资料和开发空间。</span><a href="/login?redirect=%2Faccount"class="os-button os-button-primary">去登录'),Ke=v('<header class=os-account-header><div class=os-account-identity><div class=os-account-avatar></div><div><span class=os-account-kicker>账号中心</span><h1></h1><p></p></div></div><div class=os-account-actions><span class=os-account-status></span><a href=/code class="os-button os-button-secondary">进入科研开发</a><button type=button class="os-button os-button-danger">退出登录</button><button type=button class="os-button os-button-danger">'),Qe=v("<section class=os-account-workspace-hero><div class=os-account-workspace-hero-copy><span class=os-account-kicker>默认项目</span><strong>default</strong><p></p></div><div class=os-account-workspace-hero-meta><code>"),et=v('<section class=os-account-content-grid><section class=os-account-panel><div class=os-account-panel-head><strong>基本资料</strong><span class=os-account-session-expiry title="这是当前浏览器登录会话的有效期(约 14 天),不是账号本身到期。重新登录即可续期,账号与工作区数据不受影响。">登录会话 <!>失效</span></div><p class=os-account-session-expiry-note>提示:上方倒计时是登录会话有效期,重新登录即可续期;账号与工作区数据不会因此删除。</p><dl class=os-account-field-grid><div><dt>账户</dt><dd></dd></div><div><dt>邮箱</dt><dd></dd></div><div><dt>创建时间</dt><dd></dd></div><div><dt>默认入口</dt><dd>科研开发工作台</dd></div></dl></section><section class=os-account-panel><div class=os-account-panel-head><strong>修改密码</strong><span>本地账号</span></div><form class=os-account-password-form><label><span>当前密码</span><input autocomplete=current-password type=password placeholder=输入当前密码></label><label><span>新密码</span><input autocomplete=new-password type=password placeholder="至少 8 位"></label><label><span>确认新密码</span><input autocomplete=new-password type=password placeholder=再次输入新密码></label><button type=submit class="os-button os-button-danger os-auth-submit">'),tt=v('<div class="flex flex-col gap-4 pl-6 pr-2.5 pb-3"><p class="text-14-regular text-text-strong"></p><div class="flex justify-end gap-2"><button type=button class="os-button os-button-secondary"></button><button type=button class="os-button os-button-danger">'),rt=v("<main class=os-auth-page><section class=os-auth-shell><button type=button class=os-auth-dismiss aria-label=关闭并返回浏览><span aria-hidden=true>×</span></button><section class=os-auth-panel><a class=os-auth-brand href=/></a><div class=os-auth-links><button type=button class=os-auth-link-button>暂不登录,继续浏览");function dt(){const l=ee(),u=W(),[d,_]=N({name:"",email:"",password:"",confirmPassword:"",submitting:!1,error:""}),x=()=>typeof d.lockedUntil=="number"&&d.lockedUntil>Date.now(),a=async t=>{if(t.preventDefault(),x()){_("error",`尝试次数过多,请在 ${ct(d.lockedUntil-Date.now())} 后重试`);return}if(!d.email.trim()||!d.password){_("error","请输入账户/邮箱和密码");return}_({submitting:!0,error:"",lockedUntil:void 0});try{await fe(await ke({email:d.email.trim(),password:d.password}),l.storage),u(pe(location.search),{replace:!0});return}catch(m){const w=m instanceof Error&&"retryAfterMs"in m?Number(m.retryAfterMs):void 0;_({error:m instanceof Error?m.message:"登录失败,请稍后重试",submitting:!1,lockedUntil:typeof w=="number"&&w>0?Date.now()+w:void 0})}};return C(re,{mode:"login",get children(){return[(()=>{var t=Le(),m=t.firstChild,w=m.firstChild,S=w.nextSibling,r=m.nextSibling,e=r.firstChild,o=e.nextSibling,p=r.nextSibling;return t.addEventListener("submit",a),S.$$input=n=>_("email",n.currentTarget.value),o.$$input=n=>_("password",n.currentTarget.value),i(t,C(k,{get when(){return d.error},get children(){var n=Y();return i(n,()=>d.error),n}}),p),i(p,(()=>{var n=z(()=>!!d.submitting);return()=>n()?"正在登录...":x()?"已锁定,请稍后重试":"登录"})()),f(n=>{var h=d.submitting,s=d.submitting,c=d.submitting||x();return h!==n.e&&(S.disabled=n.e=h),s!==n.t&&(o.disabled=n.t=s),c!==n.a&&(p.disabled=n.a=c),n},{e:void 0,t:void 0,a:void 0}),f(()=>S.value=d.email),f(()=>o.value=d.password),t})(),(()=>{var t=Re(),m=t.firstChild,w=m.nextSibling,S=w.nextSibling;return f(r=>{var e=`/register${location.search}`,o=`/forgot-password${location.search}`;return e!==r.e&&E(w,"href",r.e=e),o!==r.t&&E(S,"href",r.t=o),r},{e:void 0,t:void 0}),t})()]}})}function mt(){const l=ee(),u=W(),[d,_]=V(!1),[x,a]=V(!1),[t,m]=V(!1),[w,S]=V(Date.now()),[r,e]=N({name:"",email:"",password:"",confirmPassword:"",inviteCode:"",emailCode:"",submitting:!1,requestingCode:!1,requestHint:"",cooldownUntil:0,error:""});te(()=>{ve().then(c=>{_(!!c.inviteRequired),a(!!c.emailVerificationRequired)}).catch(()=>{_(!1),a(!1)});const s=window.setInterval(()=>S(Date.now()),250);ge(()=>window.clearInterval(s))});const o=K(()=>Math.max(0,Math.ceil(((r.cooldownUntil??0)-w())/1e3))),p=K(()=>o()>0),n=async()=>{if(r.requestingCode||r.submitting||p())return;const s=ue(r.email);if(s){e({error:s,requestHint:""});return}e({requestingCode:!0,error:"",requestHint:""});try{const c=await Te({email:r.email.trim()}),b=typeof c.retryAfterMs=="number"&&c.retryAfterMs>0?c.retryAfterMs:6e4;if(c.smtpUnreachable){m(!0),e({requestingCode:!1,requestHint:"无法连接邮件服务器,本次注册无需填写验证码。找回密码仍须邮件验证,收不到验证码请联系管理员。",error:"",cooldownUntil:Date.now()+b});return}m(!1),e({requestingCode:!1,requestHint:"验证码已发送,请查收邮箱后填入下方。",error:"",cooldownUntil:Date.now()+b})}catch(c){const b=c instanceof Error&&"retryAfterMs"in c?Number(c.retryAfterMs):void 0;e({requestingCode:!1,error:c instanceof Error?c.message:"发送验证码失败,请稍后重试",requestHint:"",...typeof b=="number"&&b>0?{cooldownUntil:Date.now()+b}:{}})}},h=async s=>{if(s.preventDefault(),!r.name.trim()||!r.email.trim()||!r.password){e("error","请输入账户、邮箱和密码");return}const c=lt(r.name);if(c){e("error",c);return}const b=ue(r.email);if(b){e("error",b);return}if(d()&&!(r.inviteCode??"").trim()){e("error","请填写邀请码");return}if(x()&&!t()&&!(r.emailCode??"").trim()){e("error","请填写邮箱验证码");return}if(r.password.length<8){e("error","密码至少需要 8 位");return}if(r.password!==r.confirmPassword){e("error","两次输入的密码不一致");return}e({submitting:!0,error:""});try{await fe(await Me({name:r.name.trim().toLowerCase(),email:r.email.trim(),password:r.password,...r.inviteCode?.trim()?{inviteCode:r.inviteCode.trim()}:{},...x()&&r.emailCode?.trim()?{emailCode:r.emailCode.trim()}:{}}),l.storage),u(pe(location.search),{replace:!0})}catch(g){e("error",g instanceof Error?g.message:"注册失败,请稍后重试"),e("submitting",!1)}};return C(re,{mode:"register",get children(){return[(()=>{var s=ze(),c=s.firstChild,b=c.firstChild,g=b.nextSibling,q=c.nextSibling,P=q.firstChild,M=P.nextSibling,U=q.nextSibling,I=U.firstChild,H=I.nextSibling,L=U.nextSibling,G=L.firstChild,X=G.nextSibling,j=L.nextSibling;return s.addEventListener("submit",h),g.$$input=$=>e("name",$.currentTarget.value),E(g,"spellcheck",!1),M.$$input=$=>{e("email",$.currentTarget.value),m(!1)},i(s,C(k,{get when(){return x()},get children(){var $=Fe(),T=$.firstChild,D=T.nextSibling,F=D.firstChild,R=F.nextSibling;return T.$$click=()=>void n(),i(T,(()=>{var y=z(()=>!!r.requestingCode);return()=>y()?"正在发送...":z(()=>!!p())()?`重新发送 (${o()}s)`:"发送验证码"})()),i($,C(k,{get when(){return r.requestHint},get children(){var y=Ie();return i(y,()=>r.requestHint),f(()=>_e(y,t()?"os-auth-hint":"os-account-success")),y}}),D),i(F,()=>t()?"邮箱验证码(可不填)":"邮箱验证码"),R.$$input=y=>e("emailCode",y.currentTarget.value),E(R,"spellcheck",!1),f(y=>{var O=r.requestingCode||r.submitting||p()||!r.email.trim(),Z=t()?"邮件服务器不可达,可留空":"输入邮件中的验证码",B=r.submitting;return O!==y.e&&(T.disabled=y.e=O),Z!==y.t&&E(R,"placeholder",y.t=Z),B!==y.a&&(R.disabled=y.a=B),y},{e:void 0,t:void 0,a:void 0}),f(()=>R.value=r.emailCode??""),$}}),U),i(s,C(k,{get when(){return d()},get children(){var $=Ne(),T=$.firstChild,D=T.nextSibling;return D.$$input=F=>e("inviteCode",F.currentTarget.value),E(D,"spellcheck",!1),f(()=>D.value=r.inviteCode??""),$}}),U),H.$$input=$=>e("password",$.currentTarget.value),X.$$input=$=>e("confirmPassword",$.currentTarget.value),i(s,C(k,{get when(){return r.error},get children(){var $=Y();return i($,()=>r.error),$}}),j),i(j,()=>r.submitting?"正在创建...":"创建账号"),f($=>{var T=r.submitting||r.requestingCode,D=r.submitting;return T!==$.e&&(M.disabled=$.e=T),D!==$.t&&(j.disabled=$.t=D),$},{e:void 0,t:void 0}),f(()=>g.value=r.name),f(()=>M.value=r.email),f(()=>H.value=r.password),f(()=>X.value=r.confirmPassword),s})(),(()=>{var s=je(),c=s.firstChild,b=c.nextSibling;return f(()=>E(b,"href",`/login${location.search}`)),s})()]}})}function gt(){const l=W(),u=typeof location<"u"?new URLSearchParams(location.search).get("token")?.trim()??"":"",d=!!u,[_,x]=V(Date.now()),[a,t]=N({email:"",token:u,newPassword:"",confirmPassword:"",requesting:!1,submitting:!1,error:"",success:"",requestHint:"",cooldownUntil:0});te(()=>{const e=window.setInterval(()=>x(Date.now()),250);ge(()=>window.clearInterval(e))});const m=K(()=>Math.max(0,Math.ceil((a.cooldownUntil-_())/1e3))),w=K(()=>m()>0),S=async()=>{if(!(a.requesting||a.submitting||w())){if(!a.email.trim()){t({error:"请输入账号邮箱",success:"",requestHint:""});return}t({requesting:!0,error:"",success:"",requestHint:""});try{const e=await De({email:a.email.trim()}),o=typeof e.retryAfterMs=="number"&&e.retryAfterMs>0?e.retryAfterMs:6e4;t({requesting:!1,requestHint:"若该邮箱已注册,验证码将发送至邮箱。请查收后在下方完成重置。",error:"",cooldownUntil:Date.now()+o})}catch(e){const o=e instanceof Error&&"retryAfterMs"in e?Number(e.retryAfterMs):void 0;t({requesting:!1,error:e instanceof Error?e.message:"发送验证码失败,请稍后重试",requestHint:"",...typeof o=="number"&&o>0?{cooldownUntil:Date.now()+o}:{}})}}},r=async e=>{if(e.preventDefault(),!a.token.trim()){t({error:"请输入邮件验证码",success:""});return}if(a.newPassword.length<8){t({error:"新密码至少需要 8 位",success:""});return}if(a.newPassword!==a.confirmPassword){t({error:"两次输入的新密码不一致",success:""});return}t({submitting:!0,error:"",success:""});try{await Ee({token:a.token.trim(),newPassword:a.newPassword}),t({submitting:!1,error:"",success:"密码已重置,请使用新密码登录",newPassword:"",confirmPassword:""});const o=new URLSearchParams(location.search);o.delete("token");const p=o.toString();window.setTimeout(()=>l(`/login${p?`?${p}`:""}`,{replace:!0}),1200)}catch(o){t({submitting:!1,error:o instanceof Error?o.message:"重置密码失败,请稍后重试",success:""})}};return C(re,{mode:"forgot-password",get children(){return[C(k,{when:!d,get fallback(){return Ge()},get children(){return Oe()}}),C(k,{when:!d,get children(){var e=Be(),o=e.firstChild,p=o.firstChild,n=p.nextSibling,h=o.nextSibling;return e.addEventListener("submit",s=>{s.preventDefault(),S()}),n.$$input=s=>t("email",s.currentTarget.value),i(h,(()=>{var s=z(()=>!!a.requesting);return()=>s()?"正在发送...":z(()=>!!w())()?`重新发送 (${m()}s)`:"获取验证码"})()),i(e,C(k,{get when(){return a.requestHint},get children(){var s=Q();return i(s,()=>a.requestHint),s}}),null),f(s=>{var c=a.requesting||a.submitting,b=a.requesting||a.submitting||w()||!a.email.trim();return c!==s.e&&(n.disabled=s.e=c),b!==s.t&&(h.disabled=s.t=b),s},{e:void 0,t:void 0}),f(()=>n.value=a.email),e}}),(()=>{var e=We(),o=e.firstChild,p=o.firstChild,n=p.nextSibling,h=o.nextSibling,s=h.firstChild,c=s.nextSibling,b=h.nextSibling;return e.addEventListener("submit",r),i(e,C(k,{when:!d,get children(){var g=Ve(),q=g.firstChild,P=q.nextSibling;return P.$$input=M=>t("token",M.currentTarget.value),f(()=>P.disabled=a.submitting),f(()=>P.value=a.token),g}}),o),n.$$input=g=>t("newPassword",g.currentTarget.value),c.$$input=g=>t("confirmPassword",g.currentTarget.value),i(e,C(k,{get when(){return a.error},get children(){var g=Y();return i(g,()=>a.error),g}}),b),i(e,C(k,{get when(){return a.success},get children(){var g=Q();return i(g,()=>a.success),g}}),b),i(b,()=>a.submitting?"正在重置...":"重置密码"),f(g=>{var q=a.submitting,P=a.submitting,M=a.submitting;return q!==g.e&&(n.disabled=g.e=q),P!==g.t&&(c.disabled=g.t=P),M!==g.a&&(b.disabled=g.a=M),g},{e:void 0,t:void 0,a:void 0}),f(()=>n.value=a.newPassword),f(()=>c.value=a.confirmPassword),e})(),(()=>{var e=Ye(),o=e.firstChild,p=o.nextSibling;return f(n=>{var h=`/login${location.search}`,s=`/register${location.search}`;return h!==n.e&&E(o,"href",n.e=h),s!==n.t&&E(p,"href",n.t=s),n},{e:void 0,t:void 0}),e})()]}})}function ft(){const l=ee(),u=W(),d=de(),_=me(),[x,a]=N({loading:!0,error:""}),[t,m]=N({currentPassword:"",newPassword:"",confirmPassword:"",submitting:!1,error:"",success:""});te(()=>{const o=Ce();if(!o){a({loading:!1,error:"当前未登录"});return}ye(o).then(p=>a({session:p,loading:!1,error:""})).catch(p=>a({loading:!1,error:p instanceof Error?p.message:"会话已失效"}))});const w=()=>{if(l.platform==="desktop"){u("/login",{replace:!0});return}location.assign("/login")},S=()=>{oe(l.storage).finally(()=>w())},r=async()=>{try{await Ue(),le({variant:"success",icon:"circle-check",title:d.t("account.deleteAccount.toast.success")}),await oe(l.storage),w()}catch(o){le({variant:"error",title:d.t("account.deleteAccount.toast.error"),description:o instanceof Error?o.message:"请稍后重试"})}},e=async(o,p)=>{if(o.preventDefault(),!t.currentPassword||!t.newPassword||!t.confirmPassword){m({error:"请输入当前密码和新密码",success:""});return}if(t.newPassword.length<8){m({error:"新密码至少需要 8 位",success:""});return}if(t.currentPassword===t.newPassword){m({error:"新密码不能与当前密码相同",success:""});return}if(t.newPassword!==t.confirmPassword){m({error:"两次输入的新密码不一致",success:""});return}m({submitting:!0,error:"",success:""});try{await He({accountId:p.account.id,currentPassword:t.currentPassword,newPassword:t.newPassword}),m({currentPassword:"",newPassword:"",confirmPassword:"",submitting:!1,error:"",success:"密码已更新,下次登录请使用新密码"})}catch(n){m({submitting:!1,error:n instanceof Error?n.message:"修改密码失败,请稍后重试",success:""})}};return(()=>{var o=Xe(),p=o.firstChild;return i(p,C(k,{get when(){return!x.loading},get fallback(){return Ze()},get children(){return C(k,{get when(){return x.session},get fallback(){return(()=>{var n=Je(),h=n.firstChild,s=h.nextSibling;return s.nextSibling,i(h,()=>x.error||"当前未登录"),n})()},children:n=>[(()=>{var h=Ke(),s=h.firstChild,c=s.firstChild,b=c.nextSibling,g=b.firstChild,q=g.nextSibling,P=q.nextSibling,M=s.nextSibling,U=M.firstChild,I=U.nextSibling,H=I.nextSibling,L=H.nextSibling;return i(c,()=>st(n().account.name,n().account.email)),i(q,()=>n().account.name),i(P,()=>n().account.email),i(U,()=>at(n().account.status)),H.$$click=S,L.$$click=()=>_.show(()=>C(nt,{onConfirm:r})),i(L,()=>d.t("account.deleteAccount.button")),h})(),(()=>{var h=Qe(),s=h.firstChild,c=s.firstChild,b=c.nextSibling,g=b.nextSibling,q=s.nextSibling,P=q.firstChild;return i(g,()=>d.t("account.defaultProject.description")),i(P,()=>ce(n())||"未分配"),f(()=>E(P,"title",ce(n()))),h})(),(()=>{var h=et(),s=h.firstChild,c=s.firstChild,b=c.firstChild,g=b.nextSibling,q=g.firstChild,P=q.nextSibling;P.nextSibling;var M=c.nextSibling,U=M.nextSibling,I=U.firstChild,H=I.firstChild,L=H.nextSibling,G=I.nextSibling,X=G.firstChild,j=X.nextSibling,$=G.nextSibling,T=$.firstChild,D=T.nextSibling,F=s.nextSibling,R=F.firstChild,y=R.nextSibling,O=y.firstChild,Z=O.firstChild,B=Z.nextSibling,ne=O.nextSibling,he=ne.firstChild,se=he.nextSibling,ae=ne.nextSibling,$e=ae.firstChild,ie=$e.nextSibling,J=ae.nextSibling;return i(g,()=>ot(n().expiresAt),P),i(L,()=>n().account.name),i(j,()=>n().account.email),i(D,()=>it(n().account.timeCreated)),y.addEventListener("submit",A=>e(A,n())),B.$$input=A=>m("currentPassword",A.currentTarget.value),se.$$input=A=>m("newPassword",A.currentTarget.value),ie.$$input=A=>m("confirmPassword",A.currentTarget.value),i(y,C(k,{get when(){return t.error},get children(){var A=Y();return i(A,()=>t.error),A}}),J),i(y,C(k,{get when(){return t.success},get children(){var A=Q();return i(A,()=>t.success),A}}),J),i(J,()=>t.submitting?"正在更新...":"更新密码"),f(()=>J.disabled=t.submitting),f(()=>B.value=t.currentPassword),f(()=>se.value=t.newPassword),f(()=>ie.value=t.confirmPassword),h})()]})}})),o})()}function nt(l){const u=de(),d=me(),[_,x]=N({submitting:!1,error:""}),a=async()=>{x({submitting:!0,error:""});try{await l.onConfirm(),d.close()}catch(t){x({submitting:!1,error:t instanceof Error?t.message:u.t("account.deleteAccount.toast.error")})}};return C(xe,{get title(){return u.t("account.deleteAccount.title")},fit:!0,transition:!0,get children(){var t=tt(),m=t.firstChild,w=m.nextSibling,S=w.firstChild,r=S.nextSibling;return i(m,()=>u.t("account.deleteAccount.description")),i(t,C(k,{get when(){return _.error},get children(){var e=Y();return i(e,()=>_.error),e}}),w),S.$$click=()=>d.close(),i(S,()=>u.t("common.cancel")),r.$$click=a,i(r,(()=>{var e=z(()=>!!_.submitting);return()=>e()?"注销中...":u.t("account.deleteAccount.confirm")})()),f(e=>{var o=_.submitting,p=_.submitting;return o!==e.e&&(S.disabled=e.e=o),p!==e.t&&(r.disabled=e.t=p),e},{e:void 0,t:void 0}),t}})}function re(l){const u=W(),d=()=>{qe(),u(Ae(location.search),{replace:!0})};return(()=>{var _=rt(),x=_.firstChild,a=x.firstChild,t=a.nextSibling,m=t.firstChild,w=m.nextSibling,S=w.firstChild;return a.$$click=d,i(m,C(Se,{})),i(t,()=>l.children,w),S.$$click=d,f(()=>E(x,"data-mode",l.mode)),_})()}function st(l,u){return(l.trim()||u.trim()||"OS").slice(0,2).toUpperCase()}function at(l){return l==="active"?"正常":l==="frozen"?"已冻结":l==="limited"?"已限流":l==="pending"?"待激活":l||"未知"}function ce(l){return Pe(l)??""}function it(l){return l?new Intl.DateTimeFormat("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(be(l))):"未记录"}function ot(l){const u=Math.ceil(Math.max(0,be(l)-Date.now())/36e5);return u<=0?"已":u<24?`${u} 小时后`:`${Math.ceil(u/24)} 天后`}function lt(l){const u=l.trim().toLowerCase();return u?/^[a-z][a-z0-9._-]{2,31}$/.test(u)?u.includes("..")||u.endsWith(".")||u.startsWith(".")?"账户名不能以点开头/结尾,也不能包含连续的点":"":"账户名须为 3–32 位,以小写字母开头,仅含小写字母、数字、点、下划线或连字符":"请填写账户名"}function ue(l){const u=l.trim().toLowerCase();return!u||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(u)||u.length>254?"请填写有效邮箱":""}function ct(l){const u=Math.max(1,Math.ceil(l/1e3));if(u<60)return`${u} 秒`;const d=Math.ceil(u/60);return d<60?`${d} 分钟`:"1 小时"}function be(l){return l<1e10?l*1e3:l}we(["input","click"]);export{ft as AccountCenterPage,gt as ForgotPasswordPage,dt as LoginPage,mt as RegisterPage};
1
+ import{k as ee,f as W,u as de,m as me,bT as N,q as te,i,c as C,n as V,o as K,t as v,b as we,S as k,X as z,W as f,Y as E,dZ as ve,x as ge,a2 as _e,d9 as Ce,da as ye,ac as xe,O as Se,z as Pe,db as fe,d_ as ke,d$ as pe,e0 as qe,e1 as Ae,e2 as Me,e3 as Te,e4 as De,e5 as Ee,dr as oe,e6 as Ue,a5 as le,e7 as He}from"./index-DbcMt7_5.js";var G=v("<p class=os-auth-error>"),Le=v('<form class=os-auth-form><label><span>账户 / 邮箱</span><input autocomplete=username placeholder=账户名或注册邮箱></label><label><span>密码</span><input autocomplete=current-password type=password placeholder=输入密码></label><button type=submit class="os-button os-button-primary os-auth-submit">'),Re=v("<div class=os-auth-links><span>还没有账号?</span><a>创建账号</a><a>忘记密码?"),Ie=v("<p>"),Fe=v('<div class=os-auth-email-verify><button type=button class="os-button os-button-secondary os-auth-submit"></button><label><span></span><input autocomplete=one-time-code>'),Ne=v("<label><span>邀请码</span><input autocomplete=one-time-code placeholder=请输入邀请码><small class=os-auth-hint>当前已开启注册审核,需填写有效邀请码才能注册。"),ze=v('<form class=os-auth-form><label><span>账户</span><input autocomplete=username placeholder="例如 researcher01"><small class=os-auth-hint>用作登录标识及个人工作区目录名称。长度 3–32 个字符,须以小写字母开头,仅可包含小写字母、数字、点(.)、下划线(_)与连字符(-)。</small></label><label><span>邮箱</span><input autocomplete=email inputmode=email placeholder=name@example.com><small class=os-auth-hint>用于账号找回与系统通知,亦可作为登录凭证。</small></label><label><span>密码</span><input autocomplete=new-password type=password placeholder="至少 8 位"></label><label><span>确认密码</span><input autocomplete=new-password type=password placeholder=再次输入密码></label><button type=submit class="os-button os-button-primary os-auth-submit">'),je=v("<div class=os-auth-links><span>已有账号?</span><a>去登录"),Oe=v('<p class=os-auth-hint style="margin:0 0 0.35rem">通过注册邮箱获取验证码后重置密码。若无法收到邮件,请联系管理员。'),Q=v("<p class=os-account-success>"),Be=v('<form class=os-auth-form><label><span>账号邮箱</span><input autocomplete=email inputmode=email placeholder=name@example.com></label><button type=submit class="os-button os-button-secondary os-auth-submit">'),Ve=v("<label><span>邮件验证码</span><input autocomplete=one-time-code placeholder=输入邮件中的验证码>"),We=v('<form class=os-auth-form><label><span>新密码</span><input autocomplete=new-password type=password placeholder="至少 8 位"></label><label><span>确认新密码</span><input autocomplete=new-password type=password placeholder=再次输入新密码></label><button type=submit class="os-button os-button-primary os-auth-submit">'),Ge=v("<div class=os-auth-links><a>返回登录</a><a>创建账号"),Xe=v('<p class=os-auth-hint style="margin:0 0 0.35rem">请设置新密码以完成重置。'),Ye=v("<main class=os-account-page><div class=os-account-shell>"),Ze=v("<section class=os-account-loading><strong>正在加载账号信息</strong><span>请稍候"),Je=v('<section class=os-account-empty-state><strong></strong><span>登录后可以查看账号资料和开发空间。</span><a href="/login?redirect=%2Faccount"class="os-button os-button-primary">去登录'),Ke=v('<header class=os-account-header><div class=os-account-identity><div class=os-account-avatar></div><div><span class=os-account-kicker>账号中心</span><h1></h1><p></p></div></div><div class=os-account-actions><span class=os-account-status></span><a href=/code class="os-button os-button-secondary">进入科研开发</a><button type=button class="os-button os-button-danger">退出登录</button><button type=button class="os-button os-button-danger">'),Qe=v("<section class=os-account-workspace-hero><div class=os-account-workspace-hero-copy><span class=os-account-kicker>默认项目</span><strong>default</strong><p></p></div><div class=os-account-workspace-hero-meta><code>"),et=v('<section class=os-account-content-grid><section class=os-account-panel><div class=os-account-panel-head><strong>基本资料</strong><span class=os-account-session-expiry title="这是当前浏览器登录会话的有效期(约 14 天),不是账号本身到期。重新登录即可续期,账号与工作区数据不受影响。">登录会话 <!>失效</span></div><p class=os-account-session-expiry-note>提示:上方倒计时是登录会话有效期,重新登录即可续期;账号与工作区数据不会因此删除。</p><dl class=os-account-field-grid><div><dt>账户</dt><dd></dd></div><div><dt>邮箱</dt><dd></dd></div><div><dt>创建时间</dt><dd></dd></div><div><dt>默认入口</dt><dd>科研开发工作台</dd></div></dl></section><section class=os-account-panel><div class=os-account-panel-head><strong>修改密码</strong><span>本地账号</span></div><form class=os-account-password-form><label><span>当前密码</span><input autocomplete=current-password type=password placeholder=输入当前密码></label><label><span>新密码</span><input autocomplete=new-password type=password placeholder="至少 8 位"></label><label><span>确认新密码</span><input autocomplete=new-password type=password placeholder=再次输入新密码></label><button type=submit class="os-button os-button-danger os-auth-submit">'),tt=v('<div class="flex flex-col gap-4 pl-6 pr-2.5 pb-3"><p class="text-14-regular text-text-strong"></p><div class="flex justify-end gap-2"><button type=button class="os-button os-button-secondary"></button><button type=button class="os-button os-button-danger">'),rt=v("<main class=os-auth-page><section class=os-auth-shell><button type=button class=os-auth-dismiss aria-label=关闭并返回浏览><span aria-hidden=true>×</span></button><section class=os-auth-panel><a class=os-auth-brand href=/></a><div class=os-auth-links><button type=button class=os-auth-link-button>暂不登录,继续浏览");function dt(){const l=ee(),u=W(),[d,_]=N({name:"",email:"",password:"",confirmPassword:"",submitting:!1,error:""}),x=()=>typeof d.lockedUntil=="number"&&d.lockedUntil>Date.now(),a=async t=>{if(t.preventDefault(),x()){_("error",`尝试次数过多,请在 ${ct(d.lockedUntil-Date.now())} 后重试`);return}if(!d.email.trim()||!d.password){_("error","请输入账户/邮箱和密码");return}_({submitting:!0,error:"",lockedUntil:void 0});try{await fe(await ke({email:d.email.trim(),password:d.password}),l.storage),u(pe(location.search),{replace:!0});return}catch(m){const w=m instanceof Error&&"retryAfterMs"in m?Number(m.retryAfterMs):void 0;_({error:m instanceof Error?m.message:"登录失败,请稍后重试",submitting:!1,lockedUntil:typeof w=="number"&&w>0?Date.now()+w:void 0})}};return C(re,{mode:"login",get children(){return[(()=>{var t=Le(),m=t.firstChild,w=m.firstChild,S=w.nextSibling,r=m.nextSibling,e=r.firstChild,o=e.nextSibling,p=r.nextSibling;return t.addEventListener("submit",a),S.$$input=n=>_("email",n.currentTarget.value),o.$$input=n=>_("password",n.currentTarget.value),i(t,C(k,{get when(){return d.error},get children(){var n=G();return i(n,()=>d.error),n}}),p),i(p,(()=>{var n=z(()=>!!d.submitting);return()=>n()?"正在登录...":x()?"已锁定,请稍后重试":"登录"})()),f(n=>{var h=d.submitting,s=d.submitting,c=d.submitting||x();return h!==n.e&&(S.disabled=n.e=h),s!==n.t&&(o.disabled=n.t=s),c!==n.a&&(p.disabled=n.a=c),n},{e:void 0,t:void 0,a:void 0}),f(()=>S.value=d.email),f(()=>o.value=d.password),t})(),(()=>{var t=Re(),m=t.firstChild,w=m.nextSibling,S=w.nextSibling;return f(r=>{var e=`/register${location.search}`,o=`/forgot-password${location.search}`;return e!==r.e&&E(w,"href",r.e=e),o!==r.t&&E(S,"href",r.t=o),r},{e:void 0,t:void 0}),t})()]}})}function mt(){const l=ee(),u=W(),[d,_]=V(!1),[x,a]=V(!1),[t,m]=V(!1),[w,S]=V(Date.now()),[r,e]=N({name:"",email:"",password:"",confirmPassword:"",inviteCode:"",emailCode:"",submitting:!1,requestingCode:!1,requestHint:"",cooldownUntil:0,error:""});te(()=>{ve().then(c=>{_(!!c.inviteRequired),a(!!c.emailVerificationRequired)}).catch(()=>{_(!1),a(!1)});const s=window.setInterval(()=>S(Date.now()),250);ge(()=>window.clearInterval(s))});const o=K(()=>Math.max(0,Math.ceil(((r.cooldownUntil??0)-w())/1e3))),p=K(()=>o()>0),n=async()=>{if(r.requestingCode||r.submitting||p())return;const s=ue(r.email);if(s){e({error:s,requestHint:""});return}e({requestingCode:!0,error:"",requestHint:""});try{const c=await Te({email:r.email.trim()}),b=typeof c.retryAfterMs=="number"&&c.retryAfterMs>0?c.retryAfterMs:6e4;if(c.smtpUnreachable){m(!0),e({requestingCode:!1,requestHint:"无法连接邮件服务器,本次注册无需填写验证码。找回密码仍须邮件验证,收不到验证码请联系管理员。",error:"",cooldownUntil:Date.now()+b});return}m(!1),e({requestingCode:!1,requestHint:"验证码已发送,请查收邮箱后填入下方。",error:"",cooldownUntil:Date.now()+b})}catch(c){const b=c instanceof Error&&"retryAfterMs"in c?Number(c.retryAfterMs):void 0;e({requestingCode:!1,error:c instanceof Error?c.message:"发送验证码失败,请稍后重试",requestHint:"",...typeof b=="number"&&b>0?{cooldownUntil:Date.now()+b}:{}})}},h=async s=>{if(s.preventDefault(),!r.name.trim()||!r.email.trim()||!r.password){e("error","请输入账户、邮箱和密码");return}const c=lt(r.name);if(c){e("error",c);return}const b=ue(r.email);if(b){e("error",b);return}if(d()&&!(r.inviteCode??"").trim()){e("error","请填写邀请码");return}if(x()&&!t()&&!(r.emailCode??"").trim()){e("error","请填写邮箱验证码");return}if(r.password.length<8){e("error","密码至少需要 8 位");return}if(r.password!==r.confirmPassword){e("error","两次输入的密码不一致");return}e({submitting:!0,error:""});try{await fe(await Me({name:r.name.trim().toLowerCase(),email:r.email.trim(),password:r.password,...r.inviteCode?.trim()?{inviteCode:r.inviteCode.trim()}:{},...x()&&r.emailCode?.trim()?{emailCode:r.emailCode.trim()}:{}}),l.storage),u(pe(location.search),{replace:!0})}catch(g){e("error",g instanceof Error?g.message:"注册失败,请稍后重试"),e("submitting",!1)}};return C(re,{mode:"register",get children(){return[(()=>{var s=ze(),c=s.firstChild,b=c.firstChild,g=b.nextSibling,q=c.nextSibling,P=q.firstChild,M=P.nextSibling,U=q.nextSibling,I=U.firstChild,H=I.nextSibling,L=U.nextSibling,X=L.firstChild,Y=X.nextSibling,j=L.nextSibling;return s.addEventListener("submit",h),g.$$input=$=>e("name",$.currentTarget.value),E(g,"spellcheck",!1),M.$$input=$=>{e("email",$.currentTarget.value),m(!1)},i(s,C(k,{get when(){return x()},get children(){var $=Fe(),T=$.firstChild,D=T.nextSibling,F=D.firstChild,R=F.nextSibling;return T.$$click=()=>void n(),i(T,(()=>{var y=z(()=>!!r.requestingCode);return()=>y()?"正在发送...":z(()=>!!p())()?`重新发送 (${o()}s)`:"发送验证码"})()),i($,C(k,{get when(){return r.requestHint},get children(){var y=Ie();return i(y,()=>r.requestHint),f(()=>_e(y,t()?"os-auth-hint":"os-account-success")),y}}),D),i(F,()=>t()?"邮箱验证码(可不填)":"邮箱验证码"),R.$$input=y=>e("emailCode",y.currentTarget.value),E(R,"spellcheck",!1),f(y=>{var O=r.requestingCode||r.submitting||p()||!r.email.trim(),Z=t()?"邮件服务器不可达,可留空":"输入邮件中的验证码",B=r.submitting;return O!==y.e&&(T.disabled=y.e=O),Z!==y.t&&E(R,"placeholder",y.t=Z),B!==y.a&&(R.disabled=y.a=B),y},{e:void 0,t:void 0,a:void 0}),f(()=>R.value=r.emailCode??""),$}}),U),i(s,C(k,{get when(){return d()},get children(){var $=Ne(),T=$.firstChild,D=T.nextSibling;return D.$$input=F=>e("inviteCode",F.currentTarget.value),E(D,"spellcheck",!1),f(()=>D.value=r.inviteCode??""),$}}),U),H.$$input=$=>e("password",$.currentTarget.value),Y.$$input=$=>e("confirmPassword",$.currentTarget.value),i(s,C(k,{get when(){return r.error},get children(){var $=G();return i($,()=>r.error),$}}),j),i(j,()=>r.submitting?"正在创建...":"创建账号"),f($=>{var T=r.submitting||r.requestingCode,D=r.submitting;return T!==$.e&&(M.disabled=$.e=T),D!==$.t&&(j.disabled=$.t=D),$},{e:void 0,t:void 0}),f(()=>g.value=r.name),f(()=>M.value=r.email),f(()=>H.value=r.password),f(()=>Y.value=r.confirmPassword),s})(),(()=>{var s=je(),c=s.firstChild,b=c.nextSibling;return f(()=>E(b,"href",`/login${location.search}`)),s})()]}})}function gt(){const l=W(),u=typeof location<"u"?new URLSearchParams(location.search).get("token")?.trim()??"":"",d=!!u,[_,x]=V(Date.now()),[a,t]=N({email:"",token:u,newPassword:"",confirmPassword:"",requesting:!1,submitting:!1,error:"",success:"",requestHint:"",cooldownUntil:0});te(()=>{const e=window.setInterval(()=>x(Date.now()),250);ge(()=>window.clearInterval(e))});const m=K(()=>Math.max(0,Math.ceil((a.cooldownUntil-_())/1e3))),w=K(()=>m()>0),S=async()=>{if(!(a.requesting||a.submitting||w())){if(!a.email.trim()){t({error:"请输入账号邮箱",success:"",requestHint:""});return}t({requesting:!0,error:"",success:"",requestHint:""});try{const e=await De({email:a.email.trim()}),o=typeof e.retryAfterMs=="number"&&e.retryAfterMs>0?e.retryAfterMs:6e4;t({requesting:!1,requestHint:"若该邮箱已注册,验证码将发送至邮箱。请查收后在下方完成重置。",error:"",cooldownUntil:Date.now()+o})}catch(e){const o=e instanceof Error&&"retryAfterMs"in e?Number(e.retryAfterMs):void 0;t({requesting:!1,error:e instanceof Error?e.message:"发送验证码失败,请稍后重试",requestHint:"",...typeof o=="number"&&o>0?{cooldownUntil:Date.now()+o}:{}})}}},r=async e=>{if(e.preventDefault(),!a.token.trim()){t({error:"请输入邮件验证码",success:""});return}if(a.newPassword.length<8){t({error:"新密码至少需要 8 位",success:""});return}if(a.newPassword!==a.confirmPassword){t({error:"两次输入的新密码不一致",success:""});return}t({submitting:!0,error:"",success:""});try{await Ee({token:a.token.trim(),newPassword:a.newPassword}),t({submitting:!1,error:"",success:"密码已重置,请使用新密码登录",newPassword:"",confirmPassword:""});const o=new URLSearchParams(location.search);o.delete("token");const p=o.toString();window.setTimeout(()=>l(`/login${p?`?${p}`:""}`,{replace:!0}),1200)}catch(o){t({submitting:!1,error:o instanceof Error?o.message:"重置密码失败,请稍后重试",success:""})}};return C(re,{mode:"forgot-password",get children(){return[C(k,{when:!d,get fallback(){return Xe()},get children(){return Oe()}}),C(k,{when:!d,get children(){var e=Be(),o=e.firstChild,p=o.firstChild,n=p.nextSibling,h=o.nextSibling;return e.addEventListener("submit",s=>{s.preventDefault(),S()}),n.$$input=s=>t("email",s.currentTarget.value),i(h,(()=>{var s=z(()=>!!a.requesting);return()=>s()?"正在发送...":z(()=>!!w())()?`重新发送 (${m()}s)`:"获取验证码"})()),i(e,C(k,{get when(){return a.requestHint},get children(){var s=Q();return i(s,()=>a.requestHint),s}}),null),f(s=>{var c=a.requesting||a.submitting,b=a.requesting||a.submitting||w()||!a.email.trim();return c!==s.e&&(n.disabled=s.e=c),b!==s.t&&(h.disabled=s.t=b),s},{e:void 0,t:void 0}),f(()=>n.value=a.email),e}}),(()=>{var e=We(),o=e.firstChild,p=o.firstChild,n=p.nextSibling,h=o.nextSibling,s=h.firstChild,c=s.nextSibling,b=h.nextSibling;return e.addEventListener("submit",r),i(e,C(k,{when:!d,get children(){var g=Ve(),q=g.firstChild,P=q.nextSibling;return P.$$input=M=>t("token",M.currentTarget.value),f(()=>P.disabled=a.submitting),f(()=>P.value=a.token),g}}),o),n.$$input=g=>t("newPassword",g.currentTarget.value),c.$$input=g=>t("confirmPassword",g.currentTarget.value),i(e,C(k,{get when(){return a.error},get children(){var g=G();return i(g,()=>a.error),g}}),b),i(e,C(k,{get when(){return a.success},get children(){var g=Q();return i(g,()=>a.success),g}}),b),i(b,()=>a.submitting?"正在重置...":"重置密码"),f(g=>{var q=a.submitting,P=a.submitting,M=a.submitting;return q!==g.e&&(n.disabled=g.e=q),P!==g.t&&(c.disabled=g.t=P),M!==g.a&&(b.disabled=g.a=M),g},{e:void 0,t:void 0,a:void 0}),f(()=>n.value=a.newPassword),f(()=>c.value=a.confirmPassword),e})(),(()=>{var e=Ge(),o=e.firstChild,p=o.nextSibling;return f(n=>{var h=`/login${location.search}`,s=`/register${location.search}`;return h!==n.e&&E(o,"href",n.e=h),s!==n.t&&E(p,"href",n.t=s),n},{e:void 0,t:void 0}),e})()]}})}function ft(){const l=ee(),u=W(),d=de(),_=me(),[x,a]=N({loading:!0,error:""}),[t,m]=N({currentPassword:"",newPassword:"",confirmPassword:"",submitting:!1,error:"",success:""});te(()=>{const o=Ce();if(!o){a({loading:!1,error:"当前未登录"});return}ye(o).then(p=>a({session:p,loading:!1,error:""})).catch(p=>a({loading:!1,error:p instanceof Error?p.message:"会话已失效"}))});const w=()=>{if(l.platform==="desktop"){u("/login",{replace:!0});return}location.assign("/login")},S=()=>{oe(l.storage).finally(()=>w())},r=async()=>{try{await Ue(),le({variant:"success",icon:"circle-check",title:d.t("account.deleteAccount.toast.success")}),await oe(l.storage),w()}catch(o){le({variant:"error",title:d.t("account.deleteAccount.toast.error"),description:o instanceof Error?o.message:"请稍后重试"})}},e=async(o,p)=>{if(o.preventDefault(),!t.currentPassword||!t.newPassword||!t.confirmPassword){m({error:"请输入当前密码和新密码",success:""});return}if(t.newPassword.length<8){m({error:"新密码至少需要 8 位",success:""});return}if(t.currentPassword===t.newPassword){m({error:"新密码不能与当前密码相同",success:""});return}if(t.newPassword!==t.confirmPassword){m({error:"两次输入的新密码不一致",success:""});return}m({submitting:!0,error:"",success:""});try{await He({accountId:p.account.id,currentPassword:t.currentPassword,newPassword:t.newPassword}),m({currentPassword:"",newPassword:"",confirmPassword:"",submitting:!1,error:"",success:"密码已更新,下次登录请使用新密码"})}catch(n){m({submitting:!1,error:n instanceof Error?n.message:"修改密码失败,请稍后重试",success:""})}};return(()=>{var o=Ye(),p=o.firstChild;return i(p,C(k,{get when(){return!x.loading},get fallback(){return Ze()},get children(){return C(k,{get when(){return x.session},get fallback(){return(()=>{var n=Je(),h=n.firstChild,s=h.nextSibling;return s.nextSibling,i(h,()=>x.error||"当前未登录"),n})()},children:n=>[(()=>{var h=Ke(),s=h.firstChild,c=s.firstChild,b=c.nextSibling,g=b.firstChild,q=g.nextSibling,P=q.nextSibling,M=s.nextSibling,U=M.firstChild,I=U.nextSibling,H=I.nextSibling,L=H.nextSibling;return i(c,()=>st(n().account.name,n().account.email)),i(q,()=>n().account.name),i(P,()=>n().account.email),i(U,()=>at(n().account.status)),H.$$click=S,L.$$click=()=>_.show(()=>C(nt,{onConfirm:r})),i(L,()=>d.t("account.deleteAccount.button")),h})(),(()=>{var h=Qe(),s=h.firstChild,c=s.firstChild,b=c.nextSibling,g=b.nextSibling,q=s.nextSibling,P=q.firstChild;return i(g,()=>d.t("account.defaultProject.description")),i(P,()=>ce(n())||"未分配"),f(()=>E(P,"title",ce(n()))),h})(),(()=>{var h=et(),s=h.firstChild,c=s.firstChild,b=c.firstChild,g=b.nextSibling,q=g.firstChild,P=q.nextSibling;P.nextSibling;var M=c.nextSibling,U=M.nextSibling,I=U.firstChild,H=I.firstChild,L=H.nextSibling,X=I.nextSibling,Y=X.firstChild,j=Y.nextSibling,$=X.nextSibling,T=$.firstChild,D=T.nextSibling,F=s.nextSibling,R=F.firstChild,y=R.nextSibling,O=y.firstChild,Z=O.firstChild,B=Z.nextSibling,ne=O.nextSibling,he=ne.firstChild,se=he.nextSibling,ae=ne.nextSibling,$e=ae.firstChild,ie=$e.nextSibling,J=ae.nextSibling;return i(g,()=>ot(n().expiresAt),P),i(L,()=>n().account.name),i(j,()=>n().account.email),i(D,()=>it(n().account.timeCreated)),y.addEventListener("submit",A=>e(A,n())),B.$$input=A=>m("currentPassword",A.currentTarget.value),se.$$input=A=>m("newPassword",A.currentTarget.value),ie.$$input=A=>m("confirmPassword",A.currentTarget.value),i(y,C(k,{get when(){return t.error},get children(){var A=G();return i(A,()=>t.error),A}}),J),i(y,C(k,{get when(){return t.success},get children(){var A=Q();return i(A,()=>t.success),A}}),J),i(J,()=>t.submitting?"正在更新...":"更新密码"),f(()=>J.disabled=t.submitting),f(()=>B.value=t.currentPassword),f(()=>se.value=t.newPassword),f(()=>ie.value=t.confirmPassword),h})()]})}})),o})()}function nt(l){const u=de(),d=me(),[_,x]=N({submitting:!1,error:""}),a=async()=>{x({submitting:!0,error:""});try{await l.onConfirm(),d.close()}catch(t){x({submitting:!1,error:t instanceof Error?t.message:u.t("account.deleteAccount.toast.error")})}};return C(xe,{get title(){return u.t("account.deleteAccount.title")},fit:!0,transition:!0,get children(){var t=tt(),m=t.firstChild,w=m.nextSibling,S=w.firstChild,r=S.nextSibling;return i(m,()=>u.t("account.deleteAccount.description")),i(t,C(k,{get when(){return _.error},get children(){var e=G();return i(e,()=>_.error),e}}),w),S.$$click=()=>d.close(),i(S,()=>u.t("common.cancel")),r.$$click=a,i(r,(()=>{var e=z(()=>!!_.submitting);return()=>e()?"注销中...":u.t("account.deleteAccount.confirm")})()),f(e=>{var o=_.submitting,p=_.submitting;return o!==e.e&&(S.disabled=e.e=o),p!==e.t&&(r.disabled=e.t=p),e},{e:void 0,t:void 0}),t}})}function re(l){const u=W(),d=()=>{qe(),u(Ae(location.search),{replace:!0})};return(()=>{var _=rt(),x=_.firstChild,a=x.firstChild,t=a.nextSibling,m=t.firstChild,w=m.nextSibling,S=w.firstChild;return a.$$click=d,i(m,C(Se,{})),i(t,()=>l.children,w),S.$$click=d,f(()=>E(x,"data-mode",l.mode)),_})()}function st(l,u){return(l.trim()||u.trim()||"OS").slice(0,2).toUpperCase()}function at(l){return l==="active"?"正常":l==="frozen"?"已冻结":l==="limited"?"已限流":l==="pending"?"待激活":l||"未知"}function ce(l){return Pe(l)??""}function it(l){return l?new Intl.DateTimeFormat("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}).format(new Date(be(l))):"未记录"}function ot(l){const u=Math.ceil(Math.max(0,be(l)-Date.now())/36e5);return u<=0?"已":u<24?`${u} 小时后`:`${Math.ceil(u/24)} 天后`}function lt(l){const u=l.trim().toLowerCase();return u?/^[a-z][a-z0-9._-]{2,31}$/.test(u)?u.includes("..")||u.endsWith(".")||u.startsWith(".")?"账户名不能以点开头/结尾,也不能包含连续的点":"":"账户名须为 3–32 位,以小写字母开头,仅含小写字母、数字、点、下划线或连字符":"请填写账户名"}function ue(l){const u=l.trim().toLowerCase();return!u||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(u)||u.length>254?"请填写有效邮箱":""}function ct(l){const u=Math.max(1,Math.ceil(l/1e3));if(u<60)return`${u} 秒`;const d=Math.ceil(u/60);return d<60?`${d} 分钟`:"1 小时"}function be(l){return l<1e10?l*1e3:l}we(["input","click"]);export{ft as AccountCenterPage,gt as ForgotPasswordPage,dt as LoginPage,mt as RegisterPage};
@@ -1 +1 @@
1
- const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/alert-04-CaGsIGFP.aac";export{e as default};
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/alert-01-BuOD_o_q.aac";export{e as default};
@@ -1 +1 @@
1
- const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/alert-05-D2gbGoRH.aac";export{e as default};
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/alert-02-CS75AsoP.aac";export{e as default};
@@ -1 +1 @@
1
- const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/alert-01-BuOD_o_q.aac";export{e as default};
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/alert-04-CaGsIGFP.aac";export{e as default};
@@ -1 +1 @@
1
- const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/alert-02-CS75AsoP.aac";export{e as default};
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/alert-05-D2gbGoRH.aac";export{e as default};
@@ -0,0 +1 @@
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/alert-06-GK5Tqy6u.aac";export{e as default};
@@ -0,0 +1 @@
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/alert-07-0r0kiLGz.aac";export{e as default};
@@ -0,0 +1 @@
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/alert-08-CZowNquU.aac";export{e as default};
@@ -0,0 +1 @@
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/alert-10-Ck5hR7zH.aac";export{e as default};
@@ -1 +1 @@
1
- const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/bip-bop-03-DXp7Zb0f.aac";export{e as default};
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/bip-bop-03-DXp7Zb0f.aac";export{e as default};
@@ -1 +1 @@
1
- const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/bip-bop-04-CfVtpI7z.aac";export{e as default};
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/bip-bop-04-CfVtpI7z.aac";export{e as default};
@@ -1 +1 @@
1
- const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/bip-bop-06-BuvNosjK.aac";export{e as default};
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/bip-bop-06-BuvNosjK.aac";export{e as default};
@@ -1 +1 @@
1
- const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609111047/assets/bip-bop-08-DBf7Bwjz.aac";export{e as default};
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/bip-bop-08-DBf7Bwjz.aac";export{e as default};
@@ -0,0 +1 @@
1
+ const e="https://cdn.jsdelivr.net/npm/@onescience/onecode-web@1.14.50-202609141543/assets/bip-bop-09-CxEgoAHQ.aac";export{e as default};