@xyo-network/react-wallet 2.66.0 → 2.66.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.
@@ -271,74 +271,8 @@ var ethereumAccountPath = (index, hardened = true) => {
271
271
  };
272
272
 
273
273
  // src/contexts/Wallet/Provider.tsx
274
- import { useEffect as useEffect4, useState as useState6 } from "react";
275
-
276
- // src/contexts/Wallet/usePromise.ts
277
- import { Mutex } from "async-mutex";
278
- import { useEffect as useEffect3, useMemo as useMemo2, useState as useState5 } from "react";
279
- var usePromise = (promise, dependencies, debug = void 0) => {
280
- const [result, setResult] = useState5();
281
- const [error, setError] = useState5();
282
- const [state, setState] = useState5("pending" /* pending */);
283
- const mutex = useMemo2(() => {
284
- return new Mutex();
285
- }, []);
286
- if (debug)
287
- console.log(`usePromise [${debug}]: started [${typeof promise}]`);
288
- const promiseMemo = useMemo2(() => {
289
- try {
290
- if (debug)
291
- console.log(`usePromise [${debug}]: re-memo [${typeof promise}]`);
292
- setState("pending" /* pending */);
293
- return promise == null ? void 0 : promise();
294
- } catch (e) {
295
- if (debug)
296
- console.log(`usePromise [${debug}]: useMemo rejection [${typeof promise}]`);
297
- setResult(void 0);
298
- setError(e);
299
- setState("rejected" /* rejected */);
300
- }
301
- }, dependencies);
302
- if (debug)
303
- console.log(`usePromise [${debug}] Main Function`);
304
- useEffect3(() => {
305
- if (debug)
306
- console.log(`usePromise [${debug}] useEffect`);
307
- mutex == null ? void 0 : mutex.acquire().then(() => {
308
- promiseMemo == null ? void 0 : promiseMemo.then((payload) => {
309
- if (debug)
310
- console.log(`usePromise [${debug}] then`);
311
- setResult(payload);
312
- setError(void 0);
313
- setState("resolved" /* resolved */);
314
- mutex == null ? void 0 : mutex.release();
315
- }).catch((e) => {
316
- const error2 = e;
317
- console.error(`usePromise: ${error2.message}`);
318
- setResult(void 0);
319
- setError(error2);
320
- setState("rejected" /* rejected */);
321
- mutex == null ? void 0 : mutex.release();
322
- });
323
- }).catch((e) => {
324
- const error2 = e;
325
- console.error(`usePromise: ${error2.message}`);
326
- setResult(void 0);
327
- setError(error2);
328
- setState("rejected" /* rejected */);
329
- mutex == null ? void 0 : mutex.release();
330
- });
331
- return () => {
332
- if (debug)
333
- console.log(`usePromise [${debug}] useEffect callback`);
334
- };
335
- }, [...dependencies, promiseMemo]);
336
- if (debug)
337
- console.log(`usePromise [${debug}] returning ${JSON.stringify([result, error, state], null, 2)}`);
338
- return [result, error, state];
339
- };
340
-
341
- // src/contexts/Wallet/Provider.tsx
274
+ import { usePromise } from "@xylabs/react-promise";
275
+ import { useEffect as useEffect3, useState as useState5 } from "react";
342
276
  import { jsx as jsx6 } from "react/jsx-runtime";
343
277
  var WalletProvider = ({
344
278
  basePath = WalletRootPath,
@@ -347,26 +281,27 @@ var WalletProvider = ({
347
281
  rootWallet = null,
348
282
  ...props
349
283
  }) => {
350
- const [activeAccountIndex, setActiveAccountIndex] = useState6(defaultActiveAccountIndex);
351
- useEffect4(() => {
284
+ const [activeAccountIndex, setActiveAccountIndex] = useState5(defaultActiveAccountIndex);
285
+ useEffect3(() => {
352
286
  if (defaultActiveAccountIndex !== void 0) {
353
287
  setActiveAccountIndex(defaultActiveAccountIndex);
354
288
  }
355
289
  }, [defaultActiveAccountIndex]);
356
290
  const [coinTypeWallet = null] = usePromise(async () => {
357
- var _a;
358
291
  if (rootWallet) {
359
- if (!((_a = rootWallet == null ? void 0 : rootWallet.path) == null ? void 0 : _a.includes(basePath))) {
292
+ if ((rootWallet == null ? void 0 : rootWallet.path) !== basePath) {
360
293
  try {
361
- return await (rootWallet == null ? void 0 : rootWallet.derivePath(basePath));
294
+ const result = await (rootWallet == null ? void 0 : rootWallet.derivePath(basePath));
295
+ return result;
362
296
  } catch (e) {
363
297
  console.error("Error setting proper wallet base path", e);
364
298
  }
365
299
  }
366
300
  } else {
367
- return void 0;
301
+ return rootWallet;
368
302
  }
369
303
  }, [basePath, rootWallet]);
304
+ console.log(`coinTypeWallet: ${coinTypeWallet}`);
370
305
  const [activeAccount = null] = usePromise(
371
306
  async () => await (coinTypeWallet == null ? void 0 : coinTypeWallet.derivePath(activeAccountIndex.toString())),
372
307
  [coinTypeWallet, activeAccountIndex]
@@ -463,10 +398,10 @@ var InvalidPhraseTypography = (props) => /* @__PURE__ */ jsxs6(Typography3, { va
463
398
  // src/components/SeedPhrase/dialog/components/fields/validation-messages/PhraseHeaderBox.tsx
464
399
  import { CheckCircleOutline as CheckCircleOutlineIcon, HighlightOff as HighlightOffIcon } from "@mui/icons-material";
465
400
  import { FlexRow } from "@xylabs/react-flexbox";
466
- import { useMemo as useMemo3 } from "react";
401
+ import { useMemo as useMemo2 } from "react";
467
402
  import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
468
403
  var PhraseHeaderBox = ({ children, conditional, ...props }) => {
469
- const state = useMemo3(() => {
404
+ const state = useMemo2(() => {
470
405
  switch (conditional) {
471
406
  case true:
472
407
  return "success";
@@ -476,7 +411,7 @@ var PhraseHeaderBox = ({ children, conditional, ...props }) => {
476
411
  return null;
477
412
  }
478
413
  }, [conditional]);
479
- const Icon = useMemo3(() => {
414
+ const Icon = useMemo2(() => {
480
415
  switch (state) {
481
416
  case "success":
482
417
  return /* @__PURE__ */ jsx9(CheckCircleOutlineIcon, { fontSize: "small", color: "success" });
@@ -524,11 +459,11 @@ var NewPhraseTextField = (props) => {
524
459
 
525
460
  // src/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.tsx
526
461
  import { Chip, FormControl as FormControl2, FormLabel as FormLabel2, TextField as TextField2 } from "@mui/material";
527
- import { useState as useState7 } from "react";
462
+ import { useState as useState6 } from "react";
528
463
  import { Fragment as Fragment4, jsx as jsx11, jsxs as jsxs9 } from "react/jsx-runtime";
529
464
  var SavedPhraseTextField = (props) => {
530
465
  const { validSeedPhrase, seedPhrase } = useSeedPhrase();
531
- const [visible, setVisible] = useState7(false);
466
+ const [visible, setVisible] = useState6(false);
532
467
  return /* @__PURE__ */ jsxs9(FormControl2, { fullWidth: true, size: "small", sx: { display: "flex", flexDirection: "column", rowGap: 1 }, children: [
533
468
  /* @__PURE__ */ jsx11(Chip, { label: visible ? "Hide Saved Seed Phrase" : "Reveal Saved Seed Phrase", onClick: () => setVisible(!visible) }),
534
469
  visible ? /* @__PURE__ */ jsxs9(Fragment4, { children: [
@@ -606,10 +541,10 @@ var SeedPhraseDialogInner = (props) => {
606
541
  // src/components/SeedPhrase/settings/SeedPhraseTableRow.tsx
607
542
  import { Cancel as CancelIcon, RadioButtonChecked as RadioButtonCheckedIcon } from "@mui/icons-material";
608
543
  import { Button as Button5, ButtonGroup as ButtonGroup2, TableCell as TableCell2, TableRow as TableRow2 } from "@mui/material";
609
- import { useState as useState8 } from "react";
544
+ import { useState as useState7 } from "react";
610
545
  import { jsx as jsx14, jsxs as jsxs12 } from "react/jsx-runtime";
611
546
  var SeedPhraseTableRow = ({ changeSeedPhrase, seedPhrase, ...props }) => {
612
- const [open, setOpen] = useState8(false);
547
+ const [open, setOpen] = useState7(false);
613
548
  const handleOpen = () => {
614
549
  setOpen(true);
615
550
  };
@@ -635,17 +570,17 @@ import { useNetwork } from "@xyo-network/react-network";
635
570
 
636
571
  // src/hooks/useAccount.ts
637
572
  import { usePromise as usePromise3 } from "@xylabs/react-promise";
638
- import { useState as useState9 } from "react";
573
+ import { useState as useState8 } from "react";
639
574
  var useAccount = ({ wallet, account, index, required = false } = {}) => {
640
575
  const walletContextProvided = useWalletProvided();
641
- const [validationError, setValidationError] = useState9();
576
+ const [validationError, setValidationError] = useState8();
642
577
  if (wallet && account && !validationError) {
643
578
  setValidationError(Error("useAccount can not have both a wallet and an account in the parameters"));
644
579
  }
645
580
  if (index && account && !validationError) {
646
581
  setValidationError(Error("useAccount can not have both a index and an account in the parameters"));
647
582
  }
648
- const [error, setError] = useState9();
583
+ const [error, setError] = useState8();
649
584
  const [coinTypeWallet] = useCoinTypeWallet(!wallet && required);
650
585
  const { activeAccountIndex } = useWalletContext(false);
651
586
  const [activeAccount] = usePromise3(async () => {
@@ -674,10 +609,10 @@ var useAccount = ({ wallet, account, index, required = false } = {}) => {
674
609
  // src/hooks/useWallet.ts
675
610
  import { usePromise as usePromise4 } from "@xylabs/react-promise";
676
611
  import { HDWallet } from "@xyo-network/account";
677
- import { useState as useState10 } from "react";
612
+ import { useState as useState9 } from "react";
678
613
  var useWallet = ({ mnemonic, wallet, path, required = false, seed } = {}) => {
679
614
  const walletContextProvided = useWalletProvided();
680
- const [error, setError] = useState10();
615
+ const [error, setError] = useState9();
681
616
  const [contextAccount] = useSelectedWalletAccount(!wallet && required);
682
617
  const [activeAccount] = usePromise4(async () => {
683
618
  var _a;
@@ -719,9 +654,9 @@ var useWallets = ({ wallet, paths }) => {
719
654
  // src/hooks/useWrapperAccount.ts
720
655
  import { usePromise as usePromise6 } from "@xylabs/react-promise";
721
656
  import { HDWallet as HDWallet2 } from "@xyo-network/account";
722
- import { Mutex as Mutex2 } from "async-mutex";
657
+ import { Mutex } from "async-mutex";
723
658
  var globalWrapperWallet = void 0;
724
- var globalWrapperWalletMutex = new Mutex2();
659
+ var globalWrapperWalletMutex = new Mutex();
725
660
  var useWrapperAccount = (account) => {
726
661
  return usePromise6(async () => {
727
662
  return await globalWrapperWalletMutex.runExclusive(async () => {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../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/usePromise.ts","../../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":["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 { 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'\nimport { usePromise } from './usePromise'\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?.includes(basePath)) {\n try {\n return await rootWallet?.derivePath(basePath)\n } catch (e) {\n console.error('Error setting proper wallet base path', e)\n }\n }\n } else {\n return undefined\n }\n }, [basePath, rootWallet])\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","// Inspired from https://github.com/bsonntag/react-use-promise\n\nimport { Mutex } from 'async-mutex'\nimport { DependencyList, useEffect, useMemo, useState } from 'react'\n\nexport enum State {\n pending = 'pending',\n rejected = 'rejected',\n resolved = 'resolved',\n}\n\n/**\n * usePromise -\n */\nexport const usePromise = <TResult>(\n promise: () => Promise<TResult | undefined>,\n dependencies: DependencyList,\n debug: string | undefined = undefined,\n): [TResult | undefined, Error | undefined, State | undefined] => {\n const [result, setResult] = useState<TResult>()\n const [error, setError] = useState<Error>()\n const [state, setState] = useState<State>(State.pending)\n const mutex = useMemo(() => {\n return new Mutex()\n }, [])\n\n if (debug) console.log(`usePromise [${debug}]: started [${typeof promise}]`)\n\n const promiseMemo: Promise<TResult | undefined> | undefined = useMemo(() => {\n try {\n if (debug) console.log(`usePromise [${debug}]: re-memo [${typeof promise}]`)\n setState(State.pending)\n return promise?.()\n } catch (e) {\n if (debug) console.log(`usePromise [${debug}]: useMemo rejection [${typeof promise}]`)\n setResult(undefined)\n setError(e as Error)\n setState(State.rejected)\n }\n }, dependencies)\n\n if (debug) console.log(`usePromise [${debug}] Main Function`)\n\n useEffect(() => {\n if (debug) console.log(`usePromise [${debug}] useEffect`)\n mutex\n ?.acquire()\n .then(() => {\n promiseMemo\n ?.then((payload) => {\n if (debug) console.log(`usePromise [${debug}] then`)\n setResult(payload)\n setError(undefined)\n setState(State.resolved)\n mutex?.release()\n })\n .catch((e) => {\n const error = e as Error\n console.error(`usePromise: ${error.message}`)\n setResult(undefined)\n setError(error)\n setState(State.rejected)\n mutex?.release()\n })\n })\n .catch((e) => {\n const error = e as Error\n console.error(`usePromise: ${error.message}`)\n setResult(undefined)\n setError(error)\n setState(State.rejected)\n mutex?.release()\n })\n return () => {\n if (debug) console.log(`usePromise [${debug}] useEffect callback`)\n }\n }, [...dependencies, promiseMemo])\n if (debug) console.log(`usePromise [${debug}] returning ${JSON.stringify([result, error, state], null, 2)}`)\n return [result, error, state]\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 { DataLike } from '@xyo-network/core'\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?: DataLike\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":["jsx","jsxs","desiredMaximumAccounts","Typography","useState","jsx","jsxs","Alert","AlertTitle","Snackbar","useState","Fragment","jsx","jsxs","Dialog","DialogContent","DialogTitle","generateMnemonic","wordlists","useEffect","useState","jsx","useState","useEffect","generateMnemonic","wordlists","createContextEx","useEffect","useState","useEffect","useMemo","useState","useState","useMemo","useEffect","error","jsx","useState","useEffect","usePromise","useContextEx","useContextEx","usePromise","Button","DialogActions","jsx","jsxs","DialogActions","Button","Button","DialogActions","Link","Typography","jsx","jsxs","useMemo","jsx","jsxs","Fragment","jsx","jsxs","DialogActions","Button","FormControl","FormLabel","TextField","useState","Fragment","jsx","jsxs","useState","FormControl","FormLabel","TextField","Alert","Button","FlexRow","jsx","jsxs","Alert","FlexRow","Button","jsx","jsxs","Dialog","DialogTitle","DialogContent","Button","ButtonGroup","TableCell","TableRow","useState","jsx","jsxs","useState","TableRow","TableCell","ButtonGroup","Button","FlexRow","usePromise","useState","useState","usePromise","error","usePromise","useState","useState","usePromise","usePromise","usePromise","usePromise","HDWallet","Mutex","jsx","jsxs","FlexRow","Fragment","jsx","FlexCol","jsx","FlexCol"]}
1
+ {"version":3,"sources":["../../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":["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 { DataLike } from '@xyo-network/core'\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?: DataLike\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":["jsx","jsxs","desiredMaximumAccounts","Typography","useState","jsx","jsxs","Alert","AlertTitle","Snackbar","useState","Fragment","jsx","jsxs","Dialog","DialogContent","DialogTitle","generateMnemonic","wordlists","useEffect","useState","jsx","useState","useEffect","generateMnemonic","wordlists","createContextEx","useEffect","useState","jsx","useState","useEffect","usePromise","useContextEx","useContextEx","usePromise","Button","DialogActions","jsx","jsxs","DialogActions","Button","Button","DialogActions","Link","Typography","jsx","jsxs","useMemo","jsx","jsxs","Fragment","jsx","jsxs","DialogActions","Button","FormControl","FormLabel","TextField","useState","Fragment","jsx","jsxs","useState","FormControl","FormLabel","TextField","Alert","Button","FlexRow","jsx","jsxs","Alert","FlexRow","Button","jsx","jsxs","Dialog","DialogTitle","DialogContent","Button","ButtonGroup","TableCell","TableRow","useState","jsx","jsxs","useState","TableRow","TableCell","ButtonGroup","Button","FlexRow","usePromise","useState","useState","usePromise","error","usePromise","useState","useState","usePromise","usePromise","usePromise","usePromise","HDWallet","jsx","jsxs","FlexRow","Fragment","jsx","FlexCol","jsx","FlexCol"]}
package/package.json CHANGED
@@ -24,9 +24,9 @@
24
24
  "@xyo-network/account-model": "^2.81.6",
25
25
  "@xyo-network/bip39": "^2.81.6",
26
26
  "@xyo-network/core": "^2.81.6",
27
- "@xyo-network/react-address-render": "~2.66.0",
28
- "@xyo-network/react-network": "~2.66.0",
29
- "@xyo-network/react-shared": "~2.66.0",
27
+ "@xyo-network/react-address-render": "~2.66.1",
28
+ "@xyo-network/react-network": "~2.66.1",
29
+ "@xyo-network/react-shared": "~2.66.1",
30
30
  "@xyo-network/wallet-model": "^2.81.6",
31
31
  "async-mutex": "^0.4.0"
32
32
  },
@@ -95,6 +95,6 @@
95
95
  },
96
96
  "sideEffects": false,
97
97
  "types": "dist/browser/index.d.ts",
98
- "version": "2.66.0",
98
+ "version": "2.66.1",
99
99
  "type": "module"
100
100
  }
@@ -1,10 +1,10 @@
1
+ import { usePromise } from '@xylabs/react-promise'
1
2
  import { WithChildren } from '@xylabs/react-shared'
2
3
  import { WalletInstance } from '@xyo-network/wallet-model'
3
4
  import { useEffect, useState } from 'react'
4
5
 
5
6
  import { WalletContext } from './Context'
6
7
  import { WalletRootPath } from './lib'
7
- import { usePromise } from './usePromise'
8
8
 
9
9
  export interface WalletProviderProps {
10
10
  basePath?: string
@@ -30,18 +30,21 @@ export const WalletProvider: React.FC<WithChildren<WalletProviderProps>> = ({
30
30
  const [coinTypeWallet = null] = usePromise(async () => {
31
31
  // ensure the wallet has the proper base
32
32
  if (rootWallet) {
33
- if (!rootWallet?.path?.includes(basePath)) {
33
+ if (rootWallet?.path !== basePath) {
34
34
  try {
35
- return await rootWallet?.derivePath(basePath)
35
+ const result = await rootWallet?.derivePath(basePath)
36
+ return result
36
37
  } catch (e) {
37
38
  console.error('Error setting proper wallet base path', e)
38
39
  }
39
40
  }
40
41
  } else {
41
- return undefined
42
+ return rootWallet
42
43
  }
43
44
  }, [basePath, rootWallet])
44
45
 
46
+ console.log(`coinTypeWallet: ${coinTypeWallet}`)
47
+
45
48
  const [activeAccount = null] = usePromise(
46
49
  async () => await coinTypeWallet?.derivePath(activeAccountIndex.toString()),
47
50
  [coinTypeWallet, activeAccountIndex],