@xyo-network/react-wallet 2.71.0 → 2.71.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/components/WalletAccountSelect/WalletInfo.d.cts +1 -0
- package/dist/browser/components/WalletAccountSelect/WalletInfo.d.cts.map +1 -1
- package/dist/browser/components/WalletAccountSelect/WalletInfo.d.mts +1 -0
- package/dist/browser/components/WalletAccountSelect/WalletInfo.d.mts.map +1 -1
- package/dist/browser/components/WalletAccountSelect/WalletInfo.d.ts +1 -0
- package/dist/browser/components/WalletAccountSelect/WalletInfo.d.ts.map +1 -1
- package/dist/browser/components/WalletAccountSelect/stories/WalletProviderDecorator.d.cts +3 -0
- package/dist/browser/components/WalletAccountSelect/stories/WalletProviderDecorator.d.cts.map +1 -0
- package/dist/browser/components/WalletAccountSelect/stories/WalletProviderDecorator.d.mts +3 -0
- package/dist/browser/components/WalletAccountSelect/stories/WalletProviderDecorator.d.mts.map +1 -0
- package/dist/browser/components/WalletAccountSelect/stories/WalletProviderDecorator.d.ts +3 -0
- package/dist/browser/components/WalletAccountSelect/stories/WalletProviderDecorator.d.ts.map +1 -0
- package/dist/browser/components/WalletAccountSelect/stories/index.d.cts +2 -0
- package/dist/browser/components/WalletAccountSelect/stories/index.d.cts.map +1 -0
- package/dist/browser/components/WalletAccountSelect/stories/index.d.mts +2 -0
- package/dist/browser/components/WalletAccountSelect/stories/index.d.mts.map +1 -0
- package/dist/browser/components/WalletAccountSelect/stories/index.d.ts +2 -0
- package/dist/browser/components/WalletAccountSelect/stories/index.d.ts.map +1 -0
- package/dist/browser/contexts/Wallet/Provider.d.cts +1 -0
- package/dist/browser/contexts/Wallet/Provider.d.cts.map +1 -1
- package/dist/browser/contexts/Wallet/Provider.d.mts +1 -0
- package/dist/browser/contexts/Wallet/Provider.d.mts.map +1 -1
- package/dist/browser/contexts/Wallet/Provider.d.ts +1 -0
- package/dist/browser/contexts/Wallet/Provider.d.ts.map +1 -1
- package/dist/browser/contexts/Wallet/State.d.cts +2 -0
- package/dist/browser/contexts/Wallet/State.d.cts.map +1 -1
- package/dist/browser/contexts/Wallet/State.d.mts +2 -0
- package/dist/browser/contexts/Wallet/State.d.mts.map +1 -1
- package/dist/browser/contexts/Wallet/State.d.ts +2 -0
- package/dist/browser/contexts/Wallet/State.d.ts.map +1 -1
- package/dist/browser/contexts/Wallet/index.d.cts +0 -1
- package/dist/browser/contexts/Wallet/index.d.cts.map +1 -1
- package/dist/browser/contexts/Wallet/index.d.mts +0 -1
- package/dist/browser/contexts/Wallet/index.d.mts.map +1 -1
- package/dist/browser/contexts/Wallet/index.d.ts +0 -1
- package/dist/browser/contexts/Wallet/index.d.ts.map +1 -1
- package/dist/browser/contexts/Wallet/use.d.cts +1 -0
- package/dist/browser/contexts/Wallet/use.d.cts.map +1 -1
- package/dist/browser/contexts/Wallet/use.d.mts +1 -0
- package/dist/browser/contexts/Wallet/use.d.mts.map +1 -1
- package/dist/browser/contexts/Wallet/use.d.ts +1 -0
- package/dist/browser/contexts/Wallet/use.d.ts.map +1 -1
- package/dist/browser/index.cjs +18 -53
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +18 -53
- package/dist/browser/index.js.map +1 -1
- package/dist/node/components/WalletAccountSelect/WalletInfo.d.cts +1 -0
- package/dist/node/components/WalletAccountSelect/WalletInfo.d.cts.map +1 -1
- package/dist/node/components/WalletAccountSelect/WalletInfo.d.mts +1 -0
- package/dist/node/components/WalletAccountSelect/WalletInfo.d.mts.map +1 -1
- package/dist/node/components/WalletAccountSelect/WalletInfo.d.ts +1 -0
- package/dist/node/components/WalletAccountSelect/WalletInfo.d.ts.map +1 -1
- package/dist/node/components/WalletAccountSelect/stories/WalletProviderDecorator.d.cts +3 -0
- package/dist/node/components/WalletAccountSelect/stories/WalletProviderDecorator.d.cts.map +1 -0
- package/dist/node/components/WalletAccountSelect/stories/WalletProviderDecorator.d.mts +3 -0
- package/dist/node/components/WalletAccountSelect/stories/WalletProviderDecorator.d.mts.map +1 -0
- package/dist/node/components/WalletAccountSelect/stories/WalletProviderDecorator.d.ts +3 -0
- package/dist/node/components/WalletAccountSelect/stories/WalletProviderDecorator.d.ts.map +1 -0
- package/dist/node/components/WalletAccountSelect/stories/index.d.cts +2 -0
- package/dist/node/components/WalletAccountSelect/stories/index.d.cts.map +1 -0
- package/dist/node/components/WalletAccountSelect/stories/index.d.mts +2 -0
- package/dist/node/components/WalletAccountSelect/stories/index.d.mts.map +1 -0
- package/dist/node/components/WalletAccountSelect/stories/index.d.ts +2 -0
- package/dist/node/components/WalletAccountSelect/stories/index.d.ts.map +1 -0
- package/dist/node/contexts/Wallet/Provider.d.cts +1 -0
- package/dist/node/contexts/Wallet/Provider.d.cts.map +1 -1
- package/dist/node/contexts/Wallet/Provider.d.mts +1 -0
- package/dist/node/contexts/Wallet/Provider.d.mts.map +1 -1
- package/dist/node/contexts/Wallet/Provider.d.ts +1 -0
- package/dist/node/contexts/Wallet/Provider.d.ts.map +1 -1
- package/dist/node/contexts/Wallet/State.d.cts +2 -0
- package/dist/node/contexts/Wallet/State.d.cts.map +1 -1
- package/dist/node/contexts/Wallet/State.d.mts +2 -0
- package/dist/node/contexts/Wallet/State.d.mts.map +1 -1
- package/dist/node/contexts/Wallet/State.d.ts +2 -0
- package/dist/node/contexts/Wallet/State.d.ts.map +1 -1
- package/dist/node/contexts/Wallet/index.d.cts +0 -1
- package/dist/node/contexts/Wallet/index.d.cts.map +1 -1
- package/dist/node/contexts/Wallet/index.d.mts +0 -1
- package/dist/node/contexts/Wallet/index.d.mts.map +1 -1
- package/dist/node/contexts/Wallet/index.d.ts +0 -1
- package/dist/node/contexts/Wallet/index.d.ts.map +1 -1
- package/dist/node/contexts/Wallet/use.d.cts +1 -0
- package/dist/node/contexts/Wallet/use.d.cts.map +1 -1
- package/dist/node/contexts/Wallet/use.d.mts +1 -0
- package/dist/node/contexts/Wallet/use.d.mts.map +1 -1
- package/dist/node/contexts/Wallet/use.d.ts +1 -0
- package/dist/node/contexts/Wallet/use.d.ts.map +1 -1
- package/dist/node/index.cjs +18 -56
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +18 -53
- package/dist/node/index.js.map +1 -1
- package/package.json +8 -8
- package/src/components/WalletAccountSelect/Select.tsx +5 -5
- package/src/components/WalletAccountSelect/WalletAccountSelect.stories.tsx +5 -8
- package/src/components/WalletAccountSelect/WalletAccountSelectBar.stories.tsx +9 -19
- package/src/components/WalletAccountSelect/WalletAccountSelectWithProvider.stories.tsx +3 -9
- package/src/components/WalletAccountSelect/WalletInfo.tsx +1 -0
- package/src/components/WalletAccountSelect/stories/WalletProviderDecorator.tsx +15 -0
- package/src/components/WalletAccountSelect/stories/index.ts +1 -0
- package/src/contexts/Wallet/Provider.tsx +6 -25
- package/src/contexts/Wallet/State.ts +2 -0
- package/src/contexts/Wallet/index.ts +0 -1
- package/src/contexts/Wallet/use.ts +3 -2
- package/src/hooks/useAccount.ts +5 -5
- package/src/hooks/useWallet.ts +2 -2
- package/src/hooks/useWallets.ts +2 -2
- package/dist/browser/contexts/Wallet/lib/WalletPath.d.cts +0 -13
- package/dist/browser/contexts/Wallet/lib/WalletPath.d.cts.map +0 -1
- package/dist/browser/contexts/Wallet/lib/WalletPath.d.mts +0 -13
- package/dist/browser/contexts/Wallet/lib/WalletPath.d.mts.map +0 -1
- package/dist/browser/contexts/Wallet/lib/WalletPath.d.ts +0 -13
- package/dist/browser/contexts/Wallet/lib/WalletPath.d.ts.map +0 -1
- package/dist/browser/contexts/Wallet/lib/index.d.cts +0 -2
- package/dist/browser/contexts/Wallet/lib/index.d.cts.map +0 -1
- package/dist/browser/contexts/Wallet/lib/index.d.mts +0 -2
- package/dist/browser/contexts/Wallet/lib/index.d.mts.map +0 -1
- package/dist/browser/contexts/Wallet/lib/index.d.ts +0 -2
- package/dist/browser/contexts/Wallet/lib/index.d.ts.map +0 -1
- package/dist/node/contexts/Wallet/lib/WalletPath.d.cts +0 -13
- package/dist/node/contexts/Wallet/lib/WalletPath.d.cts.map +0 -1
- package/dist/node/contexts/Wallet/lib/WalletPath.d.mts +0 -13
- package/dist/node/contexts/Wallet/lib/WalletPath.d.mts.map +0 -1
- package/dist/node/contexts/Wallet/lib/WalletPath.d.ts +0 -13
- package/dist/node/contexts/Wallet/lib/WalletPath.d.ts.map +0 -1
- package/dist/node/contexts/Wallet/lib/index.d.cts +0 -2
- package/dist/node/contexts/Wallet/lib/index.d.cts.map +0 -1
- package/dist/node/contexts/Wallet/lib/index.d.mts +0 -2
- package/dist/node/contexts/Wallet/lib/index.d.mts.map +0 -1
- package/dist/node/contexts/Wallet/lib/index.d.ts +0 -2
- package/dist/node/contexts/Wallet/lib/index.d.ts.map +0 -1
- package/src/contexts/Wallet/lib/WalletPath.ts +0 -17
- package/src/contexts/Wallet/lib/index.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/components/MaxAccounts/MaxAccountsTableRow.tsx","../../src/components/MaxAccounts/OutOfBoundsSnackBar.tsx","../../src/components/SeedPhrase/_shared/SeedPhraseIconButton.tsx","../../src/components/SeedPhrase/DefaultSeedPhrase.tsx","../../src/components/SeedPhrase/dialog/components/DialogActionButtons.tsx","../../src/contexts/SeedPhrase/Context.ts","../../src/contexts/SeedPhrase/Provider.tsx","../../src/contexts/SeedPhrase/use.tsx","../../src/contexts/Wallet/Context.ts","../../src/contexts/Wallet/lib/WalletPath.ts","../../src/contexts/Wallet/Provider.tsx","../../src/contexts/Wallet/use.ts","../../src/components/SeedPhrase/dialog/components/fields/NewPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/colorParser.ts","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/InvalidPhrase.tsx","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/PhraseHeaderBox.tsx","../../src/components/SeedPhrase/dialog/components/fields/PhraseDialogActions.tsx","../../src/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/OverwriteWarning.tsx","../../src/components/SeedPhrase/dialog/SeedPhraseDialog.tsx","../../src/components/SeedPhrase/settings/SeedPhraseTableRow.tsx","../../src/components/WalletAccountDetails/WalletAccountDetails.tsx","../../src/hooks/useAccount.ts","../../src/hooks/useWallet.ts","../../src/hooks/useWallets.ts","../../src/hooks/useWrapperAccount.ts","../../src/components/WalletAccountSelect/Select.tsx","../../src/components/WalletAccountSelect/SelectBar.tsx"],"sourcesContent":["export * from './components'\nexport * from './contexts'\nexport * from './hooks'\n","import { ButtonGroup, TableCell, TableRow, TableRowProps, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { useState } from 'react'\n\nimport { OutOfBoundsSnackBar } from './OutOfBoundsSnackBar'\n\nexport interface MaxAccountsTableRow extends TableRowProps {\n activeAccountIndex?: number\n changeMaxAccounts?: (maxAccounts: number) => void\n maxAccounts?: number\n}\n\nexport const MaxAccountsTableRow: React.FC<MaxAccountsTableRow> = ({ activeAccountIndex, changeMaxAccounts, maxAccounts }) => {\n const [desiredMaximumAccounts, setDesiredMaximumAccounts] = useState<number | undefined>()\n const [showSnackBar, setShowSnackBar] = useState(false)\n\n const handleChangeMaxAccounts = (change: 'increase' | 'decrease') => {\n if (maxAccounts !== undefined && activeAccountIndex !== undefined) {\n switch (change) {\n case 'decrease': {\n const desiredMaximumAccounts = maxAccounts - 1\n const validMaximumAccounts = desiredMaximumAccounts > 0\n const maxAccountsWithinRange = activeAccountIndex + 1 <= desiredMaximumAccounts\n if (validMaximumAccounts && maxAccountsWithinRange) {\n changeMaxAccounts?.(desiredMaximumAccounts)\n }\n if (!maxAccountsWithinRange) setShowSnackBar(true)\n setDesiredMaximumAccounts(desiredMaximumAccounts)\n return\n }\n case 'increase': {\n changeMaxAccounts?.(maxAccounts + 1)\n return\n }\n default: {\n console.error(change, 'is not a recognized value')\n }\n }\n } else {\n throw new Error('Max Accounts is unset and needs a default')\n }\n }\n\n return (\n <TableRow>\n <TableCell>Maximum Accounts</TableCell>\n <TableCell align=\"center\">\n <Typography variant={'caption'}>{maxAccounts}</Typography>\n </TableCell>\n <TableCell align=\"center\">\n <ButtonGroup>\n <ButtonEx onClick={() => handleChangeMaxAccounts('decrease')} variant={'contained'} size={'small'}>\n -\n </ButtonEx>\n <ButtonEx onClick={() => handleChangeMaxAccounts('increase')} variant={'contained'} size={'small'}>\n +\n </ButtonEx>\n </ButtonGroup>\n <OutOfBoundsSnackBar\n desiredMaximumAccounts={desiredMaximumAccounts}\n activeAccountIndex={activeAccountIndex}\n setShowSnackBar={setShowSnackBar}\n showSnackBar={showSnackBar}\n />\n </TableCell>\n </TableRow>\n )\n}\n","import { Alert, AlertTitle, Snackbar, SnackbarProps } from '@mui/material'\nimport { Dispatch, SetStateAction } from 'react'\n\nexport interface OutOfBoundsSnackBarProps extends SnackbarProps {\n activeAccountIndex?: number\n desiredMaximumAccounts?: number\n setShowSnackBar?: Dispatch<SetStateAction<boolean>>\n showSnackBar?: boolean\n}\n\nexport const OutOfBoundsSnackBar: React.FC<OutOfBoundsSnackBarProps> = ({\n activeAccountIndex,\n desiredMaximumAccounts,\n setShowSnackBar,\n showSnackBar,\n}) => {\n return (\n <Snackbar\n anchorOrigin={{ horizontal: 'center', vertical: 'top' }}\n autoHideDuration={5000}\n onClose={() => setShowSnackBar?.(false)}\n open={showSnackBar}\n >\n <Alert severity={'error'} onClose={() => setShowSnackBar?.(false)}>\n <AlertTitle>Maximum Accounts Error</AlertTitle>\n Your currently selected account number ({activeAccountIndex === undefined ? '' : activeAccountIndex + 1}) cannot be greater than the desired\n Maximum Accounts ({desiredMaximumAccounts}).\n </Alert>\n </Snackbar>\n )\n}\n","import { HelpOutline as HelpOutlineIcon } from '@mui/icons-material'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n IconButtonProps,\n Link,\n List,\n ListItem,\n Typography,\n} from '@mui/material'\nimport { useState } from 'react'\n\nexport const SeedPhraseIconButton: React.FC<IconButtonProps> = (props) => {\n const [open, setOpen] = useState(false)\n const onClose = () => setOpen(false)\n return (\n <>\n <IconButton onClick={() => setOpen(true)} {...props}>\n <HelpOutlineIcon fontSize=\"small\" />\n </IconButton>\n <Dialog open={open}>\n <DialogTitle>Understanding your Seed Phrase</DialogTitle>\n <DialogContent>\n <Typography>\n Your Seed Phrase should adhere to the{' '}\n <Link target={'_blank'} href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">\n bip39 specification\n </Link>{' '}\n and is used to generate accounts which identify your data on the XYO Network.\n </Typography>\n <List>\n <ListItem>Do not share this phrase with anyone.</ListItem>\n <ListItem>Do not save it to a public computer.</ListItem>\n <ListItem>Do not use a existing phrase from another wallet (i.e. Metamask).</ListItem>\n <ListItem>Do not use before copying it down somewhere safe.</ListItem>\n </List>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} variant=\"outlined\">\n OK\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { Alert, AlertTitle, Snackbar } from '@mui/material'\nimport { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\n\nexport interface DefaultSeedPhraseProps extends WithChildren {\n changeSeedPhrase?: (seedPhrase: string) => void\n hideDefaultSeedPhraseMessage?: boolean\n seedPhrase?: string\n}\n\nexport const DefaultSeedPhrase: React.FC<DefaultSeedPhraseProps> = ({ changeSeedPhrase, children, hideDefaultSeedPhraseMessage, seedPhrase }) => {\n const [showSnackBar, setShowSnackBar] = useState(false)\n\n useEffect(() => {\n if (!seedPhrase) {\n const mnemonic = generateMnemonic(wordlist, 256)\n changeSeedPhrase?.(mnemonic)\n setShowSnackBar(true)\n }\n }, [changeSeedPhrase, seedPhrase])\n\n return (\n <>\n {hideDefaultSeedPhraseMessage ? null : (\n <Snackbar\n open={showSnackBar}\n autoHideDuration={5000}\n onClose={() => setShowSnackBar(false)}\n anchorOrigin={{ horizontal: 'center', vertical: 'top' }}\n >\n <Alert severity={'success'}>\n <AlertTitle>Default Seed Phrase Generated</AlertTitle>\n Go to application settings to save it.\n </Alert>\n </Snackbar>\n )}\n {children}\n </>\n )\n}\n","import { Button, DialogActions, DialogActionsProps, DialogProps } from '@mui/material'\nimport { MouseEvent } from 'react'\n\nimport { useSeedPhrase } from '../../../../contexts'\n\ninterface DialogActionButtonsProps extends DialogActionsProps {\n onClose?: DialogProps['onClose']\n}\n\nexport const DialogActionButtons: React.FC<DialogActionButtonsProps> = ({ onClose, ...props }) => {\n const { handleSave, setPhrase } = useSeedPhrase()\n\n const wrappedOnClose = (e: MouseEvent<HTMLElement>) => {\n // clear local copy of phrase when modal closes\n setPhrase?.('')\n onClose?.(e, 'escapeKeyDown')\n }\n\n return (\n <DialogActions {...props}>\n <Button variant=\"outlined\" onClick={wrappedOnClose}>\n Cancel\n </Button>\n <Button variant=\"outlined\" onClick={handleSave}>\n Save\n </Button>\n </DialogActions>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SeedPhraseContextState } from './State'\n\nexport const SeedPhraseContext = createContextEx<SeedPhraseContextState>()\n","import { generateMnemonic, validateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { SeedPhraseContext } from './Context'\n\nexport interface SeedPhraseProviderProps extends WithChildren {\n defaultPhrase?: string\n handleChangeSeedPhrase?: (phrase: string) => void\n open?: boolean\n saveCallback?: () => void\n seedPhrase?: string\n}\n\nconst validate = (passedPhrase?: string) => {\n if (!passedPhrase) {\n return null\n }\n return validateMnemonic(passedPhrase, wordlist)\n}\n\nexport const SeedPhraseProvider: React.FC<SeedPhraseProviderProps> = ({\n children,\n defaultPhrase,\n handleChangeSeedPhrase,\n saveCallback,\n seedPhrase,\n open,\n}) => {\n const [phrase, setPhrase] = useState<string | undefined>()\n const [overwriteWarning, setOverwriteWarning] = useState(false)\n\n useEffect(() => {\n setPhrase(defaultPhrase)\n }, [defaultPhrase])\n\n useEffect(() => {\n if (seedPhrase || open) {\n setPhrase?.(seedPhrase ?? '')\n }\n }, [seedPhrase, open, setPhrase])\n\n const handleGenerate = useCallback(() => {\n const mnemonic = generateMnemonic(wordlist, 256)\n setPhrase?.(mnemonic)\n setOverwriteWarning?.(false)\n }, [])\n\n const handleCancelOverwrite = useCallback(() => {\n setOverwriteWarning?.(false)\n }, [])\n\n const handleClear = useCallback(() => {\n setPhrase?.('')\n setOverwriteWarning?.(false)\n }, [])\n\n const handleSave = useCallback(() => {\n if (!overwriteWarning && seedPhrase && seedPhrase !== phrase) {\n setOverwriteWarning?.(true)\n } else {\n handleChangeSeedPhrase?.(phrase ?? '')\n saveCallback?.()\n }\n }, [handleChangeSeedPhrase, overwriteWarning, phrase, saveCallback, seedPhrase])\n\n useEffect(() => {\n if (!open) {\n handleCancelOverwrite()\n }\n }, [handleCancelOverwrite, open])\n\n const validSeedPhrase = useMemo(() => validate?.(seedPhrase), [seedPhrase])\n const validPhrase = useMemo(() => validate?.(phrase), [phrase])\n\n return (\n <SeedPhraseContext.Provider\n value={{\n handleCancelOverwrite,\n handleChangeSeedPhrase,\n handleClear,\n handleGenerate,\n handleSave,\n overwriteWarning,\n phrase,\n provided: true,\n seedPhrase,\n setOverwriteWarning,\n setPhrase,\n validPhrase,\n validSeedPhrase,\n validate,\n }}\n >\n {children}\n </SeedPhraseContext.Provider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SeedPhraseContext } from './Context'\n\nexport const useSeedPhrase = () => useContextEx(SeedPhraseContext, 'SeedPhrase', true)\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { WalletContextState } from './State'\n\nexport const WalletContext = createContextEx<WalletContextState>()\n","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 return activeAccountIndex === undefined && account === null ? [null, undefined] : [account, undefined]\n}\n","import { FormControl, StandardTextFieldProps, TextField } from '@mui/material'\nimport { ReactNode } from 'react'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { colorParser, InvalidPhraseTypography } from './validation-messages'\n\nexport interface NewPhraseTextFieldProps extends StandardTextFieldProps {\n children?: ReactNode\n disableColor?: boolean\n}\n\nexport const NewPhraseTextField: React.FC<NewPhraseTextFieldProps> = ({ children, disableColor, ...props }) => {\n const { phrase, setPhrase, validPhrase } = useSeedPhrase()\n return (\n <>\n <FormControl fullWidth size=\"small\" sx={{ display: 'flex', flexDirection: 'column', rowGap: 1 }}>\n {children}\n <TextField\n focused\n color={disableColor ? undefined : colorParser(validPhrase)}\n error={validPhrase === false}\n helperText={validPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={Number.POSITIVE_INFINITY}\n multiline\n onChange={(e) => setPhrase?.(e.target.value)}\n value={phrase}\n {...props}\n />\n </FormControl>\n </>\n )\n}\n","export const colorParser = (conditional?: boolean | null) => {\n switch (conditional) {\n case true: {\n return 'success'\n }\n case false: {\n return 'error'\n }\n default: {\n return\n }\n }\n}\n","import { Link, Typography, TypographyProps } from '@mui/material'\n\nexport const InvalidPhraseTypography: React.FC<TypographyProps> = (props) => (\n <Typography variant={'caption'} color={'error'} {...props}>\n Invalid seed phrase. See -{' '}\n <Link target={'_blank'} href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">\n bip39 Proposal\n </Link>\n </Typography>\n)\n","import { CheckCircleOutline as CheckCircleOutlineIcon, HighlightOff as HighlightOffIcon } from '@mui/icons-material'\nimport { FlexBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useMemo } from 'react'\n\ninterface PhraseHeaderBox extends FlexBoxProps, WithChildren {\n conditional?: boolean | null\n}\n\nexport const PhraseHeaderBox: React.FC<PhraseHeaderBox> = ({ children, conditional, ...props }) => {\n const state = useMemo(() => {\n switch (conditional) {\n case true: {\n return 'success'\n }\n case false: {\n return 'error'\n }\n default: {\n return null\n }\n }\n }, [conditional])\n\n const Icon = useMemo(() => {\n switch (state) {\n case 'success': {\n return <CheckCircleOutlineIcon fontSize=\"small\" color=\"success\" />\n }\n case 'error': {\n return <HighlightOffIcon fontSize=\"small\" color=\"error\" />\n }\n default: {\n return null\n }\n }\n }, [state])\n\n return (\n <FlexRow justifyContent={'start'} columnGap={1} {...props}>\n {Icon}\n {children}\n </FlexRow>\n )\n}\n","import { Button, DialogActions } from '@mui/material'\n\nimport { useSeedPhrase } from '../../../../../contexts'\n\nexport const PhraseDialogActions = () => {\n const { handleClear, handleGenerate, overwriteWarning } = useSeedPhrase()\n return (\n <DialogActions sx={{ justifyContent: 'center' }}>\n <Button disabled={overwriteWarning} variant=\"outlined\" onClick={handleGenerate}>\n Generate\n </Button>\n <Button variant=\"outlined\" onClick={handleClear}>\n Clear\n </Button>\n </DialogActions>\n )\n}\n","import { Chip, FormControl, FormLabel, StandardTextFieldProps, TextField } from '@mui/material'\nimport { useState } from 'react'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { InvalidPhraseTypography, PhraseHeaderBox } from './validation-messages'\n\nexport 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={Number.POSITIVE_INFINITY}\n multiline\n {...props}\n />\n </>\n : null}\n </FormControl>\n )\n}\n","import { Alert, Button } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { useSeedPhrase } from '../../../../contexts'\n\nexport const OverwriteWarning = () => {\n const { handleCancelOverwrite, handleSave } = useSeedPhrase()\n return (\n <Alert\n variant=\"outlined\"\n severity=\"warning\"\n action={\n <FlexRow sx={{ columnGap: 1 }}>\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={handleSave}>\n Overwrite\n </Button>\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={handleCancelOverwrite}>\n Cancel\n </Button>\n </FlexRow>\n }\n >\n Are you sure you want to overwrite existing seed phrase? This action cannot be undone.\n </Alert>\n )\n}\n","import { Dialog, DialogContent, DialogProps, DialogTitle, FormLabel } from '@mui/material'\n\nimport { SeedPhraseProvider, useSeedPhrase } from '../../../contexts'\nimport { SeedPhraseIconButton } from '../_shared'\nimport { DialogActionButtons, NewPhraseTextField, OverwriteWarning, PhraseDialogActions, PhraseHeaderBox, SavedPhraseTextField } from './components'\n\nexport interface SeedPhraseDialogProps extends DialogProps {\n changeSeedPhrase?: (value: string) => void\n seedPhrase?: string\n}\n\nexport const SeedPhraseDialog: React.FC<SeedPhraseDialogProps> = ({ changeSeedPhrase, seedPhrase, ...props }) => {\n return (\n <SeedPhraseProvider\n seedPhrase={seedPhrase}\n handleChangeSeedPhrase={changeSeedPhrase}\n open={props.open}\n saveCallback={() => props.onClose?.({}, 'escapeKeyDown')}\n >\n <SeedPhraseDialogInner {...props} />\n </SeedPhraseProvider>\n )\n}\n\nexport const SeedPhraseDialogInner: React.FC<SeedPhraseDialogProps> = (props) => {\n const { overwriteWarning, seedPhrase, validPhrase } = useSeedPhrase()\n\n return (\n <Dialog aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\" fullWidth maxWidth={'sm'} {...props}>\n <DialogTitle id=\"alert-dialog-title\">\n Update Your Seed Phrase <SeedPhraseIconButton />\n </DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', rowGap: 2 }}>\n <NewPhraseTextField>\n <FormLabel>\n <PhraseHeaderBox conditional={validPhrase}>New Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n </NewPhraseTextField>\n <PhraseDialogActions />\n {seedPhrase ?\n <SavedPhraseTextField />\n : null}\n {overwriteWarning ?\n <OverwriteWarning />\n : null}\n </DialogContent>\n <DialogActionButtons onClose={props.onClose} />\n </Dialog>\n )\n}\n","import { Cancel as CancelIcon, RadioButtonChecked as RadioButtonCheckedIcon } from '@mui/icons-material'\nimport { Button, ButtonGroup, TableCell, TableRow, TableRowProps } from '@mui/material'\nimport { useState } from 'react'\n\nimport { SeedPhraseIconButton } from '../_shared'\nimport { SeedPhraseDialog } from '../dialog'\n\nexport interface SeedPhraseTableRowProps extends TableRowProps {\n changeSeedPhrase?: (seedPhrase: string) => void\n seedPhrase?: string\n}\n\nexport const SeedPhraseTableRow: React.FC<SeedPhraseTableRowProps> = ({ changeSeedPhrase, seedPhrase, ...props }) => {\n const [open, setOpen] = useState(false)\n\n const handleOpen = () => {\n setOpen(true)\n }\n return (\n <TableRow {...props}>\n <TableCell>\n Seed Phrase <SeedPhraseIconButton />\n </TableCell>\n <TableCell align=\"center\">\n {seedPhrase ?\n <RadioButtonCheckedIcon color=\"success\" />\n : <CancelIcon color=\"error\" />}\n </TableCell>\n <TableCell>\n <SeedPhraseDialog changeSeedPhrase={changeSeedPhrase} open={open} onClose={() => setOpen(false)} seedPhrase={seedPhrase} />\n <ButtonGroup fullWidth>\n <Button variant=\"contained\" size=\"small\" onClick={handleOpen}>\n Update\n </Button>\n </ButtonGroup>\n </TableCell>\n </TableRow>\n )\n}\n","import { EthAddress } from '@xylabs/eth-address'\nimport { EthAccountButton } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { NumberStatus } from '@xylabs/react-number-status'\nimport { useNetwork } from '@xyo-network/react-network'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { useAccount } from '../../hooks'\n\nexport interface WalletAccountDetailsProps extends FlexBoxProps {\n account?: WalletInstance\n exploreUrl?: string\n}\n\nexport const WalletAccountDetails: React.FC<WalletAccountDetailsProps> = ({ exploreUrl = 'https://explore.xyo.network', account, ...props }) => {\n const [accountToUse] = useAccount({ account })\n const { network } = useNetwork()\n const exploreAddressUrl = `${exploreUrl}/recent?account=${accountToUse?.address}&network=${network?.name ?? 'main'}`\n\n return (\n <FlexCol {...props}>\n <EthAccountButton address={EthAddress.fromString(accountToUse?.address)} />\n <FlexRow gap={1}>\n <NumberStatus rounded title=\"Tokens\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.tokens`} target=\"_blank\" />\n <NumberStatus rounded title=\"NFTs\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.nfts`} target=\"_blank\" />\n <NumberStatus rounded title=\"Signatures\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.signatures`} target=\"_blank\" />\n <NumberStatus rounded title=\"Signins\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.signins`} target=\"_blank\" />\n </FlexRow>\n </FlexCol>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useState } from 'react'\n\nimport { 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(new Error('useAccount can not have both a wallet and an account in the parameters'))\n }\n\n if (index && account && !validationError) {\n setValidationError(new Error('useAccount can not have both a index and an account in the parameters'))\n }\n\n const [error, setError] = useState<Error>()\n const [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 [\n error ? undefined\n : account ?? activeAccount ?? walletContextProvided ? null\n : undefined,\n error,\n ]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useState } from 'react'\n\nimport { useSelectedWalletAccount, 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 return path ? newAccount?.derivePath?.(path) : newAccount ?? wallet\n } catch (ex) {\n setError(ex as Error)\n }\n }, [mnemonic, contextAccount, seed, path, wallet])\n return [activeAccount ?? (walletContextProvided ? null : activeAccount), error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { 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\nconst globalWrapperWalletMutex = new Mutex()\n\nexport const useWrapperAccount = (\n account?: AccountInstance | null,\n): [AccountInstance | null | undefined, Error | undefined, PromiseState | undefined] => {\n return usePromise(async () => {\n return await globalWrapperWalletMutex.runExclusive(async () => {\n //if we are expecting to receive a wallet or did receive on, return the override account\n if (account !== undefined) {\n return account\n }\n\n if (globalWrapperWallet) {\n return globalWrapperWallet\n }\n\n try {\n globalWrapperWallet = await HDWallet.random()\n console.log(`Global Wrapper Wallet Creation Success: ${globalWrapperWallet.address}`)\n } catch (ex) {\n const error = ex as Error\n console.error(`Global Wrapper Wallet Creation Failed: ${error.message}`)\n }\n return globalWrapperWallet\n })\n }, [account])\n}\n","import { CircularProgress, MenuItem, SelectProps } from '@mui/material'\nimport { SelectEx } from '@xylabs/react-select'\nimport { AddressRenderRowBox, AddressRenderRowBoxProps } from '@xyo-network/react-address-render'\n\nimport { useWalletContext } from '../../contexts'\nimport { useWallet } from '../../hooks'\n\ntype SharedAddressRenderRowBoxProps = Pick<AddressRenderRowBoxProps, 'iconOnly' | 'iconSize' | 'icons' | 'showFavorite'>\n\nexport type WalletAccountSelectProps = SharedAddressRenderRowBoxProps &\n Omit<SelectProps<number>, 'variant'> &\n Partial<SelectProps<number>> & {\n addressNames?: Record<string, string | undefined>\n maxAccounts?: number\n }\n\nconst arrayRange = (length: number, start = 0) => {\n return [...Array.from({ length }).keys()].map((x) => x + start)\n}\n\nexport const WalletAccountSelect: React.FC<WalletAccountSelectProps> = ({\n addressNames = {},\n iconOnly,\n iconSize = 24,\n icons,\n maxAccounts = 1,\n showFavorite = false,\n size,\n variant = 'outlined',\n ...props\n}) => {\n const { activeAccountIndex = 0, setActiveAccountIndex, 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?.(Number.parseInt(`${event.target.value}`))}\n size={size}\n variant={variant}\n {...props}\n >\n {arrayRange(maxAccounts).map((index) => {\n const Item: React.FC = () => {\n const [account] = useWallet({ path: index.toString(), wallet: 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 : <CircularProgress size={24} />}\n </>\n )\n}\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nimport { WalletAccountSelect } from './Select'\n\nexport interface WalletAccountSelectBarProps extends FlexBoxProps {\n addressNames?: Record<string, string | undefined>\n iconOnly?: boolean\n iconSize?: number\n icons?: boolean\n maxAccounts?: number\n showFavorite?: boolean\n size?: 'small' | 'medium'\n}\n\nexport const WalletAccountSelectBar: React.FC<WalletAccountSelectBarProps> = ({\n addressNames = {},\n iconOnly,\n iconSize,\n icons,\n maxAccounts = 1,\n showFavorite = false,\n size = 'small',\n ...props\n}) => {\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <WalletAccountSelect\n addressNames={addressNames}\n fullWidth\n showFavorite={showFavorite}\n iconSize={iconSize}\n iconOnly={iconOnly}\n icons={icons}\n maxAccounts={maxAccounts}\n size={size ?? 'small'}\n variant=\"outlined\"\n />\n </FlexCol>\n )\n}\n"],"mappings":"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","names":["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_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_jsx_runtime","import_material","import_react","import_jsx_runtime","import_material","import_react_flexbox","import_jsx_runtime","import_material","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/components/DialogActionButtons.tsx","../../src/contexts/SeedPhrase/Context.ts","../../src/contexts/SeedPhrase/Provider.tsx","../../src/contexts/SeedPhrase/use.tsx","../../src/contexts/Wallet/Context.ts","../../src/contexts/Wallet/Provider.tsx","../../src/contexts/Wallet/use.ts","../../src/components/SeedPhrase/dialog/components/fields/NewPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/colorParser.ts","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/InvalidPhrase.tsx","../../src/components/SeedPhrase/dialog/components/fields/validation-messages/PhraseHeaderBox.tsx","../../src/components/SeedPhrase/dialog/components/fields/PhraseDialogActions.tsx","../../src/components/SeedPhrase/dialog/components/fields/SavedPhraseTextField.tsx","../../src/components/SeedPhrase/dialog/components/OverwriteWarning.tsx","../../src/components/SeedPhrase/dialog/SeedPhraseDialog.tsx","../../src/components/SeedPhrase/settings/SeedPhraseTableRow.tsx","../../src/components/WalletAccountDetails/WalletAccountDetails.tsx","../../src/hooks/useAccount.ts","../../src/hooks/useWallet.ts","../../src/hooks/useWallets.ts","../../src/hooks/useWrapperAccount.ts","../../src/components/WalletAccountSelect/Select.tsx","../../src/components/WalletAccountSelect/SelectBar.tsx"],"sourcesContent":["export * from './components'\nexport * from './contexts'\nexport * from './hooks'\n","import { ButtonGroup, TableCell, TableRow, TableRowProps, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { useState } from 'react'\n\nimport { OutOfBoundsSnackBar } from './OutOfBoundsSnackBar'\n\nexport interface MaxAccountsTableRow extends TableRowProps {\n activeAccountIndex?: number\n changeMaxAccounts?: (maxAccounts: number) => void\n maxAccounts?: number\n}\n\nexport const MaxAccountsTableRow: React.FC<MaxAccountsTableRow> = ({ activeAccountIndex, changeMaxAccounts, maxAccounts }) => {\n const [desiredMaximumAccounts, setDesiredMaximumAccounts] = useState<number | undefined>()\n const [showSnackBar, setShowSnackBar] = useState(false)\n\n const handleChangeMaxAccounts = (change: 'increase' | 'decrease') => {\n if (maxAccounts !== undefined && activeAccountIndex !== undefined) {\n switch (change) {\n case 'decrease': {\n const desiredMaximumAccounts = maxAccounts - 1\n const validMaximumAccounts = desiredMaximumAccounts > 0\n const maxAccountsWithinRange = activeAccountIndex + 1 <= desiredMaximumAccounts\n if (validMaximumAccounts && maxAccountsWithinRange) {\n changeMaxAccounts?.(desiredMaximumAccounts)\n }\n if (!maxAccountsWithinRange) setShowSnackBar(true)\n setDesiredMaximumAccounts(desiredMaximumAccounts)\n return\n }\n case 'increase': {\n changeMaxAccounts?.(maxAccounts + 1)\n return\n }\n default: {\n console.error(change, 'is not a recognized value')\n }\n }\n } else {\n throw new Error('Max Accounts is unset and needs a default')\n }\n }\n\n return (\n <TableRow>\n <TableCell>Maximum Accounts</TableCell>\n <TableCell align=\"center\">\n <Typography variant={'caption'}>{maxAccounts}</Typography>\n </TableCell>\n <TableCell align=\"center\">\n <ButtonGroup>\n <ButtonEx onClick={() => handleChangeMaxAccounts('decrease')} variant={'contained'} size={'small'}>\n -\n </ButtonEx>\n <ButtonEx onClick={() => handleChangeMaxAccounts('increase')} variant={'contained'} size={'small'}>\n +\n </ButtonEx>\n </ButtonGroup>\n <OutOfBoundsSnackBar\n desiredMaximumAccounts={desiredMaximumAccounts}\n activeAccountIndex={activeAccountIndex}\n setShowSnackBar={setShowSnackBar}\n showSnackBar={showSnackBar}\n />\n </TableCell>\n </TableRow>\n )\n}\n","import { Alert, AlertTitle, Snackbar, SnackbarProps } from '@mui/material'\nimport { Dispatch, SetStateAction } from 'react'\n\nexport interface OutOfBoundsSnackBarProps extends SnackbarProps {\n activeAccountIndex?: number\n desiredMaximumAccounts?: number\n setShowSnackBar?: Dispatch<SetStateAction<boolean>>\n showSnackBar?: boolean\n}\n\nexport const OutOfBoundsSnackBar: React.FC<OutOfBoundsSnackBarProps> = ({\n activeAccountIndex,\n desiredMaximumAccounts,\n setShowSnackBar,\n showSnackBar,\n}) => {\n return (\n <Snackbar\n anchorOrigin={{ horizontal: 'center', vertical: 'top' }}\n autoHideDuration={5000}\n onClose={() => setShowSnackBar?.(false)}\n open={showSnackBar}\n >\n <Alert severity={'error'} onClose={() => setShowSnackBar?.(false)}>\n <AlertTitle>Maximum Accounts Error</AlertTitle>\n Your currently selected account number ({activeAccountIndex === undefined ? '' : activeAccountIndex + 1}) cannot be greater than the desired\n Maximum Accounts ({desiredMaximumAccounts}).\n </Alert>\n </Snackbar>\n )\n}\n","import { HelpOutline as HelpOutlineIcon } from '@mui/icons-material'\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n IconButton,\n IconButtonProps,\n Link,\n List,\n ListItem,\n Typography,\n} from '@mui/material'\nimport { useState } from 'react'\n\nexport const SeedPhraseIconButton: React.FC<IconButtonProps> = (props) => {\n const [open, setOpen] = useState(false)\n const onClose = () => setOpen(false)\n return (\n <>\n <IconButton onClick={() => setOpen(true)} {...props}>\n <HelpOutlineIcon fontSize=\"small\" />\n </IconButton>\n <Dialog open={open}>\n <DialogTitle>Understanding your Seed Phrase</DialogTitle>\n <DialogContent>\n <Typography>\n Your Seed Phrase should adhere to the{' '}\n <Link target={'_blank'} href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">\n bip39 specification\n </Link>{' '}\n and is used to generate accounts which identify your data on the XYO Network.\n </Typography>\n <List>\n <ListItem>Do not share this phrase with anyone.</ListItem>\n <ListItem>Do not save it to a public computer.</ListItem>\n <ListItem>Do not use a existing phrase from another wallet (i.e. Metamask).</ListItem>\n <ListItem>Do not use before copying it down somewhere safe.</ListItem>\n </List>\n </DialogContent>\n <DialogActions>\n <Button onClick={onClose} variant=\"outlined\">\n OK\n </Button>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { Alert, AlertTitle, Snackbar } from '@mui/material'\nimport { generateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useEffect, useState } from 'react'\n\nexport interface DefaultSeedPhraseProps extends WithChildren {\n changeSeedPhrase?: (seedPhrase: string) => void\n hideDefaultSeedPhraseMessage?: boolean\n seedPhrase?: string\n}\n\nexport const DefaultSeedPhrase: React.FC<DefaultSeedPhraseProps> = ({ changeSeedPhrase, children, hideDefaultSeedPhraseMessage, seedPhrase }) => {\n const [showSnackBar, setShowSnackBar] = useState(false)\n\n useEffect(() => {\n if (!seedPhrase) {\n const mnemonic = generateMnemonic(wordlist, 256)\n changeSeedPhrase?.(mnemonic)\n setShowSnackBar(true)\n }\n }, [changeSeedPhrase, seedPhrase])\n\n return (\n <>\n {hideDefaultSeedPhraseMessage ? null : (\n <Snackbar\n open={showSnackBar}\n autoHideDuration={5000}\n onClose={() => setShowSnackBar(false)}\n anchorOrigin={{ horizontal: 'center', vertical: 'top' }}\n >\n <Alert severity={'success'}>\n <AlertTitle>Default Seed Phrase Generated</AlertTitle>\n Go to application settings to save it.\n </Alert>\n </Snackbar>\n )}\n {children}\n </>\n )\n}\n","import { Button, DialogActions, DialogActionsProps, DialogProps } from '@mui/material'\nimport { MouseEvent } from 'react'\n\nimport { useSeedPhrase } from '../../../../contexts'\n\ninterface DialogActionButtonsProps extends DialogActionsProps {\n onClose?: DialogProps['onClose']\n}\n\nexport const DialogActionButtons: React.FC<DialogActionButtonsProps> = ({ onClose, ...props }) => {\n const { handleSave, setPhrase } = useSeedPhrase()\n\n const wrappedOnClose = (e: MouseEvent<HTMLElement>) => {\n // clear local copy of phrase when modal closes\n setPhrase?.('')\n onClose?.(e, 'escapeKeyDown')\n }\n\n return (\n <DialogActions {...props}>\n <Button variant=\"outlined\" onClick={wrappedOnClose}>\n Cancel\n </Button>\n <Button variant=\"outlined\" onClick={handleSave}>\n Save\n </Button>\n </DialogActions>\n )\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { SeedPhraseContextState } from './State'\n\nexport const SeedPhraseContext = createContextEx<SeedPhraseContextState>()\n","import { generateMnemonic, validateMnemonic } from '@scure/bip39'\n// eslint-disable-next-line import/no-internal-modules\nimport { wordlist } from '@scure/bip39/wordlists/english'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { SeedPhraseContext } from './Context'\n\nexport interface SeedPhraseProviderProps extends WithChildren {\n defaultPhrase?: string\n handleChangeSeedPhrase?: (phrase: string) => void\n open?: boolean\n saveCallback?: () => void\n seedPhrase?: string\n}\n\nconst validate = (passedPhrase?: string) => {\n if (!passedPhrase) {\n return null\n }\n return validateMnemonic(passedPhrase, wordlist)\n}\n\nexport const SeedPhraseProvider: React.FC<SeedPhraseProviderProps> = ({\n children,\n defaultPhrase,\n handleChangeSeedPhrase,\n saveCallback,\n seedPhrase,\n open,\n}) => {\n const [phrase, setPhrase] = useState<string | undefined>()\n const [overwriteWarning, setOverwriteWarning] = useState(false)\n\n useEffect(() => {\n setPhrase(defaultPhrase)\n }, [defaultPhrase])\n\n useEffect(() => {\n if (seedPhrase || open) {\n setPhrase?.(seedPhrase ?? '')\n }\n }, [seedPhrase, open, setPhrase])\n\n const handleGenerate = useCallback(() => {\n const mnemonic = generateMnemonic(wordlist, 256)\n setPhrase?.(mnemonic)\n setOverwriteWarning?.(false)\n }, [])\n\n const handleCancelOverwrite = useCallback(() => {\n setOverwriteWarning?.(false)\n }, [])\n\n const handleClear = useCallback(() => {\n setPhrase?.('')\n setOverwriteWarning?.(false)\n }, [])\n\n const handleSave = useCallback(() => {\n if (!overwriteWarning && seedPhrase && seedPhrase !== phrase) {\n setOverwriteWarning?.(true)\n } else {\n handleChangeSeedPhrase?.(phrase ?? '')\n saveCallback?.()\n }\n }, [handleChangeSeedPhrase, overwriteWarning, phrase, saveCallback, seedPhrase])\n\n useEffect(() => {\n if (!open) {\n handleCancelOverwrite()\n }\n }, [handleCancelOverwrite, open])\n\n const validSeedPhrase = useMemo(() => validate?.(seedPhrase), [seedPhrase])\n const validPhrase = useMemo(() => validate?.(phrase), [phrase])\n\n return (\n <SeedPhraseContext.Provider\n value={{\n handleCancelOverwrite,\n handleChangeSeedPhrase,\n handleClear,\n handleGenerate,\n handleSave,\n overwriteWarning,\n phrase,\n provided: true,\n seedPhrase,\n setOverwriteWarning,\n setPhrase,\n validPhrase,\n validSeedPhrase,\n validate,\n }}\n >\n {children}\n </SeedPhraseContext.Provider>\n )\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { SeedPhraseContext } from './Context'\n\nexport const useSeedPhrase = () => useContextEx(SeedPhraseContext, 'SeedPhrase', true)\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { WalletContextState } from './State'\n\nexport const WalletContext = createContextEx<WalletContextState>()\n","import { usePromise } from '@xylabs/react-promise'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useEffect, useState } from 'react'\n\nimport { WalletContext } from './Context'\n\nexport interface WalletProviderProps {\n /** @deprecated - BasePath is no longer supported. Set base path outside of WalletProvider */\n basePath?: string\n defaultActiveAccountIndex?: number\n rootWallet?: WalletInstance | null\n}\n\nexport const WalletProvider: React.FC<WithChildren<WalletProviderProps>> = ({\n basePath,\n children,\n defaultActiveAccountIndex = 0,\n rootWallet = null,\n ...props\n}) => {\n const [activeAccountIndex, setActiveAccountIndex] = useState(defaultActiveAccountIndex)\n\n useEffect(() => {\n if (defaultActiveAccountIndex !== undefined) {\n setActiveAccountIndex(defaultActiveAccountIndex)\n }\n }, [defaultActiveAccountIndex])\n\n const [activeAccount = null] = usePromise(async () => await rootWallet?.derivePath(activeAccountIndex.toString()), [activeAccountIndex, rootWallet])\n\n return (\n <WalletContext.Provider\n value={{\n activeAccount,\n activeAccountIndex,\n basePath,\n /* eslint-disable deprecation/deprecation */\n /** @deprecated - Set path for coinTypeWallet outside of provider and pass as rootWallet */\n coinTypeWallet: null,\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\n/** @deprecated - useWalletContext instead */\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 { rootWallet } = useWalletContext(required)\n const [wallet] = usePromise(async () => (await rootWallet?.derivePath(index.toString())) ?? rootWallet, [rootWallet, index])\n return [wallet, undefined]\n}\n\nexport const useSelectedWalletAccount = (required = true): [WalletInstance | null | undefined, Error | undefined] => {\n const { activeAccountIndex } = useWalletContext(required)\n //we pass in 0 as default since we can not call the hook optionally,\n //we resolve this false result by checking whether activeAccountIndex is defined before returning it\n const [account] = useIndexedWalletFromContext(activeAccountIndex ?? 0, required)\n return activeAccountIndex === undefined && account === null ? [null, undefined] : [account, undefined]\n}\n","import { FormControl, StandardTextFieldProps, TextField } from '@mui/material'\nimport { ReactNode } from 'react'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { colorParser, InvalidPhraseTypography } from './validation-messages'\n\nexport interface NewPhraseTextFieldProps extends StandardTextFieldProps {\n children?: ReactNode\n disableColor?: boolean\n}\n\nexport const NewPhraseTextField: React.FC<NewPhraseTextFieldProps> = ({ children, disableColor, ...props }) => {\n const { phrase, setPhrase, validPhrase } = useSeedPhrase()\n return (\n <>\n <FormControl fullWidth size=\"small\" sx={{ display: 'flex', flexDirection: 'column', rowGap: 1 }}>\n {children}\n <TextField\n focused\n color={disableColor ? undefined : colorParser(validPhrase)}\n error={validPhrase === false}\n helperText={validPhrase === false ? <InvalidPhraseTypography /> : null}\n fullWidth\n maxRows={Number.POSITIVE_INFINITY}\n multiline\n onChange={(e) => setPhrase?.(e.target.value)}\n value={phrase}\n {...props}\n />\n </FormControl>\n </>\n )\n}\n","export const colorParser = (conditional?: boolean | null) => {\n switch (conditional) {\n case true: {\n return 'success'\n }\n case false: {\n return 'error'\n }\n default: {\n return\n }\n }\n}\n","import { Link, Typography, TypographyProps } from '@mui/material'\n\nexport const InvalidPhraseTypography: React.FC<TypographyProps> = (props) => (\n <Typography variant={'caption'} color={'error'} {...props}>\n Invalid seed phrase. See -{' '}\n <Link target={'_blank'} href=\"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki\">\n bip39 Proposal\n </Link>\n </Typography>\n)\n","import { CheckCircleOutline as CheckCircleOutlineIcon, HighlightOff as HighlightOffIcon } from '@mui/icons-material'\nimport { FlexBoxProps, FlexRow } from '@xylabs/react-flexbox'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { useMemo } from 'react'\n\ninterface PhraseHeaderBox extends FlexBoxProps, WithChildren {\n conditional?: boolean | null\n}\n\nexport const PhraseHeaderBox: React.FC<PhraseHeaderBox> = ({ children, conditional, ...props }) => {\n const state = useMemo(() => {\n switch (conditional) {\n case true: {\n return 'success'\n }\n case false: {\n return 'error'\n }\n default: {\n return null\n }\n }\n }, [conditional])\n\n const Icon = useMemo(() => {\n switch (state) {\n case 'success': {\n return <CheckCircleOutlineIcon fontSize=\"small\" color=\"success\" />\n }\n case 'error': {\n return <HighlightOffIcon fontSize=\"small\" color=\"error\" />\n }\n default: {\n return null\n }\n }\n }, [state])\n\n return (\n <FlexRow justifyContent={'start'} columnGap={1} {...props}>\n {Icon}\n {children}\n </FlexRow>\n )\n}\n","import { Button, DialogActions } from '@mui/material'\n\nimport { useSeedPhrase } from '../../../../../contexts'\n\nexport const PhraseDialogActions = () => {\n const { handleClear, handleGenerate, overwriteWarning } = useSeedPhrase()\n return (\n <DialogActions sx={{ justifyContent: 'center' }}>\n <Button disabled={overwriteWarning} variant=\"outlined\" onClick={handleGenerate}>\n Generate\n </Button>\n <Button variant=\"outlined\" onClick={handleClear}>\n Clear\n </Button>\n </DialogActions>\n )\n}\n","import { Chip, FormControl, FormLabel, StandardTextFieldProps, TextField } from '@mui/material'\nimport { useState } from 'react'\n\nimport { useSeedPhrase } from '../../../../../contexts'\nimport { InvalidPhraseTypography, PhraseHeaderBox } from './validation-messages'\n\nexport 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={Number.POSITIVE_INFINITY}\n multiline\n {...props}\n />\n </>\n : null}\n </FormControl>\n )\n}\n","import { Alert, Button } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { useSeedPhrase } from '../../../../contexts'\n\nexport const OverwriteWarning = () => {\n const { handleCancelOverwrite, handleSave } = useSeedPhrase()\n return (\n <Alert\n variant=\"outlined\"\n severity=\"warning\"\n action={\n <FlexRow sx={{ columnGap: 1 }}>\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={handleSave}>\n Overwrite\n </Button>\n <Button variant=\"outlined\" color=\"inherit\" size=\"small\" onClick={handleCancelOverwrite}>\n Cancel\n </Button>\n </FlexRow>\n }\n >\n Are you sure you want to overwrite existing seed phrase? This action cannot be undone.\n </Alert>\n )\n}\n","import { Dialog, DialogContent, DialogProps, DialogTitle, FormLabel } from '@mui/material'\n\nimport { SeedPhraseProvider, useSeedPhrase } from '../../../contexts'\nimport { SeedPhraseIconButton } from '../_shared'\nimport { DialogActionButtons, NewPhraseTextField, OverwriteWarning, PhraseDialogActions, PhraseHeaderBox, SavedPhraseTextField } from './components'\n\nexport interface SeedPhraseDialogProps extends DialogProps {\n changeSeedPhrase?: (value: string) => void\n seedPhrase?: string\n}\n\nexport const SeedPhraseDialog: React.FC<SeedPhraseDialogProps> = ({ changeSeedPhrase, seedPhrase, ...props }) => {\n return (\n <SeedPhraseProvider\n seedPhrase={seedPhrase}\n handleChangeSeedPhrase={changeSeedPhrase}\n open={props.open}\n saveCallback={() => props.onClose?.({}, 'escapeKeyDown')}\n >\n <SeedPhraseDialogInner {...props} />\n </SeedPhraseProvider>\n )\n}\n\nexport const SeedPhraseDialogInner: React.FC<SeedPhraseDialogProps> = (props) => {\n const { overwriteWarning, seedPhrase, validPhrase } = useSeedPhrase()\n\n return (\n <Dialog aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\" fullWidth maxWidth={'sm'} {...props}>\n <DialogTitle id=\"alert-dialog-title\">\n Update Your Seed Phrase <SeedPhraseIconButton />\n </DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', rowGap: 2 }}>\n <NewPhraseTextField>\n <FormLabel>\n <PhraseHeaderBox conditional={validPhrase}>New Seed Phrase</PhraseHeaderBox>\n </FormLabel>\n </NewPhraseTextField>\n <PhraseDialogActions />\n {seedPhrase ?\n <SavedPhraseTextField />\n : null}\n {overwriteWarning ?\n <OverwriteWarning />\n : null}\n </DialogContent>\n <DialogActionButtons onClose={props.onClose} />\n </Dialog>\n )\n}\n","import { Cancel as CancelIcon, RadioButtonChecked as RadioButtonCheckedIcon } from '@mui/icons-material'\nimport { Button, ButtonGroup, TableCell, TableRow, TableRowProps } from '@mui/material'\nimport { useState } from 'react'\n\nimport { SeedPhraseIconButton } from '../_shared'\nimport { SeedPhraseDialog } from '../dialog'\n\nexport interface SeedPhraseTableRowProps extends TableRowProps {\n changeSeedPhrase?: (seedPhrase: string) => void\n seedPhrase?: string\n}\n\nexport const SeedPhraseTableRow: React.FC<SeedPhraseTableRowProps> = ({ changeSeedPhrase, seedPhrase, ...props }) => {\n const [open, setOpen] = useState(false)\n\n const handleOpen = () => {\n setOpen(true)\n }\n return (\n <TableRow {...props}>\n <TableCell>\n Seed Phrase <SeedPhraseIconButton />\n </TableCell>\n <TableCell align=\"center\">\n {seedPhrase ?\n <RadioButtonCheckedIcon color=\"success\" />\n : <CancelIcon color=\"error\" />}\n </TableCell>\n <TableCell>\n <SeedPhraseDialog changeSeedPhrase={changeSeedPhrase} open={open} onClose={() => setOpen(false)} seedPhrase={seedPhrase} />\n <ButtonGroup fullWidth>\n <Button variant=\"contained\" size=\"small\" onClick={handleOpen}>\n Update\n </Button>\n </ButtonGroup>\n </TableCell>\n </TableRow>\n )\n}\n","import { EthAddress } from '@xylabs/eth-address'\nimport { EthAccountButton } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { NumberStatus } from '@xylabs/react-number-status'\nimport { useNetwork } from '@xyo-network/react-network'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { useAccount } from '../../hooks'\n\nexport interface WalletAccountDetailsProps extends FlexBoxProps {\n account?: WalletInstance\n exploreUrl?: string\n}\n\nexport const WalletAccountDetails: React.FC<WalletAccountDetailsProps> = ({ exploreUrl = 'https://explore.xyo.network', account, ...props }) => {\n const [accountToUse] = useAccount({ account })\n const { network } = useNetwork()\n const exploreAddressUrl = `${exploreUrl}/recent?account=${accountToUse?.address}&network=${network?.name ?? 'main'}`\n\n return (\n <FlexCol {...props}>\n <EthAccountButton address={EthAddress.fromString(accountToUse?.address)} />\n <FlexRow gap={1}>\n <NumberStatus rounded title=\"Tokens\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.tokens`} target=\"_blank\" />\n <NumberStatus rounded title=\"NFTs\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.nfts`} target=\"_blank\" />\n <NumberStatus rounded title=\"Signatures\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.signatures`} target=\"_blank\" />\n <NumberStatus rounded title=\"Signins\" value={0} to={`${exploreAddressUrl}&schema=network.xyo.account.signins`} target=\"_blank\" />\n </FlexRow>\n </FlexCol>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useState } from 'react'\n\nimport { useRootWallet, useWalletContext, useWalletProvided } from '../contexts'\n\nexport interface AccountHookParams {\n account?: AccountInstance\n index?: number\n required?: boolean\n wallet?: WalletInstance\n}\n\nexport const useAccount = ({ wallet, account, index, required = false }: AccountHookParams = {}): [\n AccountInstance | null | undefined,\n Error | undefined,\n] => {\n const walletContextProvided = useWalletProvided()\n const [validationError, setValidationError] = useState<Error>()\n if (wallet && account && !validationError) {\n setValidationError(new Error('useAccount can not have both a wallet and an account in the parameters'))\n }\n\n if (index && account && !validationError) {\n setValidationError(new Error('useAccount can not have both a index and an account in the parameters'))\n }\n\n const [error, setError] = useState<Error>()\n const [rootWallet] = useRootWallet(!wallet && required)\n const { activeAccountIndex } = useWalletContext(false)\n const [activeAccount] = usePromise(async () => {\n try {\n if (!validationError) {\n if (wallet) {\n return await wallet?.derivePath?.(`${index ?? 0}'\\0`)\n } else if (rootWallet) {\n return await rootWallet?.derivePath?.(`${index ?? activeAccountIndex ?? 0}'\\0`)\n }\n }\n } catch (ex) {\n const error = ex as Error\n console.error(error.message)\n setError(error)\n }\n }, [index, wallet, rootWallet, activeAccountIndex, validationError])\n if (validationError && !error) {\n console.error(validationError.message)\n setError(validationError)\n }\n\n return [\n error ? undefined\n : account ?? activeAccount ?? walletContextProvided ? null\n : undefined,\n error,\n ]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { useState } from 'react'\n\nimport { useSelectedWalletAccount, useWalletContext } from '../contexts'\n\nexport interface WalletHookParams {\n mnemonic?: string\n path?: string\n required?: boolean\n seed?: Uint8Array | string\n wallet?: WalletInstance | null\n}\n\nexport const useWallet = ({ mnemonic, wallet, path, required = false, seed }: WalletHookParams = {}): [\n WalletInstance | null | undefined,\n Error | undefined,\n] => {\n const walletContextProvided = useWalletContext(false)\n const [error, setError] = useState<Error>()\n const [contextAccount] = useSelectedWalletAccount(!wallet && required)\n const [activeAccount] = usePromise(async () => {\n try {\n const newAccount = await (() => {\n if (wallet) {\n return wallet\n } else if (mnemonic) {\n return HDWallet.fromPhrase(mnemonic)\n } else if (seed) {\n return HDWallet.fromSeed(seed)\n }\n return contextAccount\n })()\n\n return path ? newAccount?.derivePath?.(path) : newAccount ?? wallet\n } catch (ex) {\n setError(ex as Error)\n }\n }, [mnemonic, contextAccount, seed, path, wallet])\n return [activeAccount ?? (walletContextProvided ? null : activeAccount), error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { WalletInstance } from '@xyo-network/wallet-model'\n\nimport { useWalletContext } from '../contexts'\nimport { useWallet } from './useWallet'\n\nexport interface WalletsHookParams {\n paths: string[]\n wallet?: WalletInstance | null\n}\n\nexport const useWallets = ({ wallet, paths }: WalletsHookParams): [WalletInstance[] | null | undefined, Error | undefined] => {\n const walletContextProvided = useWalletContext(false)\n const [foundWallet] = useWallet({ wallet })\n const [wallets, error] = usePromise(\n async () => (foundWallet ? await Promise.all(paths.map((path) => foundWallet.derivePath(path))) : undefined),\n [foundWallet, paths],\n )\n return [wallets ?? (walletContextProvided ? null : wallets), error]\n}\n","import { State as PromiseState, usePromise } from '@xylabs/react-promise'\nimport { HDWallet } from '@xyo-network/account'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { WalletInstance } from '@xyo-network/wallet-model'\nimport { Mutex } from 'async-mutex'\n\nlet globalWrapperWallet: WalletInstance | undefined\nconst globalWrapperWalletMutex = new Mutex()\n\nexport const useWrapperAccount = (\n account?: AccountInstance | null,\n): [AccountInstance | null | undefined, Error | undefined, PromiseState | undefined] => {\n return usePromise(async () => {\n return await globalWrapperWalletMutex.runExclusive(async () => {\n //if we are expecting to receive a wallet or did receive on, return the override account\n if (account !== undefined) {\n return account\n }\n\n if (globalWrapperWallet) {\n return globalWrapperWallet\n }\n\n try {\n globalWrapperWallet = await HDWallet.random()\n console.log(`Global Wrapper Wallet Creation Success: ${globalWrapperWallet.address}`)\n } catch (ex) {\n const error = ex as Error\n console.error(`Global Wrapper Wallet Creation Failed: ${error.message}`)\n }\n return globalWrapperWallet\n })\n }, [account])\n}\n","import { CircularProgress, MenuItem, SelectProps } from '@mui/material'\nimport { SelectEx } from '@xylabs/react-select'\nimport { AddressRenderRowBox, AddressRenderRowBoxProps } from '@xyo-network/react-address-render'\n\nimport { useWalletContext } from '../../contexts'\nimport { useWallet } from '../../hooks'\n\ntype SharedAddressRenderRowBoxProps = Pick<AddressRenderRowBoxProps, 'iconOnly' | 'iconSize' | 'icons' | 'showFavorite'>\n\nexport type WalletAccountSelectProps = SharedAddressRenderRowBoxProps &\n Omit<SelectProps<number>, 'variant'> &\n Partial<SelectProps<number>> & {\n addressNames?: Record<string, string | undefined>\n maxAccounts?: number\n }\n\nconst arrayRange = (length: number, start = 0) => {\n return [...Array.from({ length }).keys()].map((x) => x + start)\n}\n\nexport const WalletAccountSelect: React.FC<WalletAccountSelectProps> = ({\n addressNames = {},\n iconOnly,\n iconSize = 24,\n icons,\n maxAccounts = 1,\n showFavorite = false,\n size,\n variant = 'outlined',\n ...props\n}) => {\n const { activeAccountIndex = 0, setActiveAccountIndex, rootWallet } = useWalletContext()\n const disabled = !rootWallet || activeAccountIndex === undefined\n\n return (\n <>\n {rootWallet ?\n <SelectEx\n margin=\"dense\"\n disabled={disabled}\n renderValue={(selectedAccountIndex) => {\n const Item: React.FC = () => {\n const [selectedAccount] = useWallet({ path: selectedAccountIndex.toString(), wallet: rootWallet })\n const customName = selectedAccount ? addressNames[selectedAccount.address] : undefined\n const favorite = !!selectedAccount && selectedAccount.address in addressNames\n return (\n <MenuItem value={selectedAccountIndex} sx={{ minHeight: 0, paddingBottom: 0, paddingTop: 0 }}>\n <AddressRenderRowBox\n disableSharedRef={true}\n flexGrow={1}\n address={selectedAccount?.address}\n iconOnly={iconOnly}\n iconSize={iconSize}\n icons={icons}\n name={customName}\n favorite={favorite}\n showFavorite={showFavorite}\n />\n </MenuItem>\n )\n }\n return <Item />\n }}\n value={activeAccountIndex}\n onChange={(event) => setActiveAccountIndex?.(Number.parseInt(`${event.target.value}`))}\n size={size}\n variant={variant}\n {...props}\n >\n {arrayRange(maxAccounts).map((index) => {\n const Item: React.FC = () => {\n const [account] = useWallet({ path: index.toString(), wallet: rootWallet })\n const customName = account ? addressNames[account.address] : undefined\n const favorite = !!account && account.address in addressNames\n return (\n <MenuItem key={account?.address} value={index} sx={{ minHeight: 0, paddingBottom: 0, paddingTop: 0 }}>\n <AddressRenderRowBox\n disableSharedRef={true}\n flexGrow={1}\n address={account?.address}\n favorite={favorite}\n iconOnly={iconOnly}\n iconSize={iconSize}\n icons={icons}\n name={customName}\n showFavorite={showFavorite}\n />\n </MenuItem>\n )\n }\n\n return <Item key={index} />\n })}\n </SelectEx>\n : <CircularProgress size={24} />}\n </>\n )\n}\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nimport { WalletAccountSelect } from './Select'\n\nexport interface WalletAccountSelectBarProps extends FlexBoxProps {\n addressNames?: Record<string, string | undefined>\n iconOnly?: boolean\n iconSize?: number\n icons?: boolean\n maxAccounts?: number\n showFavorite?: boolean\n size?: 'small' | 'medium'\n}\n\nexport const WalletAccountSelectBar: React.FC<WalletAccountSelectBarProps> = ({\n addressNames = {},\n iconOnly,\n iconSize,\n icons,\n maxAccounts = 1,\n showFavorite = false,\n size = 'small',\n ...props\n}) => {\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <WalletAccountSelect\n addressNames={addressNames}\n fullWidth\n showFavorite={showFavorite}\n iconSize={iconSize}\n iconOnly={iconOnly}\n icons={icons}\n maxAccounts={maxAccounts}\n size={size ?? 'small'}\n variant=\"outlined\"\n />\n </FlexCol>\n )\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;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;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,KAAK,qBAAqB;AAAA,QAAE;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;AAC5C,mBAAiC;AAEjC,qBAAyB;AAEzB,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,yBAAU,GAAG;AAC/C,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;;;AC1CA,IAAAC,mBAAuE;;;ACAvE,0BAAgC;AAIzB,IAAM,wBAAoB,qCAAwC;;;ACJzE,IAAAC,gBAAmD;AAEnD,IAAAC,kBAAyB;AAEzB,IAAAC,gBAA0D;AA0EtD,IAAAC,sBAAA;AA9DJ,IAAM,WAAW,CAAC,iBAA0B;AAC1C,MAAI,CAAC,cAAc;AACjB,WAAO;AAAA,EACT;AACA,aAAO,gCAAiB,cAAc,wBAAQ;AAChD;AAEO,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;AACtB,kBAAY,cAAc,EAAE;AAAA,IAC9B;AAAA,EACF,GAAG,CAAC,YAAY,MAAM,SAAS,CAAC;AAEhC,QAAM,qBAAiB,2BAAY,MAAM;AACvC,UAAM,eAAW,gCAAiB,0BAAU,GAAG;AAC/C,gBAAY,QAAQ;AACpB,0BAAsB,KAAK;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,QAAM,4BAAwB,2BAAY,MAAM;AAC9C,0BAAsB,KAAK;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,QAAM,kBAAc,2BAAY,MAAM;AACpC,gBAAY,EAAE;AACd,0BAAsB,KAAK;AAAA,EAC7B,GAAG,CAAC,CAAC;AAEL,QAAM,iBAAa,2BAAY,MAAM;AACnC,QAAI,CAAC,oBAAoB,cAAc,eAAe,QAAQ;AAC5D,4BAAsB,IAAI;AAAA,IAC5B,OAAO;AACL,+BAAyB,UAAU,EAAE;AACrC,qBAAe;AAAA,IACjB;AAAA,EACF,GAAG,CAAC,wBAAwB,kBAAkB,QAAQ,cAAc,UAAU,CAAC;AAE/E,+BAAU,MAAM;AACd,QAAI,CAAC,MAAM;AACT,4BAAsB;AAAA,IACxB;AAAA,EACF,GAAG,CAAC,uBAAuB,IAAI,CAAC;AAEhC,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;;;ACnGA,IAAAC,uBAA6B;AAItB,IAAM,gBAAgB,UAAM,mCAAa,mBAAmB,cAAc,IAAI;;;ACJrF,IAAAC,uBAAgC;AAIzB,IAAM,oBAAgB,sCAAoC;;;ACJjE,2BAA2B;AAG3B,IAAAC,gBAAoC;AA6BhC,IAAAC,sBAAA;AAlBG,IAAM,iBAA8D,CAAC;AAAA,EAC1E;AAAA,EACA;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,gBAAgB,IAAI,QAAI,iCAAW,YAAY,MAAM,YAAY,WAAW,mBAAmB,SAAS,CAAC,GAAG,CAAC,oBAAoB,UAAU,CAAC;AAEnJ,SACE;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,OAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA,QAGA,gBAAgB;AAAA,QAChB,UAAU;AAAA,QACV;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,EACH;AAEJ;;;ACjDA,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;AAGO,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,EAAE,WAAW,IAAI,iBAAiB,QAAQ;AAChD,QAAM,CAAC,MAAM,QAAI,kCAAW,YAAa,MAAM,YAAY,WAAW,MAAM,SAAS,CAAC,KAAM,YAAY,CAAC,YAAY,KAAK,CAAC;AAC3H,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,SAAO,uBAAuB,UAAa,YAAY,OAAO,CAAC,MAAM,MAAS,IAAI,CAAC,SAAS,MAAS;AACvG;;;ANlBI,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;;;AO5BA,IAAAC,mBAA+D;;;ACAxD,IAAM,cAAc,CAAC,gBAAiC;AAC3D,UAAQ,aAAa;AAAA,IACnB,KAAK,MAAM;AACT,aAAO;AAAA,IACT;AAAA,IACA,KAAK,OAAO;AACV,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP;AAAA,IACF;AAAA,EACF;AACF;;;ACZA,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;AAwBT,IAAAC,sBAAA;AAlBR,IAAM,kBAA6C,CAAC,EAAE,UAAU,aAAa,GAAG,MAAM,MAAM;AACjG,QAAM,YAAQ,uBAAQ,MAAM;AAC1B,YAAQ,aAAa;AAAA,MACnB,KAAK,MAAM;AACT,eAAO;AAAA,MACT;AAAA,MACA,KAAK,OAAO;AACV,eAAO;AAAA,MACT;AAAA,MACA,SAAS;AACP,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,QAAM,WAAO,uBAAQ,MAAM;AACzB,YAAQ,OAAO;AAAA,MACb,KAAK,WAAW;AACd,eAAO,6CAAC,uBAAAC,oBAAA,EAAuB,UAAS,SAAQ,OAAM,WAAU;AAAA,MAClE;AAAA,MACA,KAAK,SAAS;AACZ,eAAO,6CAAC,uBAAAC,cAAA,EAAiB,UAAS,SAAQ,OAAM,SAAQ;AAAA,MAC1D;AAAA,MACA,SAAS;AACP,eAAO;AAAA,MACT;AAAA,IACF;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,qBAAwD,CAAC,EAAE,UAAU,cAAc,GAAG,MAAM,MAAM;AAC7G,QAAM,EAAE,QAAQ,WAAW,YAAY,IAAI,cAAc;AACzD,SACE,+EACE,yDAAC,gCAAY,WAAS,MAAC,MAAK,SAAQ,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,QAAQ,EAAE,GAC3F;AAAA;AAAA,IACD;AAAA,MAAC;AAAA;AAAA,QACC,SAAO;AAAA,QACP,OAAO,eAAe,SAAY,YAAY,WAAW;AAAA,QACzD,OAAO,gBAAgB;AAAA,QACvB,YAAY,gBAAgB,QAAQ,8CAAC,2BAAwB,IAAK;AAAA,QAClE,WAAS;AAAA,QACT,SAAS,OAAO;AAAA,QAChB,WAAS;AAAA,QACT,UAAU,CAAC,MAAM,YAAY,EAAE,OAAO,KAAK;AAAA,QAC3C,OAAO;AAAA,QACN,GAAG;AAAA;AAAA,IACN;AAAA,KACF,GACF;AAEJ;;;AIhCA,IAAAC,mBAAsC;AAOlC,IAAAC,uBAAA;AAHG,IAAM,sBAAsB,MAAM;AACvC,QAAM,EAAE,aAAa,gBAAgB,iBAAiB,IAAI,cAAc;AACxE,SACE,+CAAC,kCAAc,IAAI,EAAE,gBAAgB,SAAS,GAC5C;AAAA,kDAAC,2BAAO,UAAU,kBAAkB,SAAQ,YAAW,SAAS,gBAAgB,sBAEhF;AAAA,IACA,8CAAC,2BAAO,SAAQ,YAAW,SAAS,aAAa,mBAEjD;AAAA,KACF;AAEJ;;;AChBA,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,OAAO;AAAA,UAChB,WAAS;AAAA,UACR,GAAG;AAAA;AAAA,MACN;AAAA,OACF,IACA;AAAA,KACJ;AAEJ;;;ACjCA,IAAAC,oBAA8B;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,4BAAO,SAAQ,YAAW,OAAM,WAAU,MAAK,SAAQ,SAAS,YAAY,uBAE7E;AAAA,QACA,8CAAC,4BAAO,SAAQ,YAAW,OAAM,WAAU,MAAK,SAAQ,SAAS,uBAAuB,oBAExF;AAAA,SACF;AAAA,MAEH;AAAA;AAAA,EAED;AAEJ;;;ACzBA,IAAAC,oBAA2E;AAmBrE,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,YAAY,YAAY,IAAI,cAAc;AAEpE,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,sBACC,wDAAC,+BACC,wDAAC,mBAAgB,aAAa,aAAa,6BAAe,GAC5D,GACF;AAAA,MACA,8CAAC,uBAAoB;AAAA,MACpB,aACC,8CAAC,wBAAqB,IACtB;AAAA,MACD,mBACC,8CAAC,oBAAiB,IAClB;AAAA,OACJ;AAAA,IACA,8CAAC,uBAAoB,SAAS,MAAM,SAAS;AAAA,KAC/C;AAEJ;;;ACjDA,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,UACd,uBACC,8CAAC,uBAAAC,oBAAA,EAAuB,OAAM,WAAU,IACxC,8CAAC,uBAAAC,QAAA,EAAW,OAAM,SAAQ,GAC9B;AAAA,IACA,+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;;;ACtCA,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,IAAI,MAAM,wEAAwE,CAAC;AAAA,EACxG;AAEA,MAAI,SAAS,WAAW,CAAC,iBAAiB;AACxC,uBAAmB,IAAI,MAAM,uEAAuE,CAAC;AAAA,EACvG;AAEA,QAAM,CAAC,OAAO,QAAQ,QAAI,wBAAgB;AAC1C,QAAM,CAAC,UAAU,IAAI,cAAc,CAAC,UAAU,QAAQ;AACtD,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,YAAY;AACrB,iBAAO,MAAM,YAAY,aAAa,GAAG,SAAS,sBAAsB,CAAC,KAAK;AAAA,QAChF;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,YAAY,oBAAoB,eAAe,CAAC;AACnE,MAAI,mBAAmB,CAAC,OAAO;AAC7B,YAAQ,MAAM,gBAAgB,OAAO;AACrC,aAAS,eAAe;AAAA,EAC1B;AAEA,SAAO;AAAA,IACL,QAAQ,SACN,WAAW,iBAAiB,wBAAwB,OACpD;AAAA,IACF;AAAA,EACF;AACF;;;ACzDA,IAAAC,wBAA2B;AAC3B,qBAAyB;AAEzB,IAAAC,iBAAyB;AAYlB,IAAM,YAAY,CAAC,EAAE,UAAU,QAAQ,MAAM,WAAW,OAAO,KAAK,IAAsB,CAAC,MAG7F;AACH,QAAM,wBAAwB,iBAAiB,KAAK;AACpD,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,aAAO,OAAO,YAAY,aAAa,IAAI,IAAI,cAAc;AAAA,IAC/D,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;;;ACzCA,IAAAC,wBAA2B;AAWpB,IAAM,aAAa,CAAC,EAAE,QAAQ,MAAM,MAAmF;AAC5H,QAAM,wBAAwB,iBAAiB,KAAK;AACpD,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;AACJ,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;AAiC1D,IAAAC,uBAAA;AAnBJ,IAAM,aAAa,CAAC,QAAgB,QAAQ,MAAM;AAChD,SAAO,CAAC,GAAG,MAAM,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK;AAChE;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,UAAU;AAAA,EACV,GAAG;AACL,MAAM;AACJ,QAAM,EAAE,qBAAqB,GAAG,uBAAuB,WAAW,IAAI,iBAAiB;AACvF,QAAM,WAAW,CAAC,cAAc,uBAAuB;AAEvD,SACE,+EACG,uBACC;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,WAAW,CAAC;AACjG,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,OAAO,SAAS,GAAG,MAAM,OAAO,KAAK,EAAE,CAAC;AAAA,MACrF;AAAA,MACA;AAAA,MACC,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,WAAW,CAAC;AAC1E,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,IACA,8CAAC,sCAAiB,MAAM,IAAI,GAChC;AAEJ;;;ACjGA,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,MACd,SAAQ;AAAA;AAAA,EACV,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_english","import_react","import_jsx_runtime","import_react_shared","import_react_shared","import_react","import_jsx_runtime","import_react_promise","import_react_shared","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_jsx_runtime","import_material","import_react","import_jsx_runtime","import_material","import_react_flexbox","import_jsx_runtime","import_material","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"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -255,29 +255,12 @@ var useSeedPhrase = () => useContextEx(SeedPhraseContext, "SeedPhrase", true);
|
|
|
255
255
|
import { createContextEx as createContextEx2 } from "@xyo-network/react-shared";
|
|
256
256
|
var WalletContext = createContextEx2();
|
|
257
257
|
|
|
258
|
-
// src/contexts/Wallet/lib/WalletPath.ts
|
|
259
|
-
var Bip44 = {
|
|
260
|
-
base: "m",
|
|
261
|
-
coin_type: {
|
|
262
|
-
/* https://github.com/satoshilabs/slips/blob/master/slip-0044.md */
|
|
263
|
-
bitcoin: "0'",
|
|
264
|
-
bitcoinTestnet: "1'",
|
|
265
|
-
ether: "60'",
|
|
266
|
-
etherClassic: "61'"
|
|
267
|
-
},
|
|
268
|
-
purpose: "44'"
|
|
269
|
-
};
|
|
270
|
-
var WalletRootPath = `${Bip44.base}/${Bip44.purpose}/${Bip44.coin_type.ether}`;
|
|
271
|
-
var ethereumAccountPath = (index, hardened = true) => {
|
|
272
|
-
return `${WalletRootPath}/${index}${hardened ? "'" : ""}/0`;
|
|
273
|
-
};
|
|
274
|
-
|
|
275
258
|
// src/contexts/Wallet/Provider.tsx
|
|
276
259
|
import { usePromise } from "@xylabs/react-promise";
|
|
277
260
|
import { useEffect as useEffect3, useState as useState5 } from "react";
|
|
278
261
|
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
279
262
|
var WalletProvider = ({
|
|
280
|
-
basePath
|
|
263
|
+
basePath,
|
|
281
264
|
children,
|
|
282
265
|
defaultActiveAccountIndex = 0,
|
|
283
266
|
rootWallet = null,
|
|
@@ -289,24 +272,7 @@ var WalletProvider = ({
|
|
|
289
272
|
setActiveAccountIndex(defaultActiveAccountIndex);
|
|
290
273
|
}
|
|
291
274
|
}, [defaultActiveAccountIndex]);
|
|
292
|
-
const [
|
|
293
|
-
if (rootWallet) {
|
|
294
|
-
if (rootWallet?.path !== basePath) {
|
|
295
|
-
try {
|
|
296
|
-
const result = await rootWallet?.derivePath(basePath);
|
|
297
|
-
return result;
|
|
298
|
-
} catch (e) {
|
|
299
|
-
console.error("Error setting proper wallet base path", e);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
} else {
|
|
303
|
-
return rootWallet;
|
|
304
|
-
}
|
|
305
|
-
}, [basePath, rootWallet]);
|
|
306
|
-
const [activeAccount = null] = usePromise(
|
|
307
|
-
async () => await coinTypeWallet?.derivePath(activeAccountIndex.toString()),
|
|
308
|
-
[coinTypeWallet, activeAccountIndex]
|
|
309
|
-
);
|
|
275
|
+
const [activeAccount = null] = usePromise(async () => await rootWallet?.derivePath(activeAccountIndex.toString()), [activeAccountIndex, rootWallet]);
|
|
310
276
|
return /* @__PURE__ */ jsx6(
|
|
311
277
|
WalletContext.Provider,
|
|
312
278
|
{
|
|
@@ -314,7 +280,9 @@ var WalletProvider = ({
|
|
|
314
280
|
activeAccount,
|
|
315
281
|
activeAccountIndex,
|
|
316
282
|
basePath,
|
|
317
|
-
|
|
283
|
+
/* eslint-disable deprecation/deprecation */
|
|
284
|
+
/** @deprecated - Set path for coinTypeWallet outside of provider and pass as rootWallet */
|
|
285
|
+
coinTypeWallet: null,
|
|
318
286
|
provided: true,
|
|
319
287
|
rootWallet,
|
|
320
288
|
setActiveAccountIndex
|
|
@@ -343,8 +311,8 @@ var useRootWallet = (required = true) => {
|
|
|
343
311
|
return [rootWallet, void 0];
|
|
344
312
|
};
|
|
345
313
|
var useIndexedWalletFromContext = (index, required = true) => {
|
|
346
|
-
const
|
|
347
|
-
const [wallet] = usePromise2(async () => await
|
|
314
|
+
const { rootWallet } = useWalletContext(required);
|
|
315
|
+
const [wallet] = usePromise2(async () => await rootWallet?.derivePath(index.toString()) ?? rootWallet, [rootWallet, index]);
|
|
348
316
|
return [wallet, void 0];
|
|
349
317
|
};
|
|
350
318
|
var useSelectedWalletAccount = (required = true) => {
|
|
@@ -590,15 +558,15 @@ var useAccount = ({ wallet, account, index, required = false } = {}) => {
|
|
|
590
558
|
setValidationError(new Error("useAccount can not have both a index and an account in the parameters"));
|
|
591
559
|
}
|
|
592
560
|
const [error, setError] = useState8();
|
|
593
|
-
const [
|
|
561
|
+
const [rootWallet] = useRootWallet(!wallet && required);
|
|
594
562
|
const { activeAccountIndex } = useWalletContext(false);
|
|
595
563
|
const [activeAccount] = usePromise3(async () => {
|
|
596
564
|
try {
|
|
597
565
|
if (!validationError) {
|
|
598
566
|
if (wallet) {
|
|
599
567
|
return await wallet?.derivePath?.(`${index ?? 0}'\0`);
|
|
600
|
-
} else if (
|
|
601
|
-
return await
|
|
568
|
+
} else if (rootWallet) {
|
|
569
|
+
return await rootWallet?.derivePath?.(`${index ?? activeAccountIndex ?? 0}'\0`);
|
|
602
570
|
}
|
|
603
571
|
}
|
|
604
572
|
} catch (ex) {
|
|
@@ -606,7 +574,7 @@ var useAccount = ({ wallet, account, index, required = false } = {}) => {
|
|
|
606
574
|
console.error(error2.message);
|
|
607
575
|
setError(error2);
|
|
608
576
|
}
|
|
609
|
-
}, [index, wallet,
|
|
577
|
+
}, [index, wallet, rootWallet, activeAccountIndex, validationError]);
|
|
610
578
|
if (validationError && !error) {
|
|
611
579
|
console.error(validationError.message);
|
|
612
580
|
setError(validationError);
|
|
@@ -622,7 +590,7 @@ import { usePromise as usePromise4 } from "@xylabs/react-promise";
|
|
|
622
590
|
import { HDWallet } from "@xyo-network/account";
|
|
623
591
|
import { useState as useState9 } from "react";
|
|
624
592
|
var useWallet = ({ mnemonic, wallet, path, required = false, seed } = {}) => {
|
|
625
|
-
const walletContextProvided =
|
|
593
|
+
const walletContextProvided = useWalletContext(false);
|
|
626
594
|
const [error, setError] = useState9();
|
|
627
595
|
const [contextAccount] = useSelectedWalletAccount(!wallet && required);
|
|
628
596
|
const [activeAccount] = usePromise4(async () => {
|
|
@@ -648,7 +616,7 @@ var useWallet = ({ mnemonic, wallet, path, required = false, seed } = {}) => {
|
|
|
648
616
|
// src/hooks/useWallets.ts
|
|
649
617
|
import { usePromise as usePromise5 } from "@xylabs/react-promise";
|
|
650
618
|
var useWallets = ({ wallet, paths }) => {
|
|
651
|
-
const walletContextProvided =
|
|
619
|
+
const walletContextProvided = useWalletContext(false);
|
|
652
620
|
const [foundWallet] = useWallet({ wallet });
|
|
653
621
|
const [wallets, error] = usePromise5(
|
|
654
622
|
async () => foundWallet ? await Promise.all(paths.map((path) => foundWallet.derivePath(path))) : void 0,
|
|
@@ -720,16 +688,16 @@ var WalletAccountSelect = ({
|
|
|
720
688
|
variant = "outlined",
|
|
721
689
|
...props
|
|
722
690
|
}) => {
|
|
723
|
-
const { activeAccountIndex = 0, setActiveAccountIndex,
|
|
724
|
-
const disabled = !
|
|
725
|
-
return /* @__PURE__ */ jsx17(Fragment5, { children:
|
|
691
|
+
const { activeAccountIndex = 0, setActiveAccountIndex, rootWallet } = useWalletContext();
|
|
692
|
+
const disabled = !rootWallet || activeAccountIndex === void 0;
|
|
693
|
+
return /* @__PURE__ */ jsx17(Fragment5, { children: rootWallet ? /* @__PURE__ */ jsx17(
|
|
726
694
|
SelectEx,
|
|
727
695
|
{
|
|
728
696
|
margin: "dense",
|
|
729
697
|
disabled,
|
|
730
698
|
renderValue: (selectedAccountIndex) => {
|
|
731
699
|
const Item = () => {
|
|
732
|
-
const [selectedAccount] = useWallet({ path: selectedAccountIndex.toString(), wallet:
|
|
700
|
+
const [selectedAccount] = useWallet({ path: selectedAccountIndex.toString(), wallet: rootWallet });
|
|
733
701
|
const customName = selectedAccount ? addressNames[selectedAccount.address] : void 0;
|
|
734
702
|
const favorite = !!selectedAccount && selectedAccount.address in addressNames;
|
|
735
703
|
return /* @__PURE__ */ jsx17(MenuItem, { value: selectedAccountIndex, sx: { minHeight: 0, paddingBottom: 0, paddingTop: 0 }, children: /* @__PURE__ */ jsx17(
|
|
@@ -756,7 +724,7 @@ var WalletAccountSelect = ({
|
|
|
756
724
|
...props,
|
|
757
725
|
children: arrayRange(maxAccounts).map((index) => {
|
|
758
726
|
const Item = () => {
|
|
759
|
-
const [account] = useWallet({ path: index.toString(), wallet:
|
|
727
|
+
const [account] = useWallet({ path: index.toString(), wallet: rootWallet });
|
|
760
728
|
const customName = account ? addressNames[account.address] : void 0;
|
|
761
729
|
const favorite = !!account && account.address in addressNames;
|
|
762
730
|
return /* @__PURE__ */ jsx17(MenuItem, { value: index, sx: { minHeight: 0, paddingBottom: 0, paddingTop: 0 }, children: /* @__PURE__ */ jsx17(
|
|
@@ -809,7 +777,6 @@ var WalletAccountSelectBar = ({
|
|
|
809
777
|
) });
|
|
810
778
|
};
|
|
811
779
|
export {
|
|
812
|
-
Bip44,
|
|
813
780
|
DefaultSeedPhrase,
|
|
814
781
|
DialogActionButtons,
|
|
815
782
|
InvalidPhraseTypography,
|
|
@@ -830,9 +797,7 @@ export {
|
|
|
830
797
|
WalletAccountSelectBar,
|
|
831
798
|
WalletContext,
|
|
832
799
|
WalletProvider,
|
|
833
|
-
WalletRootPath,
|
|
834
800
|
colorParser,
|
|
835
|
-
ethereumAccountPath,
|
|
836
801
|
useAccount,
|
|
837
802
|
useCoinTypeWallet,
|
|
838
803
|
useIndexedWalletFromContext,
|