UNPKG

@particle-network/authkit

Version:

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

277 lines (276 loc) 17 kB
"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};