@xyo-network/react-wallet 2.67.0 → 2.67.1

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 +1 @@
1
- {"version":3,"file":"DefaultSeedPhrase.d.ts","sourceRoot":"","sources":["../../../../src/components/SeedPhrase/DefaultSeedPhrase.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAInD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA6B9D,CAAA"}
1
+ {"version":3,"file":"DefaultSeedPhrase.d.ts","sourceRoot":"","sources":["../../../../src/components/SeedPhrase/DefaultSeedPhrase.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA6B9D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultSeedPhrase.d.ts","sourceRoot":"","sources":["../../../../src/components/SeedPhrase/DefaultSeedPhrase.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAInD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA6B9D,CAAA"}
1
+ {"version":3,"file":"DefaultSeedPhrase.d.ts","sourceRoot":"","sources":["../../../../src/components/SeedPhrase/DefaultSeedPhrase.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA6B9D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultSeedPhrase.d.ts","sourceRoot":"","sources":["../../../../src/components/SeedPhrase/DefaultSeedPhrase.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAInD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA6B9D,CAAA"}
1
+ {"version":3,"file":"DefaultSeedPhrase.d.ts","sourceRoot":"","sources":["../../../../src/components/SeedPhrase/DefaultSeedPhrase.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAGnD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,gBAAgB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/C,4BAA4B,CAAC,EAAE,OAAO,CAAA;IACtC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA6B9D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/SeedPhrase/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAMnD,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmFhE,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/SeedPhrase/Provider.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAKnD,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmFhE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/SeedPhrase/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAMnD,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmFhE,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/SeedPhrase/Provider.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAKnD,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmFhE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/SeedPhrase/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAMnD,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmFhE,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/SeedPhrase/Provider.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAKnD,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmFhE,CAAA"}
@@ -170,14 +170,15 @@ var SeedPhraseIconButton = (props) => {
170
170
 
171
171
  // src/components/SeedPhrase/DefaultSeedPhrase.tsx
172
172
  var import_material4 = require("@mui/material");
173
- var import_bip39 = require("@xyo-network/bip39");
173
+ var import_bip39 = require("@scure/bip39");
174
+ var import_english = require("@scure/bip39/wordlists/english");
174
175
  var import_react3 = require("react");
175
176
  var import_jsx_runtime4 = require("react/jsx-runtime");
176
177
  var DefaultSeedPhrase = ({ changeSeedPhrase, children, hideDefaultSeedPhraseMessage, seedPhrase }) => {
177
178
  const [showSnackBar, setShowSnackBar] = (0, import_react3.useState)(false);
178
179
  (0, import_react3.useEffect)(() => {
179
180
  if (!seedPhrase) {
180
- const mnemonic = (0, import_bip39.generateMnemonic)(import_bip39.wordlists.english, 256);
181
+ const mnemonic = (0, import_bip39.generateMnemonic)(import_english.wordlist, 256);
181
182
  changeSeedPhrase?.(mnemonic);
182
183
  setShowSnackBar(true);
183
184
  }
@@ -208,7 +209,8 @@ var import_react_shared = require("@xyo-network/react-shared");
208
209
  var SeedPhraseContext = (0, import_react_shared.createContextEx)();
209
210
 
210
211
  // src/contexts/SeedPhrase/Provider.tsx
211
- var import_bip392 = require("@xyo-network/bip39");
212
+ var import_bip392 = require("@scure/bip39");
213
+ var import_english2 = require("@scure/bip39/wordlists/english");
212
214
  var import_react4 = require("react");
213
215
  var import_jsx_runtime5 = require("react/jsx-runtime");
214
216
  var SeedPhraseProvider = ({
@@ -235,7 +237,7 @@ var SeedPhraseProvider = ({
235
237
  }
236
238
  }, [seedPhrase, open, setPhrase]);
237
239
  const handleGenerate = () => {
238
- const mnemonic = (0, import_bip392.generateMnemonic)(import_bip392.wordlists.english, 256);
240
+ const mnemonic = (0, import_bip392.generateMnemonic)(import_english2.wordlist, 256);
239
241
  setPhrase?.(mnemonic);
240
242
  setOverwriteWarning?.(false);
241
243
  };
@@ -258,7 +260,7 @@ var SeedPhraseProvider = ({
258
260
  if (!passedPhrase) {
259
261
  return null;
260
262
  }
261
- return (0, import_bip392.validateMnemonic)(passedPhrase, import_bip392.wordlists.english);
263
+ return (0, import_bip392.validateMnemonic)(passedPhrase, import_english2.wordlist);
262
264
  };
263
265
  const validSeedPhrase = (0, import_react4.useMemo)(() => validate?.(seedPhrase), [seedPhrase]);
264
266
  const validPhrase = (0, import_react4.useMemo)(() => validate?.(phrase), [phrase]);
@@ -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/SeedPhraseDialog.tsx","../../src/contexts/SeedPhrase/Context.ts","../../src/contexts/SeedPhrase/Provider.tsx","../../src/contexts/SeedPhrase/use.tsx","../../src/contexts/Wallet/Context.ts","../../src/contexts/Wallet/lib/WalletPath.ts","../../src/contexts/Wallet/Provider.tsx","../../src/contexts/Wallet/use.ts","../../src/components/SeedPhrase/dialog/components/DialogActionButtons.tsx","../../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/SavedPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/OverwriteWarning.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 { WithChildren } from '@xylabs/react-shared'\nimport { generateMnemonic, wordlists } from '@xyo-network/bip39'\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(wordlists.english, 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 { Dialog, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { SeedPhraseProvider, useSeedPhrase } from '../../../contexts'\nimport { SeedPhraseIconButton } from '../_shared'\nimport { DialogActionButtons, NewPhraseTextField, OverwriteWarning, 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 } = 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 {seedPhrase ? <SavedPhraseTextField /> : null}\n {overwriteWarning ? <OverwriteWarning /> : null}\n </DialogContent>\n <DialogActionButtons onClose={props.onClose} />\n </Dialog>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SeedPhraseContextState } from './State'\n\nexport const SeedPhraseContext = createContextEx<SeedPhraseContextState>()\n","import { WithChildren } from '@xylabs/react-shared'\nimport { generateMnemonic, validateMnemonic, wordlists } from '@xyo-network/bip39'\nimport { 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\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 (!open) {\n handleCancelOverwrite()\n }\n }, [open])\n\n useEffect(() => {\n if (seedPhrase || open) {\n setPhrase?.(seedPhrase ?? '')\n }\n }, [seedPhrase, open, setPhrase])\n\n const handleGenerate = () => {\n const mnemonic = generateMnemonic(wordlists.english, 256)\n setPhrase?.(mnemonic)\n setOverwriteWarning?.(false)\n }\n\n const handleCancelOverwrite = () => {\n setOverwriteWarning?.(false)\n }\n\n const handleClear = () => {\n setPhrase?.('')\n setOverwriteWarning?.(false)\n }\n\n const handleSave = () => {\n if (!overwriteWarning && seedPhrase && seedPhrase !== phrase) {\n setOverwriteWarning?.(true)\n } else {\n handleChangeSeedPhrase?.(phrase ?? '')\n saveCallback?.()\n }\n }\n\n const validate = (passedPhrase?: string) => {\n if (!passedPhrase) {\n return null\n }\n return validateMnemonic(passedPhrase, wordlists.english)\n }\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","export const Bip44 = {\n base: 'm',\n coin_type: {\n /* https://github.com/satoshilabs/slips/blob/master/slip-0044.md */\n bitcoin: \"0'\",\n bitcoinTestnet: \"1'\",\n ether: \"60'\",\n etherClassic: \"61'\",\n },\n purpose: \"44'\",\n}\n\nexport const WalletRootPath = `${Bip44.base}/${Bip44.purpose}/${Bip44.coin_type.ether}`\n\nexport const ethereumAccountPath = (index: number, hardened = true) => {\n return `${WalletRootPath}/${index}${hardened ? \"'\" : ''}/0`\n}\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'\nimport { WalletRootPath } from './lib'\n\nexport interface WalletProviderProps {\n basePath?: string\n defaultActiveAccountIndex?: number\n rootWallet?: WalletInstance | null\n}\n\nexport const WalletProvider: React.FC<WithChildren<WalletProviderProps>> = ({\n basePath = WalletRootPath,\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 [coinTypeWallet = null] = usePromise(async () => {\n // ensure the wallet has the proper base\n if (rootWallet) {\n if (rootWallet?.path !== basePath) {\n try {\n const result = await rootWallet?.derivePath(basePath)\n return result\n } catch (e) {\n console.error('Error setting proper wallet base path', e)\n }\n }\n } else {\n return rootWallet\n }\n }, [basePath, rootWallet])\n\n console.log(`coinTypeWallet: ${coinTypeWallet}`)\n\n const [activeAccount = null] = usePromise(\n async () => await coinTypeWallet?.derivePath(activeAccountIndex.toString()),\n [coinTypeWallet, activeAccountIndex],\n )\n\n return (\n <WalletContext.Provider\n value={{\n activeAccount,\n activeAccountIndex,\n basePath,\n coinTypeWallet,\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 useCoinTypeWallet = (required = true): [WalletInstance | null | undefined, Error | undefined] => {\n const { coinTypeWallet } = useWalletContext(required)\n return [coinTypeWallet, undefined]\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 [coinTypeWallet] = useCoinTypeWallet(required)\n const [wallet] = usePromise(async () => (await coinTypeWallet?.derivePath(index.toString())) ?? coinTypeWallet, [coinTypeWallet, 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 if (activeAccountIndex === undefined && account === null) {\n return [null, undefined]\n } else {\n return [account, undefined]\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 { Button, DialogActions, FormControl, FormLabel, StandardTextFieldProps, TextField } from '@mui/material'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { colorParser, InvalidPhraseTypography, PhraseHeaderBox } from './validation-messages'\n\nexport const NewPhraseTextField: React.FC<StandardTextFieldProps> = (props) => {\n const { handleClear, handleGenerate, overwriteWarning, phrase, setPhrase, validPhrase } = useSeedPhrase()\n return (\n <>\n <FormControl fullWidth size=\"small\" sx={{ display: 'flex', flexDirection: 'column', rowGap: 1 }}>\n <FormLabel>\n <PhraseHeaderBox conditional={validPhrase}>New Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n <TextField\n focused\n color={colorParser(validPhrase)}\n error={validPhrase === false}\n helperText={validPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={Infinity}\n multiline\n onChange={(e) => setPhrase?.(e.target.value)}\n value={phrase}\n {...props}\n />\n </FormControl>\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}\n","export const colorParser = (conditional?: boolean | null) => {\n switch (conditional) {\n case true:\n return 'success'\n case false:\n return 'error'\n default:\n return undefined\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 case false:\n return 'error'\n default:\n return null\n }\n }, [conditional])\n\n const Icon = useMemo(() => {\n switch (state) {\n case 'success':\n return <CheckCircleOutlineIcon fontSize=\"small\" color=\"success\" />\n case 'error':\n return <HighlightOffIcon fontSize=\"small\" color=\"error\" />\n default:\n return null\n }\n }, [state])\n\n return (\n <FlexRow justifyContent={'start'} columnGap={1} {...props}>\n {Icon}\n {children}\n </FlexRow>\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 const SavedPhraseTextField: React.FC<StandardTextFieldProps> = (props) => {\n const { validSeedPhrase, seedPhrase } = useSeedPhrase()\n\n const [visible, setVisible] = useState(false)\n\n return (\n <FormControl 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 <FormLabel>\n <PhraseHeaderBox conditional={validSeedPhrase}>Saved Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n <TextField\n defaultValue={seedPhrase}\n disabled\n error={validSeedPhrase === false}\n helperText={validSeedPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={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 { 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\">{seedPhrase ? <RadioButtonCheckedIcon color=\"success\" /> : <CancelIcon color=\"error\" />}</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 { useCoinTypeWallet, 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(Error('useAccount can not have both a wallet and an account in the parameters'))\n }\n\n if (index && account && !validationError) {\n setValidationError(Error('useAccount can not have both a index and an account in the parameters'))\n }\n\n const [error, setError] = useState<Error>()\n const [coinTypeWallet] = useCoinTypeWallet(!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 (coinTypeWallet) {\n return await coinTypeWallet?.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, coinTypeWallet, activeAccountIndex, validationError])\n if (validationError && !error) {\n console.error(validationError.message)\n setError(validationError)\n }\n\n return [error ? undefined : account ?? activeAccount ?? walletContextProvided ? null : undefined, error]\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, useWalletProvided } 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 = useWalletProvided()\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 if (path) {\n return newAccount?.derivePath?.(path)\n } else {\n return newAccount ?? wallet\n }\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 { useWalletProvided } 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 = useWalletProvided()\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 = 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 interface WalletAccountSelectProps extends SharedAddressRenderRowBoxProps, SelectProps<number> {\n addressNames?: Record<string, string | undefined>\n maxAccounts?: number\n}\n\nconst arrayRange = (length: number, start = 0) => {\n return Array.from(Array(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 ...props\n}) => {\n const { activeAccountIndex = 0, setActiveAccountIndex, coinTypeWallet } = useWalletContext()\n const disabled = !coinTypeWallet || activeAccountIndex === undefined\n\n return (\n <>\n {coinTypeWallet ? (\n <SelectEx\n margin=\"dense\"\n disabled={disabled}\n renderValue={(selectedAccountIndex) => {\n const Item: React.FC = () => {\n const [selectedAccount] = useWallet({ path: selectedAccountIndex.toString(), wallet: coinTypeWallet })\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?.(parseInt(`${event.target.value}`))}\n size={size}\n variant=\"outlined\"\n {...props}\n >\n {arrayRange(maxAccounts).map((index) => {\n const Item: React.FC = () => {\n const [account] = useWallet({ path: index.toString(), wallet: coinTypeWallet })\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 ) : (\n <CircularProgress size={24} />\n )}\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 />\n </FlexCol>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,mBAA4E;AAC5E,0BAAyB;AACzB,mBAAyB;;;ACFzB,sBAA2D;AAuBrD;AAbC,IAAM,sBAA0D,CAAC;AAAA,EACtE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SACE;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,EAAE,YAAY,UAAU,UAAU,MAAM;AAAA,MACtD,kBAAkB;AAAA,MAClB,SAAS,MAAM,kBAAkB,KAAK;AAAA,MACtC,MAAM;AAAA,MAEN,uDAAC,yBAAM,UAAU,SAAS,SAAS,MAAM,kBAAkB,KAAK,GAC9D;AAAA,oDAAC,8BAAW,oCAAsB;AAAA,QAAa;AAAA,QACN,uBAAuB,SAAY,qBAAqB,IAAI;AAAA,QAAG;AAAA,QACrF;AAAA,QAAuB;AAAA,SAC5C;AAAA;AAAA,EACF;AAEJ;;;ADeM,IAAAC,sBAAA;AAjCC,IAAM,sBAAqD,CAAC,EAAE,oBAAoB,mBAAmB,YAAY,MAAM;AAC5H,QAAM,CAAC,wBAAwB,yBAAyB,QAAI,uBAA6B;AACzF,QAAM,CAAC,cAAc,eAAe,QAAI,uBAAS,KAAK;AAEtD,QAAM,0BAA0B,CAAC,WAAoC;AACnE,QAAI,gBAAgB,UAAa,uBAAuB,QAAW;AACjE,cAAQ,QAAQ;AAAA,QACd,KAAK,YAAY;AACf,gBAAMC,0BAAyB,cAAc;AAC7C,gBAAM,uBAAuBA,0BAAyB;AACtD,gBAAM,yBAAyB,qBAAqB,KAAKA;AACzD,cAAI,wBAAwB,wBAAwB;AAClD,gCAAoBA,uBAAsB;AAAA,UAC5C;AACA,cAAI,CAAC;AAAwB,4BAAgB,IAAI;AACjD,oCAA0BA,uBAAsB;AAChD;AAAA,QACF;AAAA,QACA,KAAK,YAAY;AACf,8BAAoB,cAAc,CAAC;AACnC;AAAA,QACF;AAAA,QACA,SAAS;AACP,kBAAQ,MAAM,QAAQ,2BAA2B;AAAA,QACnD;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,IAAI,MAAM,2CAA2C;AAAA,IAC7D;AAAA,EACF;AAEA,SACE,8CAAC,6BACC;AAAA,iDAAC,8BAAU,8BAAgB;AAAA,IAC3B,6CAAC,8BAAU,OAAM,UACf,uDAAC,+BAAW,SAAS,WAAY,uBAAY,GAC/C;AAAA,IACA,8CAAC,8BAAU,OAAM,UACf;AAAA,oDAAC,gCACC;AAAA,qDAAC,gCAAS,SAAS,MAAM,wBAAwB,UAAU,GAAG,SAAS,aAAa,MAAM,SAAS,eAEnG;AAAA,QACA,6CAAC,gCAAS,SAAS,MAAM,wBAAwB,UAAU,GAAG,SAAS,aAAa,MAAM,SAAS,eAEnG;AAAA,SACF;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF;AAAA,OACF;AAAA,KACF;AAEJ;;;AEnEA,4BAA+C;AAC/C,IAAAC,mBAYO;AACP,IAAAC,gBAAyB;AAMrB,IAAAC,sBAAA;AAJG,IAAM,uBAAkD,CAAC,UAAU;AACxE,QAAM,CAAC,MAAM,OAAO,QAAI,wBAAS,KAAK;AACtC,QAAM,UAAU,MAAM,QAAQ,KAAK;AACnC,SACE,8EACE;AAAA,iDAAC,+BAAW,SAAS,MAAM,QAAQ,IAAI,GAAI,GAAG,OAC5C,uDAAC,sBAAAC,aAAA,EAAgB,UAAS,SAAQ,GACpC;AAAA,IACA,8CAAC,2BAAO,MACN;AAAA,mDAAC,gCAAY,4CAA8B;AAAA,MAC3C,8CAAC,kCACC;AAAA,sDAAC,+BAAW;AAAA;AAAA,UAC4B;AAAA,UACtC,6CAAC,yBAAK,QAAQ,UAAU,MAAK,kEAAiE,iCAE9F;AAAA,UAAQ;AAAA,UAAI;AAAA,WAEd;AAAA,QACA,8CAAC,yBACC;AAAA,uDAAC,6BAAS,mDAAqC;AAAA,UAC/C,6CAAC,6BAAS,kDAAoC;AAAA,UAC9C,6CAAC,6BAAS,+EAAiE;AAAA,UAC3E,6CAAC,6BAAS,+DAAiD;AAAA,WAC7D;AAAA,SACF;AAAA,MACA,6CAAC,kCACC,uDAAC,2BAAO,SAAS,SAAS,SAAQ,YAAW,gBAE7C,GACF;AAAA,OACF;AAAA,KACF;AAEJ;;;ACjDA,IAAAC,mBAA4C;AAE5C,mBAA4C;AAC5C,IAAAC,gBAAoC;AAoBhC,IAAAC,sBAAA;AAZG,IAAM,oBAAsD,CAAC,EAAE,kBAAkB,UAAU,8BAA8B,WAAW,MAAM;AAC/I,QAAM,CAAC,cAAc,eAAe,QAAI,wBAAS,KAAK;AAEtD,+BAAU,MAAM;AACd,QAAI,CAAC,YAAY;AACf,YAAM,eAAW,+BAAiB,uBAAU,SAAS,GAAG;AACxD,yBAAmB,QAAQ;AAC3B,sBAAgB,IAAI;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,kBAAkB,UAAU,CAAC;AAEjC,SACE,8EACG;AAAA,mCAA+B,OAC9B;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,kBAAkB;AAAA,QAClB,SAAS,MAAM,gBAAgB,KAAK;AAAA,QACpC,cAAc,EAAE,YAAY,UAAU,UAAU,MAAM;AAAA,QAEtD,wDAAC,0BAAM,UAAU,WACf;AAAA,uDAAC,+BAAW,2CAA6B;AAAA,UAAa;AAAA,WAExD;AAAA;AAAA,IACF;AAAA,IAED;AAAA,KACH;AAEJ;;;ACxCA,IAAAC,oBAAgE;;;ACAhE,0BAAgC;AAIzB,IAAM,wBAAoB,qCAAwC;;;ACHzE,IAAAC,gBAA8D;AAC9D,IAAAC,gBAA6C;AA0EzC,IAAAC,sBAAA;AA9DG,IAAM,qBAAwD,CAAC;AAAA,EACpE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,CAAC,QAAQ,SAAS,QAAI,wBAA6B;AACzD,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,wBAAS,KAAK;AAE9D,+BAAU,MAAM;AACd,cAAU,aAAa;AAAA,EACzB,GAAG,CAAC,aAAa,CAAC;AAElB,+BAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT,4BAAsB;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,IAAI,CAAC;AAET,+BAAU,MAAM;AACd,QAAI,cAAc,MAAM;AACtB,kBAAY,cAAc,EAAE;AAAA,IAC9B;AAAA,EACF,GAAG,CAAC,YAAY,MAAM,SAAS,CAAC;AAEhC,QAAM,iBAAiB,MAAM;AAC3B,UAAM,eAAW,gCAAiB,wBAAU,SAAS,GAAG;AACxD,gBAAY,QAAQ;AACpB,0BAAsB,KAAK;AAAA,EAC7B;AAEA,QAAM,wBAAwB,MAAM;AAClC,0BAAsB,KAAK;AAAA,EAC7B;AAEA,QAAM,cAAc,MAAM;AACxB,gBAAY,EAAE;AACd,0BAAsB,KAAK;AAAA,EAC7B;AAEA,QAAM,aAAa,MAAM;AACvB,QAAI,CAAC,oBAAoB,cAAc,eAAe,QAAQ;AAC5D,4BAAsB,IAAI;AAAA,IAC5B,OAAO;AACL,+BAAyB,UAAU,EAAE;AACrC,qBAAe;AAAA,IACjB;AAAA,EACF;AAEA,QAAM,WAAW,CAAC,iBAA0B;AAC1C,QAAI,CAAC,cAAc;AACjB,aAAO;AAAA,IACT;AACA,eAAO,gCAAiB,cAAc,wBAAU,OAAO;AAAA,EACzD;AAEA,QAAM,sBAAkB,uBAAQ,MAAM,WAAW,UAAU,GAAG,CAAC,UAAU,CAAC;AAC1E,QAAM,kBAAc,uBAAQ,MAAM,WAAW,MAAM,GAAG,CAAC,MAAM,CAAC;AAE9D,SACE;AAAA,IAAC,kBAAkB;AAAA,IAAlB;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MAEC;AAAA;AAAA,EACH;AAEJ;;;ACjGA,IAAAC,uBAA6B;AAItB,IAAM,gBAAgB,UAAM,mCAAa,mBAAmB,cAAc,IAAI;;;ACJrF,IAAAC,uBAAgC;AAIzB,IAAM,oBAAgB,sCAAoC;;;ACJ1D,IAAM,QAAQ;AAAA,EACnB,MAAM;AAAA,EACN,WAAW;AAAA;AAAA,IAET,SAAS;AAAA,IACT,gBAAgB;AAAA,IAChB,OAAO;AAAA,IACP,cAAc;AAAA,EAChB;AAAA,EACA,SAAS;AACX;AAEO,IAAM,iBAAiB,GAAG,MAAM,IAAI,IAAI,MAAM,OAAO,IAAI,MAAM,UAAU,KAAK;AAE9E,IAAM,sBAAsB,CAAC,OAAe,WAAW,SAAS;AACrE,SAAO,GAAG,cAAc,IAAI,KAAK,GAAG,WAAW,MAAM,EAAE;AACzD;;;AChBA,2BAA2B;AAG3B,IAAAC,gBAAoC;AAkDhC,IAAAC,sBAAA;AAvCG,IAAM,iBAA8D,CAAC;AAAA,EAC1E,WAAW;AAAA,EACX;AAAA,EACA,4BAA4B;AAAA,EAC5B,aAAa;AAAA,EACb,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,oBAAoB,qBAAqB,QAAI,wBAAS,yBAAyB;AAEtF,+BAAU,MAAM;AACd,QAAI,8BAA8B,QAAW;AAC3C,4BAAsB,yBAAyB;AAAA,IACjD;AAAA,EACF,GAAG,CAAC,yBAAyB,CAAC;AAE9B,QAAM,CAAC,iBAAiB,IAAI,QAAI,iCAAW,YAAY;AAErD,QAAI,YAAY;AACd,UAAI,YAAY,SAAS,UAAU;AACjC,YAAI;AACF,gBAAM,SAAS,MAAM,YAAY,WAAW,QAAQ;AACpD,iBAAO;AAAA,QACT,SAAS,GAAG;AACV,kBAAQ,MAAM,yCAAyC,CAAC;AAAA,QAC1D;AAAA,MACF;AAAA,IACF,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF,GAAG,CAAC,UAAU,UAAU,CAAC;AAEzB,UAAQ,IAAI,mBAAmB,cAAc,EAAE;AAE/C,QAAM,CAAC,gBAAgB,IAAI,QAAI;AAAA,IAC7B,YAAY,MAAM,gBAAgB,WAAW,mBAAmB,SAAS,CAAC;AAAA,IAC1E,CAAC,gBAAgB,kBAAkB;AAAA,EACrC;AAEA,SACE;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;ACpEA,IAAAC,wBAA2B;AAC3B,IAAAC,uBAA0C;AAKnC,IAAM,mBAAmB,CAAC,WAAW,SAAS;AACnD,aAAO,mCAAa,eAAe,UAAU,QAAQ;AACvD;AAEO,IAAM,oBAAoB,MAAM;AACrC,aAAO,kCAAY,aAAa;AAClC;AAEO,IAAM,oBAAoB,CAAC,WAAW,SAAiE;AAC5G,QAAM,EAAE,eAAe,IAAI,iBAAiB,QAAQ;AACpD,SAAO,CAAC,gBAAgB,MAAS;AACnC;AAEO,IAAM,gBAAgB,CAAC,WAAW,SAAiE;AACxG,QAAM,EAAE,WAAW,IAAI,iBAAiB,QAAQ;AAChD,SAAO,CAAC,YAAY,MAAS;AAC/B;AAEO,IAAM,8BAA8B,CAAC,OAAe,WAAW,SAAiE;AACrI,QAAM,CAAC,cAAc,IAAI,kBAAkB,QAAQ;AACnD,QAAM,CAAC,MAAM,QAAI,kCAAW,YAAa,MAAM,gBAAgB,WAAW,MAAM,SAAS,CAAC,KAAM,gBAAgB,CAAC,gBAAgB,KAAK,CAAC;AACvI,SAAO,CAAC,QAAQ,MAAS;AAC3B;AAEO,IAAM,2BAA2B,CAAC,WAAW,SAAiE;AACnH,QAAM,EAAE,mBAAmB,IAAI,iBAAiB,QAAQ;AAGxD,QAAM,CAAC,OAAO,IAAI,4BAA4B,sBAAsB,GAAG,QAAQ;AAC/E,MAAI,uBAAuB,UAAa,YAAY,MAAM;AACxD,WAAO,CAAC,MAAM,MAAS;AAAA,EACzB,OAAO;AACL,WAAO,CAAC,SAAS,MAAS;AAAA,EAC5B;AACF;;;ACxCA,IAAAC,mBAAuE;AAmBnE,IAAAC,sBAAA;AAVG,IAAM,sBAA0D,CAAC,EAAE,SAAS,GAAG,MAAM,MAAM;AAChG,QAAM,EAAE,YAAY,UAAU,IAAI,cAAc;AAEhD,QAAM,iBAAiB,CAAC,MAA+B;AAErD,gBAAY,EAAE;AACd,cAAU,GAAG,eAAe;AAAA,EAC9B;AAEA,SACE,8CAAC,kCAAe,GAAG,OACjB;AAAA,iDAAC,2BAAO,SAAQ,YAAW,SAAS,gBAAgB,oBAEpD;AAAA,IACA,6CAAC,2BAAO,SAAQ,YAAW,SAAS,YAAY,kBAEhD;AAAA,KACF;AAEJ;;;AC5BA,IAAAC,mBAAiG;;;ACA1F,IAAM,cAAc,CAAC,gBAAiC;AAC3D,UAAQ,aAAa;AAAA,IACnB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;;;ACTA,IAAAC,mBAAkD;AAGhD,IAAAC,sBAAA;AADK,IAAM,0BAAqD,CAAC,UACjE,8CAAC,+BAAW,SAAS,WAAW,OAAO,SAAU,GAAG,OAAO;AAAA;AAAA,EAC9B;AAAA,EAC3B,6CAAC,yBAAK,QAAQ,UAAU,MAAK,kEAAiE,4BAE9F;AAAA,GACF;;;ACRF,IAAAC,yBAA+F;AAC/F,2BAAsC;AAEtC,IAAAC,gBAAwB;AAqBT,IAAAC,sBAAA;AAfR,IAAM,kBAA6C,CAAC,EAAE,UAAU,aAAa,GAAG,MAAM,MAAM;AACjG,QAAM,YAAQ,uBAAQ,MAAM;AAC1B,YAAQ,aAAa;AAAA,MACnB,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,WAAO,uBAAQ,MAAM;AACzB,YAAQ,OAAO;AAAA,MACb,KAAK;AACH,eAAO,6CAAC,uBAAAC,oBAAA,EAAuB,UAAS,SAAQ,OAAM,WAAU;AAAA,MAClE,KAAK;AACH,eAAO,6CAAC,uBAAAC,cAAA,EAAiB,UAAS,SAAQ,OAAM,SAAQ;AAAA,MAC1D;AACE,eAAO;AAAA,IACX;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SACE,8CAAC,gCAAQ,gBAAgB,SAAS,WAAW,GAAI,GAAG,OACjD;AAAA;AAAA,IACA;AAAA,KACH;AAEJ;;;AH9BI,IAAAC,uBAAA;AAHG,IAAM,qBAAuD,CAAC,UAAU;AAC7E,QAAM,EAAE,aAAa,gBAAgB,kBAAkB,QAAQ,WAAW,YAAY,IAAI,cAAc;AACxG,SACE,gFACE;AAAA,mDAAC,gCAAY,WAAS,MAAC,MAAK,SAAQ,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,QAAQ,EAAE,GAC5F;AAAA,oDAAC,8BACC,wDAAC,mBAAgB,aAAa,aAAa,6BAAe,GAC5D;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,SAAO;AAAA,UACP,OAAO,YAAY,WAAW;AAAA,UAC9B,OAAO,gBAAgB;AAAA,UACvB,YAAY,gBAAgB,QAAQ,8CAAC,2BAAwB,IAAK;AAAA,UAClE,WAAS;AAAA,UACT,SAAS;AAAA,UACT,WAAS;AAAA,UACT,UAAU,CAAC,MAAM,YAAY,EAAE,OAAO,KAAK;AAAA,UAC3C,OAAO;AAAA,UACN,GAAG;AAAA;AAAA,MACN;AAAA,OACF;AAAA,IACA,+CAAC,kCAAc,IAAI,EAAE,gBAAgB,SAAS,GAC5C;AAAA,oDAAC,2BAAO,UAAU,kBAAkB,SAAQ,YAAW,SAAS,gBAAgB,sBAEhF;AAAA,MACA,8CAAC,2BAAO,SAAQ,YAAW,SAAS,aAAa,mBAEjD;AAAA,OACF;AAAA,KACF;AAEJ;;;AIpCA,IAAAC,mBAAgF;AAChF,IAAAC,gBAAyB;AAYnB,IAAAC,uBAAA;AAPC,IAAM,uBAAyD,CAAC,UAAU;AAC/E,QAAM,EAAE,iBAAiB,WAAW,IAAI,cAAc;AAEtD,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAS,KAAK;AAE5C,SACE,+CAAC,gCAAY,WAAS,MAAC,MAAK,SAAQ,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,QAAQ,EAAE,GAC5F;AAAA,kDAAC,yBAAK,OAAO,UAAU,2BAA2B,4BAA4B,SAAS,MAAM,WAAW,CAAC,OAAO,GAAG;AAAA,IAClH,UACC,gFACE;AAAA,oDAAC,8BACC,wDAAC,mBAAgB,aAAa,iBAAiB,+BAAiB,GAClE;AAAA,MACA;AAAA,QAAC;AAAA;AAAA,UACC,cAAc;AAAA,UACd,UAAQ;AAAA,UACR,OAAO,oBAAoB;AAAA,UAC3B,YAAY,oBAAoB,QAAQ,8CAAC,2BAAwB,IAAK;AAAA,UACtE,WAAS;AAAA,UACT,SAAS;AAAA,UACT,WAAS;AAAA,UACR,GAAG;AAAA;AAAA,MACN;AAAA,OACF,IACE;AAAA,KACN;AAEJ;;;ACjCA,IAAAC,mBAA8B;AAC9B,IAAAC,wBAAwB;AAWhB,IAAAC,uBAAA;AAPD,IAAM,mBAAmB,MAAM;AACpC,QAAM,EAAE,uBAAuB,WAAW,IAAI,cAAc;AAC5D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,UAAS;AAAA,MACT,QACE,+CAAC,iCAAQ,IAAI,EAAE,WAAW,EAAE,GAC1B;AAAA,sDAAC,2BAAO,SAAQ,YAAW,OAAM,WAAU,MAAK,SAAQ,SAAS,YAAY,uBAE7E;AAAA,QACA,8CAAC,2BAAO,SAAQ,YAAW,OAAM,WAAU,MAAK,SAAQ,SAAS,uBAAuB,oBAExF;AAAA,SACF;AAAA,MAEH;AAAA;AAAA,EAED;AAEJ;;;AdNM,IAAAC,uBAAA;AARC,IAAM,mBAAoD,CAAC,EAAE,kBAAkB,YAAY,GAAG,MAAM,MAAM;AAC/G,SACE;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,wBAAwB;AAAA,MACxB,MAAM,MAAM;AAAA,MACZ,cAAc,MAAM,MAAM,UAAU,CAAC,GAAG,eAAe;AAAA,MAEvD,wDAAC,yBAAuB,GAAG,OAAO;AAAA;AAAA,EACpC;AAEJ;AAEO,IAAM,wBAAyD,CAAC,UAAU;AAC/E,QAAM,EAAE,kBAAkB,WAAW,IAAI,cAAc;AAEvD,SACE,+CAAC,4BAAO,mBAAgB,sBAAqB,oBAAiB,4BAA2B,WAAS,MAAC,UAAU,MAAO,GAAG,OACrH;AAAA,mDAAC,iCAAY,IAAG,sBAAqB;AAAA;AAAA,MACX,8CAAC,wBAAqB;AAAA,OAChD;AAAA,IACA,+CAAC,mCAAc,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,QAAQ,EAAE,GACvE;AAAA,oDAAC,sBAAmB;AAAA,MACnB,aAAa,8CAAC,wBAAqB,IAAK;AAAA,MACxC,mBAAmB,8CAAC,oBAAiB,IAAK;AAAA,OAC7C;AAAA,IACA,8CAAC,uBAAoB,SAAS,MAAM,SAAS;AAAA,KAC/C;AAEJ;;;AexCA,IAAAC,yBAAmF;AACnF,IAAAC,oBAAwE;AACxE,IAAAC,gBAAyB;AAkBnB,IAAAC,uBAAA;AARC,IAAM,qBAAwD,CAAC,EAAE,kBAAkB,YAAY,GAAG,MAAM,MAAM;AACnH,QAAM,CAAC,MAAM,OAAO,QAAI,wBAAS,KAAK;AAEtC,QAAM,aAAa,MAAM;AACvB,YAAQ,IAAI;AAAA,EACd;AACA,SACE,+CAAC,8BAAU,GAAG,OACZ;AAAA,mDAAC,+BAAU;AAAA;AAAA,MACG,8CAAC,wBAAqB;AAAA,OACpC;AAAA,IACA,8CAAC,+BAAU,OAAM,UAAU,uBAAa,8CAAC,uBAAAC,oBAAA,EAAuB,OAAM,WAAU,IAAK,8CAAC,uBAAAC,QAAA,EAAW,OAAM,SAAQ,GAAG;AAAA,IAClH,+CAAC,+BACC;AAAA,oDAAC,oBAAiB,kBAAoC,MAAY,SAAS,MAAM,QAAQ,KAAK,GAAG,YAAwB;AAAA,MACzH,8CAAC,iCAAY,WAAS,MACpB,wDAAC,4BAAO,SAAQ,aAAY,MAAK,SAAQ,SAAS,YAAY,oBAE9D,GACF;AAAA,OACF;AAAA,KACF;AAEJ;;;AClCA,yBAA2B;AAC3B,0BAAiC;AACjC,IAAAC,wBAA+C;AAC/C,iCAA6B;AAC7B,2BAA2B;;;ACJ3B,IAAAC,wBAA2B;AAG3B,IAAAC,gBAAyB;AAWlB,IAAM,aAAa,CAAC,EAAE,QAAQ,SAAS,OAAO,WAAW,MAAM,IAAuB,CAAC,MAGzF;AACH,QAAM,wBAAwB,kBAAkB;AAChD,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,wBAAgB;AAC9D,MAAI,UAAU,WAAW,CAAC,iBAAiB;AACzC,uBAAmB,MAAM,wEAAwE,CAAC;AAAA,EACpG;AAEA,MAAI,SAAS,WAAW,CAAC,iBAAiB;AACxC,uBAAmB,MAAM,uEAAuE,CAAC;AAAA,EACnG;AAEA,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAgB;AAC1C,QAAM,CAAC,cAAc,IAAI,kBAAkB,CAAC,UAAU,QAAQ;AAC9D,QAAM,EAAE,mBAAmB,IAAI,iBAAiB,KAAK;AACrD,QAAM,CAAC,aAAa,QAAI,kCAAW,YAAY;AAC7C,QAAI;AACF,UAAI,CAAC,iBAAiB;AACpB,YAAI,QAAQ;AACV,iBAAO,MAAM,QAAQ,aAAa,GAAG,SAAS,CAAC,KAAK;AAAA,QACtD,WAAW,gBAAgB;AACzB,iBAAO,MAAM,gBAAgB,aAAa,GAAG,SAAS,sBAAsB,CAAC,KAAK;AAAA,QACpF;AAAA,MACF;AAAA,IACF,SAAS,IAAI;AACX,YAAMC,SAAQ;AACd,cAAQ,MAAMA,OAAM,OAAO;AAC3B,eAASA,MAAK;AAAA,IAChB;AAAA,EACF,GAAG,CAAC,OAAO,QAAQ,gBAAgB,oBAAoB,eAAe,CAAC;AACvE,MAAI,mBAAmB,CAAC,OAAO;AAC7B,YAAQ,MAAM,gBAAgB,OAAO;AACrC,aAAS,eAAe;AAAA,EAC1B;AAEA,SAAO,CAAC,QAAQ,SAAY,WAAW,iBAAiB,wBAAwB,OAAO,QAAW,KAAK;AACzG;;;ACpDA,IAAAC,wBAA2B;AAC3B,qBAAyB;AAEzB,IAAAC,iBAAyB;AAYlB,IAAM,YAAY,CAAC,EAAE,UAAU,QAAQ,MAAM,WAAW,OAAO,KAAK,IAAsB,CAAC,MAG7F;AACH,QAAM,wBAAwB,kBAAkB;AAChD,QAAM,CAAC,OAAO,QAAQ,QAAI,yBAAgB;AAC1C,QAAM,CAAC,cAAc,IAAI,yBAAyB,CAAC,UAAU,QAAQ;AACrE,QAAM,CAAC,aAAa,QAAI,kCAAW,YAAY;AAC7C,QAAI;AACF,YAAM,aAAa,OAAO,MAAM;AAC9B,YAAI,QAAQ;AACV,iBAAO;AAAA,QACT,WAAW,UAAU;AACnB,iBAAO,wBAAS,WAAW,QAAQ;AAAA,QACrC,WAAW,MAAM;AACf,iBAAO,wBAAS,SAAS,IAAI;AAAA,QAC/B;AACA,eAAO;AAAA,MACT,GAAG;AAEH,UAAI,MAAM;AACR,eAAO,YAAY,aAAa,IAAI;AAAA,MACtC,OAAO;AACL,eAAO,cAAc;AAAA,MACvB;AAAA,IACF,SAAS,IAAI;AACX,eAAS,EAAW;AAAA,IACtB;AAAA,EACF,GAAG,CAAC,UAAU,gBAAgB,MAAM,MAAM,MAAM,CAAC;AACjD,SAAO,CAAC,kBAAkB,wBAAwB,OAAO,gBAAgB,KAAK;AAChF;;;AC7CA,IAAAC,wBAA2B;AAWpB,IAAM,aAAa,CAAC,EAAE,QAAQ,MAAM,MAAmF;AAC5H,QAAM,wBAAwB,kBAAkB;AAChD,QAAM,CAAC,WAAW,IAAI,UAAU,EAAE,OAAO,CAAC;AAC1C,QAAM,CAAC,SAAS,KAAK,QAAI;AAAA,IACvB,YAAa,cAAc,MAAM,QAAQ,IAAI,MAAM,IAAI,CAAC,SAAS,YAAY,WAAW,IAAI,CAAC,CAAC,IAAI;AAAA,IAClG,CAAC,aAAa,KAAK;AAAA,EACrB;AACA,SAAO,CAAC,YAAY,wBAAwB,OAAO,UAAU,KAAK;AACpE;;;ACnBA,IAAAC,wBAAkD;AAClD,IAAAC,kBAAyB;AAGzB,yBAAsB;AAEtB,IAAI,sBAAkD;AACtD,IAAM,2BAA2B,IAAI,yBAAM;AAEpC,IAAM,oBAAoB,CAC/B,YACsF;AACtF,aAAO,kCAAW,YAAY;AAC5B,WAAO,MAAM,yBAAyB,aAAa,YAAY;AAE7D,UAAI,YAAY,QAAW;AACzB,eAAO;AAAA,MACT;AAEA,UAAI,qBAAqB;AACvB,eAAO;AAAA,MACT;AAEA,UAAI;AACF,8BAAsB,MAAM,yBAAS,OAAO;AAC5C,gBAAQ,IAAI,2CAA2C,oBAAoB,OAAO,EAAE;AAAA,MACtF,SAAS,IAAI;AACX,cAAM,QAAQ;AACd,gBAAQ,MAAM,0CAA0C,MAAM,OAAO,EAAE;AAAA,MACzE;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,OAAO,CAAC;AACd;;;AJZM,IAAAC,uBAAA;AAPC,IAAM,uBAA4D,CAAC,EAAE,aAAa,+BAA+B,SAAS,GAAG,MAAM,MAAM;AAC9I,QAAM,CAAC,YAAY,IAAI,WAAW,EAAE,QAAQ,CAAC;AAC7C,QAAM,EAAE,QAAQ,QAAI,iCAAW;AAC/B,QAAM,oBAAoB,GAAG,UAAU,mBAAmB,cAAc,OAAO,YAAY,SAAS,QAAQ,MAAM;AAElH,SACE,+CAAC,iCAAS,GAAG,OACX;AAAA,kDAAC,wCAAiB,SAAS,8BAAW,WAAW,cAAc,OAAO,GAAG;AAAA,IACzE,+CAAC,iCAAQ,KAAK,GACZ;AAAA,oDAAC,2CAAa,SAAO,MAAC,OAAM,UAAS,OAAO,GAAG,IAAI,GAAG,iBAAiB,sCAAsC,QAAO,UAAS;AAAA,MAC7H,8CAAC,2CAAa,SAAO,MAAC,OAAM,QAAO,OAAO,GAAG,IAAI,GAAG,iBAAiB,oCAAoC,QAAO,UAAS;AAAA,MACzH,8CAAC,2CAAa,SAAO,MAAC,OAAM,cAAa,OAAO,GAAG,IAAI,GAAG,iBAAiB,0CAA0C,QAAO,UAAS;AAAA,MACrI,8CAAC,2CAAa,SAAO,MAAC,OAAM,WAAU,OAAO,GAAG,IAAI,GAAG,iBAAiB,uCAAuC,QAAO,UAAS;AAAA,OACjI;AAAA,KACF;AAEJ;;;AK9BA,IAAAC,oBAAwD;AACxD,0BAAyB;AACzB,kCAA8D;AA8B1D,IAAAC,uBAAA;AAlBJ,IAAM,aAAa,CAAC,QAAgB,QAAQ,MAAM;AAChD,SAAO,MAAM,KAAK,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAC9D;AAEO,IAAM,sBAA0D,CAAC;AAAA,EACtE,eAAe,CAAC;AAAA,EAChB;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,cAAc;AAAA,EACd,eAAe;AAAA,EACf;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,EAAE,qBAAqB,GAAG,uBAAuB,eAAe,IAAI,iBAAiB;AAC3F,QAAM,WAAW,CAAC,kBAAkB,uBAAuB;AAE3D,SACE,+EACG,2BACC;AAAA,IAAC;AAAA;AAAA,MACC,QAAO;AAAA,MACP;AAAA,MACA,aAAa,CAAC,yBAAyB;AACrC,cAAM,OAAiB,MAAM;AAC3B,gBAAM,CAAC,eAAe,IAAI,UAAU,EAAE,MAAM,qBAAqB,SAAS,GAAG,QAAQ,eAAe,CAAC;AACrG,gBAAM,aAAa,kBAAkB,aAAa,gBAAgB,OAAO,IAAI;AAC7E,gBAAM,WAAW,CAAC,CAAC,mBAAmB,gBAAgB,WAAW;AACjE,iBACE,8CAAC,8BAAS,OAAO,sBAAsB,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,YAAY,EAAE,GACzF;AAAA,YAAC;AAAA;AAAA,cACC,kBAAkB;AAAA,cAClB,UAAU;AAAA,cACV,SAAS,iBAAiB;AAAA,cAC1B;AAAA,cACA;AAAA,cACA;AAAA,cACA,MAAM;AAAA,cACN;AAAA,cACA;AAAA;AAAA,UACF,GACF;AAAA,QAEJ;AACA,eAAO,8CAAC,QAAK;AAAA,MACf;AAAA,MACA,OAAO;AAAA,MACP,UAAU,CAAC,UAAU,wBAAwB,SAAS,GAAG,MAAM,OAAO,KAAK,EAAE,CAAC;AAAA,MAC9E;AAAA,MACA,SAAQ;AAAA,MACP,GAAG;AAAA,MAEH,qBAAW,WAAW,EAAE,IAAI,CAAC,UAAU;AACtC,cAAM,OAAiB,MAAM;AAC3B,gBAAM,CAAC,OAAO,IAAI,UAAU,EAAE,MAAM,MAAM,SAAS,GAAG,QAAQ,eAAe,CAAC;AAC9E,gBAAM,aAAa,UAAU,aAAa,QAAQ,OAAO,IAAI;AAC7D,gBAAM,WAAW,CAAC,CAAC,WAAW,QAAQ,WAAW;AACjD,iBACE,8CAAC,8BAAgC,OAAO,OAAO,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,YAAY,EAAE,GACjG;AAAA,YAAC;AAAA;AAAA,cACC,kBAAkB;AAAA,cAClB,UAAU;AAAA,cACV,SAAS,SAAS;AAAA,cAClB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA,MAAM;AAAA,cACN;AAAA;AAAA,UACF,KAXa,SAAS,OAYxB;AAAA,QAEJ;AAEA,eAAO,8CAAC,UAAU,KAAO;AAAA,MAC3B,CAAC;AAAA;AAAA,EACH,IAEA,8CAAC,sCAAiB,MAAM,IAAI,GAEhC;AAEJ;;;AChGA,IAAAC,wBAAsC;AA0BhC,IAAAC,uBAAA;AAZC,IAAM,yBAAgE,CAAC;AAAA,EAC5E,eAAe,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,eAAe;AAAA,EACf,OAAO;AAAA,EACP,GAAG;AACL,MAAM;AACJ,SACE,8CAAC,iCAAQ,YAAW,WAAW,GAAG,OAChC;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,WAAS;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,MAAM,QAAQ;AAAA;AAAA,EAChB,GACF;AAEJ;","names":["import_material","import_jsx_runtime","desiredMaximumAccounts","import_material","import_react","import_jsx_runtime","HelpOutlineIcon","import_material","import_react","import_jsx_runtime","import_material","import_bip39","import_react","import_jsx_runtime","import_react_shared","import_react_shared","import_react","import_jsx_runtime","import_react_promise","import_react_shared","import_material","import_jsx_runtime","import_material","import_material","import_jsx_runtime","import_icons_material","import_react","import_jsx_runtime","CheckCircleOutlineIcon","HighlightOffIcon","import_jsx_runtime","import_material","import_react","import_jsx_runtime","import_material","import_react_flexbox","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_material","import_react","import_jsx_runtime","RadioButtonCheckedIcon","CancelIcon","import_react_flexbox","import_react_promise","import_react","error","import_react_promise","import_react","import_react_promise","import_react_promise","import_account","import_jsx_runtime","import_material","import_jsx_runtime","import_react_flexbox","import_jsx_runtime"]}
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/SeedPhraseDialog.tsx","../../src/contexts/SeedPhrase/Context.ts","../../src/contexts/SeedPhrase/Provider.tsx","../../src/contexts/SeedPhrase/use.tsx","../../src/contexts/Wallet/Context.ts","../../src/contexts/Wallet/lib/WalletPath.ts","../../src/contexts/Wallet/Provider.tsx","../../src/contexts/Wallet/use.ts","../../src/components/SeedPhrase/dialog/components/DialogActionButtons.tsx","../../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/SavedPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/OverwriteWarning.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 { Dialog, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { SeedPhraseProvider, useSeedPhrase } from '../../../contexts'\nimport { SeedPhraseIconButton } from '../_shared'\nimport { DialogActionButtons, NewPhraseTextField, OverwriteWarning, 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 } = 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 {seedPhrase ? <SavedPhraseTextField /> : null}\n {overwriteWarning ? <OverwriteWarning /> : null}\n </DialogContent>\n <DialogActionButtons onClose={props.onClose} />\n </Dialog>\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 { 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\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 (!open) {\n handleCancelOverwrite()\n }\n }, [open])\n\n useEffect(() => {\n if (seedPhrase || open) {\n setPhrase?.(seedPhrase ?? '')\n }\n }, [seedPhrase, open, setPhrase])\n\n const handleGenerate = () => {\n const mnemonic = generateMnemonic(wordlist, 256)\n setPhrase?.(mnemonic)\n setOverwriteWarning?.(false)\n }\n\n const handleCancelOverwrite = () => {\n setOverwriteWarning?.(false)\n }\n\n const handleClear = () => {\n setPhrase?.('')\n setOverwriteWarning?.(false)\n }\n\n const handleSave = () => {\n if (!overwriteWarning && seedPhrase && seedPhrase !== phrase) {\n setOverwriteWarning?.(true)\n } else {\n handleChangeSeedPhrase?.(phrase ?? '')\n saveCallback?.()\n }\n }\n\n const validate = (passedPhrase?: string) => {\n if (!passedPhrase) {\n return null\n }\n return validateMnemonic(passedPhrase, wordlist)\n }\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","export const Bip44 = {\n base: 'm',\n coin_type: {\n /* https://github.com/satoshilabs/slips/blob/master/slip-0044.md */\n bitcoin: \"0'\",\n bitcoinTestnet: \"1'\",\n ether: \"60'\",\n etherClassic: \"61'\",\n },\n purpose: \"44'\",\n}\n\nexport const WalletRootPath = `${Bip44.base}/${Bip44.purpose}/${Bip44.coin_type.ether}`\n\nexport const ethereumAccountPath = (index: number, hardened = true) => {\n return `${WalletRootPath}/${index}${hardened ? \"'\" : ''}/0`\n}\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'\nimport { WalletRootPath } from './lib'\n\nexport interface WalletProviderProps {\n basePath?: string\n defaultActiveAccountIndex?: number\n rootWallet?: WalletInstance | null\n}\n\nexport const WalletProvider: React.FC<WithChildren<WalletProviderProps>> = ({\n basePath = WalletRootPath,\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 [coinTypeWallet = null] = usePromise(async () => {\n // ensure the wallet has the proper base\n if (rootWallet) {\n if (rootWallet?.path !== basePath) {\n try {\n const result = await rootWallet?.derivePath(basePath)\n return result\n } catch (e) {\n console.error('Error setting proper wallet base path', e)\n }\n }\n } else {\n return rootWallet\n }\n }, [basePath, rootWallet])\n\n console.log(`coinTypeWallet: ${coinTypeWallet}`)\n\n const [activeAccount = null] = usePromise(\n async () => await coinTypeWallet?.derivePath(activeAccountIndex.toString()),\n [coinTypeWallet, activeAccountIndex],\n )\n\n return (\n <WalletContext.Provider\n value={{\n activeAccount,\n activeAccountIndex,\n basePath,\n coinTypeWallet,\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 useCoinTypeWallet = (required = true): [WalletInstance | null | undefined, Error | undefined] => {\n const { coinTypeWallet } = useWalletContext(required)\n return [coinTypeWallet, undefined]\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 [coinTypeWallet] = useCoinTypeWallet(required)\n const [wallet] = usePromise(async () => (await coinTypeWallet?.derivePath(index.toString())) ?? coinTypeWallet, [coinTypeWallet, 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 if (activeAccountIndex === undefined && account === null) {\n return [null, undefined]\n } else {\n return [account, undefined]\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 { Button, DialogActions, FormControl, FormLabel, StandardTextFieldProps, TextField } from '@mui/material'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { colorParser, InvalidPhraseTypography, PhraseHeaderBox } from './validation-messages'\n\nexport const NewPhraseTextField: React.FC<StandardTextFieldProps> = (props) => {\n const { handleClear, handleGenerate, overwriteWarning, phrase, setPhrase, validPhrase } = useSeedPhrase()\n return (\n <>\n <FormControl fullWidth size=\"small\" sx={{ display: 'flex', flexDirection: 'column', rowGap: 1 }}>\n <FormLabel>\n <PhraseHeaderBox conditional={validPhrase}>New Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n <TextField\n focused\n color={colorParser(validPhrase)}\n error={validPhrase === false}\n helperText={validPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={Infinity}\n multiline\n onChange={(e) => setPhrase?.(e.target.value)}\n value={phrase}\n {...props}\n />\n </FormControl>\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}\n","export const colorParser = (conditional?: boolean | null) => {\n switch (conditional) {\n case true:\n return 'success'\n case false:\n return 'error'\n default:\n return undefined\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 case false:\n return 'error'\n default:\n return null\n }\n }, [conditional])\n\n const Icon = useMemo(() => {\n switch (state) {\n case 'success':\n return <CheckCircleOutlineIcon fontSize=\"small\" color=\"success\" />\n case 'error':\n return <HighlightOffIcon fontSize=\"small\" color=\"error\" />\n default:\n return null\n }\n }, [state])\n\n return (\n <FlexRow justifyContent={'start'} columnGap={1} {...props}>\n {Icon}\n {children}\n </FlexRow>\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 const SavedPhraseTextField: React.FC<StandardTextFieldProps> = (props) => {\n const { validSeedPhrase, seedPhrase } = useSeedPhrase()\n\n const [visible, setVisible] = useState(false)\n\n return (\n <FormControl 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 <FormLabel>\n <PhraseHeaderBox conditional={validSeedPhrase}>Saved Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n <TextField\n defaultValue={seedPhrase}\n disabled\n error={validSeedPhrase === false}\n helperText={validSeedPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={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 { 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\">{seedPhrase ? <RadioButtonCheckedIcon color=\"success\" /> : <CancelIcon color=\"error\" />}</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 { useCoinTypeWallet, 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(Error('useAccount can not have both a wallet and an account in the parameters'))\n }\n\n if (index && account && !validationError) {\n setValidationError(Error('useAccount can not have both a index and an account in the parameters'))\n }\n\n const [error, setError] = useState<Error>()\n const [coinTypeWallet] = useCoinTypeWallet(!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 (coinTypeWallet) {\n return await coinTypeWallet?.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, coinTypeWallet, activeAccountIndex, validationError])\n if (validationError && !error) {\n console.error(validationError.message)\n setError(validationError)\n }\n\n return [error ? undefined : account ?? activeAccount ?? walletContextProvided ? null : undefined, error]\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, useWalletProvided } 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 = useWalletProvided()\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 if (path) {\n return newAccount?.derivePath?.(path)\n } else {\n return newAccount ?? wallet\n }\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 { useWalletProvided } 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 = useWalletProvided()\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 = 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 interface WalletAccountSelectProps extends SharedAddressRenderRowBoxProps, SelectProps<number> {\n addressNames?: Record<string, string | undefined>\n maxAccounts?: number\n}\n\nconst arrayRange = (length: number, start = 0) => {\n return Array.from(Array(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 ...props\n}) => {\n const { activeAccountIndex = 0, setActiveAccountIndex, coinTypeWallet } = useWalletContext()\n const disabled = !coinTypeWallet || activeAccountIndex === undefined\n\n return (\n <>\n {coinTypeWallet ? (\n <SelectEx\n margin=\"dense\"\n disabled={disabled}\n renderValue={(selectedAccountIndex) => {\n const Item: React.FC = () => {\n const [selectedAccount] = useWallet({ path: selectedAccountIndex.toString(), wallet: coinTypeWallet })\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?.(parseInt(`${event.target.value}`))}\n size={size}\n variant=\"outlined\"\n {...props}\n >\n {arrayRange(maxAccounts).map((index) => {\n const Item: React.FC = () => {\n const [account] = useWallet({ path: index.toString(), wallet: coinTypeWallet })\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 ) : (\n <CircularProgress size={24} />\n )}\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 />\n </FlexCol>\n )\n}\n"],"mappings":"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","names":["import_material","import_jsx_runtime","desiredMaximumAccounts","import_material","import_react","import_jsx_runtime","HelpOutlineIcon","import_material","import_react","import_jsx_runtime","import_material","import_bip39","import_english","import_react","import_jsx_runtime","import_react_shared","import_react_shared","import_react","import_jsx_runtime","import_react_promise","import_react_shared","import_material","import_jsx_runtime","import_material","import_material","import_jsx_runtime","import_icons_material","import_react","import_jsx_runtime","CheckCircleOutlineIcon","HighlightOffIcon","import_jsx_runtime","import_material","import_react","import_jsx_runtime","import_material","import_react_flexbox","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_material","import_react","import_jsx_runtime","RadioButtonCheckedIcon","CancelIcon","import_react_flexbox","import_react_promise","import_react","error","import_react_promise","import_react","import_react_promise","import_react_promise","import_account","import_jsx_runtime","import_material","import_jsx_runtime","import_react_flexbox","import_jsx_runtime"]}
@@ -129,14 +129,15 @@ var SeedPhraseIconButton = (props) => {
129
129
 
130
130
  // src/components/SeedPhrase/DefaultSeedPhrase.tsx
131
131
  import { Alert as Alert2, AlertTitle as AlertTitle2, Snackbar as Snackbar2 } from "@mui/material";
132
- import { generateMnemonic, wordlists } from "@xyo-network/bip39";
132
+ import { generateMnemonic } from "@scure/bip39";
133
+ import { wordlist } from "@scure/bip39/wordlists/english";
133
134
  import { useEffect, useState as useState3 } from "react";
134
135
  import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
135
136
  var DefaultSeedPhrase = ({ changeSeedPhrase, children, hideDefaultSeedPhraseMessage, seedPhrase }) => {
136
137
  const [showSnackBar, setShowSnackBar] = useState3(false);
137
138
  useEffect(() => {
138
139
  if (!seedPhrase) {
139
- const mnemonic = generateMnemonic(wordlists.english, 256);
140
+ const mnemonic = generateMnemonic(wordlist, 256);
140
141
  changeSeedPhrase?.(mnemonic);
141
142
  setShowSnackBar(true);
142
143
  }
@@ -167,7 +168,8 @@ import { createContextEx } from "@xyo-network/react-shared";
167
168
  var SeedPhraseContext = createContextEx();
168
169
 
169
170
  // src/contexts/SeedPhrase/Provider.tsx
170
- import { generateMnemonic as generateMnemonic2, validateMnemonic, wordlists as wordlists2 } from "@xyo-network/bip39";
171
+ import { generateMnemonic as generateMnemonic2, validateMnemonic } from "@scure/bip39";
172
+ import { wordlist as wordlist2 } from "@scure/bip39/wordlists/english";
171
173
  import { useEffect as useEffect2, useMemo, useState as useState4 } from "react";
172
174
  import { jsx as jsx5 } from "react/jsx-runtime";
173
175
  var SeedPhraseProvider = ({
@@ -194,7 +196,7 @@ var SeedPhraseProvider = ({
194
196
  }
195
197
  }, [seedPhrase, open, setPhrase]);
196
198
  const handleGenerate = () => {
197
- const mnemonic = generateMnemonic2(wordlists2.english, 256);
199
+ const mnemonic = generateMnemonic2(wordlist2, 256);
198
200
  setPhrase?.(mnemonic);
199
201
  setOverwriteWarning?.(false);
200
202
  };
@@ -217,7 +219,7 @@ var SeedPhraseProvider = ({
217
219
  if (!passedPhrase) {
218
220
  return null;
219
221
  }
220
- return validateMnemonic(passedPhrase, wordlists2.english);
222
+ return validateMnemonic(passedPhrase, wordlist2);
221
223
  };
222
224
  const validSeedPhrase = useMemo(() => validate?.(seedPhrase), [seedPhrase]);
223
225
  const validPhrase = useMemo(() => validate?.(phrase), [phrase]);