@particle-network/auth-core-modal
Version:
Auth Core provides MPC (Multi-Party Computation)-based threshold signatures.
3 lines (2 loc) • 3.02 kB
JavaScript
"use client";
import{y as b}from"./chunk-E4XMQAPX.js";import p,{forwardRef as P,useEffect as E,useImperativeHandle as S,useRef as N}from"react";var k=["alpha","numeric","alphanumeric"],D={alpha:{type:"text",inputMode:"text",pattern:"[a-zA-Z]{1}"},alphanumeric:{type:"text",inputMode:"text",pattern:"[a-zA-Z0-9]{1}"},numeric:{type:"tel",inputMode:"numeric",pattern:"[0-9]{1}",min:"0",max:"9"}},V=P(({allowedCharacters:m="alphanumeric",ariaLabel:f,autoFocus:y=!0,containerClassName:I,disabled:x,inputClassName:C,isPassword:M=!1,length:d=6,placeholder:T,onChange:h,code:i=""},w)=>{if(isNaN(d)||d<1)throw new Error("Length should be a number and greater than 0");if(!k.some(e=>e===m))throw new Error("Invalid value for allowedCharacters. Use alpha, numeric, or alphanumeric");let n=N([]),o=D[m];S(w,()=>({focus:()=>{n.current&&n.current[0].focus()},clear:()=>{if(n.current){for(let e=0;e<n.current.length;e++)n.current[e].value="";n.current[0].focus()}s()}})),E(()=>{y&&b()&&n.current[0].focus()},[]),E(()=>{if(i){for(let e=0;e<n.current.length;e++)n.current[e].value="";for(let e=0;e<i.length;e++)n.current[e].value=i[e];s()}},[i]);let g=n.current.map(e=>e.value).join("")||"",s=()=>{let e=n.current.map(t=>t.value).join("");g!==e&&(h&&h(e),g=e)},A=e=>{var a;let{target:{value:t,nextElementSibling:r}}=e;if(t.length==1)t.match(o.pattern)?r!==null&&r.focus():e.target.value="";else if(t.length>1){let l=t,u=Number(e.target.getAttribute("data-index"))||0;for(let c=0;c<l.length;c++){let v=l.charAt(c);v.match(o.pattern)&&((a=n.current)==null?void 0:a[u])&&(n.current[u].value=v,n.current[u].nextElementSibling!==null&&(n.current[u].nextElementSibling.focus(),u++))}}setTimeout(()=>{s()})},L=e=>{let{key:t}=e,r=e.target;if(t==="Backspace"){if(r.value===""){if(r.previousElementSibling!==null){let a=r.previousElementSibling;a.value="",a.focus(),e.preventDefault()}}else r.value="";setTimeout(()=>{s()})}},H=e=>{e.target.select()},R=e=>{var a;let t=(a=e.clipboardData.getData("Text"))!=null?a:"";t=t.replace(/\s/g,"").substring(0,6);let r=0;for(let l=0;l<t.length;l++){let u=t.charAt(l),c=n.current[r].value;u.match(o.pattern)&&(c||(n.current[r].value=u,n.current[r].nextElementSibling!==null&&(n.current[r].nextElementSibling.focus(),r++)))}s(),e.preventDefault()};return p.createElement("div",{className:I},new Array(6).fill(0).map((e,t)=>p.createElement("input",{key:t,"data-index":t,onChange:A,onKeyDown:L,onFocus:H,onPaste:R,...o,type:M?"password":o.type,ref:r=>{n.current[t]=r},className:C,autoComplete:t===0?"one-time-code":"off","aria-label":f?`${f}. Character ${t+1}.`:`Character ${t+1}.`,disabled:x,placeholder:T})),p.createElement("div",{className:"input-code-mask",onClick:e=>{e.preventDefault(),e.stopPropagation();for(let t=n.current.length-1;t>=0;t--)if(t>0&&!n.current[t].value&&n.current[t-1].value||t===0&&!n.current[t].value||t==n.current.length-1&&n.current[t].value){n.current[t].focus(),n.current[t].setSelectionRange(n.current[t].value.length,n.current[t].value.length);break}}}))}),K=V;export{K as a};