UNPKG

@particle-network/authkit

Version:

Auth Core provides MPC (Multi-Party Computation)-based threshold signatures.

294 lines (293 loc) 15 kB
"use client"; import{a as Z,b as R}from"./chunk-UD6Q2AOH.mjs";import{a as Y}from"./chunk-HDJHX24S.mjs";import{a as N}from"./chunk-NSWCC5PG.mjs";import{a as _}from"./chunk-BM7ICTT2.mjs";import{a as F}from"./chunk-ZTTU2K7E.mjs";import"./chunk-UXH6IVHO.mjs";import"./chunk-GYYKKPHD.mjs";import"./chunk-3RRPQ2DX.mjs";import{V as D,Y as q,h as M,m as P,o as U,r as $,w as Q,y as X}from"./chunk-H6TXMQRA.mjs";import"./chunk-C7OWFSST.mjs";import{getBindSecurityAccounCaptcha as he,getCloudflareTurnstileResponse as be}from"@particle-network/auth-core";import xe from"ahooks/es/useRequest";import oe from"country-flag-icons/unicode";import n,{useEffect as j,useRef as ie,useState as x}from"react";import{ApiError as ee,bindSecurityAccount as re,getBindSecurityAccounCaptcha as ce,getCloudflareTurnstileResponse as se,syncUserInfo as le}from"@particle-network/auth-core";import ue from"ahooks/es/useInterval";import te from"ahooks/es/useRequest";import pe from"lodash/throttle.js";import a,{useCallback as me,useEffect as de,useRef as ge,useState as T}from"react";var V=`.set-email-container { position: relative; display: flex; flex-direction: column; align-items: center; height: 100%; overflow: auto; color: var(--text-color); } .set-email-container .footer-box { position: absolute; bottom: 10px; margin: 0; } @media (max-height: 500px) { .set-email-container .footer-box { display: none; } } .set-email-container .display-none { display: none; } .set-email-container .error-tip { width: 90%; height: 0; padding-left: 10px; margin-top: 6px; margin-bottom: 0; text-align: left; color: red; opacity: 0; transition: opacity 0.3s, height 0.3s; } .set-email-container .error-tip.show { height: 30px; opacity: 1; } .set-email-container .set-email-title { margin-top: 60px; font-size: 22px; color: var(--text-color); } .set-email-container .patment-tips1 { width: 80vw; margin-top: 30px; font-size: 14px; text-align: center; color: var(--text-color); } @media (min-width: 600px) { .set-email-container .patment-tips1 { width: calc(80 * var(--vw)); } } .set-email-container .set-email-buttons { position: absolute; bottom: 0; left: 0; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; width: 100%; height: auto; padding-bottom: 20px; } .set-email-container .success-icon { width: 50px; height: 50px; margin-top: 60px; } .set-email-container .set-email-desc-1 { box-sizing: border-box; padding: 0 18px; margin: 15px 0 25px; font-weight: 400; font-size: 14px; line-height: 16px; text-align: center; color: var(--text-color); } .set-email-container .account-input-box { position: relative; z-index: 3; width: 90%; height: 47px; margin-top: 28px; border-radius: var(--primary-btn-border-radius); line-height: 47px; color: var(--text-color); background-color: var(--input-background-color); opacity: 1; } .set-email-container .account-input-box .account-select-country { position: absolute; z-index: 2; top: 54px; left: 2%; width: 96%; height: 210px; border-radius: var(--card-border-radius) !important; overflow-y: auto; background-color: var(--input-background-color); } .set-email-container .account-input-box .account-select-country::-webkit-scrollbar { display: none; width: 0; } .set-email-container .account-input-box .account-select-country .account-select-country-item { display: flex; justify-content: space-between; align-items: center; box-sizing: border-box; width: 100%; height: 47px; padding: 5px 0 5px 13px; margin: 0; border-bottom: 1px solid var(--card-unclickable-background-color); font-size: 14px; color: var(--text-color); cursor: pointer; } .set-email-container .account-input-box .account-select-country .account-select-country-item:hover { background-color: var(--card-unclickable-background-color); } .set-email-container .account-input-box .account-select-country .account-select-country-item div { display: flex; margin-right: 13px; } .set-email-container .account-input-box .account-select-country .account-select-country-item div .country-name { max-width: 200px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .set-email-container .account-input-box input[type='number']::-webkit-inner-spin-button, .set-email-container .account-input-box input[type='number']::-webkit-outer-spin-button { appearance: none; margin: 0; } .set-email-container .account-input-box.phone { display: flex; align-items: center; border: 1px solid var(--input-background-color); border-radius: var(--primary-btn-border-radius); } .set-email-container .account-input-box.phone[data-focus='true'] { border: 1px solid var(--accent-color) !important; } .set-email-container .account-input-box.phone input { border: none !important; } .set-email-container .account-input-box.phone input:focus { border: none !important; } .set-email-container .account-input-box .account-select-opt { display: flex; flex-shrink: 0; justify-content: center; align-items: center; width: 60px; height: 100%; padding-left: 8px; cursor: pointer; } .set-email-container .account-input-box .account-select-opt .account-select-icon { display: flex; justify-content: center; align-items: center; overflow: hidden; font-size: 15px; } .set-email-container .account-input-box .account-select-opt .down-more { margin-left: 8px; font-size: 10px; } .set-email-container .account-input-box span { flex-shrink: 0; margin: 0; font-size: 15px; } .set-email-container .account-input-box input { flex-shrink: 1; box-sizing: border-box; width: 100%; height: 100%; padding: 0 15px; outline: none; font-weight: 400; font-size: 15px; color: var(--text-color); background-color: transparent; } .set-email-container .send-code-btn { margin-bottom: 0 !important; } .set-email-container .account-submit-btn { width: 90%; height: 47px; padding: 0; margin-top: 38px; border: none; border-radius: var(--primary-btn-border-radius); font-weight: 500; font-size: var(--primary-btn-font-size); line-height: 47px; text-align: center; color: var(--primary-btn-color); background: var(--primary-btn-background-color); opacity: 1; } .set-email-container .account-submit-btn.bottom-margin { margin-bottom: 100px; } .set-email-container .account-submit-btn:hover { border: none; color: var(--primary-btn-color) !important; background: var(--primary-btn-background-color) !important; opacity: var(--hover-opacity); } .set-email-container .account-switch-item { margin-top: 40px; font-weight: 500; font-size: 13px; line-height: 19px; color: var(--accent-color); cursor: pointer; } .set-email-container .set-email-desc-2 { min-width: 116px; height: 23px; padding: 0 15px; border-radius: var(--primary-btn-border-radius); font-weight: 400; font-size: 12px; line-height: 23px; text-align: center; color: var(--secondary-text-color); background: var(--tag-background-color); opacity: 1; } .set-email-container .code-error { position: absolute; left: calc((100vw - 316px) / 2); margin-top: 220px; font-weight: 400; font-size: 12px; color: var(--error-color); } @media (min-width: 600px) { .set-email-container .code-error { left: calc((var(--vw) * 100 - 316px) / 2); } } .set-email-container .back { display: flex; align-items: center; height: 19px; margin-top: 90px; margin-bottom: 20px; font-weight: 400; font-size: 16px; line-height: 19px; color: var(--accent-color); opacity: 1; cursor: pointer; gap: 8px; } .set-email-container .back svg { position: relative; top: 0; color: var(--accent-color); } .set-email-container .send-again { margin-top: 20px; border: none !important; outline: none !important; font-weight: 400; font-size: 16px; line-height: 19px; color: var(--text-color); background-color: transparent; box-shadow: none; } .set-email-container .send-again:hover { color: var(--text-color); background-color: transparent !important; } .set-email-container .send-again:disabled { opacity: 0.5; } `;var fe=G=>{let{bindAccount:s,backToInputAccount:i,redirectUrl:o="",verifyToken:S=""}=G,H=D(),{t:l}=$(),{themeType:z,language:y}=q(),d=U(),[u,E]=T(""),[B,g]=T(1e3),[r,f]=T(60),[p,h]=T(),K=ge(null),{authCoreModal:O}=P(),[m,v]=T(!1);ue(()=>{if(r>0){let t=r-1;f(t),t===0&&g(void 0)}},B);let{run:b}=te(re,{manual:!0,onBefore:()=>{v(!0)},onSuccess:t=>{le(),o?d(o.split("?")[0],{replace:!0,back:!0,state:{...Object.fromEntries(new URLSearchParams(o.split("?")[1]||"")),verifyToken:t==null?void 0:t.token,account:s}}):t.has_set_payment_password?d("/account/security",{replace:!0}):d("/account/set-password")},onError:t=>{(t==null?void 0:t.error_code)===ee.InvalidCode?h(l("login.invalid_code")):(t==null?void 0:t.error_code)===ee.ResendCode&&h(l("login.please_send_again"))},onFinally:()=>{setTimeout(()=>{v(!1)},2e3)}}),{loading:w,run:k}=te(ce,{manual:!0,onSuccess:(t,c)=>{B||(f(60),g(1e3))},onError:t=>{f(0),g(void 0)}}),A=t=>{let c;s.includes("@")?c={email:s,code:t||u}:c={phone:s,code:t||u},S&&(c.token=S),b(c)},I=()=>{h(""),s.includes("@")?k({email:s}):se({theme:z,language:y,getContainer:()=>O.rootBody}).then(t=>{k({phone:s,cf_turnstile_response:t})}).catch(t=>{H.error(l("error.server_20112"))})},C=t=>{E(t),h(""),t.length===6&&W(t)},W=me(pe(t=>{A(t)},1e3,{leading:!0,trailing:!1}),[]);de(()=>{var J;let t=document.getElementsByClassName("react-input-code"),c=L=>L.preventDefault();return(J=t[0])==null||J.addEventListener("contextmenu",c),()=>{var L;(L=t[0])==null||L.removeEventListener("contextmenu",c)}},[]);let e=()=>{var c;(c=document.getElementsByClassName("input-code-item")[Math.min(u.length,5)])==null||c.focus()};return a.createElement("div",{className:"set-email-container"},a.createElement("style",null,M(V)),a.createElement(_,{className:"icon-navigation-back",name:"circle_back",onClick:i}),a.createElement("h2",{className:"set-email-title"},l("account.enter_code")),a.createElement("p",{className:"set-email-desc-2",style:{margin:20}},s),a.createElement("div",{onClick:e},a.createElement(Y,{containerClassName:"react-input-code",inputClassName:"input-code-item",allowedCharacters:"numeric",length:6,ref:K,placeholder:" ",onChange:C})),p&&a.createElement("div",{className:"code-error"},p),a.createElement(N,{disabled:u.length!==6,className:"account-submit-btn",loading:m,onClick:()=>A()},l("common.confirm")),a.createElement(N,{className:"send-again",onClick:I,disabled:r>0||w},r>0?`${l("login.send_again")} (${r}s)`:l("login.send_again")),a.createElement("div",{className:"back",onClick:i},a.createElement(_,{className:"arrow1-icon",name:"arrow1_icon"}),a.createElement("span",null,l("login.back"))),a.createElement(F,null))},ne=fe;var ye=G=>{let s=U(),{t:i}=$(),o=G,S=o==null?void 0:o.redirectUrl,H=o==null?void 0:o.verifyToken,l=D(),z=ie(null),[y,d]=x(""),[u,E]=x(["United States","us","1"]),[B,g]=x(!1),r=ie(null),[f,p]=x(""),{themeType:h,language:K}=q(),{authCoreModal:O}=P(),[m,v]=x("email");j(()=>{if(m==="phone"||(o==null?void 0:o.showSwitch)){let e=R();e&&E(e)}},[m,o==null?void 0:o.showSwitch]);let[b,w]=x(!1);j(()=>{if(b)return document.addEventListener("click",k,!0),()=>{document.removeEventListener("click",k,!0)}},[b]);let k=e=>{setTimeout(()=>{var t;(t=z.current)!=null&&t.contains(e.target)||w(!1)})};j(()=>{let e=o==null?void 0:o.accountType;e&&v(e)},[o]);let{loading:A,run:I}=xe(he,{manual:!0,onSuccess:(e,t)=>{g(e)},onError:e=>{let t=(e==null?void 0:e.error_code)||0;(t===50003||t===50004)&&(d(""),r.current.value="")}}),C=()=>{let e=r.current.value;if(m==="email")if(e){if(!Q.test(e))return p(i("login.email_format_error"))}else return p(i("account.input_vaild_email"));else{let t=u[1].toUpperCase();if(!e&&e!=="0")return p(i("account.input_vaild_mobile"));if(X(e,t))e=`+${u[2]}${e}`;else return p(i("login.phone_format_error"))}d(e),e.includes("@")?I({email:e}):be({theme:h,language:K,getContainer:()=>O.rootBody}).then(t=>{I({phone:e,cf_turnstile_response:t})}).catch(t=>{l.error(i("error.server_20112"))})},W=()=>{p(""),v(m==="email"?"phone":"email"),d("")};return j(()=>{setTimeout(()=>{var e;(e=r.current)==null||e.focus()})},[]),B?n.createElement(ne,{bindAccount:y,redirectUrl:S||"",verifyToken:H,backToInputAccount:()=>{g(!1)}}):n.createElement("div",{className:"set-email-container"},n.createElement("style",null,M(V)),n.createElement(_,{className:"icon-navigation-back",name:"circle_back",onClick:()=>s(-1)}),n.createElement("h2",{className:"set-email-title"},i(m==="email"?"account.set_your_email":"account.set_your_mobile")),n.createElement("p",{className:"set-email-desc-1"},i(m==="email"?"account.set_your_email_tip":"account.set_your_mobile_tip")),m==="email"?n.createElement(n.Fragment,null,n.createElement("div",{className:"account-input-box"},n.createElement("input",{onInput:()=>p(""),className:"input_email",type:"email",placeholder:i("account.place_email_address"),ref:r,defaultValue:y,onKeyDown:e=>{e.key==="Enter"&&C()}}))):n.createElement(n.Fragment,null,n.createElement("div",{className:"account-input-box phone",ref:z},b&&n.createElement("div",{className:"account-select-country"},Z.map((e,t)=>n.createElement("p",{key:t,className:"account-select-country-item",onClick:()=>{E(e),w(!1)}},n.createElement("div",{className:"country-box"},n.createElement("div",{className:"country-flag"},oe(`${e[1]}`)),n.createElement("span",{className:"country-name"},e[0])),n.createElement("div",{className:"country-code"},"+"+e[2])))),n.createElement("div",{className:"account-select-opt",onClick:()=>w(!b)},n.createElement("div",{className:"account-select-icon"},oe(`${u[1]}`)),n.createElement("svg",{className:"down-more",viewBox:"64 64 896 896",width:"1em",height:"1em",fill:"currentColor"},n.createElement("path",{d:"M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"}))),n.createElement("span",null,"+",u[2]),n.createElement("input",{onInput:()=>{var e;p(""),r.current.value=((e=r.current.value.match(/^\d+/))==null?void 0:e[0])||""},type:"text",className:"no-number dd",placeholder:i("account.mobile"),ref:r,onWheel:e=>e.target.blur(),defaultValue:y.replace(`+${u[2]}`,""),onKeyDown:e=>{e.key==="Enter"&&C()},onFocus:()=>{var e;(e=document.querySelector(".account-input-box.phone"))==null||e.setAttribute("data-focus","true")},onBlur:()=>{var e;(e=document.querySelector(".account-input-box.phone"))==null||e.setAttribute("data-focus","false")}}))),n.createElement("p",{className:`error-tip ${f?"show":""}`},f),n.createElement(N,{className:"send-code-btn account-submit-btn bottom-margin",loading:A,onClick:C},i("login.get_captcha")),(o==null?void 0:o.showSwitch)&&n.createElement("div",{className:"account-switch-item",onClick:W},i(m==="email"?"account.switch_text_mobile":"account.switch_text_email")),n.createElement(F,null))},Ye=ye;export{Ye as default};