@particle-network/authkit
Version:
Auth Core provides MPC (Multi-Party Computation)-based threshold signatures.
294 lines (293 loc) • 15 kB
JavaScript
"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};