@particle-network/authkit
Version:
Auth Core provides MPC (Multi-Party Computation)-based threshold signatures.
277 lines (276 loc) • 17 kB
JavaScript
"use client";
import{a as re,b as B}from"./chunk-W7SFM6OY.mjs";import{a as te}from"./chunk-YAWI32JU.mjs";import{a as j,b as ne}from"./chunk-UD6Q2AOH.mjs";import{a as X,c as k,e as Y,k as Z,l as R,m as ee,n as x}from"./chunk-NSWCC5PG.mjs";import"./chunk-BM7ICTT2.mjs";import{a as Q}from"./chunk-ZTTU2K7E.mjs";import"./chunk-UXH6IVHO.mjs";import"./chunk-GYYKKPHD.mjs";import"./chunk-3RRPQ2DX.mjs";import{V as J,h as A,l as O,o as W,r as T,sa as K,w as G}from"./chunk-H6TXMQRA.mjs";import"./chunk-C7OWFSST.mjs";import{AuthType as L,checkHasBoundLoginPhoneOrEmail as he}from"@particle-network/auth-core";import ge from"ahooks/es/useRequest";import fe from"ahooks/es/useThrottleFn";import{parsePhoneNumber as ye}from"libphonenumber-js/min";import s,{useEffect as xe,useMemo as S,useState as ve}from"react";import se from"ahooks/es/useClickAway";import ie from"country-flag-icons/unicode";import{isValidPhoneNumber as ae,parsePhoneNumber as le}from"libphonenumber-js/min";import t,{useEffect as z,useMemo as me,useRef as M,useState as E}from"react";var oe=`.phone-input-item-container {
position: relative;
display: block;
width: 100%;
height: auto;
overflow: initial;
}
.phone-input-item-container .p-input-affix-wrapper,
.phone-input-item-container .p-input-number-group-wrapper {
width: 100%;
padding: 0;
border: 1px solid var(--input-border-color) !important;
border-radius: var(--primary-btn-border-radius);
line-height: 47px;
background: var(--input-background-color) !important;
box-shadow: none !important;
}
.phone-input-item-container .p-input-affix-wrapper .p-input-number-group-addon,
.phone-input-item-container .p-input-number-group-wrapper .p-input-number-group-addon {
position: initial;
border: none;
background-color: var(--input-background-color);
border-end-start-radius: var(--primary-btn-border-radius);
border-start-start-radius: var(--primary-btn-border-radius);
}
.phone-input-item-container .p-input-affix-wrapper .p-input-number-status-error:not(.p-input-number-disabled, .p-input-number-borderless).p-input-number,
.phone-input-item-container .p-input-number-group-wrapper .p-input-number-status-error:not(.p-input-number-disabled, .p-input-number-borderless).p-input-number,
.phone-input-item-container .p-input-affix-wrapper .p-input-number-status-error:not(.p-input-number-disabled, .p-input-number-borderless).p-input-number:hover,
.phone-input-item-container .p-input-number-group-wrapper .p-input-number-status-error:not(.p-input-number-disabled, .p-input-number-borderless).p-input-number:hover {
border: none;
background: none;
}
.phone-input-item-container .p-input-affix-wrapper .p-input-number,
.phone-input-item-container .p-input-number-group-wrapper .p-input-number {
border: none;
background: none;
}
.phone-input-item-container .p-input-affix-wrapper .p-input-number-focused,
.phone-input-item-container .p-input-number-group-wrapper .p-input-number-focused {
box-shadow: none !important;
}
.phone-input-item-container .p-input-affix-wrapper .p-input-number-disabled,
.phone-input-item-container .p-input-number-group-wrapper .p-input-number-disabled {
background: none;
}
.phone-input-item-container .p-input-affix-wrapper .p-input,
.phone-input-item-container .p-input-number-group-wrapper .p-input,
.phone-input-item-container .p-input-affix-wrapper .p-input-number-input,
.phone-input-item-container .p-input-number-group-wrapper .p-input-number-input {
height: 47px;
border: none !important;
border-radius: 0;
line-height: 47px;
color: var(--text-color);
}
.phone-input-item-container .p-input-affix-wrapper .p-input:hover,
.phone-input-item-container .p-input-number-group-wrapper .p-input:hover,
.phone-input-item-container .p-input-affix-wrapper .p-input-number-input:hover,
.phone-input-item-container .p-input-number-group-wrapper .p-input-number-input:hover {
border: none !important;
}
.phone-input-item-container .p-input-affix-wrapper[data-focus='true'],
.phone-input-item-container .p-input-number-group-wrapper[data-focus='true'] {
border: 1px solid var(--accent-color) !important;
}
.phone-input-item-container .p-input[disabled] {
width: 100%;
height: 47px;
border: 1px solid var(--input-border-color);
border-radius: var(--primary-btn-border-radius);
color: var(--text-color);
background-color: var(--input-background-color);
}
.phone-input-item-container .country-box {
position: initial;
cursor: pointer;
}
.phone-input-item-container .country-box .prefix-wrap {
display: flex;
color: var(--text-color);
gap: 4px;
}
.phone-input-item-container .country-box .account-select-country-list {
position: absolute;
z-index: 2;
top: 54px;
left: 0%;
width: 100%;
height: 350px;
border-radius: var(--card-border-radius) !important;
overflow: hidden auto;
background-color: var(--input-background-color);
}
.phone-input-item-container .country-box .account-select-country-list::-webkit-scrollbar {
display: none;
width: 0;
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap .p-input:focus {
border: none !important;
box-shadow: none !important;
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap.account-select-country-item {
padding-right: 13px;
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap.account-select-country-item:hover {
background: var(--input-background-color);
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap.account-select-country-item:hover.search-input-wrap {
background: none;
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap .p-input-clear-icon {
color: var(--text-color);
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap .p-input-affix-wrapper {
border-color: var(--keyword-border-color) !important;
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap .p-input-suffix {
position: relative;
right: 10px;
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap .search-input {
width: 100%;
height: 32px;
border-radius: var(--primary-btn-border-radius);
overflow: hidden;
color: var(--text-color);
background-color: var(--input-background-color);
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap .search-input .p-input {
width: 100%;
height: auto;
padding-top: 4px;
padding-bottom: 4px;
line-height: initial;
}
.phone-input-item-container .country-box .account-select-country-list .no-data {
display: flex;
justify-content: center;
align-items: center;
height: 160px;
color: var(--text-color);
}
.phone-input-item-container .country-box .account-select-country-list .account-select-country-item {
position: relative;
display: flex;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
height: 47px;
padding: 5px 0 5px 13px;
margin: 0;
border-bottom: 1px solid var(--keyword-border-color);
font-size: 14px;
color: var(--text-color);
cursor: pointer;
}
.phone-input-item-container .country-box .account-select-country-list .account-select-country-item:hover {
background-color: var(--keyword-border-color);
}
.phone-input-item-container .country-box .account-select-country-list .account-select-country-item div {
display: flex;
max-width: 80%;
margin-right: 13px;
}
.phone-input-item-container .country-box input[type='number']::-webkit-inner-spin-button,
.phone-input-item-container .country-box input[type='number']::-webkit-outer-spin-button {
appearance: none;
margin: 0;
}
.phone-input-item-container .country-box.phone {
display: flex;
align-items: center;
}
.phone-input-item-container .country-box .account-select-opt {
display: flex;
flex-shrink: 0;
justify-content: center;
align-items: center;
width: 40px;
height: 100%;
padding-right: 4px;
padding-left: 4px;
cursor: pointer;
}
.phone-input-item-container .country-box .account-select-opt .account-select-icon {
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
font-size: 15px;
}
.phone-input-item-container .country-box .account-select-opt .down-more {
margin-left: 6px;
font-size: 10px;
}
.phone-input-item-container .country-box span {
flex-shrink: 0;
margin: 0;
font-size: 15px;
}
.phone-input-item-container .country-box .country-name {
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.phone-input-item-container .country-box input {
flex-shrink: 1;
box-sizing: border-box;
width: 100%;
height: 45px;
padding: 0 15px;
border: none;
outline: none;
font-weight: 400;
font-size: 15px;
line-height: 45px;
color: var(--text-color);
background-color: transparent;
}
`;var de=a=>{let l=a.form,n=R(a.name,l),[b,p]=E(["United States","us","1"]),{t:u}=T(),[f,h]=E(!1),r=M(null),V=M(null),[_,g]=E(""),N=M(null),m=me(()=>j.filter(e=>e.join("+").toLowerCase().includes(_.toLowerCase())),[_]);return se(()=>{h(!1)},r),z(()=>{f&&g("")},[f]),z(()=>{if(n!=null&&n.includes("*"))return;let e=`+${b[2]}`,o=(n||"").replace(/^\+\d+/,"").trim();l.setFieldsValue({[a.name]:`${e} ${o}`}),o&&l.validateFields(["_phone"])},[b,n]),z(()=>{var e;try{if((e=n==null?void 0:n.includes)!=null&&e.call(n,"*"))l.setFieldsValue({_phone:n});else if(n){if(ae(n)){let o=le(n),y=o.nationalNumber;l.setFieldsValue({_phone:y});let P=o.countryCallingCode.toString(),C=o.country;if(P&&C){let v=j.filter(c=>c[2].toString()===P&&c[1].toLowerCase()===C.toLowerCase());v&&v.length>0&&p(v[v.length-1])}}}else{let o=ne();o&&p(o)}}catch{}},[n]),t.createElement(t.Fragment,null,t.createElement("style",null,A(oe)),t.createElement("div",{className:"phone-input-item-container"},t.createElement(x,{className:!a.disabled||a.disabled&&a.previewMode!=="input"?"hidden":"",extra:a.extra,name:a.name},t.createElement(k,{disabled:a.disabled})),t.createElement(x,{name:"_phone",className:a.disabled&&a.previewMode=="input"?"hidden":"",extra:a.extra,rules:[{required:!0,validator:(e,o)=>{try{if(o)try{if(o=`+${b[2]} ${o}`,!ae(o))return Promise.reject(u("login.phone_format_error"))}catch{return Promise.reject(u("login.phone_format_error"))}else return Promise.reject(u("login.input_phone_holder"))}catch{return Promise.reject(u("login.phone_format_error"))}return Promise.resolve()}}]},t.createElement(Y,{placeholder:u("account.mobile"),disabled:a.disabled,controls:!1,onChange:e=>{l.setFieldsValue({[a.name]:`+${b[2]} ${e}`})},onFocus:()=>{var e;(e=document.querySelector(".p-input-number-group-wrapper"))==null||e.setAttribute("data-focus","true")},onBlur:()=>{var e;(e=document.querySelector(".p-input-number-group-wrapper"))==null||e.setAttribute("data-focus","false")},addonBefore:t.createElement("div",{className:"country-box phone",ref:V},t.createElement("div",{className:"prefix-wrap",onClick:()=>{a.disabled||(h(!f),setTimeout(()=>{var e;(e=N.current)==null||e.focus()}))},ref:r},t.createElement("div",{className:"account-select-opt"},t.createElement("div",{className:"account-select-icon"},ie(`${b[1]}`)),t.createElement("svg",{className:"down-more",viewBox:"64 64 896 896",width:"1em",height:"1em",fill:"currentColor"},t.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"}))),t.createElement("span",null,"+",b[2])),f&&t.createElement("div",{className:"account-select-country-list "},t.createElement("div",{className:"account-select-country-item search-input-wrap",onClick:e=>{e.stopPropagation()}},t.createElement(k,{ref:N,className:"search-input",type:"text",placeholder:u("login.search_country_holder"),allowClear:!0,onChange:e=>{var y;let o=((y=e==null?void 0:e.target)==null?void 0:y.value)||"";g(o)}})),m&&!!m.length?t.createElement("div",{className:"p-country-list"},m.map((e,o)=>t.createElement("div",{key:`${e[0]}-${e[1]}-${e[2]}`,className:"account-select-country-item",onClick:()=>{p(e),h(!1)}},t.createElement("div",{className:"country-box"},t.createElement("div",{className:"country-flag"},ie(`${e[1]}`)),t.createElement("span",{className:"country-name"},e[0])),t.createElement("div",{className:"country-code"},"+"+e[2])))):t.createElement("div",{className:"no-data"},"No data")))}))))},ue=de;var pe=`.login-account-bind {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: center;
width: 100%;
height: 100%;
overflow-y: auto;
}
.login-account-bind .account-title {
font-weight: 500;
font-size: 18px;
}
.login-account-bind .account-bind-form {
width: 100%;
padding: 0 18px;
margin-top: 34px;
}
.login-account-bind .account-bind-form .account-input {
width: 100%;
height: 47px;
border: 1px solid var(--input-border-color);
border-radius: var(--primary-btn-border-radius);
color: var(--text-color);
background-color: var(--input-background-color);
}
.login-account-bind .account-bind-form .link-account-hint {
align-self: flex-start;
padding-top: 6px;
font-size: 12px;
color: var(--secondary-text-color);
}
.login-account-bind .account-bind-form .link-btn {
margin-top: 15px;
margin-bottom: 30px;
}
.login-account-bind .account-bind-form .unlink-btn {
margin-top: 15px;
margin-bottom: 30px;
color: #fff;
background: #ea4335;
}
.login-account-bind .footer-box {
position: absolute;
bottom: 10px;
margin: 0;
}
@media screen and (max-height: 350px) {
.login-account-bind .footer-box {
position: unset;
bottom: 0;
margin-bottom: 10px;
}
}
`;var we=a=>{let l=a,n=(l==null?void 0:l.authType)||"",b=(l==null?void 0:l.verifyToken)||"",{t:p}=T(),[u]=Z(),f=W(),h=J(),{userInfo:r}=K(),{showSelectSecurityAccount:V}=O(),[_,g]=ve(!1),{runAsync:N}=ge(he,{manual:!0}),m=S(()=>re({userInfo:r,t:p}),[r,p]),e=S(()=>{var i;return((i=m==null?void 0:m.find)==null?void 0:i.call(m,d=>d.type===n))||{}},[m,n]),o=S(()=>!e.value&&!e.id,[e]),y=S(()=>!e.isOriginal&&!o,[e]),P=()=>{u.validateFields().then(c=>{var w,I,F,q,D,H,U;let i=((q=(F=(I=(w=u.getFieldsValue())==null?void 0:w.inputValue)==null?void 0:I.replace(/\s/g,""))==null?void 0:F.trim)==null?void 0:q.call(F))||"";if(g(!0),n==="phone"&&((D=r==null?void 0:r.security_account)==null?void 0:D.phone)===i){h.error(p("new.duplicate_phonel_bindings")),g(!1);return}else if(n==="email"&&((U=(H=r==null?void 0:r.security_account)==null?void 0:H.email)==null?void 0:U.toLowerCase())===(i==null?void 0:i.toLowerCase())){h.error(p("new.duplicate_email_bindings")),g(!1);return}let d={};n===L.phone?d.phone=i:d.email=i,N(d).then($=>{f("/account/verify",{state:{account:i,authType:n,verifyToken:b,pageType:"bind_login_account"}}),g(!1)}).catch($=>{g(!1),$.error_code===20109?h.error(n===L.phone?p("error.server_phone_20109"):p("error.server_email_20109")):h.error($.message)})})},{run:C}=fe(c=>{f("/account/verify",{state:{account:c.account,authType:n,unbindAccount:u.getFieldValue("inputValue"),pageType:"unbind_login_account"}})},{wait:3e3}),v=()=>{var c,i,d,w;((c=r==null?void 0:r.security_account)==null?void 0:c.email)&&((i=r==null?void 0:r.security_account)==null?void 0:i.phone)?V(!0,{authType:n,unbindAccount:u.getFieldValue("inputValue"),pageType:"unbind_login_account"}):C({account:((d=r==null?void 0:r.security_account)==null?void 0:d.email)||((w=r==null?void 0:r.security_account)==null?void 0:w.phone)})};return xe(()=>{if((e==null?void 0:e.value)||(e==null?void 0:e.id))if(n===L.phone){let c=ye(e==null?void 0:e.value.replace(/\s/g,"")),i=c.countryCallingCode,d=c.nationalNumber;u.setFieldsValue({inputValue:B(`+${i} ${d}`)})}else u.setFieldsValue({inputValue:B((e==null?void 0:e.value)||(e==null?void 0:e.id)||"")})},[e==null?void 0:e.value,e==null?void 0:e.id,n]),s.createElement("div",{className:"login-account-bind "},s.createElement("style",null,A(pe)),s.createElement(te,{displayBackBtn:!0},e.name),s.createElement(ee,{className:"account-bind-form",layout:"vertical",form:u,onFinish:P},n===L.phone?s.createElement(ue,{name:"inputValue",form:u,disabled:!o,previewMode:"input",extra:s.createElement("div",{className:"link-account-hint"},p("new.link_account_hint").format(e.name))}):s.createElement(x,{name:"inputValue",validateTrigger:"onBlur",extra:s.createElement("div",{className:"link-account-hint"},p("new.link_account_hint").format(e.name)),rules:[{required:!0,validator:async(c,i)=>{if(i){if(!G.test(i))return Promise.reject(p("login.email_format_error"))}else return Promise.reject(p("account.input_vaild_email"));return Promise.resolve()}}]},s.createElement(k,{className:"account-input",placeholder:e.name,disabled:!o,onChange:c=>u.setFields([{name:"email",value:c.target.value,errors:[]}])})),s.createElement(x,null,o?s.createElement(X,{type:"primary",className:"primary-antd-btn link-btn",loading:_,htmlType:"submit"},p("account.link")):s.createElement(s.Fragment,null))),s.createElement(Q,null))},Xe=we;export{Xe as default};