@particle-network/authkit
Version:
Auth Core provides MPC (Multi-Party Computation)-based threshold signatures.
294 lines (293 loc) • 17.6 kB
JavaScript
"use client";
import{a as B,b as X}from"./chunk-UD6Q2AOH.mjs";import{a as Z,b as $}from"./chunk-ED37MMH4.mjs";import{a as Y}from"./chunk-VCCEGEQN.mjs";import"./chunk-2ZJMGRDL.mjs";import{a as Q}from"./chunk-5FDQ257G.mjs";import{B as G,M as J,h as _,ha as K,qa as R,ra as tt,ta as nt,wa as F}from"./chunk-PW43K4P2.mjs";import"./chunk-2FKLQE76.mjs";import{AuthType as A,checkHasBoundLoginPhoneOrEmail as gt}from"@particle-network/auth-core";import ft from"ahooks/es/useRequest";import yt from"ahooks/es/useThrottleFn";import xt from"antd/es/button";import T from"antd/es/form";import vt from"antd/es/input";import H from"antd/es/modal";import{parsePhoneNumber as wt}from"libphonenumber-js/max";import p,{useEffect as kt,useMemo as L,useState as Ct}from"react";import{DownOutlined as pt}from"@ant-design/icons";import st from"ahooks/es/useClickAway";import j from"antd/es/form";import ot from"antd/es/input";import lt from"antd/es/input-number";import rt from"country-flag-icons/unicode";import{isValidPhoneNumber as it,parsePhoneNumber as mt}from"libphonenumber-js/max";import o,{useEffect as E,useMemo as dt,useRef as z,useState as I}from"react";var et=`.phone-input-item-container {
position: relative;
display: block;
width: 100%;
height: auto;
overflow: initial;
}
.phone-input-item-container .ant-input-affix-wrapper,
.phone-input-item-container .ant-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 .ant-input-affix-wrapper .ant-input-number-group-addon,
.phone-input-item-container .ant-input-number-group-wrapper .ant-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 .ant-input-affix-wrapper .ant-input-number-status-error:not(.ant-input-number-disabled, .ant-input-number-borderless).ant-input-number,
.phone-input-item-container .ant-input-number-group-wrapper .ant-input-number-status-error:not(.ant-input-number-disabled, .ant-input-number-borderless).ant-input-number,
.phone-input-item-container .ant-input-affix-wrapper .ant-input-number-status-error:not(
.ant-input-number-disabled,
.ant-input-number-borderless
).ant-input-number:hover,
.phone-input-item-container .ant-input-number-group-wrapper .ant-input-number-status-error:not(
.ant-input-number-disabled,
.ant-input-number-borderless
).ant-input-number:hover {
border: none;
background: none;
}
.phone-input-item-container .ant-input-affix-wrapper .ant-input-number,
.phone-input-item-container .ant-input-number-group-wrapper .ant-input-number {
border: none;
background: none;
}
.phone-input-item-container .ant-input-affix-wrapper .ant-input-number-focused,
.phone-input-item-container .ant-input-number-group-wrapper .ant-input-number-focused {
box-shadow: none !important;
}
.phone-input-item-container .ant-input-affix-wrapper .ant-input-number-disabled,
.phone-input-item-container .ant-input-number-group-wrapper .ant-input-number-disabled {
background: none;
}
.phone-input-item-container .ant-input-affix-wrapper .ant-input,
.phone-input-item-container .ant-input-number-group-wrapper .ant-input,
.phone-input-item-container .ant-input-affix-wrapper .ant-input-number-input,
.phone-input-item-container .ant-input-number-group-wrapper .ant-input-number-input {
height: 47px;
border: none !important;
border-radius: 0;
line-height: 47px;
color: var(--text-color);
}
.phone-input-item-container .ant-input-affix-wrapper .ant-input:hover,
.phone-input-item-container .ant-input-number-group-wrapper .ant-input:hover,
.phone-input-item-container .ant-input-affix-wrapper .ant-input-number-input:hover,
.phone-input-item-container .ant-input-number-group-wrapper .ant-input-number-input:hover {
border: none !important;
}
.phone-input-item-container .ant-input-affix-wrapper[data-focus='true'],
.phone-input-item-container .ant-input-number-group-wrapper[data-focus='true'] {
border: 1px solid var(--accent-color) !important;
}
.phone-input-item-container .ant-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 .ant-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 .ant-input-clear-icon {
color: var(--text-color);
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap .ant-input-affix-wrapper {
border-color: var(--keyword-border-color) !important;
}
.phone-input-item-container .country-box .account-select-country-list .search-input-wrap .ant-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 .ant-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 bt=a=>{let s=a.form,e=j.useWatch(a.name,s),[b,c]=I(["United States","us","1"]),{t:u}=F(),[g,x]=I(!1),r=z(null),P=z(null),[w,h]=I(""),k=z(null),f=dt(()=>B.filter(n=>n.join("+").toLowerCase().includes(w.toLowerCase())),[w]);return st(()=>{x(!1)},r),E(()=>{g&&h("")},[g]),E(()=>{if(e!=null&&e.includes("*"))return;let n=`+${b[2]}`,t=(e||"").replace(/^\+\d+/,"").trim();s.setFieldsValue({[a.name]:`${n} ${t}`}),t&&s.validateFields(["_phone"])},[b,e]),E(()=>{var n;try{if((n=e==null?void 0:e.includes)!=null&&n.call(e,"*"))s.setFieldsValue({_phone:e});else if(e){if(it(e)){let t=mt(e),m=t.nationalNumber;s.setFieldsValue({_phone:m});let S=t.countryCallingCode.toString(),C=t.country;if(S&&C){let y=B.filter(V=>V[2].toString()===S&&V[1].toLowerCase()===C.toLowerCase());y&&y.length>0&&c(y[y.length-1])}}}else{let t=X();t&&c(t)}}catch{}},[e]),o.createElement(o.Fragment,null,o.createElement("style",null,_(et)),o.createElement("div",{className:"phone-input-item-container"},o.createElement(j.Item,{className:!a.disabled||a.disabled&&a.previewMode!=="input"?"hidden":"",extra:a.extra,name:a.name},o.createElement(ot,{disabled:a.disabled})),o.createElement(j.Item,{name:"_phone",className:a.disabled&&a.previewMode=="input"?"hidden":"",extra:a.extra,rules:[{required:!0,validator:(n,t)=>{try{if(t)try{if(t=`+${b[2]} ${t}`,!it(t))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()}}]},o.createElement(lt,{placeholder:u("account.mobile"),disabled:a.disabled,controls:!1,onChange:n=>{s.setFieldsValue({[a.name]:`+${b[2]} ${n}`})},onFocus:()=>{var n;(n=document.querySelector(".ant-input-number-group-wrapper"))==null||n.setAttribute("data-focus","true")},onBlur:()=>{var n;(n=document.querySelector(".ant-input-number-group-wrapper"))==null||n.setAttribute("data-focus","false")},addonBefore:o.createElement("div",{className:"country-box phone",ref:P},o.createElement("div",{className:"prefix-wrap",onClick:()=>{a.disabled||(x(!g),setTimeout(()=>{var n;(n=k.current)==null||n.focus()}))},ref:r},o.createElement("div",{className:"account-select-opt"},o.createElement("div",{className:"account-select-icon"},rt(`${b[1]}`)),o.createElement(pt,{className:"down-more"})),o.createElement("span",null,"+",b[2])),g&&o.createElement("div",{className:"account-select-country-list "},o.createElement("div",{className:"account-select-country-item search-input-wrap",onClick:n=>{n.stopPropagation()}},o.createElement(ot,{ref:k,className:"search-input",type:"text",placeholder:u("login.search_country_holder"),allowClear:!0,onChange:n=>{var m;let t=((m=n==null?void 0:n.target)==null?void 0:m.value)||"";h(t)}})),f&&!!f.length?o.createElement("div",{className:"p-country-list"},f.map((n,t)=>o.createElement("div",{key:`${n[0]}-${n[1]}-${n[2]}`,className:"account-select-country-item",onClick:()=>{c(n),x(!1)}},o.createElement("div",{className:"country-box"},o.createElement("div",{className:"country-flag"},rt(`${n[1]}`)),o.createElement("span",{className:"country-name"},n[0])),o.createElement("div",{className:"country-code"},"+"+n[2])))):o.createElement("div",{className:"no-data"},"No data")))}))))},at=bt;var ut=`.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 .ant-input-status-error:not(.ant-input-disabled, .ant-input-borderless).ant-input {
background-color: var(--input-background-color);
}
.login-account-bind .ant-spin-spinning {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
padding-bottom: 20vh;
}
.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 Nt=a=>{let s=a,e=(s==null?void 0:s.authType)||"",b=(s==null?void 0:s.verifyToken)||"",{t:c}=F(),[u]=T.useForm(),g=nt(),x=J(),{userInfo:r}=K(),{showSelectSecurityAccount:P}=R(),[w,h]=Ct(!1),{runAsync:k}=ft(gt,{manual:!0}),{authCoreModal:f}=tt(),n=L(()=>Z({userInfo:r,t:c}),[r,c]),t=L(()=>{var i;return((i=n==null?void 0:n.find)==null?void 0:i.call(n,d=>d.type===e))||{}},[n,e]),m=L(()=>!t.value&&!t.id,[t]),S=L(()=>!t.isOriginal&&!m,[t]),C=()=>{u.validateFields().then(l=>{var v,D,N,q,U,O,W;let i=((q=(N=(D=(v=u.getFieldsValue())==null?void 0:v.inputValue)==null?void 0:D.replace(/\s/g,""))==null?void 0:N.trim)==null?void 0:q.call(N))||"";if(h(!0),e==="phone"&&((U=r==null?void 0:r.security_account)==null?void 0:U.phone)===i){H.error({title:c("new.duplicate_phonel_bindings"),wrapClassName:"auth-core-modal-error",getContainer:()=>f.rootBody}),h(!1);return}else if(e==="email"&&((W=(O=r==null?void 0:r.security_account)==null?void 0:O.email)==null?void 0:W.toLowerCase())===(i==null?void 0:i.toLowerCase())){H.error({title:c("new.duplicate_email_bindings"),wrapClassName:"auth-core-modal-error",getContainer:()=>f.rootBody}),h(!1);return}let d={};e===A.phone?d.phone=i:d.email=i,k(d).then(M=>{g("/account/verify",{state:{account:i,authType:e,verifyToken:b,pageType:"bind_login_account"}}),h(!1)}).catch(M=>{h(!1),M.error_code===20109?H.error({title:e===A.phone?c("error.server_phone_20109"):c("error.server_email_20109"),wrapClassName:"auth-core-modal-error",getContainer:()=>f.rootBody}):x.error(M.message)})})},{run:y}=yt(l=>{g("/account/verify",{state:{account:l.account,authType:e,unbindAccount:u.getFieldValue("inputValue"),pageType:"unbind_login_account"}})},{wait:3e3}),V=()=>{var l,i,d,v;((l=r==null?void 0:r.security_account)==null?void 0:l.email)&&((i=r==null?void 0:r.security_account)==null?void 0:i.phone)?P(!0,{authType:e,unbindAccount:u.getFieldValue("inputValue"),pageType:"unbind_login_account"}):y({account:((d=r==null?void 0:r.security_account)==null?void 0:d.email)||((v=r==null?void 0:r.security_account)==null?void 0:v.phone)})};return kt(()=>{if((t==null?void 0:t.value)||(t==null?void 0:t.id))if(e===A.phone){let l=wt(t==null?void 0:t.value.replace(/\s/g,"")),i=l.countryCallingCode,d=l.nationalNumber;u.setFieldsValue({inputValue:$(`+${i} ${d}`)})}else u.setFieldsValue({inputValue:$((t==null?void 0:t.value)||(t==null?void 0:t.id)||"")})},[t==null?void 0:t.value,t==null?void 0:t.id,e]),p.createElement("div",{className:"login-account-bind "},p.createElement("style",null,_(ut)),p.createElement(Y,{displayBackBtn:!0},t.name),p.createElement(T,{className:"account-bind-form",layout:"vertical",form:u,onFinish:C},e===A.phone?p.createElement(at,{name:"inputValue",form:u,disabled:!m,previewMode:"input",extra:p.createElement("div",{className:"link-account-hint"},c("new.link_account_hint").format(t.name))}):p.createElement(T.Item,{name:"inputValue",validateTrigger:"onBlur",extra:p.createElement("div",{className:"link-account-hint"},c("new.link_account_hint").format(t.name)),rules:[{required:!0,validator:async(l,i)=>{if(i){if(!G.test(i))return Promise.reject(c("login.email_format_error"))}else return Promise.reject(c("account.input_vaild_email"));return Promise.resolve()}}]},p.createElement(vt,{className:"account-input",placeholder:t.name,disabled:!m,onChange:l=>u.setFields([{name:"email",value:l.target.value,errors:[]}])})),p.createElement(T.Item,null,m?p.createElement(xt,{className:"primary-antd-btn link-btn",loading:w,htmlType:"submit"},c("account.link")):p.createElement(p.Fragment,null))),p.createElement(Q,null))},an=Nt;export{an as default};