@xyo-network/react-wallet 2.77.1 → 2.77.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var de=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var dt=Object.getOwnPropertyNames;var ut=Object.prototype.hasOwnProperty;var mt=(e,t)=>{for(var o in t)de(e,o,{get:t[o],enumerable:!0})},pt=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of dt(t))!ut.call(e,n)&&n!==o&&de(e,n,{get:()=>t[n],enumerable:!(r=ct(t,n))||r.enumerable});return e};var ft=e=>pt(de({},"__esModule",{value:!0}),e);var At={};mt(At,{DefaultSeedPhrase:()=>Pt,DialogActionButtons:()=>ge,InvalidPhraseTypography:()=>$,MaxAccountsTableRow:()=>ht,NewPhraseTextField:()=>be,OverwriteWarning:()=>Ae,PhraseDialogActions:()=>we,PhraseHeaderBox:()=>U,SavedPhraseTextField:()=>We,SeedPhraseContext:()=>N,SeedPhraseDialog:()=>Be,SeedPhraseDialogInner:()=>Xe,SeedPhraseIconButton:()=>z,SeedPhraseProvider:()=>he,SeedPhraseTableRow:()=>St,WalletAccountDetails:()=>bt,WalletAccountSelect:()=>Fe,WalletAccountSelectBar:()=>Wt,WalletContext:()=>D,WalletProvider:()=>xt,colorParser:()=>ve,useAccount:()=>ke,useIndexedWalletFromContext:()=>Ve,useRootWallet:()=>xe,useSeedPhrase:()=>S,useSelectedWalletAccount:()=>Se,useWallet:()=>O,useWalletContext:()=>g,useWalletProvided:()=>Pe,useWallets:()=>gt,useWrapperAccount:()=>Ct});module.exports=ft(At);var W=require("@mui/material"),ue=require("@xylabs/react-button"),me=require("react");var F=require("@mui/material"),H=require("react/jsx-runtime"),De=({activeAccountIndex:e,desiredMaximumAccounts:t,setShowSnackBar:o,showSnackBar:r})=>(0,H.jsx)(F.Snackbar,{anchorOrigin:{horizontal:"center",vertical:"top"},autoHideDuration:5e3,onClose:()=>o?.(!1),open:r,children:(0,H.jsxs)(F.Alert,{severity:"error",onClose:()=>o?.(!1),children:[(0,H.jsx)(F.AlertTitle,{children:"Maximum Accounts Error"}),"Your currently selected account number (",e===void 0?"":e+1,") cannot be greater than the desired Maximum Accounts (",t,")."]})});var b=require("react/jsx-runtime"),ht=({activeAccountIndex:e,changeMaxAccounts:t,maxAccounts:o})=>{let[r,n]=(0,me.useState)(),[a,s]=(0,me.useState)(!1),c=p=>{if(o!==void 0&&e!==void 0)switch(p){case"decrease":{let i=o-1,h=i>0,P=e+1<=i;h&&P&&t?.(i),P||s(!0),n(i);return}case"increase":{t?.(o+1);return}default:console.error(p,"is not a recognized value")}else throw new Error("Max Accounts is unset and needs a default")};return(0,b.jsxs)(W.TableRow,{children:[(0,b.jsx)(W.TableCell,{children:"Maximum Accounts"}),(0,b.jsx)(W.TableCell,{align:"center",children:(0,b.jsx)(W.Typography,{variant:"caption",children:o})}),(0,b.jsxs)(W.TableCell,{align:"center",children:[(0,b.jsxs)(W.ButtonGroup,{children:[(0,b.jsx)(ue.ButtonEx,{onClick:()=>c("decrease"),variant:"contained",size:"small",children:"-"}),(0,b.jsx)(ue.ButtonEx,{onClick:()=>c("increase"),variant:"contained",size:"small",children:"+"})]}),(0,b.jsx)(De,{desiredMaximumAccounts:r,activeAccountIndex:e,setShowSnackBar:s,showSnackBar:a})]})]})};var Ee=require("@mui/icons-material"),l=require("@mui/material"),Oe=require("react"),d=require("react/jsx-runtime"),z=e=>{let[t,o]=(0,Oe.useState)(!1),r=()=>o(!1);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(l.IconButton,{onClick:()=>o(!0),...e,children:(0,d.jsx)(Ee.HelpOutline,{fontSize:"small"})}),(0,d.jsxs)(l.Dialog,{open:t,children:[(0,d.jsx)(l.DialogTitle,{children:"Understanding your Seed Phrase"}),(0,d.jsxs)(l.DialogContent,{children:[(0,d.jsxs)(l.Typography,{children:["Your Seed Phrase should adhere to the"," ",(0,d.jsx)(l.Link,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 specification"})," ","and is used to generate accounts which identify your data on the XYO Network."]}),(0,d.jsxs)(l.List,{children:[(0,d.jsx)(l.ListItem,{children:"Do not share this phrase with anyone."}),(0,d.jsx)(l.ListItem,{children:"Do not save it to a public computer."}),(0,d.jsx)(l.ListItem,{children:"Do not use a existing phrase from another wallet (i.e. Metamask)."}),(0,d.jsx)(l.ListItem,{children:"Do not use before copying it down somewhere safe."})]})]}),(0,d.jsx)(l.DialogActions,{children:(0,d.jsx)(l.Button,{onClick:r,variant:"outlined",children:"OK"})})]})]})};var R=require("@mui/material"),Me=require("@scure/bip39"),He=require("@scure/bip39/wordlists/english"),Z=require("react"),I=require("react/jsx-runtime"),Pt=({changeSeedPhrase:e,children:t,hideDefaultSeedPhraseMessage:o,seedPhrase:r})=>{let[n,a]=(0,Z.useState)(!1);return(0,Z.useEffect)(()=>{if(!r){let s=(0,Me.generateMnemonic)(He.wordlist,256);e?.(s),a(!0)}},[e,r]),(0,I.jsxs)(I.Fragment,{children:[o?null:(0,I.jsx)(R.Snackbar,{open:n,autoHideDuration:5e3,onClose:()=>a(!1),anchorOrigin:{horizontal:"center",vertical:"top"},children:(0,I.jsxs)(R.Alert,{severity:"success",children:[(0,I.jsx)(R.AlertTitle,{children:"Default Seed Phrase Generated"}),"Go to application settings to save it."]})}),t]})};var G=require("@mui/material");var ze=require("@xyo-network/react-shared"),N=(0,ze.createContextEx)();var j=require("@scure/bip39"),fe=require("@scure/bip39/wordlists/english"),u=require("react");var Ne=require("react/jsx-runtime"),pe=e=>e?(0,j.validateMnemonic)(e,fe.wordlist):null,he=({children:e,defaultPhrase:t,handleChangeSeedPhrase:o,saveCallback:r,seedPhrase:n,open:a})=>{let[s,c]=(0,u.useState)(),[p,i]=(0,u.useState)(!1);(0,u.useEffect)(()=>{c(t)},[t]),(0,u.useEffect)(()=>{(n||a)&&c?.(n??"")},[n,a,c]);let h=(0,u.useCallback)(()=>{let M=(0,j.generateMnemonic)(fe.wordlist,256);c?.(M),i?.(!1)},[]),P=(0,u.useCallback)(()=>{i?.(!1)},[]),Q=(0,u.useCallback)(()=>{c?.(""),i?.(!1)},[]),x=(0,u.useCallback)(()=>{!p&&n&&n!==s?i?.(!0):(o?.(s??""),r?.())},[o,p,s,r,n]);(0,u.useEffect)(()=>{a||P()},[P,a]);let ie=(0,u.useMemo)(()=>pe?.(n),[n]),f=(0,u.useMemo)(()=>pe?.(s),[s]);return(0,Ne.jsx)(N.Provider,{value:{handleCancelOverwrite:P,handleChangeSeedPhrase:o,handleClear:Q,handleGenerate:h,handleSave:x,overwriteWarning:p,phrase:s,provided:!0,seedPhrase:n,setOverwriteWarning:i,setPhrase:c,validPhrase:f,validSeedPhrase:ie,validate:pe},children:e})};var Ge=require("@xyo-network/react-shared");var S=()=>(0,Ge.useContextEx)(N,"SeedPhrase",!0);var Le=require("@xyo-network/react-shared"),D=(0,Le.createContextEx)();var $e=require("@xylabs/react-promise"),ee=require("react");var _e=require("react/jsx-runtime"),xt=({children:e,defaultActiveAccountIndex:t=0,rootWallet:o=null,...r})=>{let[n,a]=(0,ee.useState)(t);(0,ee.useEffect)(()=>{t!==void 0&&a(t)},[t]);let[s=null]=(0,$e.usePromise)(async()=>await o?.derivePath(n.toString()),[n,o]);return(0,_e.jsx)(D.Provider,{value:{activeAccount:s,activeAccountIndex:n,provided:!0,rootWallet:o,setActiveAccountIndex:a},...r,children:e})};var Ue=require("@xylabs/react-promise"),te=require("@xyo-network/react-shared");var g=(e=!0)=>(0,te.useContextEx)(D,"Wallet",e),Pe=()=>(0,te.useProvided)(D),xe=(e=!0)=>{let{rootWallet:t}=g(e);return[t,void 0]},Ve=(e,t=!0)=>{let{rootWallet:o}=g(t),[r]=(0,Ue.usePromise)(async()=>await o?.derivePath(e.toString())??o,[o,e]);return[r,void 0]},Se=(e=!0)=>{let{activeAccountIndex:t}=g(e),[o]=Ve(t??0,e);return t===void 0&&o===null?[null,void 0]:[o,void 0]};var L=require("react/jsx-runtime"),ge=({onClose:e,...t})=>{let{handleSave:o,setPhrase:r}=S();return(0,L.jsxs)(G.DialogActions,{...t,children:[(0,L.jsx)(G.Button,{variant:"outlined",onClick:a=>{r?.(""),e?.(a,"escapeKeyDown")},children:"Cancel"}),(0,L.jsx)(G.Button,{variant:"outlined",onClick:o,children:"Save"})]})};var ae=require("@mui/material");var ve=e=>{switch(e){case!0:return"success";case!1:return"error";default:return}};var oe=require("@mui/material"),re=require("react/jsx-runtime"),$=e=>(0,re.jsxs)(oe.Typography,{variant:"caption",color:"error",...e,children:["Invalid seed phrase. See -"," ",(0,re.jsx)(oe.Link,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 Proposal"})]});var ne=require("@mui/icons-material"),Ye=require("@xylabs/react-flexbox"),Ce=require("react"),_=require("react/jsx-runtime"),U=({children:e,conditional:t,...o})=>{let r=(0,Ce.useMemo)(()=>{switch(t){case!0:return"success";case!1:return"error";default:return null}},[t]),n=(0,Ce.useMemo)(()=>{switch(r){case"success":return(0,_.jsx)(ne.CheckCircleOutline,{fontSize:"small",color:"success"});case"error":return(0,_.jsx)(ne.HighlightOff,{fontSize:"small",color:"error"});default:return null}},[r]);return(0,_.jsxs)(Ye.FlexRow,{justifyContent:"start",columnGap:1,...o,children:[n,e]})};var k=require("react/jsx-runtime"),be=({children:e,disableColor:t,...o})=>{let{phrase:r,setPhrase:n,validPhrase:a}=S();return(0,k.jsx)(k.Fragment,{children:(0,k.jsxs)(ae.FormControl,{fullWidth:!0,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[e,(0,k.jsx)(ae.TextField,{focused:!0,color:t?void 0:ve(a),error:a===!1,helperText:a===!1?(0,k.jsx)($,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,onChange:s=>n?.(s.target.value),value:r,...o})]})})};var V=require("@mui/material");var Y=require("react/jsx-runtime"),we=()=>{let{handleClear:e,handleGenerate:t,overwriteWarning:o}=S();return(0,Y.jsxs)(V.DialogActions,{sx:{justifyContent:"center"},children:[(0,Y.jsx)(V.Button,{disabled:o,variant:"outlined",onClick:t,children:"Generate"}),(0,Y.jsx)(V.Button,{variant:"outlined",onClick:e,children:"Clear"})]})};var y=require("@mui/material"),Ke=require("react");var w=require("react/jsx-runtime"),We=({fullWidth:e,showPhraseHeader:t,...o})=>{let{validSeedPhrase:r,seedPhrase:n}=S(),[a,s]=(0,Ke.useState)(!1);return(0,w.jsxs)(y.FormControl,{fullWidth:e,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[(0,w.jsx)(y.Chip,{label:a?"Hide Saved Seed Phrase":"Reveal Saved Seed Phrase",onClick:()=>s(!a)}),a?(0,w.jsxs)(w.Fragment,{children:[t?(0,w.jsx)(y.FormLabel,{children:(0,w.jsx)(U,{conditional:r,children:"Saved Seed Phrase"})}):null,(0,w.jsx)(y.TextField,{defaultValue:n,disabled:!0,error:r===!1,helperText:r===!1?(0,w.jsx)($,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,...o})]}):null]})};var K=require("@mui/material"),qe=require("@xylabs/react-flexbox");var E=require("react/jsx-runtime"),Ae=()=>{let{handleCancelOverwrite:e,handleSave:t}=S();return(0,E.jsx)(K.Alert,{variant:"outlined",severity:"warning",action:(0,E.jsxs)(qe.FlexRow,{sx:{columnGap:1},children:[(0,E.jsx)(K.Button,{variant:"outlined",color:"inherit",size:"small",onClick:t,children:"Overwrite"}),(0,E.jsx)(K.Button,{variant:"outlined",color:"inherit",size:"small",onClick:e,children:"Cancel"})]}),children:"Are you sure you want to overwrite existing seed phrase? This action cannot be undone."})};var T=require("@mui/material");var m=require("react/jsx-runtime"),Be=({changeSeedPhrase:e,seedPhrase:t,...o})=>(0,m.jsx)(he,{seedPhrase:t,handleChangeSeedPhrase:e,open:o.open,saveCallback:()=>o.onClose?.({},"escapeKeyDown"),children:(0,m.jsx)(Xe,{...o})}),Xe=e=>{let{overwriteWarning:t,seedPhrase:o,validPhrase:r}=S();return(0,m.jsxs)(T.Dialog,{"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",fullWidth:!0,maxWidth:"sm",...e,children:[(0,m.jsxs)(T.DialogTitle,{id:"alert-dialog-title",children:["Update Your Seed Phrase ",(0,m.jsx)(z,{})]}),(0,m.jsxs)(T.DialogContent,{sx:{display:"flex",flexDirection:"column",rowGap:2},children:[(0,m.jsx)(be,{children:(0,m.jsx)(T.FormLabel,{children:(0,m.jsx)(U,{conditional:r,children:"New Seed Phrase"})})}),(0,m.jsx)(we,{}),o?(0,m.jsx)(We,{}):null,t?(0,m.jsx)(Ae,{}):null]}),(0,m.jsx)(ge,{onClose:e.onClose})]})};var se=require("@mui/icons-material"),A=require("@mui/material"),Je=require("react");var v=require("react/jsx-runtime"),St=({changeSeedPhrase:e,seedPhrase:t,...o})=>{let[r,n]=(0,Je.useState)(!1);return(0,v.jsxs)(A.TableRow,{...o,children:[(0,v.jsxs)(A.TableCell,{children:["Seed Phrase ",(0,v.jsx)(z,{})]}),(0,v.jsx)(A.TableCell,{align:"center",children:t?(0,v.jsx)(se.RadioButtonChecked,{color:"success"}):(0,v.jsx)(se.Cancel,{color:"error"})}),(0,v.jsxs)(A.TableCell,{children:[(0,v.jsx)(Be,{changeSeedPhrase:e,open:r,onClose:()=>n(!1),seedPhrase:t}),(0,v.jsx)(A.ButtonGroup,{fullWidth:!0,children:(0,v.jsx)(A.Button,{variant:"contained",size:"small",onClick:()=>{n(!0)},children:"Update"})})]})]})};var nt=require("@xylabs/eth-address"),at=require("@xylabs/react-crypto"),le=require("@xylabs/react-flexbox"),X=require("@xylabs/react-number-status"),st=require("@xyo-network/react-network");var Qe=require("@xylabs/react-promise"),Ie=require("react");var ke=({wallet:e,account:t,index:o,required:r=!1}={})=>{let n=Pe(),[a,s]=(0,Ie.useState)();e&&t&&!a&&s(new Error("useAccount can not have both a wallet and an account in the parameters")),o&&t&&!a&&s(new Error("useAccount can not have both a index and an account in the parameters"));let[c,p]=(0,Ie.useState)(),[i]=xe(!e&&r),{activeAccountIndex:h}=g(!1),[P]=(0,Qe.usePromise)(async()=>{try{if(!a){if(e)return await e?.derivePath?.(`${o??0}'\0`);if(i)return await i?.derivePath?.(`${o??h??0}'\0`)}}catch(Q){let x=Q;console.error(x.message),p(x)}},[o,e,i,h,a]);return a&&!c&&(console.error(a.message),p(a)),[c?void 0:t??P??n?null:void 0,c]};var Ze=require("@xylabs/react-promise"),ye=require("@xyo-network/account"),je=require("react");var O=({mnemonic:e,wallet:t,path:o,required:r=!1,seed:n}={})=>{let a=g(!1),[s,c]=(0,je.useState)(),[p]=Se(!t&&r),[i]=(0,Ze.usePromise)(async()=>{try{let h=await(t||(e?ye.HDWallet.fromPhrase(e):n?ye.HDWallet.fromSeed(n):p));return o?h?.derivePath?.(o):h??t}catch(h){c(h)}},[e,p,n,o,t]);return[i??(a?null:i),s]};var et=require("@xylabs/react-promise");var gt=({wallet:e,paths:t})=>{let o=g(!1),[r]=O({wallet:e}),[n,a]=(0,et.usePromise)(async()=>r?await Promise.all(t.map(s=>r.derivePath(s))):void 0,[r,t]);return[n??(o?null:n),a]};var tt=require("@xylabs/react-promise"),ot=require("@xyo-network/account"),rt=require("async-mutex"),q,vt=new rt.Mutex,Ct=e=>(0,tt.usePromise)(async()=>await vt.runExclusive(async()=>{if(e!==void 0)return e;if(q)return q;try{q=await ot.HDWallet.random(),console.log(`Global Wrapper Wallet Creation Success: ${q.address}`)}catch(t){console.error(`Global Wrapper Wallet Creation Failed: ${t.message}`)}return q}),[e]);var B=require("react/jsx-runtime"),bt=({exploreUrl:e="https://explore.xyo.network",account:t,...o})=>{let[r]=ke({account:t}),{network:n}=(0,st.useNetwork)(),a=`${e}/recent?account=${r?.address}&network=${n?.name??"main"}`;return(0,B.jsxs)(le.FlexCol,{...o,children:[(0,B.jsx)(at.EthAccountButton,{address:nt.EthAddress.fromString(r?.address)}),(0,B.jsxs)(le.FlexRow,{gap:1,children:[(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"Tokens",value:0,to:`${a}&schema=network.xyo.account.tokens`,target:"_blank"}),(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"NFTs",value:0,to:`${a}&schema=network.xyo.account.nfts`,target:"_blank"}),(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"Signatures",value:0,to:`${a}&schema=network.xyo.account.signatures`,target:"_blank"}),(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"Signins",value:0,to:`${a}&schema=network.xyo.account.signins`,target:"_blank"})]})]})};var J=require("@mui/material"),lt=require("@xylabs/react-select"),Te=require("@xyo-network/react-address-render");var C=require("react/jsx-runtime"),wt=(e,t=0)=>[...Array.from({length:e}).keys()].map(o=>o+t),Fe=({addressNames:e={},iconOnly:t,iconSize:o=24,icons:r,maxAccounts:n=1,showFavorite:a=!1,size:s,variant:c="outlined",...p})=>{let{activeAccountIndex:i=0,setActiveAccountIndex:h,rootWallet:P}=g();return(0,C.jsx)(C.Fragment,{children:P?(0,C.jsx)(lt.SelectEx,{margin:"dense",disabled:!P||i===void 0,renderValue:x=>(0,C.jsx)(()=>{let[f]=O({path:x.toString(),wallet:P}),M=f?e[f.address]:void 0,ce=!!f&&f.address in e;return(0,C.jsx)(J.MenuItem,{value:x,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:(0,C.jsx)(Te.AddressRenderRowBox,{disableSharedRef:!0,flexGrow:1,address:f?.address,iconOnly:t,iconSize:o,icons:r,name:M,favorite:ce,showFavorite:a})})},{}),value:i,onChange:x=>h?.(Number.parseInt(`${x.target.value}`)),size:s,variant:c,...p,children:wt(n).map(x=>(0,C.jsx)(()=>{let[f]=O({path:x.toString(),wallet:P}),M=f?e[f.address]:void 0,ce=!!f&&f.address in e;return(0,C.jsx)(J.MenuItem,{value:x,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:(0,C.jsx)(Te.AddressRenderRowBox,{disableSharedRef:!0,flexGrow:1,address:f?.address,favorite:ce,iconOnly:t,iconSize:o,icons:r,name:M,showFavorite:a})},f?.address)},{},x))}):(0,C.jsx)(J.CircularProgress,{size:24})})};var it=require("@xylabs/react-flexbox");var Re=require("react/jsx-runtime"),Wt=({addressNames:e={},iconOnly:t,iconSize:o,icons:r,maxAccounts:n=1,showFavorite:a=!1,size:s="small",...c})=>(0,Re.jsx)(it.FlexCol,{alignItems:"stretch",...c,children:(0,Re.jsx)(Fe,{addressNames:e,fullWidth:!0,showFavorite:a,iconSize:o,iconOnly:t,icons:r,maxAccounts:n,size:s??"small",variant:"outlined"})});
1
+ "use strict";var de=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var dt=Object.getOwnPropertyNames;var ut=Object.prototype.hasOwnProperty;var mt=(e,t)=>{for(var o in t)de(e,o,{get:t[o],enumerable:!0})},pt=(e,t,o,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of dt(t))!ut.call(e,n)&&n!==o&&de(e,n,{get:()=>t[n],enumerable:!(r=ct(t,n))||r.enumerable});return e};var ft=e=>pt(de({},"__esModule",{value:!0}),e);var At={};mt(At,{DefaultSeedPhrase:()=>xt,DialogActionButtons:()=>ge,InvalidPhraseTypography:()=>$,MaxAccountsTableRow:()=>ht,NewPhraseTextField:()=>be,OverwriteWarning:()=>Ae,PhraseDialogActions:()=>we,PhraseHeaderBox:()=>U,SavedPhraseTextField:()=>We,SeedPhraseContext:()=>N,SeedPhraseDialog:()=>Be,SeedPhraseDialogInner:()=>Xe,SeedPhraseIconButton:()=>z,SeedPhraseProvider:()=>he,SeedPhraseTableRow:()=>St,WalletAccountDetails:()=>bt,WalletAccountSelect:()=>Fe,WalletAccountSelectBar:()=>Wt,WalletContext:()=>D,WalletProvider:()=>Pt,colorParser:()=>ve,useAccount:()=>ke,useIndexedWalletFromContext:()=>Ve,useRootWallet:()=>Pe,useSeedPhrase:()=>S,useSelectedWalletAccount:()=>Se,useWallet:()=>O,useWalletContext:()=>g,useWalletProvided:()=>xe,useWallets:()=>gt,useWrapperAccount:()=>Ct});module.exports=ft(At);var W=require("@mui/material"),ue=require("@xylabs/react-button"),me=require("react");var F=require("@mui/material"),H=require("react/jsx-runtime"),De=({activeAccountIndex:e,desiredMaximumAccounts:t,setShowSnackBar:o,showSnackBar:r})=>(0,H.jsx)(F.Snackbar,{anchorOrigin:{horizontal:"center",vertical:"top"},autoHideDuration:5e3,onClose:()=>o?.(!1),open:r,children:(0,H.jsxs)(F.Alert,{severity:"error",onClose:()=>o?.(!1),children:[(0,H.jsx)(F.AlertTitle,{children:"Maximum Accounts Error"}),"Your currently selected account number (",e===void 0?"":e+1,") cannot be greater than the desired Maximum Accounts (",t,")."]})});var b=require("react/jsx-runtime"),ht=({activeAccountIndex:e,changeMaxAccounts:t,maxAccounts:o})=>{let[r,n]=(0,me.useState)(),[a,s]=(0,me.useState)(!1),c=p=>{if(o!==void 0&&e!==void 0)switch(p){case"decrease":{let i=o-1,h=i>0,x=e+1<=i;h&&x&&t?.(i),x||s(!0),n(i);return}case"increase":{t?.(o+1);return}default:console.error(p,"is not a recognized value")}else throw new Error("Max Accounts is unset and needs a default")};return(0,b.jsxs)(W.TableRow,{children:[(0,b.jsx)(W.TableCell,{children:"Maximum Accounts"}),(0,b.jsx)(W.TableCell,{align:"center",children:(0,b.jsx)(W.Typography,{variant:"caption",children:o})}),(0,b.jsxs)(W.TableCell,{align:"center",children:[(0,b.jsxs)(W.ButtonGroup,{children:[(0,b.jsx)(ue.ButtonEx,{onClick:()=>c("decrease"),variant:"contained",size:"small",children:"-"}),(0,b.jsx)(ue.ButtonEx,{onClick:()=>c("increase"),variant:"contained",size:"small",children:"+"})]}),(0,b.jsx)(De,{desiredMaximumAccounts:r,activeAccountIndex:e,setShowSnackBar:s,showSnackBar:a})]})]})};var Ee=require("@mui/icons-material"),l=require("@mui/material"),Oe=require("react"),d=require("react/jsx-runtime"),z=e=>{let[t,o]=(0,Oe.useState)(!1),r=()=>o(!1);return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(l.IconButton,{onClick:()=>o(!0),...e,children:(0,d.jsx)(Ee.HelpOutline,{fontSize:"small"})}),(0,d.jsxs)(l.Dialog,{open:t,children:[(0,d.jsx)(l.DialogTitle,{children:"Understanding your Seed Phrase"}),(0,d.jsxs)(l.DialogContent,{children:[(0,d.jsxs)(l.Typography,{children:["Your Seed Phrase should adhere to the"," ",(0,d.jsx)(l.Link,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 specification"})," ","and is used to generate accounts which identify your data on the XYO Network."]}),(0,d.jsxs)(l.List,{children:[(0,d.jsx)(l.ListItem,{children:"Do not share this phrase with anyone."}),(0,d.jsx)(l.ListItem,{children:"Do not save it to a public computer."}),(0,d.jsx)(l.ListItem,{children:"Do not use a existing phrase from another wallet (i.e. Metamask)."}),(0,d.jsx)(l.ListItem,{children:"Do not use before copying it down somewhere safe."})]})]}),(0,d.jsx)(l.DialogActions,{children:(0,d.jsx)(l.Button,{onClick:r,variant:"outlined",children:"OK"})})]})]})};var R=require("@mui/material"),Me=require("@scure/bip39"),He=require("@scure/bip39/wordlists/english"),Z=require("react"),I=require("react/jsx-runtime"),xt=({changeSeedPhrase:e,children:t,hideDefaultSeedPhraseMessage:o,seedPhrase:r})=>{let[n,a]=(0,Z.useState)(!1);return(0,Z.useEffect)(()=>{if(!r){let s=(0,Me.generateMnemonic)(He.wordlist,256);e?.(s),a(!0)}},[e,r]),(0,I.jsxs)(I.Fragment,{children:[o?null:(0,I.jsx)(R.Snackbar,{open:n,autoHideDuration:5e3,onClose:()=>a(!1),anchorOrigin:{horizontal:"center",vertical:"top"},children:(0,I.jsxs)(R.Alert,{severity:"success",children:[(0,I.jsx)(R.AlertTitle,{children:"Default Seed Phrase Generated"}),"Go to application settings to save it."]})}),t]})};var G=require("@mui/material");var ze=require("@xyo-network/react-shared"),N=(0,ze.createContextEx)();var j=require("@scure/bip39"),fe=require("@scure/bip39/wordlists/english"),u=require("react");var Ne=require("react/jsx-runtime"),pe=e=>e?(0,j.validateMnemonic)(e,fe.wordlist):null,he=({children:e,defaultPhrase:t,handleChangeSeedPhrase:o,saveCallback:r,seedPhrase:n,open:a})=>{let[s,c]=(0,u.useState)(),[p,i]=(0,u.useState)(!1);(0,u.useEffect)(()=>{c(t)},[t]),(0,u.useEffect)(()=>{(n||a)&&c?.(n??"")},[n,a,c]);let h=(0,u.useCallback)(()=>{let M=(0,j.generateMnemonic)(fe.wordlist,256);c?.(M),i?.(!1)},[]),x=(0,u.useCallback)(()=>{i?.(!1)},[]),Q=(0,u.useCallback)(()=>{c?.(""),i?.(!1)},[]),P=(0,u.useCallback)(()=>{!p&&n&&n!==s?i?.(!0):(o?.(s??""),r?.())},[o,p,s,r,n]);(0,u.useEffect)(()=>{a||x()},[x,a]);let ie=(0,u.useMemo)(()=>pe?.(n),[n]),f=(0,u.useMemo)(()=>pe?.(s),[s]);return(0,Ne.jsx)(N.Provider,{value:{handleCancelOverwrite:x,handleChangeSeedPhrase:o,handleClear:Q,handleGenerate:h,handleSave:P,overwriteWarning:p,phrase:s,provided:!0,seedPhrase:n,setOverwriteWarning:i,setPhrase:c,validPhrase:f,validSeedPhrase:ie,validate:pe},children:e})};var Ge=require("@xyo-network/react-shared");var S=()=>(0,Ge.useContextEx)(N,"SeedPhrase",!0);var Le=require("@xyo-network/react-shared"),D=(0,Le.createContextEx)();var $e=require("@xylabs/react-promise"),ee=require("react");var _e=require("react/jsx-runtime"),Pt=({children:e,defaultActiveAccountIndex:t=0,rootWallet:o=null,...r})=>{let[n,a]=(0,ee.useState)(t);(0,ee.useEffect)(()=>{t!==void 0&&a(t)},[t]);let[s=null]=(0,$e.usePromise)(async()=>await o?.derivePath(n.toString()),[n,o]);return(0,_e.jsx)(D.Provider,{value:{activeAccount:s,activeAccountIndex:n,provided:!0,rootWallet:o,setActiveAccountIndex:a},...r,children:e})};var Ue=require("@xylabs/react-promise"),te=require("@xyo-network/react-shared");var g=(e=!0)=>(0,te.useContextEx)(D,"Wallet",e),xe=()=>(0,te.useProvided)(D),Pe=(e=!0)=>{let{rootWallet:t}=g(e);return[t,void 0]},Ve=(e,t=!0)=>{let{rootWallet:o}=g(t),[r]=(0,Ue.usePromise)(async()=>await o?.derivePath(e.toString())??o,[o,e]);return[r,void 0]},Se=(e=!0)=>{let{activeAccountIndex:t}=g(e),[o]=Ve(t??0,e);return t===void 0&&o===null?[null,void 0]:[o,void 0]};var L=require("react/jsx-runtime"),ge=({onClose:e,...t})=>{let{handleSave:o,setPhrase:r}=S();return(0,L.jsxs)(G.DialogActions,{...t,children:[(0,L.jsx)(G.Button,{variant:"outlined",onClick:a=>{r?.(""),e?.(a,"escapeKeyDown")},children:"Cancel"}),(0,L.jsx)(G.Button,{variant:"outlined",onClick:o,children:"Save"})]})};var ae=require("@mui/material");var ve=e=>{switch(e){case!0:return"success";case!1:return"error";default:return}};var oe=require("@mui/material"),re=require("react/jsx-runtime"),$=e=>(0,re.jsxs)(oe.Typography,{variant:"caption",color:"error",...e,children:["Invalid seed phrase. See -"," ",(0,re.jsx)(oe.Link,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 Proposal"})]});var ne=require("@mui/icons-material"),Ye=require("@xylabs/react-flexbox"),Ce=require("react"),_=require("react/jsx-runtime"),U=({children:e,conditional:t,...o})=>{let r=(0,Ce.useMemo)(()=>{switch(t){case!0:return"success";case!1:return"error";default:return null}},[t]),n=(0,Ce.useMemo)(()=>{switch(r){case"success":return(0,_.jsx)(ne.CheckCircleOutline,{fontSize:"small",color:"success"});case"error":return(0,_.jsx)(ne.HighlightOff,{fontSize:"small",color:"error"});default:return null}},[r]);return(0,_.jsxs)(Ye.FlexRow,{justifyContent:"start",columnGap:1,...o,children:[n,e]})};var k=require("react/jsx-runtime"),be=({children:e,disableColor:t,...o})=>{let{phrase:r,setPhrase:n,validPhrase:a}=S();return(0,k.jsx)(k.Fragment,{children:(0,k.jsxs)(ae.FormControl,{fullWidth:!0,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[e,(0,k.jsx)(ae.TextField,{focused:!0,color:t?void 0:ve(a),error:a===!1,helperText:a===!1?(0,k.jsx)($,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,onChange:s=>n?.(s.target.value),value:r,...o})]})})};var V=require("@mui/material");var Y=require("react/jsx-runtime"),we=()=>{let{handleClear:e,handleGenerate:t,overwriteWarning:o}=S();return(0,Y.jsxs)(V.DialogActions,{sx:{justifyContent:"center"},children:[(0,Y.jsx)(V.Button,{disabled:o,variant:"outlined",onClick:t,children:"Generate"}),(0,Y.jsx)(V.Button,{variant:"outlined",onClick:e,children:"Clear"})]})};var y=require("@mui/material"),Ke=require("react");var w=require("react/jsx-runtime"),We=({fullWidth:e,showPhraseHeader:t,...o})=>{let{validSeedPhrase:r,seedPhrase:n}=S(),[a,s]=(0,Ke.useState)(!1);return(0,w.jsxs)(y.FormControl,{fullWidth:e,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[(0,w.jsx)(y.Chip,{label:a?"Hide Saved Seed Phrase":"Reveal Saved Seed Phrase",onClick:()=>s(!a),sx:{alignSelf:"center"}}),a?(0,w.jsxs)(w.Fragment,{children:[t?(0,w.jsx)(y.FormLabel,{children:(0,w.jsx)(U,{conditional:r,children:"Saved Seed Phrase"})}):null,(0,w.jsx)(y.TextField,{defaultValue:n,disabled:!0,error:r===!1,helperText:r===!1?(0,w.jsx)($,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,...o})]}):null]})};var K=require("@mui/material"),qe=require("@xylabs/react-flexbox");var E=require("react/jsx-runtime"),Ae=()=>{let{handleCancelOverwrite:e,handleSave:t}=S();return(0,E.jsx)(K.Alert,{variant:"outlined",severity:"warning",action:(0,E.jsxs)(qe.FlexRow,{sx:{columnGap:1},children:[(0,E.jsx)(K.Button,{variant:"outlined",color:"inherit",size:"small",onClick:t,children:"Overwrite"}),(0,E.jsx)(K.Button,{variant:"outlined",color:"inherit",size:"small",onClick:e,children:"Cancel"})]}),children:"Are you sure you want to overwrite existing seed phrase? This action cannot be undone."})};var T=require("@mui/material");var m=require("react/jsx-runtime"),Be=({changeSeedPhrase:e,seedPhrase:t,...o})=>(0,m.jsx)(he,{seedPhrase:t,handleChangeSeedPhrase:e,open:o.open,saveCallback:()=>o.onClose?.({},"escapeKeyDown"),children:(0,m.jsx)(Xe,{...o})}),Xe=e=>{let{overwriteWarning:t,seedPhrase:o,validPhrase:r}=S();return(0,m.jsxs)(T.Dialog,{"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",fullWidth:!0,maxWidth:"sm",...e,children:[(0,m.jsxs)(T.DialogTitle,{id:"alert-dialog-title",children:["Update Your Seed Phrase ",(0,m.jsx)(z,{})]}),(0,m.jsxs)(T.DialogContent,{sx:{display:"flex",flexDirection:"column",rowGap:2},children:[(0,m.jsx)(be,{children:(0,m.jsx)(T.FormLabel,{children:(0,m.jsx)(U,{conditional:r,children:"New Seed Phrase"})})}),(0,m.jsx)(we,{}),o?(0,m.jsx)(We,{}):null,t?(0,m.jsx)(Ae,{}):null]}),(0,m.jsx)(ge,{onClose:e.onClose})]})};var se=require("@mui/icons-material"),A=require("@mui/material"),Je=require("react");var v=require("react/jsx-runtime"),St=({changeSeedPhrase:e,seedPhrase:t,...o})=>{let[r,n]=(0,Je.useState)(!1);return(0,v.jsxs)(A.TableRow,{...o,children:[(0,v.jsxs)(A.TableCell,{children:["Seed Phrase ",(0,v.jsx)(z,{})]}),(0,v.jsx)(A.TableCell,{align:"center",children:t?(0,v.jsx)(se.RadioButtonChecked,{color:"success"}):(0,v.jsx)(se.Cancel,{color:"error"})}),(0,v.jsxs)(A.TableCell,{children:[(0,v.jsx)(Be,{changeSeedPhrase:e,open:r,onClose:()=>n(!1),seedPhrase:t}),(0,v.jsx)(A.ButtonGroup,{fullWidth:!0,children:(0,v.jsx)(A.Button,{variant:"contained",size:"small",onClick:()=>{n(!0)},children:"Update"})})]})]})};var nt=require("@xylabs/eth-address"),at=require("@xylabs/react-crypto"),le=require("@xylabs/react-flexbox"),X=require("@xylabs/react-number-status"),st=require("@xyo-network/react-network");var Qe=require("@xylabs/react-promise"),Ie=require("react");var ke=({wallet:e,account:t,index:o,required:r=!1}={})=>{let n=xe(),[a,s]=(0,Ie.useState)();e&&t&&!a&&s(new Error("useAccount can not have both a wallet and an account in the parameters")),o&&t&&!a&&s(new Error("useAccount can not have both a index and an account in the parameters"));let[c,p]=(0,Ie.useState)(),[i]=Pe(!e&&r),{activeAccountIndex:h}=g(!1),[x]=(0,Qe.usePromise)(async()=>{try{if(!a){if(e)return await e?.derivePath?.(`${o??0}'\0`);if(i)return await i?.derivePath?.(`${o??h??0}'\0`)}}catch(Q){let P=Q;console.error(P.message),p(P)}},[o,e,i,h,a]);return a&&!c&&(console.error(a.message),p(a)),[c?void 0:t??x??n?null:void 0,c]};var Ze=require("@xylabs/react-promise"),ye=require("@xyo-network/account"),je=require("react");var O=({mnemonic:e,wallet:t,path:o,required:r=!1,seed:n}={})=>{let a=g(!1),[s,c]=(0,je.useState)(),[p]=Se(!t&&r),[i]=(0,Ze.usePromise)(async()=>{try{let h=await(t||(e?ye.HDWallet.fromPhrase(e):n?ye.HDWallet.fromSeed(n):p));return o?h?.derivePath?.(o):h??t}catch(h){c(h)}},[e,p,n,o,t]);return[i??(a?null:i),s]};var et=require("@xylabs/react-promise");var gt=({wallet:e,paths:t})=>{let o=g(!1),[r]=O({wallet:e}),[n,a]=(0,et.usePromise)(async()=>r?await Promise.all(t.map(s=>r.derivePath(s))):void 0,[r,t]);return[n??(o?null:n),a]};var tt=require("@xylabs/react-promise"),ot=require("@xyo-network/account"),rt=require("async-mutex"),q,vt=new rt.Mutex,Ct=e=>(0,tt.usePromise)(async()=>await vt.runExclusive(async()=>{if(e!==void 0)return e;if(q)return q;try{q=await ot.HDWallet.random(),console.log(`Global Wrapper Wallet Creation Success: ${q.address}`)}catch(t){console.error(`Global Wrapper Wallet Creation Failed: ${t.message}`)}return q}),[e]);var B=require("react/jsx-runtime"),bt=({exploreUrl:e="https://explore.xyo.network",account:t,...o})=>{let[r]=ke({account:t}),{network:n}=(0,st.useNetwork)(),a=`${e}/recent?account=${r?.address}&network=${n?.name??"main"}`;return(0,B.jsxs)(le.FlexCol,{...o,children:[(0,B.jsx)(at.EthAccountButton,{address:nt.EthAddress.fromString(r?.address)}),(0,B.jsxs)(le.FlexRow,{gap:1,children:[(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"Tokens",value:0,to:`${a}&schema=network.xyo.account.tokens`,target:"_blank"}),(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"NFTs",value:0,to:`${a}&schema=network.xyo.account.nfts`,target:"_blank"}),(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"Signatures",value:0,to:`${a}&schema=network.xyo.account.signatures`,target:"_blank"}),(0,B.jsx)(X.NumberStatus,{rounded:!0,title:"Signins",value:0,to:`${a}&schema=network.xyo.account.signins`,target:"_blank"})]})]})};var J=require("@mui/material"),lt=require("@xylabs/react-select"),Te=require("@xyo-network/react-address-render");var C=require("react/jsx-runtime"),wt=(e,t=0)=>[...Array.from({length:e}).keys()].map(o=>o+t),Fe=({addressNames:e={},iconOnly:t,iconSize:o=24,icons:r,maxAccounts:n=1,showFavorite:a=!1,size:s,variant:c="outlined",...p})=>{let{activeAccountIndex:i=0,setActiveAccountIndex:h,rootWallet:x}=g();return(0,C.jsx)(C.Fragment,{children:x?(0,C.jsx)(lt.SelectEx,{margin:"dense",disabled:!x||i===void 0,renderValue:P=>(0,C.jsx)(()=>{let[f]=O({path:P.toString(),wallet:x}),M=f?e[f.address]:void 0,ce=!!f&&f.address in e;return(0,C.jsx)(J.MenuItem,{value:P,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:(0,C.jsx)(Te.AddressRenderRowBox,{disableSharedRef:!0,flexGrow:1,address:f?.address,iconOnly:t,iconSize:o,icons:r,name:M,favorite:ce,showFavorite:a})})},{}),value:i,onChange:P=>h?.(Number.parseInt(`${P.target.value}`)),size:s,variant:c,...p,children:wt(n).map(P=>(0,C.jsx)(()=>{let[f]=O({path:P.toString(),wallet:x}),M=f?e[f.address]:void 0,ce=!!f&&f.address in e;return(0,C.jsx)(J.MenuItem,{value:P,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:(0,C.jsx)(Te.AddressRenderRowBox,{disableSharedRef:!0,flexGrow:1,address:f?.address,favorite:ce,iconOnly:t,iconSize:o,icons:r,name:M,showFavorite:a})},f?.address)},{},P))}):(0,C.jsx)(J.CircularProgress,{size:24})})};var it=require("@xylabs/react-flexbox");var Re=require("react/jsx-runtime"),Wt=({addressNames:e={},iconOnly:t,iconSize:o,icons:r,maxAccounts:n=1,showFavorite:a=!1,size:s="small",...c})=>(0,Re.jsx)(it.FlexCol,{alignItems:"stretch",...c,children:(0,Re.jsx)(Fe,{addressNames:e,fullWidth:!0,showFavorite:a,iconSize:o,iconOnly:t,icons:r,maxAccounts:n,size:s??"small",variant:"outlined"})});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/components/MaxAccounts/MaxAccountsTableRow.tsx","../../src/components/MaxAccounts/OutOfBoundsSnackBar.tsx","../../src/components/SeedPhrase/_shared/SeedPhraseIconButton.tsx","../../src/components/SeedPhrase/DefaultSeedPhrase.tsx","../../src/components/SeedPhrase/dialog/components/DialogActionButtons.tsx","../../src/contexts/SeedPhrase/Context.ts","../../src/contexts/SeedPhrase/Provider.tsx","../../src/contexts/SeedPhrase/use.tsx","../../src/contexts/Wallet/Context.ts","../../src/contexts/Wallet/Provider.tsx","../../src/contexts/Wallet/use.ts","../../src/components/SeedPhrase/dialog/components/fields/NewPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/colorParser.ts","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/InvalidPhrase.tsx","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/PhraseHeaderBox.tsx","../../src/components/SeedPhrase/dialog/components/fields/PhraseDialogActions.tsx","../../src/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/OverwriteWarning.tsx","../../src/components/SeedPhrase/dialog/SeedPhraseDialog.tsx","../../src/components/SeedPhrase/settings/SeedPhraseTableRow.tsx","../../src/components/WalletAccountDetails/WalletAccountDetails.tsx","../../src/hooks/useAccount.ts","../../src/hooks/useWallet.ts","../../src/hooks/useWallets.ts","../../src/hooks/useWrapperAccount.ts","../../src/components/WalletAccountSelect/Select.tsx","../../src/components/WalletAccountSelect/SelectBar.tsx"],"sourcesContent":["export * from './components'\nexport * from './contexts'\nexport * from './hooks'\n","import { ButtonGroup, TableCell, TableRow, TableRowProps, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { useState } from 'react'\n\nimport { OutOfBoundsSnackBar } from './OutOfBoundsSnackBar'\n\nexport interface MaxAccountsTableRow extends TableRowProps {\n activeAccountIndex?: number\n changeMaxAccounts?: (maxAccounts: number) => void\n maxAccounts?: number\n}\n\nexport const MaxAccountsTableRow: React.FC<MaxAccountsTableRow> = ({ activeAccountIndex, changeMaxAccounts, maxAccounts }) => {\n const [desiredMaximumAccounts, setDesiredMaximumAccounts] = useState<number | undefined>()\n const [showSnackBar, setShowSnackBar] = useState(false)\n\n const handleChangeMaxAccounts = (change: 'increase' | 'decrease') => {\n if (maxAccounts !== undefined && activeAccountIndex !== undefined) {\n switch (change) {\n case 'decrease': {\n const desiredMaximumAccounts = maxAccounts - 1\n const validMaximumAccounts = desiredMaximumAccounts > 0\n const maxAccountsWithinRange = activeAccountIndex + 1 <= desiredMaximumAccounts\n if (validMaximumAccounts && maxAccountsWithinRange) {\n changeMaxAccounts?.(desiredMaximumAccounts)\n }\n if (!maxAccountsWithinRange) setShowSnackBar(true)\n setDesiredMaximumAccounts(desiredMaximumAccounts)\n return\n }\n case 'increase': {\n changeMaxAccounts?.(maxAccounts + 1)\n return\n }\n default: {\n console.error(change, 'is not a recognized value')\n }\n }\n } else {\n throw new Error('Max Accounts is unset and needs a default')\n }\n }\n\n return (\n <TableRow>\n <TableCell>Maximum Accounts</TableCell>\n <TableCell align=\"center\">\n <Typography variant={'caption'}>{maxAccounts}</Typography>\n </TableCell>\n <TableCell align=\"center\">\n <ButtonGroup>\n <ButtonEx onClick={() => handleChangeMaxAccounts('decrease')} variant={'contained'} size={'small'}>\n -\n </ButtonEx>\n <ButtonEx onClick={() => handleChangeMaxAccounts('increase')} variant={'contained'} size={'small'}>\n +\n </ButtonEx>\n </ButtonGroup>\n <OutOfBoundsSnackBar\n desiredMaximumAccounts={desiredMaximumAccounts}\n activeAccountIndex={activeAccountIndex}\n setShowSnackBar={setShowSnackBar}\n showSnackBar={showSnackBar}\n />\n </TableCell>\n </TableRow>\n )\n}\n","import { Alert, AlertTitle, Snackbar, SnackbarProps } from '@mui/material'\nimport { Dispatch, SetStateAction } from 'react'\n\nexport interface OutOfBoundsSnackBarProps extends SnackbarProps {\n activeAccountIndex?: number\n desiredMaximumAccounts?: number\n setShowSnackBar?: Dispatch<SetStateAction<boolean>>\n showSnackBar?: boolean\n}\n\nexport const OutOfBoundsSnackBar: React.FC<OutOfBoundsSnackBarProps> = ({\n activeAccountIndex,\n desiredMaximumAccounts,\n setShowSnackBar,\n showSnackBar,\n}) => {\n return (\n <Snackbar\n anchorOrigin={{ horizontal: 'center', vertical: 'top' }}\n autoHideDuration={5000}\n onClose={() => setShowSnackBar?.(false)}\n open={showSnackBar}\n >\n <Alert severity={'error'} onClose={() => setShowSnackBar?.(false)}>\n <AlertTitle>Maximum Accounts Error</AlertTitle>\n Your currently selected account number ({activeAccountIndex === undefined ? '' : activeAccountIndex + 1}) cannot be greater than the desired\n Maximum Accounts ({desiredMaximumAccounts}).\n </Alert>\n </Snackbar>\n )\n}\n","import { HelpOutline as HelpOutlineIcon } from '@mui/icons-material'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n IconButtonProps,\n Link,\n List,\n ListItem,\n Typography,\n} from '@mui/material'\nimport { useState } from 'react'\n\nexport const SeedPhraseIconButton: React.FC<IconButtonProps> = (props) => {\n const [open, setOpen] = useState(false)\n const onClose = () => setOpen(false)\n return (\n <>\n <IconButton onClick={() => setOpen(true)} {...props}>\n <HelpOutlineIcon fontSize=\"small\" />\n </IconButton>\n <Dialog open={open}>\n <DialogTitle>Understanding your Seed Phrase</DialogTitle>\n <DialogContent>\n <Typography>\n Your Seed Phrase should adhere to the{' '}\n <Link target={'_blank'} href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">\n bip39 specification\n </Link>{' '}\n and is used to generate accounts which identify your data on the XYO Network.\n </Typography>\n <List>\n <ListItem>Do not share this phrase with anyone.</ListItem>\n <ListItem>Do not save it to a public computer.</ListItem>\n <ListItem>Do not use a existing phrase from another wallet (i.e. Metamask).</ListItem>\n <ListItem>Do not use before copying it down somewhere safe.</ListItem>\n </List>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} variant=\"outlined\">\n OK\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { Alert, AlertTitle, Snackbar } from '@mui/material'\nimport { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\n\nexport interface DefaultSeedPhraseProps extends WithChildren {\n changeSeedPhrase?: (seedPhrase: string) => void\n hideDefaultSeedPhraseMessage?: boolean\n seedPhrase?: string\n}\n\nexport const DefaultSeedPhrase: React.FC<DefaultSeedPhraseProps> = ({ changeSeedPhrase, children, hideDefaultSeedPhraseMessage, seedPhrase }) => {\n const [showSnackBar, setShowSnackBar] = useState(false)\n\n useEffect(() => {\n if (!seedPhrase) {\n const mnemonic = generateMnemonic(wordlist, 256)\n changeSeedPhrase?.(mnemonic)\n setShowSnackBar(true)\n }\n }, [changeSeedPhrase, seedPhrase])\n\n return (\n <>\n {hideDefaultSeedPhraseMessage ? null : (\n <Snackbar\n open={showSnackBar}\n autoHideDuration={5000}\n onClose={() => setShowSnackBar(false)}\n anchorOrigin={{ horizontal: 'center', vertical: 'top' }}\n >\n <Alert severity={'success'}>\n <AlertTitle>Default Seed Phrase Generated</AlertTitle>\n Go to application settings to save it.\n </Alert>\n </Snackbar>\n )}\n {children}\n </>\n )\n}\n","import { Button, DialogActions, DialogActionsProps, DialogProps } from '@mui/material'\nimport { MouseEvent } from 'react'\n\nimport { useSeedPhrase } from '../../../../contexts'\n\ninterface DialogActionButtonsProps extends DialogActionsProps {\n onClose?: DialogProps['onClose']\n}\n\nexport const DialogActionButtons: React.FC<DialogActionButtonsProps> = ({ onClose, ...props }) => {\n const { handleSave, setPhrase } = useSeedPhrase()\n\n const wrappedOnClose = (e: MouseEvent<HTMLElement>) => {\n // clear local copy of phrase when modal closes\n setPhrase?.('')\n onClose?.(e, 'escapeKeyDown')\n }\n\n return (\n <DialogActions {...props}>\n <Button variant=\"outlined\" onClick={wrappedOnClose}>\n Cancel\n </Button>\n <Button variant=\"outlined\" onClick={handleSave}>\n Save\n </Button>\n </DialogActions>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SeedPhraseContextState } from './State'\n\nexport const SeedPhraseContext = createContextEx<SeedPhraseContextState>()\n","import { generateMnemonic, validateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { SeedPhraseContext } from './Context'\n\nexport interface SeedPhraseProviderProps extends WithChildren {\n defaultPhrase?: string\n handleChangeSeedPhrase?: (phrase: string) => void\n open?: boolean\n saveCallback?: () => void\n seedPhrase?: string\n}\n\nconst validate = (passedPhrase?: string) => {\n if (!passedPhrase) {\n return null\n }\n return validateMnemonic(passedPhrase, wordlist)\n}\n\nexport const SeedPhraseProvider: React.FC<SeedPhraseProviderProps> = ({\n children,\n defaultPhrase,\n handleChangeSeedPhrase,\n saveCallback,\n seedPhrase,\n open,\n}) => {\n const [phrase, setPhrase] = useState<string | undefined>()\n const [overwriteWarning, setOverwriteWarning] = useState(false)\n\n useEffect(() => {\n setPhrase(defaultPhrase)\n }, [defaultPhrase])\n\n useEffect(() => {\n if (seedPhrase || open) {\n setPhrase?.(seedPhrase ?? '')\n }\n }, [seedPhrase, open, setPhrase])\n\n const handleGenerate = useCallback(() => {\n const mnemonic = generateMnemonic(wordlist, 256)\n setPhrase?.(mnemonic)\n setOverwriteWarning?.(false)\n }, [])\n\n const handleCancelOverwrite = useCallback(() => {\n setOverwriteWarning?.(false)\n }, [])\n\n const handleClear = useCallback(() => {\n setPhrase?.('')\n setOverwriteWarning?.(false)\n }, [])\n\n const handleSave = useCallback(() => {\n if (!overwriteWarning && seedPhrase && seedPhrase !== phrase) {\n setOverwriteWarning?.(true)\n } else {\n handleChangeSeedPhrase?.(phrase ?? '')\n saveCallback?.()\n }\n }, [handleChangeSeedPhrase, overwriteWarning, phrase, saveCallback, seedPhrase])\n\n useEffect(() => {\n if (!open) {\n handleCancelOverwrite()\n }\n }, [handleCancelOverwrite, open])\n\n const validSeedPhrase = useMemo(() => validate?.(seedPhrase), [seedPhrase])\n const validPhrase = useMemo(() => validate?.(phrase), [phrase])\n\n return (\n <SeedPhraseContext.Provider\n value={{\n handleCancelOverwrite,\n handleChangeSeedPhrase,\n handleClear,\n handleGenerate,\n handleSave,\n overwriteWarning,\n phrase,\n provided: true,\n seedPhrase,\n setOverwriteWarning,\n setPhrase,\n validPhrase,\n validSeedPhrase,\n validate,\n }}\n >\n {children}\n </SeedPhraseContext.Provider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SeedPhraseContext } from './Context'\n\nexport const useSeedPhrase = () => useContextEx(SeedPhraseContext, 'SeedPhrase', true)\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { WalletContextState } from './State'\n\nexport const WalletContext = createContextEx<WalletContextState>()\n","import { usePromise } from '@xylabs/react-promise'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useEffect, useState } from 'react'\n\nimport { WalletContext } from './Context'\n\nexport interface WalletProviderProps {\n defaultActiveAccountIndex?: number\n rootWallet?: WalletInstance | null\n}\n\nexport const WalletProvider: React.FC<WithChildren<WalletProviderProps>> = ({\n children,\n defaultActiveAccountIndex = 0,\n rootWallet = null,\n ...props\n}) => {\n const [activeAccountIndex, setActiveAccountIndex] = useState(defaultActiveAccountIndex)\n\n useEffect(() => {\n if (defaultActiveAccountIndex !== undefined) {\n setActiveAccountIndex(defaultActiveAccountIndex)\n }\n }, [defaultActiveAccountIndex])\n\n const [activeAccount = null] = usePromise(async () => await rootWallet?.derivePath(activeAccountIndex.toString()), [activeAccountIndex, rootWallet])\n\n return (\n <WalletContext.Provider\n value={{\n activeAccount,\n activeAccountIndex,\n provided: true,\n rootWallet,\n setActiveAccountIndex,\n }}\n {...props}\n >\n {children}\n </WalletContext.Provider>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { useContextEx, useProvided } from '@xyo-network/react-shared'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { WalletContext } from './Context'\n\nexport const useWalletContext = (required = true) => {\n return useContextEx(WalletContext, 'Wallet', required)\n}\n\nexport const useWalletProvided = () => {\n return useProvided(WalletContext)\n}\n\nexport const useRootWallet = (required = true): [WalletInstance | null | undefined, Error | undefined] => {\n const { rootWallet } = useWalletContext(required)\n return [rootWallet, undefined]\n}\n\nexport const useIndexedWalletFromContext = (index: number, required = true): [WalletInstance | null | undefined, Error | undefined] => {\n const { rootWallet } = useWalletContext(required)\n const [wallet] = usePromise(async () => (await rootWallet?.derivePath(index.toString())) ?? rootWallet, [rootWallet, index])\n return [wallet, undefined]\n}\n\nexport const useSelectedWalletAccount = (required = true): [WalletInstance | null | undefined, Error | undefined] => {\n const { activeAccountIndex } = useWalletContext(required)\n //we pass in 0 as default since we can not call the hook optionally,\n //we resolve this false result by checking whether activeAccountIndex is defined before returning it\n const [account] = useIndexedWalletFromContext(activeAccountIndex ?? 0, required)\n return activeAccountIndex === undefined && account === null ? [null, undefined] : [account, undefined]\n}\n","import { FormControl, StandardTextFieldProps, TextField } from '@mui/material'\nimport { ReactNode } from 'react'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { colorParser, InvalidPhraseTypography } from './validation-messages'\n\nexport interface NewPhraseTextFieldProps extends StandardTextFieldProps {\n children?: ReactNode\n disableColor?: boolean\n}\n\nexport const NewPhraseTextField: React.FC<NewPhraseTextFieldProps> = ({ children, disableColor, ...props }) => {\n const { phrase, setPhrase, validPhrase } = useSeedPhrase()\n return (\n <>\n <FormControl fullWidth size=\"small\" sx={{ display: 'flex', flexDirection: 'column', rowGap: 1 }}>\n {children}\n <TextField\n focused\n color={disableColor ? undefined : colorParser(validPhrase)}\n error={validPhrase === false}\n helperText={validPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={Number.POSITIVE_INFINITY}\n multiline\n onChange={(e) => setPhrase?.(e.target.value)}\n value={phrase}\n {...props}\n />\n </FormControl>\n </>\n )\n}\n","export const colorParser = (conditional?: boolean | null) => {\n switch (conditional) {\n case true: {\n return 'success'\n }\n case false: {\n return 'error'\n }\n default: {\n return\n }\n }\n}\n","import { Link, Typography, TypographyProps } from '@mui/material'\n\nexport const InvalidPhraseTypography: React.FC<TypographyProps> = (props) => (\n <Typography variant={'caption'} color={'error'} {...props}>\n Invalid seed phrase. See -{' '}\n <Link target={'_blank'} href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">\n bip39 Proposal\n </Link>\n </Typography>\n)\n","import { CheckCircleOutline as CheckCircleOutlineIcon, HighlightOff as HighlightOffIcon } from '@mui/icons-material'\nimport { FlexBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useMemo } from 'react'\n\ninterface PhraseHeaderBox extends FlexBoxProps, WithChildren {\n conditional?: boolean | null\n}\n\nexport const PhraseHeaderBox: React.FC<PhraseHeaderBox> = ({ children, conditional, ...props }) => {\n const state = useMemo(() => {\n switch (conditional) {\n case true: {\n return 'success'\n }\n case false: {\n return 'error'\n }\n default: {\n return null\n }\n }\n }, [conditional])\n\n const Icon = useMemo(() => {\n switch (state) {\n case 'success': {\n return <CheckCircleOutlineIcon fontSize=\"small\" color=\"success\" />\n }\n case 'error': {\n return <HighlightOffIcon fontSize=\"small\" color=\"error\" />\n }\n default: {\n return null\n }\n }\n }, [state])\n\n return (\n <FlexRow justifyContent={'start'} columnGap={1} {...props}>\n {Icon}\n {children}\n </FlexRow>\n )\n}\n","import { Button, DialogActions } from '@mui/material'\n\nimport { useSeedPhrase } from '../../../../../contexts'\n\nexport const PhraseDialogActions = () => {\n const { handleClear, handleGenerate, overwriteWarning } = useSeedPhrase()\n return (\n <DialogActions sx={{ justifyContent: 'center' }}>\n <Button disabled={overwriteWarning} variant=\"outlined\" onClick={handleGenerate}>\n Generate\n </Button>\n <Button variant=\"outlined\" onClick={handleClear}>\n Clear\n </Button>\n </DialogActions>\n )\n}\n","import { Chip, FormControl, FormLabel, StandardTextFieldProps, TextField } from '@mui/material'\nimport { useState } from 'react'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { InvalidPhraseTypography, PhraseHeaderBox } from './validation-messages'\n\nexport interface SavedPhraseTextFieldProps extends StandardTextFieldProps {\n fullWidth?: boolean\n showPhraseHeader?: boolean\n}\n\nexport const SavedPhraseTextField: React.FC<SavedPhraseTextFieldProps> = ({ fullWidth, showPhraseHeader, ...props }) => {\n const { validSeedPhrase, seedPhrase } = useSeedPhrase()\n\n const [visible, setVisible] = useState(false)\n\n return (\n <FormControl fullWidth={fullWidth} size=\"small\" sx={{ display: 'flex', flexDirection: 'column', rowGap: 1 }}>\n <Chip label={visible ? 'Hide Saved Seed Phrase' : 'Reveal Saved Seed Phrase'} onClick={() => setVisible(!visible)} />\n {visible ?\n <>\n {showPhraseHeader ?\n <FormLabel>\n <PhraseHeaderBox conditional={validSeedPhrase}>Saved Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n : null}\n <TextField\n defaultValue={seedPhrase}\n disabled\n error={validSeedPhrase === false}\n helperText={validSeedPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={Number.POSITIVE_INFINITY}\n multiline\n {...props}\n />\n </>\n : null}\n </FormControl>\n )\n}\n","import { Alert, Button } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { useSeedPhrase } from '../../../../contexts'\n\nexport const OverwriteWarning = () => {\n const { handleCancelOverwrite, handleSave } = useSeedPhrase()\n return (\n <Alert\n variant=\"outlined\"\n severity=\"warning\"\n action={\n <FlexRow sx={{ columnGap: 1 }}>\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={handleSave}>\n Overwrite\n </Button>\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={handleCancelOverwrite}>\n Cancel\n </Button>\n </FlexRow>\n }\n >\n Are you sure you want to overwrite existing seed phrase? This action cannot be undone.\n </Alert>\n )\n}\n","import { Dialog, DialogContent, DialogProps, DialogTitle, FormLabel } from '@mui/material'\n\nimport { SeedPhraseProvider, useSeedPhrase } from '../../../contexts'\nimport { SeedPhraseIconButton } from '../_shared'\nimport { DialogActionButtons, NewPhraseTextField, OverwriteWarning, PhraseDialogActions, PhraseHeaderBox, SavedPhraseTextField } from './components'\n\nexport interface SeedPhraseDialogProps extends DialogProps {\n changeSeedPhrase?: (value: string) => void\n seedPhrase?: string\n}\n\nexport const SeedPhraseDialog: React.FC<SeedPhraseDialogProps> = ({ changeSeedPhrase, seedPhrase, ...props }) => {\n return (\n <SeedPhraseProvider\n seedPhrase={seedPhrase}\n handleChangeSeedPhrase={changeSeedPhrase}\n open={props.open}\n saveCallback={() => props.onClose?.({}, 'escapeKeyDown')}\n >\n <SeedPhraseDialogInner {...props} />\n </SeedPhraseProvider>\n )\n}\n\nexport const SeedPhraseDialogInner: React.FC<SeedPhraseDialogProps> = (props) => {\n const { overwriteWarning, seedPhrase, validPhrase } = useSeedPhrase()\n\n return (\n <Dialog aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\" fullWidth maxWidth={'sm'} {...props}>\n <DialogTitle id=\"alert-dialog-title\">\n Update Your Seed Phrase <SeedPhraseIconButton />\n </DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', rowGap: 2 }}>\n <NewPhraseTextField>\n <FormLabel>\n <PhraseHeaderBox conditional={validPhrase}>New Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n </NewPhraseTextField>\n <PhraseDialogActions />\n {seedPhrase ?\n <SavedPhraseTextField />\n : null}\n {overwriteWarning ?\n <OverwriteWarning />\n : null}\n </DialogContent>\n <DialogActionButtons onClose={props.onClose} />\n </Dialog>\n )\n}\n","import { Cancel as CancelIcon, RadioButtonChecked as RadioButtonCheckedIcon } from '@mui/icons-material'\nimport { Button, ButtonGroup, TableCell, TableRow, TableRowProps } from '@mui/material'\nimport { useState } from 'react'\n\nimport { SeedPhraseIconButton } from '../_shared'\nimport { SeedPhraseDialog } from '../dialog'\n\nexport interface SeedPhraseTableRowProps extends TableRowProps {\n changeSeedPhrase?: (seedPhrase: string) => void\n seedPhrase?: string\n}\n\nexport const SeedPhraseTableRow: React.FC<SeedPhraseTableRowProps> = ({ changeSeedPhrase, seedPhrase, ...props }) => {\n const [open, setOpen] = useState(false)\n\n const handleOpen = () => {\n setOpen(true)\n }\n return (\n <TableRow {...props}>\n <TableCell>\n Seed Phrase <SeedPhraseIconButton />\n </TableCell>\n <TableCell align=\"center\">\n {seedPhrase ?\n <RadioButtonCheckedIcon color=\"success\" />\n : <CancelIcon color=\"error\" />}\n </TableCell>\n <TableCell>\n <SeedPhraseDialog changeSeedPhrase={changeSeedPhrase} open={open} onClose={() => setOpen(false)} seedPhrase={seedPhrase} />\n <ButtonGroup fullWidth>\n <Button variant=\"contained\" size=\"small\" onClick={handleOpen}>\n Update\n </Button>\n </ButtonGroup>\n </TableCell>\n </TableRow>\n )\n}\n","import { EthAddress } from '@xylabs/eth-address'\nimport { EthAccountButton } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { NumberStatus } from '@xylabs/react-number-status'\nimport { useNetwork } from '@xyo-network/react-network'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { useAccount } from '../../hooks'\n\nexport interface WalletAccountDetailsProps extends FlexBoxProps {\n account?: WalletInstance\n exploreUrl?: string\n}\n\nexport const WalletAccountDetails: React.FC<WalletAccountDetailsProps> = ({ exploreUrl = 'https://explore.xyo.network', account, ...props }) => {\n const [accountToUse] = useAccount({ account })\n const { network } = useNetwork()\n const exploreAddressUrl = `${exploreUrl}/recent?account=${accountToUse?.address}&network=${network?.name ?? 'main'}`\n\n return (\n <FlexCol {...props}>\n <EthAccountButton address={EthAddress.fromString(accountToUse?.address)} />\n <FlexRow gap={1}>\n <NumberStatus rounded title=\"Tokens\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.tokens`} target=\"_blank\" />\n <NumberStatus rounded title=\"NFTs\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.nfts`} target=\"_blank\" />\n <NumberStatus rounded title=\"Signatures\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.signatures`} target=\"_blank\" />\n <NumberStatus rounded title=\"Signins\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.signins`} target=\"_blank\" />\n </FlexRow>\n </FlexCol>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useState } from 'react'\n\nimport { useRootWallet, useWalletContext, useWalletProvided } from '../contexts'\n\nexport interface AccountHookParams {\n account?: AccountInstance\n index?: number\n required?: boolean\n wallet?: WalletInstance\n}\n\nexport const useAccount = ({ wallet, account, index, required = false }: AccountHookParams = {}): [\n AccountInstance | null | undefined,\n Error | undefined,\n] => {\n const walletContextProvided = useWalletProvided()\n const [validationError, setValidationError] = useState<Error>()\n if (wallet && account && !validationError) {\n setValidationError(new Error('useAccount can not have both a wallet and an account in the parameters'))\n }\n\n if (index && account && !validationError) {\n setValidationError(new Error('useAccount can not have both a index and an account in the parameters'))\n }\n\n const [error, setError] = useState<Error>()\n const [rootWallet] = useRootWallet(!wallet && required)\n const { activeAccountIndex } = useWalletContext(false)\n const [activeAccount] = usePromise(async () => {\n try {\n if (!validationError) {\n if (wallet) {\n return await wallet?.derivePath?.(`${index ?? 0}'\\0`)\n } else if (rootWallet) {\n return await rootWallet?.derivePath?.(`${index ?? activeAccountIndex ?? 0}'\\0`)\n }\n }\n } catch (ex) {\n const error = ex as Error\n console.error(error.message)\n setError(error)\n }\n }, [index, wallet, rootWallet, activeAccountIndex, validationError])\n if (validationError && !error) {\n console.error(validationError.message)\n setError(validationError)\n }\n\n return [\n error ? undefined\n : account ?? activeAccount ?? walletContextProvided ? null\n : undefined,\n error,\n ]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useState } from 'react'\n\nimport { useSelectedWalletAccount, useWalletContext } from '../contexts'\n\nexport interface WalletHookParams {\n mnemonic?: string\n path?: string\n required?: boolean\n seed?: Uint8Array | string\n wallet?: WalletInstance | null\n}\n\nexport const useWallet = ({ mnemonic, wallet, path, required = false, seed }: WalletHookParams = {}): [\n WalletInstance | null | undefined,\n Error | undefined,\n] => {\n const walletContextProvided = useWalletContext(false)\n const [error, setError] = useState<Error>()\n const [contextAccount] = useSelectedWalletAccount(!wallet && required)\n const [activeAccount] = usePromise(async () => {\n try {\n const newAccount = await (() => {\n if (wallet) {\n return wallet\n } else if (mnemonic) {\n return HDWallet.fromPhrase(mnemonic)\n } else if (seed) {\n return HDWallet.fromSeed(seed)\n }\n return contextAccount\n })()\n\n return path ? newAccount?.derivePath?.(path) : newAccount ?? wallet\n } catch (ex) {\n setError(ex as Error)\n }\n }, [mnemonic, contextAccount, seed, path, wallet])\n return [activeAccount ?? (walletContextProvided ? null : activeAccount), error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { useWalletContext } from '../contexts'\nimport { useWallet } from './useWallet'\n\nexport interface WalletsHookParams {\n paths: string[]\n wallet?: WalletInstance | null\n}\n\nexport const useWallets = ({ wallet, paths }: WalletsHookParams): [WalletInstance[] | null | undefined, Error | undefined] => {\n const walletContextProvided = useWalletContext(false)\n const [foundWallet] = useWallet({ wallet })\n const [wallets, error] = usePromise(\n async () => (foundWallet ? await Promise.all(paths.map((path) => foundWallet.derivePath(path))) : undefined),\n [foundWallet, paths],\n )\n return [wallets ?? (walletContextProvided ? null : wallets), error]\n}\n","import { State as PromiseState, usePromise } from '@xylabs/react-promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { Mutex } from 'async-mutex'\n\nlet globalWrapperWallet: WalletInstance | undefined\nconst globalWrapperWalletMutex = new Mutex()\n\nexport const useWrapperAccount = (\n account?: AccountInstance | null,\n): [AccountInstance | null | undefined, Error | undefined, PromiseState | undefined] => {\n return usePromise(async () => {\n return await globalWrapperWalletMutex.runExclusive(async () => {\n //if we are expecting to receive a wallet or did receive on, return the override account\n if (account !== undefined) {\n return account\n }\n\n if (globalWrapperWallet) {\n return globalWrapperWallet\n }\n\n try {\n globalWrapperWallet = await HDWallet.random()\n console.log(`Global Wrapper Wallet Creation Success: ${globalWrapperWallet.address}`)\n } catch (ex) {\n const error = ex as Error\n console.error(`Global Wrapper Wallet Creation Failed: ${error.message}`)\n }\n return globalWrapperWallet\n })\n }, [account])\n}\n","import { CircularProgress, MenuItem, SelectProps } from '@mui/material'\nimport { SelectEx } from '@xylabs/react-select'\nimport { AddressRenderRowBox, AddressRenderRowBoxProps } from '@xyo-network/react-address-render'\n\nimport { useWalletContext } from '../../contexts'\nimport { useWallet } from '../../hooks'\n\ntype SharedAddressRenderRowBoxProps = Pick<AddressRenderRowBoxProps, 'iconOnly' | 'iconSize' | 'icons' | 'showFavorite'>\n\nexport type WalletAccountSelectProps = SharedAddressRenderRowBoxProps &\n Omit<SelectProps<number>, 'variant'> &\n Partial<SelectProps<number>> & {\n addressNames?: Record<string, string | undefined>\n maxAccounts?: number\n }\n\nconst arrayRange = (length: number, start = 0) => {\n return [...Array.from({ length }).keys()].map((x) => x + start)\n}\n\nexport const WalletAccountSelect: React.FC<WalletAccountSelectProps> = ({\n addressNames = {},\n iconOnly,\n iconSize = 24,\n icons,\n maxAccounts = 1,\n showFavorite = false,\n size,\n variant = 'outlined',\n ...props\n}) => {\n const { activeAccountIndex = 0, setActiveAccountIndex, rootWallet } = useWalletContext()\n const disabled = !rootWallet || activeAccountIndex === undefined\n\n return (\n <>\n {rootWallet ?\n <SelectEx\n margin=\"dense\"\n disabled={disabled}\n renderValue={(selectedAccountIndex) => {\n const Item: React.FC = () => {\n const [selectedAccount] = useWallet({ path: selectedAccountIndex.toString(), wallet: rootWallet })\n const customName = selectedAccount ? addressNames[selectedAccount.address] : undefined\n const favorite = !!selectedAccount && selectedAccount.address in addressNames\n return (\n <MenuItem value={selectedAccountIndex} sx={{ minHeight: 0, paddingBottom: 0, paddingTop: 0 }}>\n <AddressRenderRowBox\n disableSharedRef={true}\n flexGrow={1}\n address={selectedAccount?.address}\n iconOnly={iconOnly}\n iconSize={iconSize}\n icons={icons}\n name={customName}\n favorite={favorite}\n showFavorite={showFavorite}\n />\n </MenuItem>\n )\n }\n return <Item />\n }}\n value={activeAccountIndex}\n onChange={(event) => setActiveAccountIndex?.(Number.parseInt(`${event.target.value}`))}\n size={size}\n variant={variant}\n {...props}\n >\n {arrayRange(maxAccounts).map((index) => {\n const Item: React.FC = () => {\n const [account] = useWallet({ path: index.toString(), wallet: rootWallet })\n const customName = account ? addressNames[account.address] : undefined\n const favorite = !!account && account.address in addressNames\n return (\n <MenuItem key={account?.address} value={index} sx={{ minHeight: 0, paddingBottom: 0, paddingTop: 0 }}>\n <AddressRenderRowBox\n disableSharedRef={true}\n flexGrow={1}\n address={account?.address}\n favorite={favorite}\n iconOnly={iconOnly}\n iconSize={iconSize}\n icons={icons}\n name={customName}\n showFavorite={showFavorite}\n />\n </MenuItem>\n )\n }\n\n return <Item key={index} />\n })}\n </SelectEx>\n : <CircularProgress size={24} />}\n </>\n )\n}\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nimport { WalletAccountSelect } from './Select'\n\nexport interface WalletAccountSelectBarProps extends FlexBoxProps {\n addressNames?: Record<string, string | undefined>\n iconOnly?: boolean\n iconSize?: number\n icons?: boolean\n maxAccounts?: number\n showFavorite?: boolean\n size?: 'small' | 'medium'\n}\n\nexport const WalletAccountSelectBar: React.FC<WalletAccountSelectBarProps> = ({\n addressNames = {},\n iconOnly,\n iconSize,\n icons,\n maxAccounts = 1,\n showFavorite = false,\n size = 'small',\n ...props\n}) => {\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <WalletAccountSelect\n addressNames={addressNames}\n fullWidth\n showFavorite={showFavorite}\n iconSize={iconSize}\n iconOnly={iconOnly}\n icons={icons}\n maxAccounts={maxAccounts}\n size={size ?? 'small'}\n variant=\"outlined\"\n />\n </FlexCol>\n )\n}\n"],"mappings":"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","names":["src_exports","__export","DefaultSeedPhrase","DialogActionButtons","InvalidPhraseTypography","MaxAccountsTableRow","NewPhraseTextField","OverwriteWarning","PhraseDialogActions","PhraseHeaderBox","SavedPhraseTextField","SeedPhraseContext","SeedPhraseDialog","SeedPhraseDialogInner","SeedPhraseIconButton","SeedPhraseProvider","SeedPhraseTableRow","WalletAccountDetails","WalletAccountSelect","WalletAccountSelectBar","WalletContext","WalletProvider","colorParser","useAccount","useIndexedWalletFromContext","useRootWallet","useSeedPhrase","useSelectedWalletAccount","useWallet","useWalletContext","useWalletProvided","useWallets","useWrapperAccount","__toCommonJS","import_material","import_react_button","import_react","import_material","import_jsx_runtime","OutOfBoundsSnackBar","activeAccountIndex","desiredMaximumAccounts","setShowSnackBar","showSnackBar","import_jsx_runtime","MaxAccountsTableRow","activeAccountIndex","changeMaxAccounts","maxAccounts","desiredMaximumAccounts","setDesiredMaximumAccounts","showSnackBar","setShowSnackBar","handleChangeMaxAccounts","change","validMaximumAccounts","maxAccountsWithinRange","OutOfBoundsSnackBar","import_icons_material","import_material","import_react","import_jsx_runtime","SeedPhraseIconButton","props","open","setOpen","onClose","HelpOutlineIcon","import_material","import_bip39","import_english","import_react","import_jsx_runtime","DefaultSeedPhrase","changeSeedPhrase","children","hideDefaultSeedPhraseMessage","seedPhrase","showSnackBar","setShowSnackBar","mnemonic","import_material","import_react_shared","SeedPhraseContext","import_bip39","import_english","import_react","import_jsx_runtime","validate","passedPhrase","SeedPhraseProvider","children","defaultPhrase","handleChangeSeedPhrase","saveCallback","seedPhrase","open","phrase","setPhrase","overwriteWarning","setOverwriteWarning","handleGenerate","mnemonic","handleCancelOverwrite","handleClear","handleSave","validSeedPhrase","validPhrase","SeedPhraseContext","import_react_shared","useSeedPhrase","SeedPhraseContext","import_react_shared","WalletContext","import_react_promise","import_react","import_jsx_runtime","WalletProvider","children","defaultActiveAccountIndex","rootWallet","props","activeAccountIndex","setActiveAccountIndex","activeAccount","WalletContext","import_react_promise","import_react_shared","useWalletContext","required","WalletContext","useWalletProvided","useRootWallet","rootWallet","useIndexedWalletFromContext","index","wallet","useSelectedWalletAccount","activeAccountIndex","account","import_jsx_runtime","DialogActionButtons","onClose","props","handleSave","setPhrase","useSeedPhrase","e","import_material","colorParser","conditional","import_material","import_jsx_runtime","InvalidPhraseTypography","props","import_icons_material","import_react_flexbox","import_react","import_jsx_runtime","PhraseHeaderBox","children","conditional","props","state","Icon","CheckCircleOutlineIcon","HighlightOffIcon","import_jsx_runtime","NewPhraseTextField","children","disableColor","props","phrase","setPhrase","validPhrase","useSeedPhrase","colorParser","InvalidPhraseTypography","e","import_material","import_jsx_runtime","PhraseDialogActions","handleClear","handleGenerate","overwriteWarning","useSeedPhrase","import_material","import_react","import_jsx_runtime","SavedPhraseTextField","fullWidth","showPhraseHeader","props","validSeedPhrase","seedPhrase","useSeedPhrase","visible","setVisible","PhraseHeaderBox","InvalidPhraseTypography","import_material","import_react_flexbox","import_jsx_runtime","OverwriteWarning","handleCancelOverwrite","handleSave","useSeedPhrase","import_material","import_jsx_runtime","SeedPhraseDialog","changeSeedPhrase","seedPhrase","props","SeedPhraseProvider","SeedPhraseDialogInner","overwriteWarning","validPhrase","useSeedPhrase","SeedPhraseIconButton","NewPhraseTextField","PhraseHeaderBox","PhraseDialogActions","SavedPhraseTextField","OverwriteWarning","DialogActionButtons","import_icons_material","import_material","import_react","import_jsx_runtime","SeedPhraseTableRow","changeSeedPhrase","seedPhrase","props","open","setOpen","SeedPhraseIconButton","RadioButtonCheckedIcon","CancelIcon","SeedPhraseDialog","import_eth_address","import_react_crypto","import_react_flexbox","import_react_number_status","import_react_network","import_react_promise","import_react","useAccount","wallet","account","index","required","walletContextProvided","useWalletProvided","validationError","setValidationError","error","setError","rootWallet","useRootWallet","activeAccountIndex","useWalletContext","activeAccount","ex","import_react_promise","import_account","import_react","useWallet","mnemonic","wallet","path","required","seed","walletContextProvided","useWalletContext","error","setError","contextAccount","useSelectedWalletAccount","activeAccount","newAccount","ex","import_react_promise","useWallets","wallet","paths","walletContextProvided","useWalletContext","foundWallet","useWallet","wallets","error","path","import_react_promise","import_account","import_async_mutex","globalWrapperWallet","globalWrapperWalletMutex","useWrapperAccount","account","ex","import_jsx_runtime","WalletAccountDetails","exploreUrl","account","props","accountToUse","useAccount","network","exploreAddressUrl","import_material","import_react_select","import_react_address_render","import_jsx_runtime","arrayRange","length","start","x","WalletAccountSelect","addressNames","iconOnly","iconSize","icons","maxAccounts","showFavorite","size","variant","props","activeAccountIndex","setActiveAccountIndex","rootWallet","useWalletContext","selectedAccountIndex","selectedAccount","useWallet","customName","favorite","event","index","account","import_react_flexbox","import_jsx_runtime","WalletAccountSelectBar","addressNames","iconOnly","iconSize","icons","maxAccounts","showFavorite","size","props","WalletAccountSelect"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/components/MaxAccounts/MaxAccountsTableRow.tsx","../../src/components/MaxAccounts/OutOfBoundsSnackBar.tsx","../../src/components/SeedPhrase/_shared/SeedPhraseIconButton.tsx","../../src/components/SeedPhrase/DefaultSeedPhrase.tsx","../../src/components/SeedPhrase/dialog/components/DialogActionButtons.tsx","../../src/contexts/SeedPhrase/Context.ts","../../src/contexts/SeedPhrase/Provider.tsx","../../src/contexts/SeedPhrase/use.tsx","../../src/contexts/Wallet/Context.ts","../../src/contexts/Wallet/Provider.tsx","../../src/contexts/Wallet/use.ts","../../src/components/SeedPhrase/dialog/components/fields/NewPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/colorParser.ts","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/InvalidPhrase.tsx","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/PhraseHeaderBox.tsx","../../src/components/SeedPhrase/dialog/components/fields/PhraseDialogActions.tsx","../../src/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/OverwriteWarning.tsx","../../src/components/SeedPhrase/dialog/SeedPhraseDialog.tsx","../../src/components/SeedPhrase/settings/SeedPhraseTableRow.tsx","../../src/components/WalletAccountDetails/WalletAccountDetails.tsx","../../src/hooks/useAccount.ts","../../src/hooks/useWallet.ts","../../src/hooks/useWallets.ts","../../src/hooks/useWrapperAccount.ts","../../src/components/WalletAccountSelect/Select.tsx","../../src/components/WalletAccountSelect/SelectBar.tsx"],"sourcesContent":["export * from './components'\nexport * from './contexts'\nexport * from './hooks'\n","import { ButtonGroup, TableCell, TableRow, TableRowProps, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { useState } from 'react'\n\nimport { OutOfBoundsSnackBar } from './OutOfBoundsSnackBar'\n\nexport interface MaxAccountsTableRow extends TableRowProps {\n activeAccountIndex?: number\n changeMaxAccounts?: (maxAccounts: number) => void\n maxAccounts?: number\n}\n\nexport const MaxAccountsTableRow: React.FC<MaxAccountsTableRow> = ({ activeAccountIndex, changeMaxAccounts, maxAccounts }) => {\n const [desiredMaximumAccounts, setDesiredMaximumAccounts] = useState<number | undefined>()\n const [showSnackBar, setShowSnackBar] = useState(false)\n\n const handleChangeMaxAccounts = (change: 'increase' | 'decrease') => {\n if (maxAccounts !== undefined && activeAccountIndex !== undefined) {\n switch (change) {\n case 'decrease': {\n const desiredMaximumAccounts = maxAccounts - 1\n const validMaximumAccounts = desiredMaximumAccounts > 0\n const maxAccountsWithinRange = activeAccountIndex + 1 <= desiredMaximumAccounts\n if (validMaximumAccounts && maxAccountsWithinRange) {\n changeMaxAccounts?.(desiredMaximumAccounts)\n }\n if (!maxAccountsWithinRange) setShowSnackBar(true)\n setDesiredMaximumAccounts(desiredMaximumAccounts)\n return\n }\n case 'increase': {\n changeMaxAccounts?.(maxAccounts + 1)\n return\n }\n default: {\n console.error(change, 'is not a recognized value')\n }\n }\n } else {\n throw new Error('Max Accounts is unset and needs a default')\n }\n }\n\n return (\n <TableRow>\n <TableCell>Maximum Accounts</TableCell>\n <TableCell align=\"center\">\n <Typography variant={'caption'}>{maxAccounts}</Typography>\n </TableCell>\n <TableCell align=\"center\">\n <ButtonGroup>\n <ButtonEx onClick={() => handleChangeMaxAccounts('decrease')} variant={'contained'} size={'small'}>\n -\n </ButtonEx>\n <ButtonEx onClick={() => handleChangeMaxAccounts('increase')} variant={'contained'} size={'small'}>\n +\n </ButtonEx>\n </ButtonGroup>\n <OutOfBoundsSnackBar\n desiredMaximumAccounts={desiredMaximumAccounts}\n activeAccountIndex={activeAccountIndex}\n setShowSnackBar={setShowSnackBar}\n showSnackBar={showSnackBar}\n />\n </TableCell>\n </TableRow>\n )\n}\n","import { Alert, AlertTitle, Snackbar, SnackbarProps } from '@mui/material'\nimport { Dispatch, SetStateAction } from 'react'\n\nexport interface OutOfBoundsSnackBarProps extends SnackbarProps {\n activeAccountIndex?: number\n desiredMaximumAccounts?: number\n setShowSnackBar?: Dispatch<SetStateAction<boolean>>\n showSnackBar?: boolean\n}\n\nexport const OutOfBoundsSnackBar: React.FC<OutOfBoundsSnackBarProps> = ({\n activeAccountIndex,\n desiredMaximumAccounts,\n setShowSnackBar,\n showSnackBar,\n}) => {\n return (\n <Snackbar\n anchorOrigin={{ horizontal: 'center', vertical: 'top' }}\n autoHideDuration={5000}\n onClose={() => setShowSnackBar?.(false)}\n open={showSnackBar}\n >\n <Alert severity={'error'} onClose={() => setShowSnackBar?.(false)}>\n <AlertTitle>Maximum Accounts Error</AlertTitle>\n Your currently selected account number ({activeAccountIndex === undefined ? '' : activeAccountIndex + 1}) cannot be greater than the desired\n Maximum Accounts ({desiredMaximumAccounts}).\n </Alert>\n </Snackbar>\n )\n}\n","import { HelpOutline as HelpOutlineIcon } from '@mui/icons-material'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n IconButtonProps,\n Link,\n List,\n ListItem,\n Typography,\n} from '@mui/material'\nimport { useState } from 'react'\n\nexport const SeedPhraseIconButton: React.FC<IconButtonProps> = (props) => {\n const [open, setOpen] = useState(false)\n const onClose = () => setOpen(false)\n return (\n <>\n <IconButton onClick={() => setOpen(true)} {...props}>\n <HelpOutlineIcon fontSize=\"small\" />\n </IconButton>\n <Dialog open={open}>\n <DialogTitle>Understanding your Seed Phrase</DialogTitle>\n <DialogContent>\n <Typography>\n Your Seed Phrase should adhere to the{' '}\n <Link target={'_blank'} href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">\n bip39 specification\n </Link>{' '}\n and is used to generate accounts which identify your data on the XYO Network.\n </Typography>\n <List>\n <ListItem>Do not share this phrase with anyone.</ListItem>\n <ListItem>Do not save it to a public computer.</ListItem>\n <ListItem>Do not use a existing phrase from another wallet (i.e. Metamask).</ListItem>\n <ListItem>Do not use before copying it down somewhere safe.</ListItem>\n </List>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} variant=\"outlined\">\n OK\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { Alert, AlertTitle, Snackbar } from '@mui/material'\nimport { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\n\nexport interface DefaultSeedPhraseProps extends WithChildren {\n changeSeedPhrase?: (seedPhrase: string) => void\n hideDefaultSeedPhraseMessage?: boolean\n seedPhrase?: string\n}\n\nexport const DefaultSeedPhrase: React.FC<DefaultSeedPhraseProps> = ({ changeSeedPhrase, children, hideDefaultSeedPhraseMessage, seedPhrase }) => {\n const [showSnackBar, setShowSnackBar] = useState(false)\n\n useEffect(() => {\n if (!seedPhrase) {\n const mnemonic = generateMnemonic(wordlist, 256)\n changeSeedPhrase?.(mnemonic)\n setShowSnackBar(true)\n }\n }, [changeSeedPhrase, seedPhrase])\n\n return (\n <>\n {hideDefaultSeedPhraseMessage ? null : (\n <Snackbar\n open={showSnackBar}\n autoHideDuration={5000}\n onClose={() => setShowSnackBar(false)}\n anchorOrigin={{ horizontal: 'center', vertical: 'top' }}\n >\n <Alert severity={'success'}>\n <AlertTitle>Default Seed Phrase Generated</AlertTitle>\n Go to application settings to save it.\n </Alert>\n </Snackbar>\n )}\n {children}\n </>\n )\n}\n","import { Button, DialogActions, DialogActionsProps, DialogProps } from '@mui/material'\nimport { MouseEvent } from 'react'\n\nimport { useSeedPhrase } from '../../../../contexts'\n\ninterface DialogActionButtonsProps extends DialogActionsProps {\n onClose?: DialogProps['onClose']\n}\n\nexport const DialogActionButtons: React.FC<DialogActionButtonsProps> = ({ onClose, ...props }) => {\n const { handleSave, setPhrase } = useSeedPhrase()\n\n const wrappedOnClose = (e: MouseEvent<HTMLElement>) => {\n // clear local copy of phrase when modal closes\n setPhrase?.('')\n onClose?.(e, 'escapeKeyDown')\n }\n\n return (\n <DialogActions {...props}>\n <Button variant=\"outlined\" onClick={wrappedOnClose}>\n Cancel\n </Button>\n <Button variant=\"outlined\" onClick={handleSave}>\n Save\n </Button>\n </DialogActions>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SeedPhraseContextState } from './State'\n\nexport const SeedPhraseContext = createContextEx<SeedPhraseContextState>()\n","import { generateMnemonic, validateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { SeedPhraseContext } from './Context'\n\nexport interface SeedPhraseProviderProps extends WithChildren {\n defaultPhrase?: string\n handleChangeSeedPhrase?: (phrase: string) => void\n open?: boolean\n saveCallback?: () => void\n seedPhrase?: string\n}\n\nconst validate = (passedPhrase?: string) => {\n if (!passedPhrase) {\n return null\n }\n return validateMnemonic(passedPhrase, wordlist)\n}\n\nexport const SeedPhraseProvider: React.FC<SeedPhraseProviderProps> = ({\n children,\n defaultPhrase,\n handleChangeSeedPhrase,\n saveCallback,\n seedPhrase,\n open,\n}) => {\n const [phrase, setPhrase] = useState<string | undefined>()\n const [overwriteWarning, setOverwriteWarning] = useState(false)\n\n useEffect(() => {\n setPhrase(defaultPhrase)\n }, [defaultPhrase])\n\n useEffect(() => {\n if (seedPhrase || open) {\n setPhrase?.(seedPhrase ?? '')\n }\n }, [seedPhrase, open, setPhrase])\n\n const handleGenerate = useCallback(() => {\n const mnemonic = generateMnemonic(wordlist, 256)\n setPhrase?.(mnemonic)\n setOverwriteWarning?.(false)\n }, [])\n\n const handleCancelOverwrite = useCallback(() => {\n setOverwriteWarning?.(false)\n }, [])\n\n const handleClear = useCallback(() => {\n setPhrase?.('')\n setOverwriteWarning?.(false)\n }, [])\n\n const handleSave = useCallback(() => {\n if (!overwriteWarning && seedPhrase && seedPhrase !== phrase) {\n setOverwriteWarning?.(true)\n } else {\n handleChangeSeedPhrase?.(phrase ?? '')\n saveCallback?.()\n }\n }, [handleChangeSeedPhrase, overwriteWarning, phrase, saveCallback, seedPhrase])\n\n useEffect(() => {\n if (!open) {\n handleCancelOverwrite()\n }\n }, [handleCancelOverwrite, open])\n\n const validSeedPhrase = useMemo(() => validate?.(seedPhrase), [seedPhrase])\n const validPhrase = useMemo(() => validate?.(phrase), [phrase])\n\n return (\n <SeedPhraseContext.Provider\n value={{\n handleCancelOverwrite,\n handleChangeSeedPhrase,\n handleClear,\n handleGenerate,\n handleSave,\n overwriteWarning,\n phrase,\n provided: true,\n seedPhrase,\n setOverwriteWarning,\n setPhrase,\n validPhrase,\n validSeedPhrase,\n validate,\n }}\n >\n {children}\n </SeedPhraseContext.Provider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SeedPhraseContext } from './Context'\n\nexport const useSeedPhrase = () => useContextEx(SeedPhraseContext, 'SeedPhrase', true)\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { WalletContextState } from './State'\n\nexport const WalletContext = createContextEx<WalletContextState>()\n","import { usePromise } from '@xylabs/react-promise'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useEffect, useState } from 'react'\n\nimport { WalletContext } from './Context'\n\nexport interface WalletProviderProps {\n defaultActiveAccountIndex?: number\n rootWallet?: WalletInstance | null\n}\n\nexport const WalletProvider: React.FC<WithChildren<WalletProviderProps>> = ({\n children,\n defaultActiveAccountIndex = 0,\n rootWallet = null,\n ...props\n}) => {\n const [activeAccountIndex, setActiveAccountIndex] = useState(defaultActiveAccountIndex)\n\n useEffect(() => {\n if (defaultActiveAccountIndex !== undefined) {\n setActiveAccountIndex(defaultActiveAccountIndex)\n }\n }, [defaultActiveAccountIndex])\n\n const [activeAccount = null] = usePromise(async () => await rootWallet?.derivePath(activeAccountIndex.toString()), [activeAccountIndex, rootWallet])\n\n return (\n <WalletContext.Provider\n value={{\n activeAccount,\n activeAccountIndex,\n provided: true,\n rootWallet,\n setActiveAccountIndex,\n }}\n {...props}\n >\n {children}\n </WalletContext.Provider>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { useContextEx, useProvided } from '@xyo-network/react-shared'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { WalletContext } from './Context'\n\nexport const useWalletContext = (required = true) => {\n return useContextEx(WalletContext, 'Wallet', required)\n}\n\nexport const useWalletProvided = () => {\n return useProvided(WalletContext)\n}\n\nexport const useRootWallet = (required = true): [WalletInstance | null | undefined, Error | undefined] => {\n const { rootWallet } = useWalletContext(required)\n return [rootWallet, undefined]\n}\n\nexport const useIndexedWalletFromContext = (index: number, required = true): [WalletInstance | null | undefined, Error | undefined] => {\n const { rootWallet } = useWalletContext(required)\n const [wallet] = usePromise(async () => (await rootWallet?.derivePath(index.toString())) ?? rootWallet, [rootWallet, index])\n return [wallet, undefined]\n}\n\nexport const useSelectedWalletAccount = (required = true): [WalletInstance | null | undefined, Error | undefined] => {\n const { activeAccountIndex } = useWalletContext(required)\n //we pass in 0 as default since we can not call the hook optionally,\n //we resolve this false result by checking whether activeAccountIndex is defined before returning it\n const [account] = useIndexedWalletFromContext(activeAccountIndex ?? 0, required)\n return activeAccountIndex === undefined && account === null ? [null, undefined] : [account, undefined]\n}\n","import { FormControl, StandardTextFieldProps, TextField } from '@mui/material'\nimport { ReactNode } from 'react'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { colorParser, InvalidPhraseTypography } from './validation-messages'\n\nexport interface NewPhraseTextFieldProps extends StandardTextFieldProps {\n children?: ReactNode\n disableColor?: boolean\n}\n\nexport const NewPhraseTextField: React.FC<NewPhraseTextFieldProps> = ({ children, disableColor, ...props }) => {\n const { phrase, setPhrase, validPhrase } = useSeedPhrase()\n return (\n <>\n <FormControl fullWidth size=\"small\" sx={{ display: 'flex', flexDirection: 'column', rowGap: 1 }}>\n {children}\n <TextField\n focused\n color={disableColor ? undefined : colorParser(validPhrase)}\n error={validPhrase === false}\n helperText={validPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={Number.POSITIVE_INFINITY}\n multiline\n onChange={(e) => setPhrase?.(e.target.value)}\n value={phrase}\n {...props}\n />\n </FormControl>\n </>\n )\n}\n","export const colorParser = (conditional?: boolean | null) => {\n switch (conditional) {\n case true: {\n return 'success'\n }\n case false: {\n return 'error'\n }\n default: {\n return\n }\n }\n}\n","import { Link, Typography, TypographyProps } from '@mui/material'\n\nexport const InvalidPhraseTypography: React.FC<TypographyProps> = (props) => (\n <Typography variant={'caption'} color={'error'} {...props}>\n Invalid seed phrase. See -{' '}\n <Link target={'_blank'} href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">\n bip39 Proposal\n </Link>\n </Typography>\n)\n","import { CheckCircleOutline as CheckCircleOutlineIcon, HighlightOff as HighlightOffIcon } from '@mui/icons-material'\nimport { FlexBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useMemo } from 'react'\n\ninterface PhraseHeaderBox extends FlexBoxProps, WithChildren {\n conditional?: boolean | null\n}\n\nexport const PhraseHeaderBox: React.FC<PhraseHeaderBox> = ({ children, conditional, ...props }) => {\n const state = useMemo(() => {\n switch (conditional) {\n case true: {\n return 'success'\n }\n case false: {\n return 'error'\n }\n default: {\n return null\n }\n }\n }, [conditional])\n\n const Icon = useMemo(() => {\n switch (state) {\n case 'success': {\n return <CheckCircleOutlineIcon fontSize=\"small\" color=\"success\" />\n }\n case 'error': {\n return <HighlightOffIcon fontSize=\"small\" color=\"error\" />\n }\n default: {\n return null\n }\n }\n }, [state])\n\n return (\n <FlexRow justifyContent={'start'} columnGap={1} {...props}>\n {Icon}\n {children}\n </FlexRow>\n )\n}\n","import { Button, DialogActions } from '@mui/material'\n\nimport { useSeedPhrase } from '../../../../../contexts'\n\nexport const PhraseDialogActions = () => {\n const { handleClear, handleGenerate, overwriteWarning } = useSeedPhrase()\n return (\n <DialogActions sx={{ justifyContent: 'center' }}>\n <Button disabled={overwriteWarning} variant=\"outlined\" onClick={handleGenerate}>\n Generate\n </Button>\n <Button variant=\"outlined\" onClick={handleClear}>\n Clear\n </Button>\n </DialogActions>\n )\n}\n","import { Chip, FormControl, FormLabel, StandardTextFieldProps, TextField } from '@mui/material'\nimport { useState } from 'react'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { InvalidPhraseTypography, PhraseHeaderBox } from './validation-messages'\n\nexport interface SavedPhraseTextFieldProps extends StandardTextFieldProps {\n fullWidth?: boolean\n showPhraseHeader?: boolean\n}\n\nexport const SavedPhraseTextField: React.FC<SavedPhraseTextFieldProps> = ({ fullWidth, showPhraseHeader, ...props }) => {\n const { validSeedPhrase, seedPhrase } = useSeedPhrase()\n\n const [visible, setVisible] = useState(false)\n\n return (\n <FormControl fullWidth={fullWidth} size=\"small\" sx={{ display: 'flex', flexDirection: 'column', rowGap: 1 }}>\n <Chip label={visible ? 'Hide Saved Seed Phrase' : 'Reveal Saved Seed Phrase'} onClick={() => setVisible(!visible)} sx={{ alignSelf: 'center'}} />\n {visible ?\n <>\n {showPhraseHeader ?\n <FormLabel>\n <PhraseHeaderBox conditional={validSeedPhrase}>Saved Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n : null}\n <TextField\n defaultValue={seedPhrase}\n disabled\n error={validSeedPhrase === false}\n helperText={validSeedPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={Number.POSITIVE_INFINITY}\n multiline\n {...props}\n />\n </>\n : null}\n </FormControl>\n )\n}\n","import { Alert, Button } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { useSeedPhrase } from '../../../../contexts'\n\nexport const OverwriteWarning = () => {\n const { handleCancelOverwrite, handleSave } = useSeedPhrase()\n return (\n <Alert\n variant=\"outlined\"\n severity=\"warning\"\n action={\n <FlexRow sx={{ columnGap: 1 }}>\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={handleSave}>\n Overwrite\n </Button>\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={handleCancelOverwrite}>\n Cancel\n </Button>\n </FlexRow>\n }\n >\n Are you sure you want to overwrite existing seed phrase? This action cannot be undone.\n </Alert>\n )\n}\n","import { Dialog, DialogContent, DialogProps, DialogTitle, FormLabel } from '@mui/material'\n\nimport { SeedPhraseProvider, useSeedPhrase } from '../../../contexts'\nimport { SeedPhraseIconButton } from '../_shared'\nimport { DialogActionButtons, NewPhraseTextField, OverwriteWarning, PhraseDialogActions, PhraseHeaderBox, SavedPhraseTextField } from './components'\n\nexport interface SeedPhraseDialogProps extends DialogProps {\n changeSeedPhrase?: (value: string) => void\n seedPhrase?: string\n}\n\nexport const SeedPhraseDialog: React.FC<SeedPhraseDialogProps> = ({ changeSeedPhrase, seedPhrase, ...props }) => {\n return (\n <SeedPhraseProvider\n seedPhrase={seedPhrase}\n handleChangeSeedPhrase={changeSeedPhrase}\n open={props.open}\n saveCallback={() => props.onClose?.({}, 'escapeKeyDown')}\n >\n <SeedPhraseDialogInner {...props} />\n </SeedPhraseProvider>\n )\n}\n\nexport const SeedPhraseDialogInner: React.FC<SeedPhraseDialogProps> = (props) => {\n const { overwriteWarning, seedPhrase, validPhrase } = useSeedPhrase()\n\n return (\n <Dialog aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\" fullWidth maxWidth={'sm'} {...props}>\n <DialogTitle id=\"alert-dialog-title\">\n Update Your Seed Phrase <SeedPhraseIconButton />\n </DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', rowGap: 2 }}>\n <NewPhraseTextField>\n <FormLabel>\n <PhraseHeaderBox conditional={validPhrase}>New Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n </NewPhraseTextField>\n <PhraseDialogActions />\n {seedPhrase ?\n <SavedPhraseTextField />\n : null}\n {overwriteWarning ?\n <OverwriteWarning />\n : null}\n </DialogContent>\n <DialogActionButtons onClose={props.onClose} />\n </Dialog>\n )\n}\n","import { Cancel as CancelIcon, RadioButtonChecked as RadioButtonCheckedIcon } from '@mui/icons-material'\nimport { Button, ButtonGroup, TableCell, TableRow, TableRowProps } from '@mui/material'\nimport { useState } from 'react'\n\nimport { SeedPhraseIconButton } from '../_shared'\nimport { SeedPhraseDialog } from '../dialog'\n\nexport interface SeedPhraseTableRowProps extends TableRowProps {\n changeSeedPhrase?: (seedPhrase: string) => void\n seedPhrase?: string\n}\n\nexport const SeedPhraseTableRow: React.FC<SeedPhraseTableRowProps> = ({ changeSeedPhrase, seedPhrase, ...props }) => {\n const [open, setOpen] = useState(false)\n\n const handleOpen = () => {\n setOpen(true)\n }\n return (\n <TableRow {...props}>\n <TableCell>\n Seed Phrase <SeedPhraseIconButton />\n </TableCell>\n <TableCell align=\"center\">\n {seedPhrase ?\n <RadioButtonCheckedIcon color=\"success\" />\n : <CancelIcon color=\"error\" />}\n </TableCell>\n <TableCell>\n <SeedPhraseDialog changeSeedPhrase={changeSeedPhrase} open={open} onClose={() => setOpen(false)} seedPhrase={seedPhrase} />\n <ButtonGroup fullWidth>\n <Button variant=\"contained\" size=\"small\" onClick={handleOpen}>\n Update\n </Button>\n </ButtonGroup>\n </TableCell>\n </TableRow>\n )\n}\n","import { EthAddress } from '@xylabs/eth-address'\nimport { EthAccountButton } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { NumberStatus } from '@xylabs/react-number-status'\nimport { useNetwork } from '@xyo-network/react-network'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { useAccount } from '../../hooks'\n\nexport interface WalletAccountDetailsProps extends FlexBoxProps {\n account?: WalletInstance\n exploreUrl?: string\n}\n\nexport const WalletAccountDetails: React.FC<WalletAccountDetailsProps> = ({ exploreUrl = 'https://explore.xyo.network', account, ...props }) => {\n const [accountToUse] = useAccount({ account })\n const { network } = useNetwork()\n const exploreAddressUrl = `${exploreUrl}/recent?account=${accountToUse?.address}&network=${network?.name ?? 'main'}`\n\n return (\n <FlexCol {...props}>\n <EthAccountButton address={EthAddress.fromString(accountToUse?.address)} />\n <FlexRow gap={1}>\n <NumberStatus rounded title=\"Tokens\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.tokens`} target=\"_blank\" />\n <NumberStatus rounded title=\"NFTs\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.nfts`} target=\"_blank\" />\n <NumberStatus rounded title=\"Signatures\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.signatures`} target=\"_blank\" />\n <NumberStatus rounded title=\"Signins\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.signins`} target=\"_blank\" />\n </FlexRow>\n </FlexCol>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useState } from 'react'\n\nimport { useRootWallet, useWalletContext, useWalletProvided } from '../contexts'\n\nexport interface AccountHookParams {\n account?: AccountInstance\n index?: number\n required?: boolean\n wallet?: WalletInstance\n}\n\nexport const useAccount = ({ wallet, account, index, required = false }: AccountHookParams = {}): [\n AccountInstance | null | undefined,\n Error | undefined,\n] => {\n const walletContextProvided = useWalletProvided()\n const [validationError, setValidationError] = useState<Error>()\n if (wallet && account && !validationError) {\n setValidationError(new Error('useAccount can not have both a wallet and an account in the parameters'))\n }\n\n if (index && account && !validationError) {\n setValidationError(new Error('useAccount can not have both a index and an account in the parameters'))\n }\n\n const [error, setError] = useState<Error>()\n const [rootWallet] = useRootWallet(!wallet && required)\n const { activeAccountIndex } = useWalletContext(false)\n const [activeAccount] = usePromise(async () => {\n try {\n if (!validationError) {\n if (wallet) {\n return await wallet?.derivePath?.(`${index ?? 0}'\\0`)\n } else if (rootWallet) {\n return await rootWallet?.derivePath?.(`${index ?? activeAccountIndex ?? 0}'\\0`)\n }\n }\n } catch (ex) {\n const error = ex as Error\n console.error(error.message)\n setError(error)\n }\n }, [index, wallet, rootWallet, activeAccountIndex, validationError])\n if (validationError && !error) {\n console.error(validationError.message)\n setError(validationError)\n }\n\n return [\n error ? undefined\n : account ?? activeAccount ?? walletContextProvided ? null\n : undefined,\n error,\n ]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useState } from 'react'\n\nimport { useSelectedWalletAccount, useWalletContext } from '../contexts'\n\nexport interface WalletHookParams {\n mnemonic?: string\n path?: string\n required?: boolean\n seed?: Uint8Array | string\n wallet?: WalletInstance | null\n}\n\nexport const useWallet = ({ mnemonic, wallet, path, required = false, seed }: WalletHookParams = {}): [\n WalletInstance | null | undefined,\n Error | undefined,\n] => {\n const walletContextProvided = useWalletContext(false)\n const [error, setError] = useState<Error>()\n const [contextAccount] = useSelectedWalletAccount(!wallet && required)\n const [activeAccount] = usePromise(async () => {\n try {\n const newAccount = await (() => {\n if (wallet) {\n return wallet\n } else if (mnemonic) {\n return HDWallet.fromPhrase(mnemonic)\n } else if (seed) {\n return HDWallet.fromSeed(seed)\n }\n return contextAccount\n })()\n\n return path ? newAccount?.derivePath?.(path) : newAccount ?? wallet\n } catch (ex) {\n setError(ex as Error)\n }\n }, [mnemonic, contextAccount, seed, path, wallet])\n return [activeAccount ?? (walletContextProvided ? null : activeAccount), error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { useWalletContext } from '../contexts'\nimport { useWallet } from './useWallet'\n\nexport interface WalletsHookParams {\n paths: string[]\n wallet?: WalletInstance | null\n}\n\nexport const useWallets = ({ wallet, paths }: WalletsHookParams): [WalletInstance[] | null | undefined, Error | undefined] => {\n const walletContextProvided = useWalletContext(false)\n const [foundWallet] = useWallet({ wallet })\n const [wallets, error] = usePromise(\n async () => (foundWallet ? await Promise.all(paths.map((path) => foundWallet.derivePath(path))) : undefined),\n [foundWallet, paths],\n )\n return [wallets ?? (walletContextProvided ? null : wallets), error]\n}\n","import { State as PromiseState, usePromise } from '@xylabs/react-promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { Mutex } from 'async-mutex'\n\nlet globalWrapperWallet: WalletInstance | undefined\nconst globalWrapperWalletMutex = new Mutex()\n\nexport const useWrapperAccount = (\n account?: AccountInstance | null,\n): [AccountInstance | null | undefined, Error | undefined, PromiseState | undefined] => {\n return usePromise(async () => {\n return await globalWrapperWalletMutex.runExclusive(async () => {\n //if we are expecting to receive a wallet or did receive on, return the override account\n if (account !== undefined) {\n return account\n }\n\n if (globalWrapperWallet) {\n return globalWrapperWallet\n }\n\n try {\n globalWrapperWallet = await HDWallet.random()\n console.log(`Global Wrapper Wallet Creation Success: ${globalWrapperWallet.address}`)\n } catch (ex) {\n const error = ex as Error\n console.error(`Global Wrapper Wallet Creation Failed: ${error.message}`)\n }\n return globalWrapperWallet\n })\n }, [account])\n}\n","import { CircularProgress, MenuItem, SelectProps } from '@mui/material'\nimport { SelectEx } from '@xylabs/react-select'\nimport { AddressRenderRowBox, AddressRenderRowBoxProps } from '@xyo-network/react-address-render'\n\nimport { useWalletContext } from '../../contexts'\nimport { useWallet } from '../../hooks'\n\ntype SharedAddressRenderRowBoxProps = Pick<AddressRenderRowBoxProps, 'iconOnly' | 'iconSize' | 'icons' | 'showFavorite'>\n\nexport type WalletAccountSelectProps = SharedAddressRenderRowBoxProps &\n Omit<SelectProps<number>, 'variant'> &\n Partial<SelectProps<number>> & {\n addressNames?: Record<string, string | undefined>\n maxAccounts?: number\n }\n\nconst arrayRange = (length: number, start = 0) => {\n return [...Array.from({ length }).keys()].map((x) => x + start)\n}\n\nexport const WalletAccountSelect: React.FC<WalletAccountSelectProps> = ({\n addressNames = {},\n iconOnly,\n iconSize = 24,\n icons,\n maxAccounts = 1,\n showFavorite = false,\n size,\n variant = 'outlined',\n ...props\n}) => {\n const { activeAccountIndex = 0, setActiveAccountIndex, rootWallet } = useWalletContext()\n const disabled = !rootWallet || activeAccountIndex === undefined\n\n return (\n <>\n {rootWallet ?\n <SelectEx\n margin=\"dense\"\n disabled={disabled}\n renderValue={(selectedAccountIndex) => {\n const Item: React.FC = () => {\n const [selectedAccount] = useWallet({ path: selectedAccountIndex.toString(), wallet: rootWallet })\n const customName = selectedAccount ? addressNames[selectedAccount.address] : undefined\n const favorite = !!selectedAccount && selectedAccount.address in addressNames\n return (\n <MenuItem value={selectedAccountIndex} sx={{ minHeight: 0, paddingBottom: 0, paddingTop: 0 }}>\n <AddressRenderRowBox\n disableSharedRef={true}\n flexGrow={1}\n address={selectedAccount?.address}\n iconOnly={iconOnly}\n iconSize={iconSize}\n icons={icons}\n name={customName}\n favorite={favorite}\n showFavorite={showFavorite}\n />\n </MenuItem>\n )\n }\n return <Item />\n }}\n value={activeAccountIndex}\n onChange={(event) => setActiveAccountIndex?.(Number.parseInt(`${event.target.value}`))}\n size={size}\n variant={variant}\n {...props}\n >\n {arrayRange(maxAccounts).map((index) => {\n const Item: React.FC = () => {\n const [account] = useWallet({ path: index.toString(), wallet: rootWallet })\n const customName = account ? addressNames[account.address] : undefined\n const favorite = !!account && account.address in addressNames\n return (\n <MenuItem key={account?.address} value={index} sx={{ minHeight: 0, paddingBottom: 0, paddingTop: 0 }}>\n <AddressRenderRowBox\n disableSharedRef={true}\n flexGrow={1}\n address={account?.address}\n favorite={favorite}\n iconOnly={iconOnly}\n iconSize={iconSize}\n icons={icons}\n name={customName}\n showFavorite={showFavorite}\n />\n </MenuItem>\n )\n }\n\n return <Item key={index} />\n })}\n </SelectEx>\n : <CircularProgress size={24} />}\n </>\n )\n}\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nimport { WalletAccountSelect } from './Select'\n\nexport interface WalletAccountSelectBarProps extends FlexBoxProps {\n addressNames?: Record<string, string | undefined>\n iconOnly?: boolean\n iconSize?: number\n icons?: boolean\n maxAccounts?: number\n showFavorite?: boolean\n size?: 'small' | 'medium'\n}\n\nexport const WalletAccountSelectBar: React.FC<WalletAccountSelectBarProps> = ({\n addressNames = {},\n iconOnly,\n iconSize,\n icons,\n maxAccounts = 1,\n showFavorite = false,\n size = 'small',\n ...props\n}) => {\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <WalletAccountSelect\n addressNames={addressNames}\n fullWidth\n showFavorite={showFavorite}\n iconSize={iconSize}\n iconOnly={iconOnly}\n icons={icons}\n maxAccounts={maxAccounts}\n size={size ?? 'small'}\n variant=\"outlined\"\n />\n </FlexCol>\n )\n}\n"],"mappings":"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","names":["src_exports","__export","DefaultSeedPhrase","DialogActionButtons","InvalidPhraseTypography","MaxAccountsTableRow","NewPhraseTextField","OverwriteWarning","PhraseDialogActions","PhraseHeaderBox","SavedPhraseTextField","SeedPhraseContext","SeedPhraseDialog","SeedPhraseDialogInner","SeedPhraseIconButton","SeedPhraseProvider","SeedPhraseTableRow","WalletAccountDetails","WalletAccountSelect","WalletAccountSelectBar","WalletContext","WalletProvider","colorParser","useAccount","useIndexedWalletFromContext","useRootWallet","useSeedPhrase","useSelectedWalletAccount","useWallet","useWalletContext","useWalletProvided","useWallets","useWrapperAccount","__toCommonJS","import_material","import_react_button","import_react","import_material","import_jsx_runtime","OutOfBoundsSnackBar","activeAccountIndex","desiredMaximumAccounts","setShowSnackBar","showSnackBar","import_jsx_runtime","MaxAccountsTableRow","activeAccountIndex","changeMaxAccounts","maxAccounts","desiredMaximumAccounts","setDesiredMaximumAccounts","showSnackBar","setShowSnackBar","handleChangeMaxAccounts","change","validMaximumAccounts","maxAccountsWithinRange","OutOfBoundsSnackBar","import_icons_material","import_material","import_react","import_jsx_runtime","SeedPhraseIconButton","props","open","setOpen","onClose","HelpOutlineIcon","import_material","import_bip39","import_english","import_react","import_jsx_runtime","DefaultSeedPhrase","changeSeedPhrase","children","hideDefaultSeedPhraseMessage","seedPhrase","showSnackBar","setShowSnackBar","mnemonic","import_material","import_react_shared","SeedPhraseContext","import_bip39","import_english","import_react","import_jsx_runtime","validate","passedPhrase","SeedPhraseProvider","children","defaultPhrase","handleChangeSeedPhrase","saveCallback","seedPhrase","open","phrase","setPhrase","overwriteWarning","setOverwriteWarning","handleGenerate","mnemonic","handleCancelOverwrite","handleClear","handleSave","validSeedPhrase","validPhrase","SeedPhraseContext","import_react_shared","useSeedPhrase","SeedPhraseContext","import_react_shared","WalletContext","import_react_promise","import_react","import_jsx_runtime","WalletProvider","children","defaultActiveAccountIndex","rootWallet","props","activeAccountIndex","setActiveAccountIndex","activeAccount","WalletContext","import_react_promise","import_react_shared","useWalletContext","required","WalletContext","useWalletProvided","useRootWallet","rootWallet","useIndexedWalletFromContext","index","wallet","useSelectedWalletAccount","activeAccountIndex","account","import_jsx_runtime","DialogActionButtons","onClose","props","handleSave","setPhrase","useSeedPhrase","e","import_material","colorParser","conditional","import_material","import_jsx_runtime","InvalidPhraseTypography","props","import_icons_material","import_react_flexbox","import_react","import_jsx_runtime","PhraseHeaderBox","children","conditional","props","state","Icon","CheckCircleOutlineIcon","HighlightOffIcon","import_jsx_runtime","NewPhraseTextField","children","disableColor","props","phrase","setPhrase","validPhrase","useSeedPhrase","colorParser","InvalidPhraseTypography","e","import_material","import_jsx_runtime","PhraseDialogActions","handleClear","handleGenerate","overwriteWarning","useSeedPhrase","import_material","import_react","import_jsx_runtime","SavedPhraseTextField","fullWidth","showPhraseHeader","props","validSeedPhrase","seedPhrase","useSeedPhrase","visible","setVisible","PhraseHeaderBox","InvalidPhraseTypography","import_material","import_react_flexbox","import_jsx_runtime","OverwriteWarning","handleCancelOverwrite","handleSave","useSeedPhrase","import_material","import_jsx_runtime","SeedPhraseDialog","changeSeedPhrase","seedPhrase","props","SeedPhraseProvider","SeedPhraseDialogInner","overwriteWarning","validPhrase","useSeedPhrase","SeedPhraseIconButton","NewPhraseTextField","PhraseHeaderBox","PhraseDialogActions","SavedPhraseTextField","OverwriteWarning","DialogActionButtons","import_icons_material","import_material","import_react","import_jsx_runtime","SeedPhraseTableRow","changeSeedPhrase","seedPhrase","props","open","setOpen","SeedPhraseIconButton","RadioButtonCheckedIcon","CancelIcon","SeedPhraseDialog","import_eth_address","import_react_crypto","import_react_flexbox","import_react_number_status","import_react_network","import_react_promise","import_react","useAccount","wallet","account","index","required","walletContextProvided","useWalletProvided","validationError","setValidationError","error","setError","rootWallet","useRootWallet","activeAccountIndex","useWalletContext","activeAccount","ex","import_react_promise","import_account","import_react","useWallet","mnemonic","wallet","path","required","seed","walletContextProvided","useWalletContext","error","setError","contextAccount","useSelectedWalletAccount","activeAccount","newAccount","ex","import_react_promise","useWallets","wallet","paths","walletContextProvided","useWalletContext","foundWallet","useWallet","wallets","error","path","import_react_promise","import_account","import_async_mutex","globalWrapperWallet","globalWrapperWalletMutex","useWrapperAccount","account","ex","import_jsx_runtime","WalletAccountDetails","exploreUrl","account","props","accountToUse","useAccount","network","exploreAddressUrl","import_material","import_react_select","import_react_address_render","import_jsx_runtime","arrayRange","length","start","x","WalletAccountSelect","addressNames","iconOnly","iconSize","icons","maxAccounts","showFavorite","size","variant","props","activeAccountIndex","setActiveAccountIndex","rootWallet","useWalletContext","selectedAccountIndex","selectedAccount","useWallet","customName","favorite","event","index","account","import_react_flexbox","import_jsx_runtime","WalletAccountSelectBar","addressNames","iconOnly","iconSize","icons","maxAccounts","showFavorite","size","props","WalletAccountSelect"]}
@@ -1,2 +1,2 @@
1
- import{ButtonGroup as De,TableCell as z,TableRow as Ee,Typography as Oe}from"@mui/material";import{ButtonEx as X}from"@xylabs/react-button";import{useState as J}from"react";import{Alert as ye,AlertTitle as Te,Snackbar as Fe}from"@mui/material";import{jsx as K,jsxs as Re}from"react/jsx-runtime";var q=({activeAccountIndex:e,desiredMaximumAccounts:t,setShowSnackBar:o,showSnackBar:r})=>K(Fe,{anchorOrigin:{horizontal:"center",vertical:"top"},autoHideDuration:5e3,onClose:()=>o?.(!1),open:r,children:Re(ye,{severity:"error",onClose:()=>o?.(!1),children:[K(Te,{children:"Maximum Accounts Error"}),"Your currently selected account number (",e===void 0?"":e+1,") cannot be greater than the desired Maximum Accounts (",t,")."]})});import{jsx as v,jsxs as N}from"react/jsx-runtime";var Bo=({activeAccountIndex:e,changeMaxAccounts:t,maxAccounts:o})=>{let[r,a]=J(),[n,s]=J(!1),i=c=>{if(o!==void 0&&e!==void 0)switch(c){case"decrease":{let l=o-1,u=l>0,m=e+1<=l;u&&m&&t?.(l),m||s(!0),a(l);return}case"increase":{t?.(o+1);return}default:console.error(c,"is not a recognized value")}else throw new Error("Max Accounts is unset and needs a default")};return N(Ee,{children:[v(z,{children:"Maximum Accounts"}),v(z,{align:"center",children:v(Oe,{variant:"caption",children:o})}),N(z,{align:"center",children:[N(De,{children:[v(X,{onClick:()=>i("decrease"),variant:"contained",size:"small",children:"-"}),v(X,{onClick:()=>i("increase"),variant:"contained",size:"small",children:"+"})]}),v(q,{desiredMaximumAccounts:r,activeAccountIndex:e,setShowSnackBar:s,showSnackBar:n})]})]})};import{HelpOutline as Me}from"@mui/icons-material";import{Button as He,Dialog as ze,DialogActions as Ne,DialogContent as Ge,DialogTitle as Le,IconButton as $e,Link as _e,List as Ue,ListItem as y,Typography as Ve}from"@mui/material";import{useState as Ye}from"react";import{Fragment as Ke,jsx as P,jsxs as b}from"react/jsx-runtime";var T=e=>{let[t,o]=Ye(!1),r=()=>o(!1);return b(Ke,{children:[P($e,{onClick:()=>o(!0),...e,children:P(Me,{fontSize:"small"})}),b(ze,{open:t,children:[P(Le,{children:"Understanding your Seed Phrase"}),b(Ge,{children:[b(Ve,{children:["Your Seed Phrase should adhere to the"," ",P(_e,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 specification"})," ","and is used to generate accounts which identify your data on the XYO Network."]}),b(Ue,{children:[P(y,{children:"Do not share this phrase with anyone."}),P(y,{children:"Do not save it to a public computer."}),P(y,{children:"Do not use a existing phrase from another wallet (i.e. Metamask)."}),P(y,{children:"Do not use before copying it down somewhere safe."})]})]}),P(Ne,{children:P(He,{onClick:r,variant:"outlined",children:"OK"})})]})]})};import{Alert as qe,AlertTitle as Xe,Snackbar as Je}from"@mui/material";import{generateMnemonic as Qe}from"@scure/bip39";import{wordlist as Ze}from"@scure/bip39/wordlists/english";import{useEffect as je,useState as et}from"react";import{Fragment as tt,jsx as Q,jsxs as Z}from"react/jsx-runtime";var No=({changeSeedPhrase:e,children:t,hideDefaultSeedPhraseMessage:o,seedPhrase:r})=>{let[a,n]=et(!1);return je(()=>{if(!r){let s=Qe(Ze,256);e?.(s),n(!0)}},[e,r]),Z(tt,{children:[o?null:Q(Je,{open:a,autoHideDuration:5e3,onClose:()=>n(!1),anchorOrigin:{horizontal:"center",vertical:"top"},children:Z(qe,{severity:"success",children:[Q(Xe,{children:"Default Seed Phrase Generated"}),"Go to application settings to save it."]})}),t]})};import{Button as se,DialogActions as Pt}from"@mui/material";import{createContextEx as ot}from"@xyo-network/react-shared";var F=ot();import{generateMnemonic as rt,validateMnemonic as nt}from"@scure/bip39";import{wordlist as te}from"@scure/bip39/wordlists/english";import{useCallback as R,useEffect as G,useMemo as j,useState as ee}from"react";import{jsx as at}from"react/jsx-runtime";var L=e=>e?nt(e,te):null,oe=({children:e,defaultPhrase:t,handleChangeSeedPhrase:o,saveCallback:r,seedPhrase:a,open:n})=>{let[s,i]=ee(),[c,l]=ee(!1);G(()=>{i(t)},[t]),G(()=>{(a||n)&&i?.(a??"")},[a,n,i]);let u=R(()=>{let C=rt(te,256);i?.(C),l?.(!1)},[]),m=R(()=>{l?.(!1)},[]),k=R(()=>{i?.(""),l?.(!1)},[]),p=R(()=>{!c&&a&&a!==s?l?.(!0):(o?.(s??""),r?.())},[o,c,s,r,a]);G(()=>{n||m()},[m,n]);let M=j(()=>L?.(a),[a]),d=j(()=>L?.(s),[s]);return at(F.Provider,{value:{handleCancelOverwrite:m,handleChangeSeedPhrase:o,handleClear:k,handleGenerate:u,handleSave:p,overwriteWarning:c,phrase:s,provided:!0,seedPhrase:a,setOverwriteWarning:l,setPhrase:i,validPhrase:d,validSeedPhrase:M,validate:L},children:e})};import{useContextEx as st}from"@xyo-network/react-shared";var f=()=>st(F,"SeedPhrase",!0);import{createContextEx as lt}from"@xyo-network/react-shared";var w=lt();import{usePromise as it}from"@xylabs/react-promise";import{useEffect as ct,useState as dt}from"react";import{jsx as ut}from"react/jsx-runtime";var nr=({children:e,defaultActiveAccountIndex:t=0,rootWallet:o=null,...r})=>{let[a,n]=dt(t);ct(()=>{t!==void 0&&n(t)},[t]);let[s=null]=it(async()=>await o?.derivePath(a.toString()),[a,o]);return ut(w.Provider,{value:{activeAccount:s,activeAccountIndex:a,provided:!0,rootWallet:o,setActiveAccountIndex:n},...r,children:e})};import{usePromise as mt}from"@xylabs/react-promise";import{useContextEx as pt,useProvided as ft}from"@xyo-network/react-shared";var h=(e=!0)=>pt(w,"Wallet",e),re=()=>ft(w),ne=(e=!0)=>{let{rootWallet:t}=h(e);return[t,void 0]},ht=(e,t=!0)=>{let{rootWallet:o}=h(t),[r]=mt(async()=>await o?.derivePath(e.toString())??o,[o,e]);return[r,void 0]},ae=(e=!0)=>{let{activeAccountIndex:t}=h(e),[o]=ht(t??0,e);return t===void 0&&o===null?[null,void 0]:[o,void 0]};import{jsx as le,jsxs as xt}from"react/jsx-runtime";var ie=({onClose:e,...t})=>{let{handleSave:o,setPhrase:r}=f();return xt(Pt,{...t,children:[le(se,{variant:"outlined",onClick:n=>{r?.(""),e?.(n,"escapeKeyDown")},children:"Cancel"}),le(se,{variant:"outlined",onClick:o,children:"Save"})]})};import{FormControl as Bt,TextField as It}from"@mui/material";var ce=e=>{switch(e){case!0:return"success";case!1:return"error";default:return}};import{Link as St,Typography as gt}from"@mui/material";import{jsx as vt,jsxs as Ct}from"react/jsx-runtime";var D=e=>Ct(gt,{variant:"caption",color:"error",...e,children:["Invalid seed phrase. See -"," ",vt(St,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 Proposal"})]});import{CheckCircleOutline as bt,HighlightOff as wt}from"@mui/icons-material";import{FlexRow as Wt}from"@xylabs/react-flexbox";import{useMemo as de}from"react";import{jsx as ue,jsxs as At}from"react/jsx-runtime";var E=({children:e,conditional:t,...o})=>{let r=de(()=>{switch(t){case!0:return"success";case!1:return"error";default:return null}},[t]),a=de(()=>{switch(r){case"success":return ue(bt,{fontSize:"small",color:"success"});case"error":return ue(wt,{fontSize:"small",color:"error"});default:return null}},[r]);return At(Wt,{justifyContent:"start",columnGap:1,...o,children:[a,e]})};import{Fragment as yt,jsx as $,jsxs as kt}from"react/jsx-runtime";var me=({children:e,disableColor:t,...o})=>{let{phrase:r,setPhrase:a,validPhrase:n}=f();return $(yt,{children:kt(Bt,{fullWidth:!0,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[e,$(It,{focused:!0,color:t?void 0:ce(n),error:n===!1,helperText:n===!1?$(D,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,onChange:s=>a?.(s.target.value),value:r,...o})]})})};import{Button as pe,DialogActions as Tt}from"@mui/material";import{jsx as fe,jsxs as Ft}from"react/jsx-runtime";var he=()=>{let{handleClear:e,handleGenerate:t,overwriteWarning:o}=f();return Ft(Tt,{sx:{justifyContent:"center"},children:[fe(pe,{disabled:o,variant:"outlined",onClick:t,children:"Generate"}),fe(pe,{variant:"outlined",onClick:e,children:"Clear"})]})};import{Chip as Rt,FormControl as Dt,FormLabel as Et,TextField as Ot}from"@mui/material";import{useState as Mt}from"react";import{Fragment as Ht,jsx as W,jsxs as Pe}from"react/jsx-runtime";var xe=({fullWidth:e,showPhraseHeader:t,...o})=>{let{validSeedPhrase:r,seedPhrase:a}=f(),[n,s]=Mt(!1);return Pe(Dt,{fullWidth:e,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[W(Rt,{label:n?"Hide Saved Seed Phrase":"Reveal Saved Seed Phrase",onClick:()=>s(!n)}),n?Pe(Ht,{children:[t?W(Et,{children:W(E,{conditional:r,children:"Saved Seed Phrase"})}):null,W(Ot,{defaultValue:a,disabled:!0,error:r===!1,helperText:r===!1?W(D,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,...o})]}):null]})};import{Alert as zt,Button as Se}from"@mui/material";import{FlexRow as Nt}from"@xylabs/react-flexbox";import{jsx as _,jsxs as Gt}from"react/jsx-runtime";var ge=()=>{let{handleCancelOverwrite:e,handleSave:t}=f();return _(zt,{variant:"outlined",severity:"warning",action:Gt(Nt,{sx:{columnGap:1},children:[_(Se,{variant:"outlined",color:"inherit",size:"small",onClick:t,children:"Overwrite"}),_(Se,{variant:"outlined",color:"inherit",size:"small",onClick:e,children:"Cancel"})]}),children:"Are you sure you want to overwrite existing seed phrase? This action cannot be undone."})};import{Dialog as Lt,DialogContent as $t,DialogTitle as _t,FormLabel as Ut}from"@mui/material";import{jsx as x,jsxs as U}from"react/jsx-runtime";var ve=({changeSeedPhrase:e,seedPhrase:t,...o})=>x(oe,{seedPhrase:t,handleChangeSeedPhrase:e,open:o.open,saveCallback:()=>o.onClose?.({},"escapeKeyDown"),children:x(Vt,{...o})}),Vt=e=>{let{overwriteWarning:t,seedPhrase:o,validPhrase:r}=f();return U(Lt,{"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",fullWidth:!0,maxWidth:"sm",...e,children:[U(_t,{id:"alert-dialog-title",children:["Update Your Seed Phrase ",x(T,{})]}),U($t,{sx:{display:"flex",flexDirection:"column",rowGap:2},children:[x(me,{children:x(Ut,{children:x(E,{conditional:r,children:"New Seed Phrase"})})}),x(he,{}),o?x(xe,{}):null,t?x(ge,{}):null]}),x(ie,{onClose:e.onClose})]})};import{Cancel as Yt,RadioButtonChecked as Kt}from"@mui/icons-material";import{Button as qt,ButtonGroup as Xt,TableCell as V,TableRow as Jt}from"@mui/material";import{useState as Qt}from"react";import{jsx as g,jsxs as Y}from"react/jsx-runtime";var dn=({changeSeedPhrase:e,seedPhrase:t,...o})=>{let[r,a]=Qt(!1);return Y(Jt,{...o,children:[Y(V,{children:["Seed Phrase ",g(T,{})]}),g(V,{align:"center",children:t?g(Kt,{color:"success"}):g(Yt,{color:"error"})}),Y(V,{children:[g(ve,{changeSeedPhrase:e,open:r,onClose:()=>a(!1),seedPhrase:t}),g(Xt,{fullWidth:!0,children:g(qt,{variant:"contained",size:"small",onClick:()=>{a(!0)},children:"Update"})})]})]})};import{EthAddress as so}from"@xylabs/eth-address";import{EthAccountButton as lo}from"@xylabs/react-crypto";import{FlexCol as io,FlexRow as co}from"@xylabs/react-flexbox";import{NumberStatus as O}from"@xylabs/react-number-status";import{useNetwork as uo}from"@xyo-network/react-network";import{usePromise as Zt}from"@xylabs/react-promise";import{useState as Ce}from"react";var be=({wallet:e,account:t,index:o,required:r=!1}={})=>{let a=re(),[n,s]=Ce();e&&t&&!n&&s(new Error("useAccount can not have both a wallet and an account in the parameters")),o&&t&&!n&&s(new Error("useAccount can not have both a index and an account in the parameters"));let[i,c]=Ce(),[l]=ne(!e&&r),{activeAccountIndex:u}=h(!1),[m]=Zt(async()=>{try{if(!n){if(e)return await e?.derivePath?.(`${o??0}'\0`);if(l)return await l?.derivePath?.(`${o??u??0}'\0`)}}catch(k){let p=k;console.error(p.message),c(p)}},[o,e,l,u,n]);return n&&!i&&(console.error(n.message),c(n)),[i?void 0:t??m??a?null:void 0,i]};import{usePromise as jt}from"@xylabs/react-promise";import{HDWallet as we}from"@xyo-network/account";import{useState as eo}from"react";var A=({mnemonic:e,wallet:t,path:o,required:r=!1,seed:a}={})=>{let n=h(!1),[s,i]=eo(),[c]=ae(!t&&r),[l]=jt(async()=>{try{let u=await(t||(e?we.fromPhrase(e):a?we.fromSeed(a):c));return o?u?.derivePath?.(o):u??t}catch(u){i(u)}},[e,c,a,o,t]);return[l??(n?null:l),s]};import{usePromise as to}from"@xylabs/react-promise";var An=({wallet:e,paths:t})=>{let o=h(!1),[r]=A({wallet:e}),[a,n]=to(async()=>r?await Promise.all(t.map(s=>r.derivePath(s))):void 0,[r,t]);return[a??(o?null:a),n]};import{usePromise as oo}from"@xylabs/react-promise";import{HDWallet as ro}from"@xyo-network/account";import{Mutex as no}from"async-mutex";var B,ao=new no,Fn=e=>oo(async()=>await ao.runExclusive(async()=>{if(e!==void 0)return e;if(B)return B;try{B=await ro.random(),console.log(`Global Wrapper Wallet Creation Success: ${B.address}`)}catch(t){console.error(`Global Wrapper Wallet Creation Failed: ${t.message}`)}return B}),[e]);import{jsx as I,jsxs as We}from"react/jsx-runtime";var Gn=({exploreUrl:e="https://explore.xyo.network",account:t,...o})=>{let[r]=be({account:t}),{network:a}=uo(),n=`${e}/recent?account=${r?.address}&network=${a?.name??"main"}`;return We(io,{...o,children:[I(lo,{address:so.fromString(r?.address)}),We(co,{gap:1,children:[I(O,{rounded:!0,title:"Tokens",value:0,to:`${n}&schema=network.xyo.account.tokens`,target:"_blank"}),I(O,{rounded:!0,title:"NFTs",value:0,to:`${n}&schema=network.xyo.account.nfts`,target:"_blank"}),I(O,{rounded:!0,title:"Signatures",value:0,to:`${n}&schema=network.xyo.account.signatures`,target:"_blank"}),I(O,{rounded:!0,title:"Signins",value:0,to:`${n}&schema=network.xyo.account.signins`,target:"_blank"})]})]})};import{CircularProgress as mo,MenuItem as Ae}from"@mui/material";import{SelectEx as po}from"@xylabs/react-select";import{AddressRenderRowBox as Be}from"@xyo-network/react-address-render";import{Fragment as ho,jsx as S}from"react/jsx-runtime";var fo=(e,t=0)=>[...Array.from({length:e}).keys()].map(o=>o+t),Ie=({addressNames:e={},iconOnly:t,iconSize:o=24,icons:r,maxAccounts:a=1,showFavorite:n=!1,size:s,variant:i="outlined",...c})=>{let{activeAccountIndex:l=0,setActiveAccountIndex:u,rootWallet:m}=h();return S(ho,{children:m?S(po,{margin:"dense",disabled:!m||l===void 0,renderValue:p=>S(()=>{let[d]=A({path:p.toString(),wallet:m}),C=d?e[d.address]:void 0,H=!!d&&d.address in e;return S(Ae,{value:p,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:S(Be,{disableSharedRef:!0,flexGrow:1,address:d?.address,iconOnly:t,iconSize:o,icons:r,name:C,favorite:H,showFavorite:n})})},{}),value:l,onChange:p=>u?.(Number.parseInt(`${p.target.value}`)),size:s,variant:i,...c,children:fo(a).map(p=>S(()=>{let[d]=A({path:p.toString(),wallet:m}),C=d?e[d.address]:void 0,H=!!d&&d.address in e;return S(Ae,{value:p,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:S(Be,{disableSharedRef:!0,flexGrow:1,address:d?.address,favorite:H,iconOnly:t,iconSize:o,icons:r,name:C,showFavorite:n})},d?.address)},{},p))}):S(mo,{size:24})})};import{FlexCol as Po}from"@xylabs/react-flexbox";import{jsx as ke}from"react/jsx-runtime";var ta=({addressNames:e={},iconOnly:t,iconSize:o,icons:r,maxAccounts:a=1,showFavorite:n=!1,size:s="small",...i})=>ke(Po,{alignItems:"stretch",...i,children:ke(Ie,{addressNames:e,fullWidth:!0,showFavorite:n,iconSize:o,iconOnly:t,icons:r,maxAccounts:a,size:s??"small",variant:"outlined"})});export{No as DefaultSeedPhrase,ie as DialogActionButtons,D as InvalidPhraseTypography,Bo as MaxAccountsTableRow,me as NewPhraseTextField,ge as OverwriteWarning,he as PhraseDialogActions,E as PhraseHeaderBox,xe as SavedPhraseTextField,F as SeedPhraseContext,ve as SeedPhraseDialog,Vt as SeedPhraseDialogInner,T as SeedPhraseIconButton,oe as SeedPhraseProvider,dn as SeedPhraseTableRow,Gn as WalletAccountDetails,Ie as WalletAccountSelect,ta as WalletAccountSelectBar,w as WalletContext,nr as WalletProvider,ce as colorParser,be as useAccount,ht as useIndexedWalletFromContext,ne as useRootWallet,f as useSeedPhrase,ae as useSelectedWalletAccount,A as useWallet,h as useWalletContext,re as useWalletProvided,An as useWallets,Fn as useWrapperAccount};
1
+ import{ButtonGroup as De,TableCell as z,TableRow as Ee,Typography as Oe}from"@mui/material";import{ButtonEx as X}from"@xylabs/react-button";import{useState as J}from"react";import{Alert as ye,AlertTitle as Te,Snackbar as Fe}from"@mui/material";import{jsx as K,jsxs as Re}from"react/jsx-runtime";var q=({activeAccountIndex:e,desiredMaximumAccounts:t,setShowSnackBar:o,showSnackBar:r})=>K(Fe,{anchorOrigin:{horizontal:"center",vertical:"top"},autoHideDuration:5e3,onClose:()=>o?.(!1),open:r,children:Re(ye,{severity:"error",onClose:()=>o?.(!1),children:[K(Te,{children:"Maximum Accounts Error"}),"Your currently selected account number (",e===void 0?"":e+1,") cannot be greater than the desired Maximum Accounts (",t,")."]})});import{jsx as v,jsxs as N}from"react/jsx-runtime";var Bo=({activeAccountIndex:e,changeMaxAccounts:t,maxAccounts:o})=>{let[r,a]=J(),[n,s]=J(!1),i=c=>{if(o!==void 0&&e!==void 0)switch(c){case"decrease":{let l=o-1,u=l>0,m=e+1<=l;u&&m&&t?.(l),m||s(!0),a(l);return}case"increase":{t?.(o+1);return}default:console.error(c,"is not a recognized value")}else throw new Error("Max Accounts is unset and needs a default")};return N(Ee,{children:[v(z,{children:"Maximum Accounts"}),v(z,{align:"center",children:v(Oe,{variant:"caption",children:o})}),N(z,{align:"center",children:[N(De,{children:[v(X,{onClick:()=>i("decrease"),variant:"contained",size:"small",children:"-"}),v(X,{onClick:()=>i("increase"),variant:"contained",size:"small",children:"+"})]}),v(q,{desiredMaximumAccounts:r,activeAccountIndex:e,setShowSnackBar:s,showSnackBar:n})]})]})};import{HelpOutline as Me}from"@mui/icons-material";import{Button as He,Dialog as ze,DialogActions as Ne,DialogContent as Ge,DialogTitle as Le,IconButton as $e,Link as _e,List as Ue,ListItem as y,Typography as Ve}from"@mui/material";import{useState as Ye}from"react";import{Fragment as Ke,jsx as x,jsxs as b}from"react/jsx-runtime";var T=e=>{let[t,o]=Ye(!1),r=()=>o(!1);return b(Ke,{children:[x($e,{onClick:()=>o(!0),...e,children:x(Me,{fontSize:"small"})}),b(ze,{open:t,children:[x(Le,{children:"Understanding your Seed Phrase"}),b(Ge,{children:[b(Ve,{children:["Your Seed Phrase should adhere to the"," ",x(_e,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 specification"})," ","and is used to generate accounts which identify your data on the XYO Network."]}),b(Ue,{children:[x(y,{children:"Do not share this phrase with anyone."}),x(y,{children:"Do not save it to a public computer."}),x(y,{children:"Do not use a existing phrase from another wallet (i.e. Metamask)."}),x(y,{children:"Do not use before copying it down somewhere safe."})]})]}),x(Ne,{children:x(He,{onClick:r,variant:"outlined",children:"OK"})})]})]})};import{Alert as qe,AlertTitle as Xe,Snackbar as Je}from"@mui/material";import{generateMnemonic as Qe}from"@scure/bip39";import{wordlist as Ze}from"@scure/bip39/wordlists/english";import{useEffect as je,useState as et}from"react";import{Fragment as tt,jsx as Q,jsxs as Z}from"react/jsx-runtime";var No=({changeSeedPhrase:e,children:t,hideDefaultSeedPhraseMessage:o,seedPhrase:r})=>{let[a,n]=et(!1);return je(()=>{if(!r){let s=Qe(Ze,256);e?.(s),n(!0)}},[e,r]),Z(tt,{children:[o?null:Q(Je,{open:a,autoHideDuration:5e3,onClose:()=>n(!1),anchorOrigin:{horizontal:"center",vertical:"top"},children:Z(qe,{severity:"success",children:[Q(Xe,{children:"Default Seed Phrase Generated"}),"Go to application settings to save it."]})}),t]})};import{Button as se,DialogActions as xt}from"@mui/material";import{createContextEx as ot}from"@xyo-network/react-shared";var F=ot();import{generateMnemonic as rt,validateMnemonic as nt}from"@scure/bip39";import{wordlist as te}from"@scure/bip39/wordlists/english";import{useCallback as R,useEffect as G,useMemo as j,useState as ee}from"react";import{jsx as at}from"react/jsx-runtime";var L=e=>e?nt(e,te):null,oe=({children:e,defaultPhrase:t,handleChangeSeedPhrase:o,saveCallback:r,seedPhrase:a,open:n})=>{let[s,i]=ee(),[c,l]=ee(!1);G(()=>{i(t)},[t]),G(()=>{(a||n)&&i?.(a??"")},[a,n,i]);let u=R(()=>{let C=rt(te,256);i?.(C),l?.(!1)},[]),m=R(()=>{l?.(!1)},[]),k=R(()=>{i?.(""),l?.(!1)},[]),p=R(()=>{!c&&a&&a!==s?l?.(!0):(o?.(s??""),r?.())},[o,c,s,r,a]);G(()=>{n||m()},[m,n]);let M=j(()=>L?.(a),[a]),d=j(()=>L?.(s),[s]);return at(F.Provider,{value:{handleCancelOverwrite:m,handleChangeSeedPhrase:o,handleClear:k,handleGenerate:u,handleSave:p,overwriteWarning:c,phrase:s,provided:!0,seedPhrase:a,setOverwriteWarning:l,setPhrase:i,validPhrase:d,validSeedPhrase:M,validate:L},children:e})};import{useContextEx as st}from"@xyo-network/react-shared";var f=()=>st(F,"SeedPhrase",!0);import{createContextEx as lt}from"@xyo-network/react-shared";var w=lt();import{usePromise as it}from"@xylabs/react-promise";import{useEffect as ct,useState as dt}from"react";import{jsx as ut}from"react/jsx-runtime";var nr=({children:e,defaultActiveAccountIndex:t=0,rootWallet:o=null,...r})=>{let[a,n]=dt(t);ct(()=>{t!==void 0&&n(t)},[t]);let[s=null]=it(async()=>await o?.derivePath(a.toString()),[a,o]);return ut(w.Provider,{value:{activeAccount:s,activeAccountIndex:a,provided:!0,rootWallet:o,setActiveAccountIndex:n},...r,children:e})};import{usePromise as mt}from"@xylabs/react-promise";import{useContextEx as pt,useProvided as ft}from"@xyo-network/react-shared";var h=(e=!0)=>pt(w,"Wallet",e),re=()=>ft(w),ne=(e=!0)=>{let{rootWallet:t}=h(e);return[t,void 0]},ht=(e,t=!0)=>{let{rootWallet:o}=h(t),[r]=mt(async()=>await o?.derivePath(e.toString())??o,[o,e]);return[r,void 0]},ae=(e=!0)=>{let{activeAccountIndex:t}=h(e),[o]=ht(t??0,e);return t===void 0&&o===null?[null,void 0]:[o,void 0]};import{jsx as le,jsxs as Pt}from"react/jsx-runtime";var ie=({onClose:e,...t})=>{let{handleSave:o,setPhrase:r}=f();return Pt(xt,{...t,children:[le(se,{variant:"outlined",onClick:n=>{r?.(""),e?.(n,"escapeKeyDown")},children:"Cancel"}),le(se,{variant:"outlined",onClick:o,children:"Save"})]})};import{FormControl as Bt,TextField as It}from"@mui/material";var ce=e=>{switch(e){case!0:return"success";case!1:return"error";default:return}};import{Link as St,Typography as gt}from"@mui/material";import{jsx as vt,jsxs as Ct}from"react/jsx-runtime";var D=e=>Ct(gt,{variant:"caption",color:"error",...e,children:["Invalid seed phrase. See -"," ",vt(St,{target:"_blank",href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki",children:"bip39 Proposal"})]});import{CheckCircleOutline as bt,HighlightOff as wt}from"@mui/icons-material";import{FlexRow as Wt}from"@xylabs/react-flexbox";import{useMemo as de}from"react";import{jsx as ue,jsxs as At}from"react/jsx-runtime";var E=({children:e,conditional:t,...o})=>{let r=de(()=>{switch(t){case!0:return"success";case!1:return"error";default:return null}},[t]),a=de(()=>{switch(r){case"success":return ue(bt,{fontSize:"small",color:"success"});case"error":return ue(wt,{fontSize:"small",color:"error"});default:return null}},[r]);return At(Wt,{justifyContent:"start",columnGap:1,...o,children:[a,e]})};import{Fragment as yt,jsx as $,jsxs as kt}from"react/jsx-runtime";var me=({children:e,disableColor:t,...o})=>{let{phrase:r,setPhrase:a,validPhrase:n}=f();return $(yt,{children:kt(Bt,{fullWidth:!0,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[e,$(It,{focused:!0,color:t?void 0:ce(n),error:n===!1,helperText:n===!1?$(D,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,onChange:s=>a?.(s.target.value),value:r,...o})]})})};import{Button as pe,DialogActions as Tt}from"@mui/material";import{jsx as fe,jsxs as Ft}from"react/jsx-runtime";var he=()=>{let{handleClear:e,handleGenerate:t,overwriteWarning:o}=f();return Ft(Tt,{sx:{justifyContent:"center"},children:[fe(pe,{disabled:o,variant:"outlined",onClick:t,children:"Generate"}),fe(pe,{variant:"outlined",onClick:e,children:"Clear"})]})};import{Chip as Rt,FormControl as Dt,FormLabel as Et,TextField as Ot}from"@mui/material";import{useState as Mt}from"react";import{Fragment as Ht,jsx as W,jsxs as xe}from"react/jsx-runtime";var Pe=({fullWidth:e,showPhraseHeader:t,...o})=>{let{validSeedPhrase:r,seedPhrase:a}=f(),[n,s]=Mt(!1);return xe(Dt,{fullWidth:e,size:"small",sx:{display:"flex",flexDirection:"column",rowGap:1},children:[W(Rt,{label:n?"Hide Saved Seed Phrase":"Reveal Saved Seed Phrase",onClick:()=>s(!n),sx:{alignSelf:"center"}}),n?xe(Ht,{children:[t?W(Et,{children:W(E,{conditional:r,children:"Saved Seed Phrase"})}):null,W(Ot,{defaultValue:a,disabled:!0,error:r===!1,helperText:r===!1?W(D,{}):null,fullWidth:!0,maxRows:Number.POSITIVE_INFINITY,multiline:!0,...o})]}):null]})};import{Alert as zt,Button as Se}from"@mui/material";import{FlexRow as Nt}from"@xylabs/react-flexbox";import{jsx as _,jsxs as Gt}from"react/jsx-runtime";var ge=()=>{let{handleCancelOverwrite:e,handleSave:t}=f();return _(zt,{variant:"outlined",severity:"warning",action:Gt(Nt,{sx:{columnGap:1},children:[_(Se,{variant:"outlined",color:"inherit",size:"small",onClick:t,children:"Overwrite"}),_(Se,{variant:"outlined",color:"inherit",size:"small",onClick:e,children:"Cancel"})]}),children:"Are you sure you want to overwrite existing seed phrase? This action cannot be undone."})};import{Dialog as Lt,DialogContent as $t,DialogTitle as _t,FormLabel as Ut}from"@mui/material";import{jsx as P,jsxs as U}from"react/jsx-runtime";var ve=({changeSeedPhrase:e,seedPhrase:t,...o})=>P(oe,{seedPhrase:t,handleChangeSeedPhrase:e,open:o.open,saveCallback:()=>o.onClose?.({},"escapeKeyDown"),children:P(Vt,{...o})}),Vt=e=>{let{overwriteWarning:t,seedPhrase:o,validPhrase:r}=f();return U(Lt,{"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",fullWidth:!0,maxWidth:"sm",...e,children:[U(_t,{id:"alert-dialog-title",children:["Update Your Seed Phrase ",P(T,{})]}),U($t,{sx:{display:"flex",flexDirection:"column",rowGap:2},children:[P(me,{children:P(Ut,{children:P(E,{conditional:r,children:"New Seed Phrase"})})}),P(he,{}),o?P(Pe,{}):null,t?P(ge,{}):null]}),P(ie,{onClose:e.onClose})]})};import{Cancel as Yt,RadioButtonChecked as Kt}from"@mui/icons-material";import{Button as qt,ButtonGroup as Xt,TableCell as V,TableRow as Jt}from"@mui/material";import{useState as Qt}from"react";import{jsx as g,jsxs as Y}from"react/jsx-runtime";var dn=({changeSeedPhrase:e,seedPhrase:t,...o})=>{let[r,a]=Qt(!1);return Y(Jt,{...o,children:[Y(V,{children:["Seed Phrase ",g(T,{})]}),g(V,{align:"center",children:t?g(Kt,{color:"success"}):g(Yt,{color:"error"})}),Y(V,{children:[g(ve,{changeSeedPhrase:e,open:r,onClose:()=>a(!1),seedPhrase:t}),g(Xt,{fullWidth:!0,children:g(qt,{variant:"contained",size:"small",onClick:()=>{a(!0)},children:"Update"})})]})]})};import{EthAddress as so}from"@xylabs/eth-address";import{EthAccountButton as lo}from"@xylabs/react-crypto";import{FlexCol as io,FlexRow as co}from"@xylabs/react-flexbox";import{NumberStatus as O}from"@xylabs/react-number-status";import{useNetwork as uo}from"@xyo-network/react-network";import{usePromise as Zt}from"@xylabs/react-promise";import{useState as Ce}from"react";var be=({wallet:e,account:t,index:o,required:r=!1}={})=>{let a=re(),[n,s]=Ce();e&&t&&!n&&s(new Error("useAccount can not have both a wallet and an account in the parameters")),o&&t&&!n&&s(new Error("useAccount can not have both a index and an account in the parameters"));let[i,c]=Ce(),[l]=ne(!e&&r),{activeAccountIndex:u}=h(!1),[m]=Zt(async()=>{try{if(!n){if(e)return await e?.derivePath?.(`${o??0}'\0`);if(l)return await l?.derivePath?.(`${o??u??0}'\0`)}}catch(k){let p=k;console.error(p.message),c(p)}},[o,e,l,u,n]);return n&&!i&&(console.error(n.message),c(n)),[i?void 0:t??m??a?null:void 0,i]};import{usePromise as jt}from"@xylabs/react-promise";import{HDWallet as we}from"@xyo-network/account";import{useState as eo}from"react";var A=({mnemonic:e,wallet:t,path:o,required:r=!1,seed:a}={})=>{let n=h(!1),[s,i]=eo(),[c]=ae(!t&&r),[l]=jt(async()=>{try{let u=await(t||(e?we.fromPhrase(e):a?we.fromSeed(a):c));return o?u?.derivePath?.(o):u??t}catch(u){i(u)}},[e,c,a,o,t]);return[l??(n?null:l),s]};import{usePromise as to}from"@xylabs/react-promise";var An=({wallet:e,paths:t})=>{let o=h(!1),[r]=A({wallet:e}),[a,n]=to(async()=>r?await Promise.all(t.map(s=>r.derivePath(s))):void 0,[r,t]);return[a??(o?null:a),n]};import{usePromise as oo}from"@xylabs/react-promise";import{HDWallet as ro}from"@xyo-network/account";import{Mutex as no}from"async-mutex";var B,ao=new no,Fn=e=>oo(async()=>await ao.runExclusive(async()=>{if(e!==void 0)return e;if(B)return B;try{B=await ro.random(),console.log(`Global Wrapper Wallet Creation Success: ${B.address}`)}catch(t){console.error(`Global Wrapper Wallet Creation Failed: ${t.message}`)}return B}),[e]);import{jsx as I,jsxs as We}from"react/jsx-runtime";var Gn=({exploreUrl:e="https://explore.xyo.network",account:t,...o})=>{let[r]=be({account:t}),{network:a}=uo(),n=`${e}/recent?account=${r?.address}&network=${a?.name??"main"}`;return We(io,{...o,children:[I(lo,{address:so.fromString(r?.address)}),We(co,{gap:1,children:[I(O,{rounded:!0,title:"Tokens",value:0,to:`${n}&schema=network.xyo.account.tokens`,target:"_blank"}),I(O,{rounded:!0,title:"NFTs",value:0,to:`${n}&schema=network.xyo.account.nfts`,target:"_blank"}),I(O,{rounded:!0,title:"Signatures",value:0,to:`${n}&schema=network.xyo.account.signatures`,target:"_blank"}),I(O,{rounded:!0,title:"Signins",value:0,to:`${n}&schema=network.xyo.account.signins`,target:"_blank"})]})]})};import{CircularProgress as mo,MenuItem as Ae}from"@mui/material";import{SelectEx as po}from"@xylabs/react-select";import{AddressRenderRowBox as Be}from"@xyo-network/react-address-render";import{Fragment as ho,jsx as S}from"react/jsx-runtime";var fo=(e,t=0)=>[...Array.from({length:e}).keys()].map(o=>o+t),Ie=({addressNames:e={},iconOnly:t,iconSize:o=24,icons:r,maxAccounts:a=1,showFavorite:n=!1,size:s,variant:i="outlined",...c})=>{let{activeAccountIndex:l=0,setActiveAccountIndex:u,rootWallet:m}=h();return S(ho,{children:m?S(po,{margin:"dense",disabled:!m||l===void 0,renderValue:p=>S(()=>{let[d]=A({path:p.toString(),wallet:m}),C=d?e[d.address]:void 0,H=!!d&&d.address in e;return S(Ae,{value:p,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:S(Be,{disableSharedRef:!0,flexGrow:1,address:d?.address,iconOnly:t,iconSize:o,icons:r,name:C,favorite:H,showFavorite:n})})},{}),value:l,onChange:p=>u?.(Number.parseInt(`${p.target.value}`)),size:s,variant:i,...c,children:fo(a).map(p=>S(()=>{let[d]=A({path:p.toString(),wallet:m}),C=d?e[d.address]:void 0,H=!!d&&d.address in e;return S(Ae,{value:p,sx:{minHeight:0,paddingBottom:0,paddingTop:0},children:S(Be,{disableSharedRef:!0,flexGrow:1,address:d?.address,favorite:H,iconOnly:t,iconSize:o,icons:r,name:C,showFavorite:n})},d?.address)},{},p))}):S(mo,{size:24})})};import{FlexCol as xo}from"@xylabs/react-flexbox";import{jsx as ke}from"react/jsx-runtime";var ta=({addressNames:e={},iconOnly:t,iconSize:o,icons:r,maxAccounts:a=1,showFavorite:n=!1,size:s="small",...i})=>ke(xo,{alignItems:"stretch",...i,children:ke(Ie,{addressNames:e,fullWidth:!0,showFavorite:n,iconSize:o,iconOnly:t,icons:r,maxAccounts:a,size:s??"small",variant:"outlined"})});export{No as DefaultSeedPhrase,ie as DialogActionButtons,D as InvalidPhraseTypography,Bo as MaxAccountsTableRow,me as NewPhraseTextField,ge as OverwriteWarning,he as PhraseDialogActions,E as PhraseHeaderBox,Pe as SavedPhraseTextField,F as SeedPhraseContext,ve as SeedPhraseDialog,Vt as SeedPhraseDialogInner,T as SeedPhraseIconButton,oe as SeedPhraseProvider,dn as SeedPhraseTableRow,Gn as WalletAccountDetails,Ie as WalletAccountSelect,ta as WalletAccountSelectBar,w as WalletContext,nr as WalletProvider,ce as colorParser,be as useAccount,ht as useIndexedWalletFromContext,ne as useRootWallet,f as useSeedPhrase,ae as useSelectedWalletAccount,A as useWallet,h as useWalletContext,re as useWalletProvided,An as useWallets,Fn as useWrapperAccount};
2
2
  //# sourceMappingURL=index.js.map