@xyo-network/react-connected-accounts 2.67.0 → 2.67.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAE/B,kBAAkB,UAAO;IAGhC,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
1
+ {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAEtC,kBAAkB,UAAO;IAGzB,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAE/B,kBAAkB,UAAO;IAGhC,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
1
+ {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAEtC,kBAAkB,UAAO;IAGzB,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAE/B,kBAAkB,UAAO;IAGhC,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
1
+ {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAEtC,kBAAkB,UAAO;IAGzB,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/index.ts","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["export * from './classes'\nexport * from './components'\nexport * from './hooks'\n","import { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n public persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n Object.entries(wallets).forEach(addWallet.bind(this))\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter((existingListener) => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { forwardRef } from 'react'\n\nimport { useDetectedWallets } from '../hooks'\nimport { ConnectedWalletsTable } from './wallet'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = forwardRef<HTMLDivElement, ConnectedAccountsFlexboxProps>(\n ({ ignoreConnectDialog, onIgnoreConnectDialog, ...props }, ref) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant={'h2'} sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts ? (\n <Typography variant={'subtitle1'} color={theme.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts: {totalConnectedAccounts}\n </Typography>\n ) : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n },\n)\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import { AccountsChangedEventName, DiscoveredWallets, EIP6963Connector, useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useEffect, useMemo, useState } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) =>\n Object.values(wallets).reduce((acc, wallet) => {\n wallet.allowedAccounts.length > 0 ? acc.unshift(wallet) : acc.push(wallet)\n return acc\n }, [] as EIP6963Connector[])\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const [refresh, setRefresh] = useState(0)\n const [sortedWallets, setSortedWallets] = useState<EIP6963Connector[]>([])\n\n useEffect(() => {\n setSortedWallets(sortWallets(wallets))\n }, [wallets, refresh])\n\n /**\n * Rely on custom events from the wallet base class to know when accounts are changed.\n * This approach prevents the need to loop through all wallets and set up individual listeners.\n */\n useEffect(() => {\n const listener: (event: CustomEventInit) => void = () => {\n setRefresh((refresh) => refresh + 1)\n }\n window.addEventListener(AccountsChangedEventName, listener)\n\n return () => {\n window.removeEventListener(AccountsChangedEventName, listener)\n }\n }, [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { EnabledEthWalletConnections, EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n Object.entries(enabledWalletsRdns ?? {}).forEach(([rdns, enabled]) => enabledEthWallets?.toggleEnabledWallet(rdns, enabled))\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import { Checkbox, FormControl, FormControlProps, FormLabel } from '@mui/material'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { ActiveProvider } from '../../lib'\nimport { CheckboxFormControl } from './CheckboxFormControl'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox'\nimport { WalletPermissionsFlexbox } from './Permissions'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({ activeProvider, onIgnoreConnectDialog, ...props }) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog PaperProps={{ sx: { display: 'flex', gap: 4 } }} {...props}>\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\n\nimport { xyoColorLogo } from '../../../../img'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({ icon, providerName, ...props }) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize={'large'} />\n <FlexCol gap={0.5}>\n <ConstrainedImage constrainedValue={'48px'} src={icon} alt={providerName} style={{ height: '48px', maxWidth: '48px' }} />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","import xyoColorLogo from './xyo-color-logo.svg'\nimport xyoColorLogoText from './xyo-color-logo-text-only.svg'\n\nexport { xyoColorLogo, xyoColorLogoText }\n","import { Link, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy{' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle, Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ActiveProvider } from '../../lib'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue={'24px'} />\n <DialogTitle sx={{ pl: 0 }}>Revoke {activeProvider?.providerName} Access</DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult {activeProvider?.providerName}&apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{window.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { TableCell, Tooltip, Typography } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport { Button, IconButton, TableCell, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({ connected, onConnect, onRevoke, tableCellProps }) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n ) : (\n <Button variant={'contained'} onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n ) : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { ChangeEvent, useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks'\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({ connected, walletRdns, tableCellProps }) => {\n const { disableWallet, enableWallet, wallets } = useEnabledWallets()\n\n const enabled = useMemo(() => (walletRdns ? wallets[walletRdns].enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (walletRdns) {\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({ icon, walletName, tableCellProps }) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts'\nimport { ConnectedWalletsActionsTableCell } from './Actions'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName'\nimport { ConnectedWalletTableCellProps } from './lib'\nimport { ConnectedWalletState } from './State'\nimport { ConnectedWalletsWalletTableCell } from './Wallet'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import { Table, TableBody, TableCell, TableHead, TableProps, TableRow } from '@mui/material'\nimport { EIP6963Connector } from '@xylabs/react-crypto'\nimport { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs'\nimport { ActiveProvider, WalletsTableHeadCells } from '../lib'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow'\nimport { useActiveProviderDialogState } from './hooks'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map((wallet) => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import { TableRow, TableRowProps } from '@mui/material'\nimport { EthWalletConnectorBase, useEthWallet } from '@xylabs/react-crypto'\nimport { useCallback, useMemo } from 'react'\n\nimport { ActiveProvider } from '../lib'\nimport { ConnectedWalletTableCells } from './cells'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length ?? 0 > 0)\n const { icon, name, rdns } = useMemo(() => providerInfo ?? { icon: undefined, name: undefined, rdns: undefined }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import { Dispatch, SetStateAction, useState } from 'react'\n\nimport { ActiveProvider } from '../../lib'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":"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","names":["import_material","import_react_flexbox","import_react","refresh","import_react_crypto","import_react","import_material","import_material","import_react_crypto","import_jsx_runtime","xyoColorLogo","import_material","import_react_flexbox","import_jsx_runtime","import_jsx_runtime","import_material","import_react_crypto","import_react_flexbox","import_jsx_runtime","import_material","import_jsx_runtime","import_icons_material","import_material","import_react_flexbox","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_react","import_jsx_runtime","import_material","import_react_crypto","import_react_flexbox","import_jsx_runtime","import_material","import_react","import_material","import_react_crypto","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/index.ts","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["export * from './classes'\nexport * from './components'\nexport * from './hooks'\n","import { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n Object.entries(wallets).forEach(addWallet.bind(this))\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter((existingListener) => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { forwardRef } from 'react'\n\nimport { useDetectedWallets } from '../hooks'\nimport { ConnectedWalletsTable } from './wallet'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = forwardRef<HTMLDivElement, ConnectedAccountsFlexboxProps>(\n ({ ignoreConnectDialog, onIgnoreConnectDialog, ...props }, ref) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant={'h2'} sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts ? (\n <Typography variant={'subtitle1'} color={theme.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts: {totalConnectedAccounts}\n </Typography>\n ) : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n },\n)\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import { AccountsChangedEventName, DiscoveredWallets, EIP6963Connector, useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useEffect, useMemo, useState } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) =>\n Object.values(wallets).reduce((acc, wallet) => {\n wallet.allowedAccounts.length > 0 ? acc.unshift(wallet) : acc.push(wallet)\n return acc\n }, [] as EIP6963Connector[])\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const [refresh, setRefresh] = useState(0)\n const [sortedWallets, setSortedWallets] = useState<EIP6963Connector[]>([])\n\n useEffect(() => {\n setSortedWallets(sortWallets(wallets))\n }, [wallets, refresh])\n\n /**\n * Rely on custom events from the wallet base class to know when accounts are changed.\n * This approach prevents the need to loop through all wallets and set up individual listeners.\n */\n useEffect(() => {\n const listener: (event: CustomEventInit) => void = () => {\n setRefresh((refresh) => refresh + 1)\n }\n window.addEventListener(AccountsChangedEventName, listener)\n\n return () => {\n window.removeEventListener(AccountsChangedEventName, listener)\n }\n }, [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { EnabledEthWalletConnections, EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n Object.entries(enabledWalletsRdns ?? {}).forEach(([rdns, enabled]) => enabledEthWallets?.toggleEnabledWallet(rdns, enabled))\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import { Checkbox, FormControl, FormControlProps, FormLabel } from '@mui/material'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { ActiveProvider } from '../../lib'\nimport { CheckboxFormControl } from './CheckboxFormControl'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox'\nimport { WalletPermissionsFlexbox } from './Permissions'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({ activeProvider, onIgnoreConnectDialog, ...props }) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog PaperProps={{ sx: { display: 'flex', gap: 4 } }} {...props}>\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\n\nimport { xyoColorLogo } from '../../../../img'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({ icon, providerName, ...props }) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize={'large'} />\n <FlexCol gap={0.5}>\n <ConstrainedImage constrainedValue={'48px'} src={icon} alt={providerName} style={{ height: '48px', maxWidth: '48px' }} />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","import xyoColorLogo from './xyo-color-logo.svg'\nimport xyoColorLogoText from './xyo-color-logo-text-only.svg'\n\nexport { xyoColorLogo, xyoColorLogoText }\n","import { Link, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy{' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle, Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ActiveProvider } from '../../lib'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue={'24px'} />\n <DialogTitle sx={{ pl: 0 }}>Revoke {activeProvider?.providerName} Access</DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult {activeProvider?.providerName}&apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{window.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { TableCell, Tooltip, Typography } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport { Button, IconButton, TableCell, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({ connected, onConnect, onRevoke, tableCellProps }) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n ) : (\n <Button variant={'contained'} onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n ) : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { ChangeEvent, useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks'\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({ connected, walletRdns, tableCellProps }) => {\n const { disableWallet, enableWallet, wallets } = useEnabledWallets()\n\n const enabled = useMemo(() => (walletRdns ? wallets[walletRdns].enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (walletRdns) {\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({ icon, walletName, tableCellProps }) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts'\nimport { ConnectedWalletsActionsTableCell } from './Actions'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName'\nimport { ConnectedWalletTableCellProps } from './lib'\nimport { ConnectedWalletState } from './State'\nimport { ConnectedWalletsWalletTableCell } from './Wallet'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import { Table, TableBody, TableCell, TableHead, TableProps, TableRow } from '@mui/material'\nimport { EIP6963Connector } from '@xylabs/react-crypto'\nimport { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs'\nimport { ActiveProvider, WalletsTableHeadCells } from '../lib'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow'\nimport { useActiveProviderDialogState } from './hooks'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map((wallet) => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import { TableRow, TableRowProps } from '@mui/material'\nimport { EthWalletConnectorBase, useEthWallet } from '@xylabs/react-crypto'\nimport { useCallback, useMemo } from 'react'\n\nimport { ActiveProvider } from '../lib'\nimport { ConnectedWalletTableCells } from './cells'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length ?? 0 > 0)\n const { icon, name, rdns } = useMemo(() => providerInfo ?? { icon: undefined, name: undefined, rdns: undefined }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import { Dispatch, SetStateAction, useState } from 'react'\n\nimport { ActiveProvider } from '../../lib'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":"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","names":["import_material","import_react_flexbox","import_react","refresh","import_react_crypto","import_react","import_material","import_material","import_react_crypto","import_jsx_runtime","xyoColorLogo","import_material","import_react_flexbox","import_jsx_runtime","import_jsx_runtime","import_material","import_react_crypto","import_react_flexbox","import_jsx_runtime","import_material","import_jsx_runtime","import_icons_material","import_material","import_react_flexbox","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_react","import_jsx_runtime","import_material","import_react_crypto","import_react_flexbox","import_jsx_runtime","import_material","import_react","import_material","import_react_crypto","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/index.ts","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["import { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n public persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n Object.entries(wallets).forEach(addWallet.bind(this))\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter((existingListener) => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { forwardRef } from 'react'\n\nimport { useDetectedWallets } from '../hooks'\nimport { ConnectedWalletsTable } from './wallet'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = forwardRef<HTMLDivElement, ConnectedAccountsFlexboxProps>(\n ({ ignoreConnectDialog, onIgnoreConnectDialog, ...props }, ref) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant={'h2'} sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts ? (\n <Typography variant={'subtitle1'} color={theme.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts: {totalConnectedAccounts}\n </Typography>\n ) : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n },\n)\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import { AccountsChangedEventName, DiscoveredWallets, EIP6963Connector, useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useEffect, useMemo, useState } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) =>\n Object.values(wallets).reduce((acc, wallet) => {\n wallet.allowedAccounts.length > 0 ? acc.unshift(wallet) : acc.push(wallet)\n return acc\n }, [] as EIP6963Connector[])\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const [refresh, setRefresh] = useState(0)\n const [sortedWallets, setSortedWallets] = useState<EIP6963Connector[]>([])\n\n useEffect(() => {\n setSortedWallets(sortWallets(wallets))\n }, [wallets, refresh])\n\n /**\n * Rely on custom events from the wallet base class to know when accounts are changed.\n * This approach prevents the need to loop through all wallets and set up individual listeners.\n */\n useEffect(() => {\n const listener: (event: CustomEventInit) => void = () => {\n setRefresh((refresh) => refresh + 1)\n }\n window.addEventListener(AccountsChangedEventName, listener)\n\n return () => {\n window.removeEventListener(AccountsChangedEventName, listener)\n }\n }, [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { EnabledEthWalletConnections, EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n Object.entries(enabledWalletsRdns ?? {}).forEach(([rdns, enabled]) => enabledEthWallets?.toggleEnabledWallet(rdns, enabled))\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import { Checkbox, FormControl, FormControlProps, FormLabel } from '@mui/material'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { ActiveProvider } from '../../lib'\nimport { CheckboxFormControl } from './CheckboxFormControl'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox'\nimport { WalletPermissionsFlexbox } from './Permissions'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({ activeProvider, onIgnoreConnectDialog, ...props }) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog PaperProps={{ sx: { display: 'flex', gap: 4 } }} {...props}>\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\n\nimport { xyoColorLogo } from '../../../../img'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({ icon, providerName, ...props }) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize={'large'} />\n <FlexCol gap={0.5}>\n <ConstrainedImage constrainedValue={'48px'} src={icon} alt={providerName} style={{ height: '48px', maxWidth: '48px' }} />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","import xyoColorLogo from './xyo-color-logo.svg'\nimport xyoColorLogoText from './xyo-color-logo-text-only.svg'\n\nexport { xyoColorLogo, xyoColorLogoText }\n","import { Link, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy{' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle, Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ActiveProvider } from '../../lib'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue={'24px'} />\n <DialogTitle sx={{ pl: 0 }}>Revoke {activeProvider?.providerName} Access</DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult {activeProvider?.providerName}&apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{window.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { TableCell, Tooltip, Typography } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport { Button, IconButton, TableCell, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({ connected, onConnect, onRevoke, tableCellProps }) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n ) : (\n <Button variant={'contained'} onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n ) : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { ChangeEvent, useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks'\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({ connected, walletRdns, tableCellProps }) => {\n const { disableWallet, enableWallet, wallets } = useEnabledWallets()\n\n const enabled = useMemo(() => (walletRdns ? wallets[walletRdns].enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (walletRdns) {\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({ icon, walletName, tableCellProps }) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts'\nimport { ConnectedWalletsActionsTableCell } from './Actions'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName'\nimport { ConnectedWalletTableCellProps } from './lib'\nimport { ConnectedWalletState } from './State'\nimport { ConnectedWalletsWalletTableCell } from './Wallet'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import { Table, TableBody, TableCell, TableHead, TableProps, TableRow } from '@mui/material'\nimport { EIP6963Connector } from '@xylabs/react-crypto'\nimport { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs'\nimport { ActiveProvider, WalletsTableHeadCells } from '../lib'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow'\nimport { useActiveProviderDialogState } from './hooks'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map((wallet) => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import { TableRow, TableRowProps } from '@mui/material'\nimport { EthWalletConnectorBase, useEthWallet } from '@xylabs/react-crypto'\nimport { useCallback, useMemo } from 'react'\n\nimport { ActiveProvider } from '../lib'\nimport { ConnectedWalletTableCells } from './cells'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length ?? 0 > 0)\n const { icon, name, rdns } = useMemo(() => providerInfo ?? { icon: undefined, name: undefined, rdns: undefined }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import { Dispatch, SetStateAction, useState } from 'react'\n\nimport { ActiveProvider } from '../../lib'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":"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","names":["Typography","useTheme","FlexCol","refresh","useWalletDiscovery","useMemo","useWalletDiscovery","useMemo","jsx","jsxs","Typography","FlexCol","jsx","jsxs","jsx","jsxs","Button","Dialog","DialogActions","DialogContent","DialogTitle","Typography","ConstrainedImage","FlexRow","jsx","jsxs","Typography","jsx","Button","TableCell","Typography","FlexRow","jsx","jsxs","TableCell","jsx","TableCell","useMemo","jsx","useMemo","TableCell","TableCell","ConstrainedImage","FlexRow","jsx","jsxs","TableCell","TableRow","useState","useMemo","jsx","useMemo","useState","jsx","jsxs","useState","TableRow","TableCell","jsx","jsxs","useTheme","FlexCol","Typography"]}
1
+ {"version":3,"sources":["../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/index.ts","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["import { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n Object.entries(wallets).forEach(addWallet.bind(this))\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter((existingListener) => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { forwardRef } from 'react'\n\nimport { useDetectedWallets } from '../hooks'\nimport { ConnectedWalletsTable } from './wallet'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = forwardRef<HTMLDivElement, ConnectedAccountsFlexboxProps>(\n ({ ignoreConnectDialog, onIgnoreConnectDialog, ...props }, ref) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant={'h2'} sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts ? (\n <Typography variant={'subtitle1'} color={theme.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts: {totalConnectedAccounts}\n </Typography>\n ) : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n },\n)\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import { AccountsChangedEventName, DiscoveredWallets, EIP6963Connector, useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useEffect, useMemo, useState } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) =>\n Object.values(wallets).reduce((acc, wallet) => {\n wallet.allowedAccounts.length > 0 ? acc.unshift(wallet) : acc.push(wallet)\n return acc\n }, [] as EIP6963Connector[])\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const [refresh, setRefresh] = useState(0)\n const [sortedWallets, setSortedWallets] = useState<EIP6963Connector[]>([])\n\n useEffect(() => {\n setSortedWallets(sortWallets(wallets))\n }, [wallets, refresh])\n\n /**\n * Rely on custom events from the wallet base class to know when accounts are changed.\n * This approach prevents the need to loop through all wallets and set up individual listeners.\n */\n useEffect(() => {\n const listener: (event: CustomEventInit) => void = () => {\n setRefresh((refresh) => refresh + 1)\n }\n window.addEventListener(AccountsChangedEventName, listener)\n\n return () => {\n window.removeEventListener(AccountsChangedEventName, listener)\n }\n }, [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { EnabledEthWalletConnections, EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n Object.entries(enabledWalletsRdns ?? {}).forEach(([rdns, enabled]) => enabledEthWallets?.toggleEnabledWallet(rdns, enabled))\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import { Checkbox, FormControl, FormControlProps, FormLabel } from '@mui/material'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { ActiveProvider } from '../../lib'\nimport { CheckboxFormControl } from './CheckboxFormControl'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox'\nimport { WalletPermissionsFlexbox } from './Permissions'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({ activeProvider, onIgnoreConnectDialog, ...props }) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog PaperProps={{ sx: { display: 'flex', gap: 4 } }} {...props}>\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\n\nimport { xyoColorLogo } from '../../../../img'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({ icon, providerName, ...props }) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize={'large'} />\n <FlexCol gap={0.5}>\n <ConstrainedImage constrainedValue={'48px'} src={icon} alt={providerName} style={{ height: '48px', maxWidth: '48px' }} />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","import xyoColorLogo from './xyo-color-logo.svg'\nimport xyoColorLogoText from './xyo-color-logo-text-only.svg'\n\nexport { xyoColorLogo, xyoColorLogoText }\n","import { Link, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy{' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle, Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ActiveProvider } from '../../lib'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue={'24px'} />\n <DialogTitle sx={{ pl: 0 }}>Revoke {activeProvider?.providerName} Access</DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult {activeProvider?.providerName}&apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{window.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { TableCell, Tooltip, Typography } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport { Button, IconButton, TableCell, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({ connected, onConnect, onRevoke, tableCellProps }) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n ) : (\n <Button variant={'contained'} onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n ) : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { ChangeEvent, useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks'\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({ connected, walletRdns, tableCellProps }) => {\n const { disableWallet, enableWallet, wallets } = useEnabledWallets()\n\n const enabled = useMemo(() => (walletRdns ? wallets[walletRdns].enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (walletRdns) {\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({ icon, walletName, tableCellProps }) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts'\nimport { ConnectedWalletsActionsTableCell } from './Actions'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName'\nimport { ConnectedWalletTableCellProps } from './lib'\nimport { ConnectedWalletState } from './State'\nimport { ConnectedWalletsWalletTableCell } from './Wallet'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import { Table, TableBody, TableCell, TableHead, TableProps, TableRow } from '@mui/material'\nimport { EIP6963Connector } from '@xylabs/react-crypto'\nimport { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs'\nimport { ActiveProvider, WalletsTableHeadCells } from '../lib'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow'\nimport { useActiveProviderDialogState } from './hooks'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map((wallet) => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import { TableRow, TableRowProps } from '@mui/material'\nimport { EthWalletConnectorBase, useEthWallet } from '@xylabs/react-crypto'\nimport { useCallback, useMemo } from 'react'\n\nimport { ActiveProvider } from '../lib'\nimport { ConnectedWalletTableCells } from './cells'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length ?? 0 > 0)\n const { icon, name, rdns } = useMemo(() => providerInfo ?? { icon: undefined, name: undefined, rdns: undefined }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import { Dispatch, SetStateAction, useState } from 'react'\n\nimport { ActiveProvider } from '../../lib'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":"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","names":["Typography","useTheme","FlexCol","refresh","useWalletDiscovery","useMemo","useWalletDiscovery","useMemo","jsx","jsxs","Typography","FlexCol","jsx","jsxs","jsx","jsxs","Button","Dialog","DialogActions","DialogContent","DialogTitle","Typography","ConstrainedImage","FlexRow","jsx","jsxs","Typography","jsx","Button","TableCell","Typography","FlexRow","jsx","jsxs","TableCell","jsx","TableCell","useMemo","jsx","useMemo","TableCell","TableCell","ConstrainedImage","FlexRow","jsx","jsxs","TableCell","TableRow","useState","useMemo","jsx","useMemo","useState","jsx","jsxs","useState","TableRow","TableCell","jsx","jsxs","useTheme","FlexCol","Typography"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAE/B,kBAAkB,UAAO;IAGhC,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
1
+ {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAEtC,kBAAkB,UAAO;IAGzB,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAE/B,kBAAkB,UAAO;IAGhC,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
1
+ {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAEtC,kBAAkB,UAAO;IAGzB,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAE/B,kBAAkB,UAAO;IAGhC,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
1
+ {"version":3,"file":"EnabledWallets.d.ts","sourceRoot":"","sources":["../../../src/classes/EnabledWallets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,CAAC,IAAI,EAAE,MAAM,GAAG;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,EAAE,gBAAgB,CAAA;KACzB,CAAA;CACF;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CACxB;AAED,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;AAEvC,qBAAa,2BAA2B;IAEtC,kBAAkB,UAAO;IAGzB,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,eAAe,CAA6B;IAGpD,OAAO,CAAC,SAAS,CAAuB;IAGxC,OAAO,CAAC,eAAe,CAA4B;gBAEvC,eAAe,SAA4B;IAKvD,IAAI,OAAO,2BAEV;IAED,aAAa,CAAC,IAAI,EAAE,MAAM;IAI1B,YAAY,CAAC,IAAI,EAAE,MAAM;IAIzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,iBAAiB;IAgBvC,SAAS,CAAC,QAAQ,EAAE,cAAc;IAOlC,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAQlD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;CAWvB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/index.ts","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["export * from './classes'\nexport * from './components'\nexport * from './hooks'\n","import { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n public persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n Object.entries(wallets).forEach(addWallet.bind(this))\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter((existingListener) => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { forwardRef } from 'react'\n\nimport { useDetectedWallets } from '../hooks'\nimport { ConnectedWalletsTable } from './wallet'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = forwardRef<HTMLDivElement, ConnectedAccountsFlexboxProps>(\n ({ ignoreConnectDialog, onIgnoreConnectDialog, ...props }, ref) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant={'h2'} sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts ? (\n <Typography variant={'subtitle1'} color={theme.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts: {totalConnectedAccounts}\n </Typography>\n ) : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n },\n)\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import { AccountsChangedEventName, DiscoveredWallets, EIP6963Connector, useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useEffect, useMemo, useState } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) =>\n Object.values(wallets).reduce((acc, wallet) => {\n wallet.allowedAccounts.length > 0 ? acc.unshift(wallet) : acc.push(wallet)\n return acc\n }, [] as EIP6963Connector[])\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const [refresh, setRefresh] = useState(0)\n const [sortedWallets, setSortedWallets] = useState<EIP6963Connector[]>([])\n\n useEffect(() => {\n setSortedWallets(sortWallets(wallets))\n }, [wallets, refresh])\n\n /**\n * Rely on custom events from the wallet base class to know when accounts are changed.\n * This approach prevents the need to loop through all wallets and set up individual listeners.\n */\n useEffect(() => {\n const listener: (event: CustomEventInit) => void = () => {\n setRefresh((refresh) => refresh + 1)\n }\n window.addEventListener(AccountsChangedEventName, listener)\n\n return () => {\n window.removeEventListener(AccountsChangedEventName, listener)\n }\n }, [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { EnabledEthWalletConnections, EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n Object.entries(enabledWalletsRdns ?? {}).forEach(([rdns, enabled]) => enabledEthWallets?.toggleEnabledWallet(rdns, enabled))\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import { Checkbox, FormControl, FormControlProps, FormLabel } from '@mui/material'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { ActiveProvider } from '../../lib'\nimport { CheckboxFormControl } from './CheckboxFormControl'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox'\nimport { WalletPermissionsFlexbox } from './Permissions'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({ activeProvider, onIgnoreConnectDialog, ...props }) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog PaperProps={{ sx: { display: 'flex', gap: 4 } }} {...props}>\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\n\nimport { xyoColorLogo } from '../../../../img'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({ icon, providerName, ...props }) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize={'large'} />\n <FlexCol gap={0.5}>\n <ConstrainedImage constrainedValue={'48px'} src={icon} alt={providerName} style={{ height: '48px', maxWidth: '48px' }} />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","import xyoColorLogo from './xyo-color-logo.svg'\nimport xyoColorLogoText from './xyo-color-logo-text-only.svg'\n\nexport { xyoColorLogo, xyoColorLogoText }\n","import { Link, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy{' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle, Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ActiveProvider } from '../../lib'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue={'24px'} />\n <DialogTitle sx={{ pl: 0 }}>Revoke {activeProvider?.providerName} Access</DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult {activeProvider?.providerName}&apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{window.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { TableCell, Tooltip, Typography } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport { Button, IconButton, TableCell, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({ connected, onConnect, onRevoke, tableCellProps }) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n ) : (\n <Button variant={'contained'} onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n ) : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { ChangeEvent, useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks'\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({ connected, walletRdns, tableCellProps }) => {\n const { disableWallet, enableWallet, wallets } = useEnabledWallets()\n\n const enabled = useMemo(() => (walletRdns ? wallets[walletRdns].enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (walletRdns) {\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({ icon, walletName, tableCellProps }) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts'\nimport { ConnectedWalletsActionsTableCell } from './Actions'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName'\nimport { ConnectedWalletTableCellProps } from './lib'\nimport { ConnectedWalletState } from './State'\nimport { ConnectedWalletsWalletTableCell } from './Wallet'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import { Table, TableBody, TableCell, TableHead, TableProps, TableRow } from '@mui/material'\nimport { EIP6963Connector } from '@xylabs/react-crypto'\nimport { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs'\nimport { ActiveProvider, WalletsTableHeadCells } from '../lib'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow'\nimport { useActiveProviderDialogState } from './hooks'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map((wallet) => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import { TableRow, TableRowProps } from '@mui/material'\nimport { EthWalletConnectorBase, useEthWallet } from '@xylabs/react-crypto'\nimport { useCallback, useMemo } from 'react'\n\nimport { ActiveProvider } from '../lib'\nimport { ConnectedWalletTableCells } from './cells'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length ?? 0 > 0)\n const { icon, name, rdns } = useMemo(() => providerInfo ?? { icon: undefined, name: undefined, rdns: undefined }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import { Dispatch, SetStateAction, useState } from 'react'\n\nimport { ActiveProvider } from '../../lib'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":"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","names":["import_material","import_react_flexbox","import_react","refresh","import_react_crypto","import_react","import_material","import_material","import_react_crypto","import_jsx_runtime","xyoColorLogo","import_material","import_react_flexbox","import_jsx_runtime","import_jsx_runtime","import_material","import_react_crypto","import_react_flexbox","import_jsx_runtime","import_material","import_jsx_runtime","import_icons_material","import_material","import_react_flexbox","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_react","import_jsx_runtime","import_material","import_react_crypto","import_react_flexbox","import_jsx_runtime","import_material","import_react","import_material","import_react_crypto","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/index.ts","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["export * from './classes'\nexport * from './components'\nexport * from './hooks'\n","import { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n Object.entries(wallets).forEach(addWallet.bind(this))\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter((existingListener) => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { forwardRef } from 'react'\n\nimport { useDetectedWallets } from '../hooks'\nimport { ConnectedWalletsTable } from './wallet'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = forwardRef<HTMLDivElement, ConnectedAccountsFlexboxProps>(\n ({ ignoreConnectDialog, onIgnoreConnectDialog, ...props }, ref) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant={'h2'} sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts ? (\n <Typography variant={'subtitle1'} color={theme.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts: {totalConnectedAccounts}\n </Typography>\n ) : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n },\n)\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import { AccountsChangedEventName, DiscoveredWallets, EIP6963Connector, useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useEffect, useMemo, useState } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) =>\n Object.values(wallets).reduce((acc, wallet) => {\n wallet.allowedAccounts.length > 0 ? acc.unshift(wallet) : acc.push(wallet)\n return acc\n }, [] as EIP6963Connector[])\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const [refresh, setRefresh] = useState(0)\n const [sortedWallets, setSortedWallets] = useState<EIP6963Connector[]>([])\n\n useEffect(() => {\n setSortedWallets(sortWallets(wallets))\n }, [wallets, refresh])\n\n /**\n * Rely on custom events from the wallet base class to know when accounts are changed.\n * This approach prevents the need to loop through all wallets and set up individual listeners.\n */\n useEffect(() => {\n const listener: (event: CustomEventInit) => void = () => {\n setRefresh((refresh) => refresh + 1)\n }\n window.addEventListener(AccountsChangedEventName, listener)\n\n return () => {\n window.removeEventListener(AccountsChangedEventName, listener)\n }\n }, [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { EnabledEthWalletConnections, EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n Object.entries(enabledWalletsRdns ?? {}).forEach(([rdns, enabled]) => enabledEthWallets?.toggleEnabledWallet(rdns, enabled))\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import { Checkbox, FormControl, FormControlProps, FormLabel } from '@mui/material'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { ActiveProvider } from '../../lib'\nimport { CheckboxFormControl } from './CheckboxFormControl'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox'\nimport { WalletPermissionsFlexbox } from './Permissions'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({ activeProvider, onIgnoreConnectDialog, ...props }) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog PaperProps={{ sx: { display: 'flex', gap: 4 } }} {...props}>\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\n\nimport { xyoColorLogo } from '../../../../img'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({ icon, providerName, ...props }) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize={'large'} />\n <FlexCol gap={0.5}>\n <ConstrainedImage constrainedValue={'48px'} src={icon} alt={providerName} style={{ height: '48px', maxWidth: '48px' }} />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","import xyoColorLogo from './xyo-color-logo.svg'\nimport xyoColorLogoText from './xyo-color-logo-text-only.svg'\n\nexport { xyoColorLogo, xyoColorLogoText }\n","import { Link, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy{' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle, Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ActiveProvider } from '../../lib'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue={'24px'} />\n <DialogTitle sx={{ pl: 0 }}>Revoke {activeProvider?.providerName} Access</DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult {activeProvider?.providerName}&apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{window.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { TableCell, Tooltip, Typography } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport { Button, IconButton, TableCell, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({ connected, onConnect, onRevoke, tableCellProps }) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n ) : (\n <Button variant={'contained'} onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n ) : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { ChangeEvent, useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks'\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({ connected, walletRdns, tableCellProps }) => {\n const { disableWallet, enableWallet, wallets } = useEnabledWallets()\n\n const enabled = useMemo(() => (walletRdns ? wallets[walletRdns].enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (walletRdns) {\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({ icon, walletName, tableCellProps }) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts'\nimport { ConnectedWalletsActionsTableCell } from './Actions'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName'\nimport { ConnectedWalletTableCellProps } from './lib'\nimport { ConnectedWalletState } from './State'\nimport { ConnectedWalletsWalletTableCell } from './Wallet'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import { Table, TableBody, TableCell, TableHead, TableProps, TableRow } from '@mui/material'\nimport { EIP6963Connector } from '@xylabs/react-crypto'\nimport { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs'\nimport { ActiveProvider, WalletsTableHeadCells } from '../lib'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow'\nimport { useActiveProviderDialogState } from './hooks'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map((wallet) => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import { TableRow, TableRowProps } from '@mui/material'\nimport { EthWalletConnectorBase, useEthWallet } from '@xylabs/react-crypto'\nimport { useCallback, useMemo } from 'react'\n\nimport { ActiveProvider } from '../lib'\nimport { ConnectedWalletTableCells } from './cells'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length ?? 0 > 0)\n const { icon, name, rdns } = useMemo(() => providerInfo ?? { icon: undefined, name: undefined, rdns: undefined }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import { Dispatch, SetStateAction, useState } from 'react'\n\nimport { ActiveProvider } from '../../lib'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":"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","names":["import_material","import_react_flexbox","import_react","refresh","import_react_crypto","import_react","import_material","import_material","import_react_crypto","import_jsx_runtime","xyoColorLogo","import_material","import_react_flexbox","import_jsx_runtime","import_jsx_runtime","import_material","import_react_crypto","import_react_flexbox","import_jsx_runtime","import_material","import_jsx_runtime","import_icons_material","import_material","import_react_flexbox","import_jsx_runtime","import_material","import_jsx_runtime","import_material","import_react","import_jsx_runtime","import_material","import_react_crypto","import_react_flexbox","import_jsx_runtime","import_material","import_react","import_material","import_react_crypto","import_react","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/index.ts","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["import { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n public persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n Object.entries(wallets).forEach(addWallet.bind(this))\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter((existingListener) => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { forwardRef } from 'react'\n\nimport { useDetectedWallets } from '../hooks'\nimport { ConnectedWalletsTable } from './wallet'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = forwardRef<HTMLDivElement, ConnectedAccountsFlexboxProps>(\n ({ ignoreConnectDialog, onIgnoreConnectDialog, ...props }, ref) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant={'h2'} sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts ? (\n <Typography variant={'subtitle1'} color={theme.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts: {totalConnectedAccounts}\n </Typography>\n ) : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n },\n)\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import { AccountsChangedEventName, DiscoveredWallets, EIP6963Connector, useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useEffect, useMemo, useState } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) =>\n Object.values(wallets).reduce((acc, wallet) => {\n wallet.allowedAccounts.length > 0 ? acc.unshift(wallet) : acc.push(wallet)\n return acc\n }, [] as EIP6963Connector[])\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const [refresh, setRefresh] = useState(0)\n const [sortedWallets, setSortedWallets] = useState<EIP6963Connector[]>([])\n\n useEffect(() => {\n setSortedWallets(sortWallets(wallets))\n }, [wallets, refresh])\n\n /**\n * Rely on custom events from the wallet base class to know when accounts are changed.\n * This approach prevents the need to loop through all wallets and set up individual listeners.\n */\n useEffect(() => {\n const listener: (event: CustomEventInit) => void = () => {\n setRefresh((refresh) => refresh + 1)\n }\n window.addEventListener(AccountsChangedEventName, listener)\n\n return () => {\n window.removeEventListener(AccountsChangedEventName, listener)\n }\n }, [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { EnabledEthWalletConnections, EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n Object.entries(enabledWalletsRdns ?? {}).forEach(([rdns, enabled]) => enabledEthWallets?.toggleEnabledWallet(rdns, enabled))\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import { Checkbox, FormControl, FormControlProps, FormLabel } from '@mui/material'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { ActiveProvider } from '../../lib'\nimport { CheckboxFormControl } from './CheckboxFormControl'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox'\nimport { WalletPermissionsFlexbox } from './Permissions'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({ activeProvider, onIgnoreConnectDialog, ...props }) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog PaperProps={{ sx: { display: 'flex', gap: 4 } }} {...props}>\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\n\nimport { xyoColorLogo } from '../../../../img'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({ icon, providerName, ...props }) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize={'large'} />\n <FlexCol gap={0.5}>\n <ConstrainedImage constrainedValue={'48px'} src={icon} alt={providerName} style={{ height: '48px', maxWidth: '48px' }} />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","import xyoColorLogo from './xyo-color-logo.svg'\nimport xyoColorLogoText from './xyo-color-logo-text-only.svg'\n\nexport { xyoColorLogo, xyoColorLogoText }\n","import { Link, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy{' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle, Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ActiveProvider } from '../../lib'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue={'24px'} />\n <DialogTitle sx={{ pl: 0 }}>Revoke {activeProvider?.providerName} Access</DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult {activeProvider?.providerName}&apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{window.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { TableCell, Tooltip, Typography } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport { Button, IconButton, TableCell, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({ connected, onConnect, onRevoke, tableCellProps }) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n ) : (\n <Button variant={'contained'} onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n ) : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { ChangeEvent, useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks'\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({ connected, walletRdns, tableCellProps }) => {\n const { disableWallet, enableWallet, wallets } = useEnabledWallets()\n\n const enabled = useMemo(() => (walletRdns ? wallets[walletRdns].enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (walletRdns) {\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({ icon, walletName, tableCellProps }) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts'\nimport { ConnectedWalletsActionsTableCell } from './Actions'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName'\nimport { ConnectedWalletTableCellProps } from './lib'\nimport { ConnectedWalletState } from './State'\nimport { ConnectedWalletsWalletTableCell } from './Wallet'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import { Table, TableBody, TableCell, TableHead, TableProps, TableRow } from '@mui/material'\nimport { EIP6963Connector } from '@xylabs/react-crypto'\nimport { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs'\nimport { ActiveProvider, WalletsTableHeadCells } from '../lib'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow'\nimport { useActiveProviderDialogState } from './hooks'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map((wallet) => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import { TableRow, TableRowProps } from '@mui/material'\nimport { EthWalletConnectorBase, useEthWallet } from '@xylabs/react-crypto'\nimport { useCallback, useMemo } from 'react'\n\nimport { ActiveProvider } from '../lib'\nimport { ConnectedWalletTableCells } from './cells'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length ?? 0 > 0)\n const { icon, name, rdns } = useMemo(() => providerInfo ?? { icon: undefined, name: undefined, rdns: undefined }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import { Dispatch, SetStateAction, useState } from 'react'\n\nimport { ActiveProvider } from '../../lib'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":"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","names":["Typography","useTheme","FlexCol","refresh","useWalletDiscovery","useMemo","useWalletDiscovery","useMemo","jsx","jsxs","Typography","FlexCol","jsx","jsxs","jsx","jsxs","Button","Dialog","DialogActions","DialogContent","DialogTitle","Typography","ConstrainedImage","FlexRow","jsx","jsxs","Typography","jsx","Button","TableCell","Typography","FlexRow","jsx","jsxs","TableCell","jsx","TableCell","useMemo","jsx","useMemo","TableCell","TableCell","ConstrainedImage","FlexRow","jsx","jsxs","TableCell","TableRow","useState","useMemo","jsx","useMemo","useState","jsx","jsxs","useState","TableRow","TableCell","jsx","jsxs","useTheme","FlexCol","Typography"]}
1
+ {"version":3,"sources":["../../src/classes/EnabledWallets.ts","../../src/components/ConnectedAccountsFlexbox.tsx","../../src/hooks/useDetectWallets.tsx","../../src/hooks/useEnabledWallets.tsx","../../src/components/wallet/dialogs/connect/CheckboxFormControl.tsx","../../src/components/wallet/dialogs/connect/Dialog.tsx","../../src/components/wallet/dialogs/connect/LinkedProvidersFlexbox.tsx","../../src/img/index.ts","../../src/components/wallet/dialogs/connect/Permissions.tsx","../../src/components/wallet/dialogs/revoke/Dialog.tsx","../../src/components/wallet/table/cells/Accounts.tsx","../../src/components/wallet/table/cells/Actions.tsx","../../src/components/wallet/table/cells/ChainName.tsx","../../src/components/wallet/table/cells/State.tsx","../../src/components/wallet/table/cells/Wallet.tsx","../../src/components/wallet/table/cells/Cells.tsx","../../src/components/wallet/table/ConnectedWalletsTable.tsx","../../src/components/wallet/lib/TableHeadData.ts","../../src/components/wallet/table/ConnectedWalletsTableRow.tsx","../../src/components/wallet/table/hooks/useActiveProviderDialogState.tsx"],"sourcesContent":["import { DiscoveredWallets, EIP6963Connector } from '@xylabs/react-crypto'\n\nconst DEFAULT_LOCAL_STORAGE_KEY = 'XYO|EnabledWallets'\n\n/**\n * State for storing wallets and their enabled/disabled status by name\n */\nexport interface EnabledEthWalletsState {\n [rdns: string]: {\n enabled: boolean\n wallet: EIP6963Connector\n }\n}\n\n/**\n * State for storing only enabled/disabled status of a wallet by name\n */\nexport interface EnabledWalletsSavedState {\n [rdns: string]: boolean\n}\n\nexport type WalletListener = () => void\n\nexport class EnabledEthWalletConnections {\n // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)\n persistPreferences = true\n\n // Map of wallet names and their enabled/disabled state\n private enabledWallets: EnabledWalletsSavedState = {}\n\n // Map of wallet names, their enabled/disabled state, and their wallet class\n private ethWalletsState: EnabledEthWalletsState = {}\n\n // list of listeners that want to be notified on wallet changes\n private listeners: WalletListener[] = []\n\n // key to use in localStorage when persisting preferences\n private localStorageKey = DEFAULT_LOCAL_STORAGE_KEY\n\n constructor(localStorageKey = DEFAULT_LOCAL_STORAGE_KEY) {\n this.localStorageKey = localStorageKey\n this.reviveSettings()\n }\n\n get wallets() {\n return this.ethWalletsState\n }\n\n disableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, false)\n }\n\n enableWallet(rdns: string) {\n this.toggleEnabledWallet(rdns, true)\n }\n\n /**\n * Given a new set of wallets, set their enabled state based off previous preferences\n */\n resetWallets(wallets: DiscoveredWallets) {\n const newWallets: EnabledEthWalletsState = {}\n\n const addWallet = ([walletName, wallet]: [string, EIP6963Connector]) => {\n newWallets[walletName] = {\n // preserve the existing enabled state\n enabled: walletName in this.enabledWallets ? this.enabledWallets[walletName] : true,\n wallet,\n }\n }\n\n Object.entries(wallets).forEach(addWallet.bind(this))\n this.ethWalletsState = newWallets\n this.emitChange()\n }\n\n subscribe(listener: WalletListener) {\n this.listeners = [...this.listeners, listener]\n return () => {\n this.listeners = this.listeners.filter((existingListener) => existingListener !== listener)\n }\n }\n\n toggleEnabledWallet(rdns: string, enabled: boolean) {\n if (rdns && this.ethWalletsState[rdns]) {\n this.ethWalletsState[rdns].enabled = enabled\n this.ethWalletsState = { ...this.ethWalletsState }\n this.emitChange()\n }\n }\n\n private emitChange() {\n for (const listener of this.listeners) {\n listener()\n }\n\n this.persistSettings()\n }\n\n private isPersistance(method: () => void) {\n if (this.persistPreferences) {\n method()\n }\n }\n\n private persistSettings() {\n this.isPersistance(() => {\n // convert wallet enabled selections into serializable state\n const enabledWallets = Object.entries(this.ethWalletsState).reduce((acc, [rdns, { enabled }]) => {\n acc[rdns] = enabled\n return acc\n }, {} as EnabledWalletsSavedState)\n\n localStorage.setItem(this.localStorageKey, JSON.stringify(enabledWallets))\n })\n }\n\n private reviveSettings() {\n this.isPersistance(() => {\n const existingEntries = localStorage.getItem(this.localStorageKey)\n try {\n const entries = existingEntries ? JSON.parse(existingEntries) : {}\n this.enabledWallets = entries\n } catch (e) {\n console.warn(`Error parsing saved enabled wallet entries: ${(e as Error).message}`)\n }\n })\n }\n}\n","import { Typography, useTheme } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { forwardRef } from 'react'\n\nimport { useDetectedWallets } from '../hooks'\nimport { ConnectedWalletsTable } from './wallet'\n\nexport interface ConnectedAccountsFlexboxProps extends FlexBoxProps {\n ignoreConnectDialog?: boolean\n // A callback that is invoked when the option to ignore the dialog is checked\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectedAccountsFlexbox = forwardRef<HTMLDivElement, ConnectedAccountsFlexboxProps>(\n ({ ignoreConnectDialog, onIgnoreConnectDialog, ...props }, ref) => {\n const theme = useTheme()\n\n const { totalConnectedAccounts, sortedWallets } = useDetectedWallets()\n\n return (\n <FlexCol alignItems=\"stretch\" justifyContent=\"start\" gap={2} ref={ref} {...props}>\n <FlexCol alignItems=\"start\">\n <Typography variant={'h2'} sx={{ mb: 0.5 }}>\n Detected Web3 Wallets\n </Typography>\n {totalConnectedAccounts ? (\n <Typography variant={'subtitle1'} color={theme.palette.secondary.main} sx={{ opacity: 0.5 }}>\n Total Connected Accounts: {totalConnectedAccounts}\n </Typography>\n ) : null}\n </FlexCol>\n <ConnectedWalletsTable wallets={sortedWallets} ignoreConnectDialog={ignoreConnectDialog} onIgnoreConnectDialog={onIgnoreConnectDialog} />\n </FlexCol>\n )\n },\n)\n\nConnectedAccountsFlexbox.displayName = 'ConnectedAccountsFlexbox'\n","import { AccountsChangedEventName, DiscoveredWallets, EIP6963Connector, useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useEffect, useMemo, useState } from 'react'\n\nconst sortWallets = (wallets: DiscoveredWallets) =>\n Object.values(wallets).reduce((acc, wallet) => {\n wallet.allowedAccounts.length > 0 ? acc.unshift(wallet) : acc.push(wallet)\n return acc\n }, [] as EIP6963Connector[])\n\nexport const useDetectedWallets = () => {\n const wallets = useWalletDiscovery()\n const [refresh, setRefresh] = useState(0)\n const [sortedWallets, setSortedWallets] = useState<EIP6963Connector[]>([])\n\n useEffect(() => {\n setSortedWallets(sortWallets(wallets))\n }, [wallets, refresh])\n\n /**\n * Rely on custom events from the wallet base class to know when accounts are changed.\n * This approach prevents the need to loop through all wallets and set up individual listeners.\n */\n useEffect(() => {\n const listener: (event: CustomEventInit) => void = () => {\n setRefresh((refresh) => refresh + 1)\n }\n window.addEventListener(AccountsChangedEventName, listener)\n\n return () => {\n window.removeEventListener(AccountsChangedEventName, listener)\n }\n }, [wallets])\n\n const totalConnectedAccounts = useMemo(\n () => Object.values(sortedWallets).reduce((acc, wallet) => acc + wallet.allowedAccounts.length, 0),\n [sortedWallets],\n )\n\n return { sortedWallets, totalConnectedAccounts }\n}\n","import { useWalletDiscovery } from '@xylabs/react-crypto'\nimport { useMemo, useSyncExternalStore } from 'react'\n\nimport { EnabledEthWalletConnections, EnabledEthWalletsState, EnabledWalletsSavedState } from '../classes'\n\nlet enabledEthWallets: EnabledEthWalletConnections | undefined\n\n/**\n * Takes the discovered wallets and tracks their enabled state globally\n */\nexport const useEnabledWalletsInner = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const discoveredWallets = useWalletDiscovery()\n\n // when we discover new wallets, build their enabled state\n const wallets = useMemo(() => {\n if (enabledEthWallets === undefined) enabledEthWallets = new EnabledEthWalletConnections()\n enabledEthWallets.resetWallets(discoveredWallets)\n Object.entries(enabledWalletsRdns ?? {}).forEach(([rdns, enabled]) => enabledEthWallets?.toggleEnabledWallet(rdns, enabled))\n return enabledEthWallets\n }, [discoveredWallets, enabledWalletsRdns])\n\n return useSyncExternalStore(wallets.subscribe.bind(wallets), () => wallets.wallets)\n}\n\n/**\n * Expose an interface for enabling and disabling wallets\n */\nexport const useEnabledWallets = (enabledWalletsRdns?: EnabledWalletsSavedState) => {\n const wallets = useEnabledWalletsInner(enabledWalletsRdns)\n const enabledWallets = useMemo(\n () =>\n Object.entries(wallets).reduce((acc, [walletName, wallet]) => {\n if (wallet.enabled) acc[walletName] = wallet\n return acc\n }, {} as EnabledEthWalletsState),\n [wallets],\n )\n\n return {\n disableWallet: enabledEthWallets?.disableWallet.bind(enabledEthWallets),\n enableWallet: enabledEthWallets?.enableWallet.bind(enabledEthWallets),\n enabledWallets,\n wallets,\n }\n}\n","import { Checkbox, FormControl, FormControlProps, FormLabel } from '@mui/material'\n\nexport interface CheckboxFormControlProps extends FormControlProps {\n onCheckChanged?: (checked: boolean) => void\n}\n\nexport const CheckboxFormControl: React.FC<CheckboxFormControlProps> = ({ onCheckChanged, ...props }) => {\n return (\n <FormControl {...props}>\n <FormLabel>\n <Checkbox onChange={(_, checked) => onCheckChanged?.(checked)} />\n Do not show this again.\n </FormLabel>\n </FormControl>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { ActiveProvider } from '../../lib'\nimport { CheckboxFormControl } from './CheckboxFormControl'\nimport { LinkedProvidersFlexbox } from './LinkedProvidersFlexbox'\nimport { WalletPermissionsFlexbox } from './Permissions'\n\nexport interface ConnectWalletDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n onIgnoreConnectDialog?: (checked: boolean) => void\n}\n\nexport const ConnectWalletDialog: React.FC<ConnectWalletDialogProps> = ({ activeProvider, onIgnoreConnectDialog, ...props }) => {\n const { icon, providerName } = activeProvider ?? {}\n\n const onConnect = async () => {\n try {\n await activeProvider?.connectWallet?.()\n props.onClose?.({}, 'escapeKeyDown')\n } catch (e) {\n console.warn(`Error connecting to wallet: ${(e as Error).message}`)\n }\n }\n\n return (\n <Dialog PaperProps={{ sx: { display: 'flex', gap: 4 } }} {...props}>\n <DialogTitle sx={{ textAlign: 'center' }}>XYO Wants To Access The Blockchain on Your Behalf</DialogTitle>\n <DialogContent sx={{ display: 'flex', flexDirection: 'column', gap: 4 }}>\n <LinkedProvidersFlexbox icon={icon} providerName={providerName} />\n <WalletPermissionsFlexbox />\n <CheckboxFormControl onCheckChanged={onIgnoreConnectDialog} />\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n <Button variant=\"contained\" onClick={onConnect}>\n Connect\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { SyncAlt } from '@mui/icons-material'\nimport { Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\n\nimport { xyoColorLogo } from '../../../../img'\n\nexport interface LinkedProvidersFlexboxProps extends FlexBoxProps {\n icon?: string\n providerName?: string\n}\n\nexport const LinkedProvidersFlexbox: React.FC<LinkedProvidersFlexboxProps> = ({ icon, providerName, ...props }) => {\n return (\n <FlexRow gap={4} justifyContent=\"space-evenly\" {...props}>\n <FlexCol gap={0.5}>\n <img alt=\"XYO Logo\" src={xyoColorLogo} style={{ height: '48px' }} />\n <Typography variant=\"subtitle1\">XYO App</Typography>\n </FlexCol>\n <SyncAlt fontSize={'large'} />\n <FlexCol gap={0.5}>\n <ConstrainedImage constrainedValue={'48px'} src={icon} alt={providerName} style={{ height: '48px', maxWidth: '48px' }} />\n <Typography variant=\"subtitle1\">{providerName}</Typography>\n </FlexCol>\n </FlexRow>\n )\n}\n","import xyoColorLogo from './xyo-color-logo.svg'\nimport xyoColorLogoText from './xyo-color-logo-text-only.svg'\n\nexport { xyoColorLogo, xyoColorLogoText }\n","import { Link, Typography } from '@mui/material'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\n\nexport interface WalletPermissionsFlexBoxProps extends FlexBoxProps {}\n\nexport const WalletPermissionsFlexbox: React.FC<WalletPermissionsFlexBoxProps> = (props) => {\n return (\n <FlexCol gap={4} {...props}>\n <Typography fontWeight=\"bold\" sx={{ textAlign: 'center' }}>\n This will allow XYO to:\n </Typography>\n <ul>\n <li>View your wallet account(s) and address(es)</li>\n <li>Read-only access to browse the public blockchain(s) you select</li>\n </ul>\n <Typography variant=\"subtitle1\" sx={{ textAlign: 'center' }}>\n You control what accounts to share and what blockchains to view. You can see or revoke access via your wallet&apos;s settings at anytime. View\n more on XYO&apos;s sovereign data philosophy{' '}\n <Link\n href=\"https://cointelegraph.com/innovation-circle/decentralization-and-sovereignty-debunking-our-approach-to-digital-sovereignty\"\n sx={{ fontWeight: 'bold' }}\n target=\"_blank\"\n >\n here\n </Link>\n .\n </Typography>\n </FlexCol>\n )\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle, Typography } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ActiveProvider } from '../../lib'\n\nexport interface RevokeWalletConnectionDialogProps extends DialogProps {\n activeProvider?: ActiveProvider\n}\n\nexport const RevokeWalletConnectionDialog: React.FC<RevokeWalletConnectionDialogProps> = ({ activeProvider, ...props }) => {\n return (\n <Dialog {...props}>\n <FlexRow gap={2} justifyContent=\"start\" pl={2}>\n <ConstrainedImage src={activeProvider?.icon} constrainedValue={'24px'} />\n <DialogTitle sx={{ pl: 0 }}>Revoke {activeProvider?.providerName} Access</DialogTitle>\n </FlexRow>\n <DialogContent>\n <Typography>\n Revoking access to your wallet must be done from the wallet&apos;s browser extension. Wallets grant access to specific domains please\n consult {activeProvider?.providerName}&apos;s documentation on how to revoke access to this website:\n </Typography>\n <Typography>{window.location.origin}</Typography>\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={() => props.onClose?.({}, 'escapeKeyDown')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { TableCell, Tooltip, Typography } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsAccountsTableCell: React.FC<ConnectedWalletTableCellProps> = ({\n additionalAccounts,\n currentAccount,\n totalAccounts,\n tableCellProps,\n}) => {\n return (\n <TableCell {...tableCellProps}>\n <Tooltip\n sx={{ cursor: totalAccounts > 0 ? 'pointer' : 'auto' }}\n title={[...(currentAccount ?? []), ...(additionalAccounts ?? [])].map((address, index) => (\n <p key={index}>{address}</p>\n ))}\n >\n <Typography>{totalAccounts}</Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { Check, InfoOutlined } from '@mui/icons-material'\nimport { Button, IconButton, TableCell, Typography } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsActionsTableCell: React.FC<ConnectedWalletTableCellProps> = ({ connected, onConnect, onRevoke, tableCellProps }) => {\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n {connected ? (\n <Typography sx={{ display: 'inline-flex', gap: 0.5 }}>\n <Check />\n Connected\n </Typography>\n ) : (\n <Button variant={'contained'} onClick={onConnect}>\n Connect\n </Button>\n )}\n {connected ? (\n <IconButton onClick={onRevoke}>\n <InfoOutlined />\n </IconButton>\n ) : null}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableCell } from '@mui/material'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsChainNameTableCell: React.FC<ConnectedWalletTableCellProps> = ({ chainName, tableCellProps }) => {\n return <TableCell {...tableCellProps}>{chainName}</TableCell>\n}\n","import { Switch, TableCell } from '@mui/material'\nimport { ChangeEvent, useMemo } from 'react'\n\nimport { useEnabledWallets } from '../../../../hooks'\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletState: React.FC<ConnectedWalletTableCellProps> = ({ connected, walletRdns, tableCellProps }) => {\n const { disableWallet, enableWallet, wallets } = useEnabledWallets()\n\n const enabled = useMemo(() => (walletRdns ? wallets[walletRdns].enabled : false), [wallets, walletRdns])\n\n const handleClick = (event: ChangeEvent<HTMLInputElement>) => {\n const checked = event.target?.checked\n if (walletRdns) {\n checked ? enableWallet?.(walletRdns) : disableWallet?.(walletRdns)\n }\n }\n return (\n <TableCell {...tableCellProps}>\n <Switch disabled={!connected} checked={connected && enabled} onChange={handleClick} />\n </TableCell>\n )\n}\n","import { TableCell, useTheme } from '@mui/material'\nimport { ConstrainedImage } from '@xylabs/react-crypto'\nimport { FlexRow } from '@xylabs/react-flexbox'\n\nimport { ConnectedWalletTableCellProps } from './lib'\n\nexport const ConnectedWalletsWalletTableCell: React.FC<ConnectedWalletTableCellProps> = ({ icon, walletName, tableCellProps }) => {\n const theme = useTheme()\n\n return (\n <TableCell {...tableCellProps}>\n <FlexRow gap={2} justifyContent=\"start\">\n <ConstrainedImage constrainedValue={theme.spacing(4)} src={icon} />\n {walletName}\n </FlexRow>\n </TableCell>\n )\n}\n","import { ComponentType } from 'react'\n\nimport { ConnectedWalletsAccountsTableCell } from './Accounts'\nimport { ConnectedWalletsActionsTableCell } from './Actions'\nimport { ConnectedWalletsChainNameTableCell } from './ChainName'\nimport { ConnectedWalletTableCellProps } from './lib'\nimport { ConnectedWalletState } from './State'\nimport { ConnectedWalletsWalletTableCell } from './Wallet'\n\nexport const ConnectedWalletTableCells: ComponentType<ConnectedWalletTableCellProps>[] = [\n ConnectedWalletsWalletTableCell,\n ConnectedWalletsChainNameTableCell,\n ConnectedWalletsAccountsTableCell,\n ConnectedWalletsActionsTableCell,\n ConnectedWalletState,\n]\n","import { Table, TableBody, TableCell, TableHead, TableProps, TableRow } from '@mui/material'\nimport { EIP6963Connector } from '@xylabs/react-crypto'\nimport { useState } from 'react'\n\nimport { ConnectWalletDialog, RevokeWalletConnectionDialog } from '../dialogs'\nimport { ActiveProvider, WalletsTableHeadCells } from '../lib'\nimport { WalletConnectionsTableRow } from './ConnectedWalletsTableRow'\nimport { useActiveProviderDialogState } from './hooks'\n\nexport interface ConnectedWalletsTableProps extends TableProps {\n ignoreConnectDialog?: boolean\n onIgnoreConnectDialog?: (checked: boolean) => void\n wallets?: EIP6963Connector[]\n}\n\nexport const ConnectedWalletsTable: React.FC<ConnectedWalletsTableProps> = ({ ignoreConnectDialog, onIgnoreConnectDialog, wallets, ...props }) => {\n const [activeProvider, setActiveProvider] = useState<ActiveProvider>()\n const [showConnect, onSetActiveProviderConnect, onConnectClose] = useActiveProviderDialogState(setActiveProvider)\n const [showRevoke, onSetActiveProviderRevoke, onRevokeClose] = useActiveProviderDialogState(setActiveProvider)\n\n return (\n <>\n <Table {...props}>\n <TableHead>\n <TableRow>\n {WalletsTableHeadCells.map(({ disablePadding, id, label, align, width }) => (\n <TableCell align={align} key={id} padding={disablePadding ? 'none' : 'normal'} width={width ?? 'auto'}>\n {label}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {(wallets ?? []).map((wallet) => (\n <WalletConnectionsTableRow\n ignoreConnectDialog={ignoreConnectDialog}\n key={wallet.providerInfo?.rdns}\n onConnectClick={onSetActiveProviderConnect}\n onRevoke={onSetActiveProviderRevoke}\n wallet={wallet}\n />\n ))}\n </TableBody>\n </Table>\n <RevokeWalletConnectionDialog open={showRevoke} onClose={onRevokeClose} activeProvider={activeProvider} />\n <ConnectWalletDialog\n activeProvider={activeProvider}\n onClose={onConnectClose}\n open={showConnect}\n onIgnoreConnectDialog={onIgnoreConnectDialog}\n />\n </>\n )\n}\n","import { TableHeadCell } from '@xyo-network/react-table'\n\nexport const WalletsTableHeadCells: TableHeadCell[] = [\n {\n disablePadding: false,\n id: 'wallet',\n label: 'Wallet',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'chain',\n label: 'Chain',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'accounts',\n label: 'Accounts',\n numeric: true,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'actions',\n label: 'Actions',\n numeric: false,\n showOnMobile: true,\n },\n {\n disablePadding: false,\n id: 'enabled',\n label: 'Enabled',\n numeric: false,\n showOnMobile: true,\n },\n]\n","import { TableRow, TableRowProps } from '@mui/material'\nimport { EthWalletConnectorBase, useEthWallet } from '@xylabs/react-crypto'\nimport { useCallback, useMemo } from 'react'\n\nimport { ActiveProvider } from '../lib'\nimport { ConnectedWalletTableCells } from './cells'\n\nexport interface WalletConnectionsTableRowProps extends TableRowProps {\n ignoreConnectDialog?: boolean\n onConnectClick?: (activeProvider: ActiveProvider) => void\n onRevoke?: (activeProvider: ActiveProvider) => void\n wallet: EthWalletConnectorBase\n}\n\nexport const WalletConnectionsTableRow: React.FC<WalletConnectionsTableRowProps> = ({\n ignoreConnectDialog,\n onConnectClick,\n onRevoke,\n wallet,\n ...props\n}) => {\n const { currentAccount: currentAccountFromWallet, additionalAccounts, chainName, connectWallet, providerInfo } = useEthWallet(wallet)\n\n const currentAccount = currentAccountFromWallet?.toString() ? [currentAccountFromWallet.toString()] : []\n const totalAccounts = (additionalAccounts?.length ?? 0) + (currentAccount?.length ?? 0)\n const connected = !!(currentAccount?.length ?? 0 > 0)\n const { icon, name, rdns } = useMemo(() => providerInfo ?? { icon: undefined, name: undefined, rdns: undefined }, [providerInfo])\n\n const activeProvider = useMemo<ActiveProvider>(\n () => ({\n connectWallet,\n icon,\n providerName: name,\n }),\n [connectWallet, icon, name],\n )\n\n const onRevokeLocal = useCallback(() => {\n onRevoke?.(activeProvider)\n }, [activeProvider, onRevoke])\n\n const onConnectLocal = useCallback(async () => {\n if (ignoreConnectDialog) {\n await connectWallet?.()\n } else {\n onConnectClick?.(activeProvider)\n }\n }, [activeProvider, connectWallet, ignoreConnectDialog, onConnectClick])\n\n return (\n <TableRow {...props}>\n {Object.values(ConnectedWalletTableCells).map((Cell, index) => (\n <Cell\n key={index}\n additionalAccounts={additionalAccounts}\n chainName={chainName}\n connected={connected}\n currentAccount={currentAccount}\n icon={icon}\n onConnect={onConnectLocal}\n onRevoke={onRevokeLocal}\n totalAccounts={totalAccounts}\n walletName={name}\n walletRdns={rdns}\n />\n ))}\n </TableRow>\n )\n}\n","import { Dispatch, SetStateAction, useState } from 'react'\n\nimport { ActiveProvider } from '../../lib'\n\nexport const useActiveProviderDialogState = (\n setActiveProvider: Dispatch<SetStateAction<ActiveProvider | undefined>>,\n): [boolean, (activeProvider: ActiveProvider) => void, () => void] => {\n const [show, setShow] = useState(false)\n const onSetActiveProvider = (activeProvider: ActiveProvider) => {\n setShow(true)\n setActiveProvider(activeProvider)\n }\n\n const onClose = () => {\n setShow(false)\n setActiveProvider({})\n }\n\n return [show, onSetActiveProvider, onClose]\n}\n"],"mappings":";AAEA,IAAM,4BAA4B;AAqB3B,IAAM,8BAAN,MAAkC;AAAA;AAAA,EAEvC,qBAAqB;AAAA;AAAA,EAGb,iBAA2C,CAAC;AAAA;AAAA,EAG5C,kBAA0C,CAAC;AAAA;AAAA,EAG3C,YAA8B,CAAC;AAAA;AAAA,EAG/B,kBAAkB;AAAA,EAE1B,YAAY,kBAAkB,2BAA2B;AACvD,SAAK,kBAAkB;AACvB,SAAK,eAAe;AAAA,EACtB;AAAA,EAEA,IAAI,UAAU;AACZ,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,cAAc,MAAc;AAC1B,SAAK,oBAAoB,MAAM,KAAK;AAAA,EACtC;AAAA,EAEA,aAAa,MAAc;AACzB,SAAK,oBAAoB,MAAM,IAAI;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,SAA4B;AACvC,UAAM,aAAqC,CAAC;AAE5C,UAAM,YAAY,CAAC,CAAC,YAAY,MAAM,MAAkC;AACtE,iBAAW,UAAU,IAAI;AAAA;AAAA,QAEvB,SAAS,cAAc,KAAK,iBAAiB,KAAK,eAAe,UAAU,IAAI;AAAA,QAC/E;AAAA,MACF;AAAA,IACF;AAEA,WAAO,QAAQ,OAAO,EAAE,QAAQ,UAAU,KAAK,IAAI,CAAC;AACpD,SAAK,kBAAkB;AACvB,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,UAAU,UAA0B;AAClC,SAAK,YAAY,CAAC,GAAG,KAAK,WAAW,QAAQ;AAC7C,WAAO,MAAM;AACX,WAAK,YAAY,KAAK,UAAU,OAAO,CAAC,qBAAqB,qBAAqB,QAAQ;AAAA,IAC5F;AAAA,EACF;AAAA,EAEA,oBAAoB,MAAc,SAAkB;AAClD,QAAI,QAAQ,KAAK,gBAAgB,IAAI,GAAG;AACtC,WAAK,gBAAgB,IAAI,EAAE,UAAU;AACrC,WAAK,kBAAkB,EAAE,GAAG,KAAK,gBAAgB;AACjD,WAAK,WAAW;AAAA,IAClB;AAAA,EACF;AAAA,EAEQ,aAAa;AACnB,eAAW,YAAY,KAAK,WAAW;AACrC,eAAS;AAAA,IACX;AAEA,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEQ,cAAc,QAAoB;AACxC,QAAI,KAAK,oBAAoB;AAC3B,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,kBAAkB;AACxB,SAAK,cAAc,MAAM;AAEvB,YAAM,iBAAiB,OAAO,QAAQ,KAAK,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM;AAC/F,YAAI,IAAI,IAAI;AACZ,eAAO;AAAA,MACT,GAAG,CAAC,CAA6B;AAEjC,mBAAa,QAAQ,KAAK,iBAAiB,KAAK,UAAU,cAAc,CAAC;AAAA,IAC3E,CAAC;AAAA,EACH;AAAA,EAEQ,iBAAiB;AACvB,SAAK,cAAc,MAAM;AACvB,YAAM,kBAAkB,aAAa,QAAQ,KAAK,eAAe;AACjE,UAAI;AACF,cAAM,UAAU,kBAAkB,KAAK,MAAM,eAAe,IAAI,CAAC;AACjE,aAAK,iBAAiB;AAAA,MACxB,SAAS,GAAG;AACV,gBAAQ,KAAK,+CAAgD,EAAY,OAAO,EAAE;AAAA,MACpF;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;AC/HA,SAAS,cAAAA,aAAY,YAAAC,iBAAgB;AACrC,SAAuB,WAAAC,gBAAe;AACtC,SAAS,kBAAkB;;;ACF3B,SAAS,0BAA+D,0BAA0B;AAClG,SAAS,WAAW,SAAS,gBAAgB;AAE7C,IAAM,cAAc,CAAC,YACnB,OAAO,OAAO,OAAO,EAAE,OAAO,CAAC,KAAK,WAAW;AAC7C,SAAO,gBAAgB,SAAS,IAAI,IAAI,QAAQ,MAAM,IAAI,IAAI,KAAK,MAAM;AACzE,SAAO;AACT,GAAG,CAAC,CAAuB;AAEtB,IAAM,qBAAqB,MAAM;AACtC,QAAM,UAAU,mBAAmB;AACnC,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,CAAC;AACxC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAA6B,CAAC,CAAC;AAEzE,YAAU,MAAM;AACd,qBAAiB,YAAY,OAAO,CAAC;AAAA,EACvC,GAAG,CAAC,SAAS,OAAO,CAAC;AAMrB,YAAU,MAAM;AACd,UAAM,WAA6C,MAAM;AACvD,iBAAW,CAACC,aAAYA,WAAU,CAAC;AAAA,IACrC;AACA,WAAO,iBAAiB,0BAA0B,QAAQ;AAE1D,WAAO,MAAM;AACX,aAAO,oBAAoB,0BAA0B,QAAQ;AAAA,IAC/D;AAAA,EACF,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,yBAAyB;AAAA,IAC7B,MAAM,OAAO,OAAO,aAAa,EAAE,OAAO,CAAC,KAAK,WAAW,MAAM,OAAO,gBAAgB,QAAQ,CAAC;AAAA,IACjG,CAAC,aAAa;AAAA,EAChB;AAEA,SAAO,EAAE,eAAe,uBAAuB;AACjD;;;ACvCA,SAAS,sBAAAC,2BAA0B;AACnC,SAAS,WAAAC,UAAS,4BAA4B;AAI9C,IAAI;AAKG,IAAM,yBAAyB,CAAC,uBAAkD;AACvF,QAAM,oBAAoBC,oBAAmB;AAG7C,QAAM,UAAUC,SAAQ,MAAM;AAC5B,QAAI,sBAAsB;AAAW,0BAAoB,IAAI,4BAA4B;AACzF,sBAAkB,aAAa,iBAAiB;AAChD,WAAO,QAAQ,sBAAsB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,OAAO,MAAM,uDAAmB,oBAAoB,MAAM,QAAQ;AAC3H,WAAO;AAAA,EACT,GAAG,CAAC,mBAAmB,kBAAkB,CAAC;AAE1C,SAAO,qBAAqB,QAAQ,UAAU,KAAK,OAAO,GAAG,MAAM,QAAQ,OAAO;AACpF;AAKO,IAAM,oBAAoB,CAAC,uBAAkD;AAClF,QAAM,UAAU,uBAAuB,kBAAkB;AACzD,QAAM,iBAAiBA;AAAA,IACrB,MACE,OAAO,QAAQ,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,MAAM;AAC5D,UAAI,OAAO;AAAS,YAAI,UAAU,IAAI;AACtC,aAAO;AAAA,IACT,GAAG,CAAC,CAA2B;AAAA,IACjC,CAAC,OAAO;AAAA,EACV;AAEA,SAAO;AAAA,IACL,eAAe,uDAAmB,cAAc,KAAK;AAAA,IACrD,cAAc,uDAAmB,aAAa,KAAK;AAAA,IACnD;AAAA,IACA;AAAA,EACF;AACF;;;AC5CA,SAAS,UAAU,aAA+B,iBAAiB;AAS7D,SACE,KADF;AAHC,IAAM,sBAA0D,CAAC,EAAE,gBAAgB,GAAG,MAAM,MAAM;AACvG,SACE,oBAAC,eAAa,GAAG,OACf,+BAAC,aACC;AAAA,wBAAC,YAAS,UAAU,CAAC,GAAG,YAAY,iDAAiB,UAAU;AAAA,IAAE;AAAA,KAEnE,GACF;AAEJ;;;ACfA,SAAS,QAAQ,QAAQ,eAAe,eAA4B,mBAAmB;;;ACAvF,SAAS,eAAe;AACxB,SAAS,kBAAkB;AAC3B,SAAS,wBAAwB;AACjC,SAAuB,SAAS,eAAe;;;ACH/C,OAAO,kBAAkB;AACzB,OAAO,sBAAsB;;;ADcvB,SACE,OAAAC,MADF,QAAAC,aAAA;AAHC,IAAM,yBAAgE,CAAC,EAAE,MAAM,cAAc,GAAG,MAAM,MAAM;AACjH,SACE,gBAAAA,MAAC,WAAQ,KAAK,GAAG,gBAAe,gBAAgB,GAAG,OACjD;AAAA,oBAAAA,MAAC,WAAQ,KAAK,KACZ;AAAA,sBAAAD,KAAC,SAAI,KAAI,YAAW,KAAK,cAAc,OAAO,EAAE,QAAQ,OAAO,GAAG;AAAA,MAClE,gBAAAA,KAAC,cAAW,SAAQ,aAAY,qBAAO;AAAA,OACzC;AAAA,IACA,gBAAAA,KAAC,WAAQ,UAAU,SAAS;AAAA,IAC5B,gBAAAC,MAAC,WAAQ,KAAK,KACZ;AAAA,sBAAAD,KAAC,oBAAiB,kBAAkB,QAAQ,KAAK,MAAM,KAAK,cAAc,OAAO,EAAE,QAAQ,QAAQ,UAAU,OAAO,GAAG;AAAA,MACvH,gBAAAA,KAAC,cAAW,SAAQ,aAAa,wBAAa;AAAA,OAChD;AAAA,KACF;AAEJ;;;AE1BA,SAAS,MAAM,cAAAE,mBAAkB;AACjC,SAAuB,WAAAC,gBAAe;AAOhC,gBAAAC,MAGA,QAAAC,aAHA;AAHC,IAAM,2BAAoE,CAAC,UAAU;AAC1F,SACE,gBAAAA,MAACF,UAAA,EAAQ,KAAK,GAAI,GAAG,OACnB;AAAA,oBAAAC,KAACF,aAAA,EAAW,YAAW,QAAO,IAAI,EAAE,WAAW,SAAS,GAAG,qCAE3D;AAAA,IACA,gBAAAG,MAAC,QACC;AAAA,sBAAAD,KAAC,QAAG,yDAA2C;AAAA,MAC/C,gBAAAA,KAAC,QAAG,4EAA8D;AAAA,OACpE;AAAA,IACA,gBAAAC,MAACH,aAAA,EAAW,SAAQ,aAAY,IAAI,EAAE,WAAW,SAAS,GAAG;AAAA;AAAA,MAEd;AAAA,MAC7C,gBAAAE;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,IAAI,EAAE,YAAY,OAAO;AAAA,UACzB,QAAO;AAAA,UACR;AAAA;AAAA,MAED;AAAA,MAAO;AAAA,OAET;AAAA,KACF;AAEJ;;;AHHM,gBAAAE,MACA,QAAAC,aADA;AAdC,IAAM,sBAA0D,CAAC,EAAE,gBAAgB,uBAAuB,GAAG,MAAM,MAAM;AAC9H,QAAM,EAAE,MAAM,aAAa,IAAI,kBAAkB,CAAC;AAElD,QAAM,YAAY,YAAY;AAfhC;AAgBI,QAAI;AACF,cAAM,sDAAgB,kBAAhB;AACN,kBAAM,YAAN,+BAAgB,CAAC,GAAG;AAAA,IACtB,SAAS,GAAG;AACV,cAAQ,KAAK,+BAAgC,EAAY,OAAO,EAAE;AAAA,IACpE;AAAA,EACF;AAEA,SACE,gBAAAA,MAAC,UAAO,YAAY,EAAE,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAE,EAAE,GAAI,GAAG,OAC3D;AAAA,oBAAAD,KAAC,eAAY,IAAI,EAAE,WAAW,SAAS,GAAG,+DAAiD;AAAA,IAC3F,gBAAAC,MAAC,iBAAc,IAAI,EAAE,SAAS,QAAQ,eAAe,UAAU,KAAK,EAAE,GACpE;AAAA,sBAAAD,KAAC,0BAAuB,MAAY,cAA4B;AAAA,MAChE,gBAAAA,KAAC,4BAAyB;AAAA,MAC1B,gBAAAA,KAAC,uBAAoB,gBAAgB,uBAAuB;AAAA,OAC9D;AAAA,IACA,gBAAAC,MAAC,iBACC;AAAA,sBAAAD,KAAC,UAAO,SAAQ,YAAW,SAAS,MAAG;AAjC/C;AAiCkD,2BAAM,YAAN,+BAAgB,CAAC,GAAG;AAAA,SAAkB,mBAEhF;AAAA,MACA,gBAAAA,KAAC,UAAO,SAAQ,aAAY,SAAS,WAAW,qBAEhD;AAAA,OACF;AAAA,KACF;AAEJ;;;AI1CA,SAAS,UAAAE,SAAQ,UAAAC,SAAQ,iBAAAC,gBAAe,iBAAAC,gBAA4B,eAAAC,cAAa,cAAAC,mBAAkB;AACnG,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,WAAAC,gBAAe;AAYhB,gBAAAC,MACA,QAAAC,aADA;AAJD,IAAM,+BAA4E,CAAC,EAAE,gBAAgB,GAAG,MAAM,MAAM;AACzH,SACE,gBAAAA,MAACR,SAAA,EAAQ,GAAG,OACV;AAAA,oBAAAQ,MAACF,UAAA,EAAQ,KAAK,GAAG,gBAAe,SAAQ,IAAI,GAC1C;AAAA,sBAAAC,KAACF,mBAAA,EAAiB,KAAK,iDAAgB,MAAM,kBAAkB,QAAQ;AAAA,MACvE,gBAAAG,MAACL,cAAA,EAAY,IAAI,EAAE,IAAI,EAAE,GAAG;AAAA;AAAA,QAAQ,iDAAgB;AAAA,QAAa;AAAA,SAAO;AAAA,OAC1E;AAAA,IACA,gBAAAK,MAACN,gBAAA,EACC;AAAA,sBAAAM,MAACJ,aAAA,EAAW;AAAA;AAAA,QAED,iDAAgB;AAAA,QAAa;AAAA,SACxC;AAAA,MACA,gBAAAG,KAACH,aAAA,EAAY,iBAAO,SAAS,QAAO;AAAA,OACtC;AAAA,IACA,gBAAAG,KAACN,gBAAA,EACC,0BAAAM,KAACR,SAAA,EAAO,SAAQ,aAAY,SAAS,MAAG;AAzBhD;AAyBmD,yBAAM,YAAN,+BAAgB,CAAC,GAAG;AAAA,OAAkB,mBAEjF,GACF;AAAA,KACF;AAEJ;;;AC/BA,SAAS,WAAW,SAAS,cAAAU,mBAAkB;AAerC,gBAAAC,YAAA;AAXH,IAAM,oCAA6E,CAAC;AAAA,EACzF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SACE,gBAAAA,KAAC,aAAW,GAAG,gBACb,0BAAAA;AAAA,IAAC;AAAA;AAAA,MACC,IAAI,EAAE,QAAQ,gBAAgB,IAAI,YAAY,OAAO;AAAA,MACrD,OAAO,CAAC,GAAI,kBAAkB,CAAC,GAAI,GAAI,sBAAsB,CAAC,CAAE,EAAE,IAAI,CAAC,SAAS,UAC9E,gBAAAA,KAAC,OAAe,qBAAR,KAAgB,CACzB;AAAA,MAED,0BAAAA,KAACD,aAAA,EAAY,yBAAc;AAAA;AAAA,EAC7B,GACF;AAEJ;;;ACtBA,SAAS,OAAO,oBAAoB;AACpC,SAAS,UAAAE,SAAQ,YAAY,aAAAC,YAAW,cAAAC,mBAAkB;AAC1D,SAAS,WAAAC,gBAAe;AASd,SACE,OAAAC,MADF,QAAAC,aAAA;AALH,IAAM,mCAA4E,CAAC,EAAE,WAAW,WAAW,UAAU,eAAe,MAAM;AAC/I,SACE,gBAAAD,KAACH,YAAA,EAAW,GAAG,gBACb,0BAAAI,MAACF,UAAA,EAAQ,KAAK,GAAG,gBAAe,SAC7B;AAAA,gBACC,gBAAAE,MAACH,aAAA,EAAW,IAAI,EAAE,SAAS,eAAe,KAAK,IAAI,GACjD;AAAA,sBAAAE,KAAC,SAAM;AAAA,MAAE;AAAA,OAEX,IAEA,gBAAAA,KAACJ,SAAA,EAAO,SAAS,aAAa,SAAS,WAAW,qBAElD;AAAA,IAED,YACC,gBAAAI,KAAC,cAAW,SAAS,UACnB,0BAAAA,KAAC,gBAAa,GAChB,IACE;AAAA,KACN,GACF;AAEJ;;;AC5BA,SAAS,aAAAE,kBAAiB;AAKjB,gBAAAC,YAAA;AADF,IAAM,qCAA8E,CAAC,EAAE,WAAW,eAAe,MAAM;AAC5H,SAAO,gBAAAA,KAACD,YAAA,EAAW,GAAG,gBAAiB,qBAAU;AACnD;;;ACNA,SAAS,QAAQ,aAAAE,kBAAiB;AAClC,SAAsB,WAAAC,gBAAe;AAkB/B,gBAAAC,YAAA;AAbC,IAAM,uBAAgE,CAAC,EAAE,WAAW,YAAY,eAAe,MAAM;AAC1H,QAAM,EAAE,eAAe,cAAc,QAAQ,IAAI,kBAAkB;AAEnE,QAAM,UAAUC,SAAQ,MAAO,aAAa,QAAQ,UAAU,EAAE,UAAU,OAAQ,CAAC,SAAS,UAAU,CAAC;AAEvG,QAAM,cAAc,CAAC,UAAyC;AAXhE;AAYI,UAAM,WAAU,WAAM,WAAN,mBAAc;AAC9B,QAAI,YAAY;AACd,gBAAU,6CAAe,cAAc,+CAAgB;AAAA,IACzD;AAAA,EACF;AACA,SACE,gBAAAD,KAACE,YAAA,EAAW,GAAG,gBACb,0BAAAF,KAAC,UAAO,UAAU,CAAC,WAAW,SAAS,aAAa,SAAS,UAAU,aAAa,GACtF;AAEJ;;;ACtBA,SAAS,aAAAG,YAAW,gBAAgB;AACpC,SAAS,oBAAAC,yBAAwB;AACjC,SAAS,WAAAC,gBAAe;AASlB,SACE,OAAAC,OADF,QAAAC,aAAA;AALC,IAAM,kCAA2E,CAAC,EAAE,MAAM,YAAY,eAAe,MAAM;AAChI,QAAM,QAAQ,SAAS;AAEvB,SACE,gBAAAD,MAACH,YAAA,EAAW,GAAG,gBACb,0BAAAI,MAACF,UAAA,EAAQ,KAAK,GAAG,gBAAe,SAC9B;AAAA,oBAAAC,MAACF,mBAAA,EAAiB,kBAAkB,MAAM,QAAQ,CAAC,GAAG,KAAK,MAAM;AAAA,IAChE;AAAA,KACH,GACF;AAEJ;;;ACRO,IAAM,4BAA4E;AAAA,EACvF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACfA,SAAS,OAAO,WAAW,aAAAI,YAAW,WAAuB,YAAAC,iBAAgB;AAE7E,SAAS,YAAAC,iBAAgB;;;ACAlB,IAAM,wBAAyC;AAAA,EACpD;AAAA,IACE,gBAAgB;AAAA,IAChB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,cAAc;AAAA,EAChB;AAAA,EACA;AAAA,IACE,gBAAgB;AAAA,IAChB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,cAAc;AAAA,EAChB;AAAA,EACA;AAAA,IACE,gBAAgB;AAAA,IAChB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,cAAc;AAAA,EAChB;AAAA,EACA;AAAA,IACE,gBAAgB;AAAA,IAChB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,cAAc;AAAA,EAChB;AAAA,EACA;AAAA,IACE,gBAAgB;AAAA,IAChB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,SAAS;AAAA,IACT,cAAc;AAAA,EAChB;AACF;;;ACtCA,SAAS,gBAA+B;AACxC,SAAiC,oBAAoB;AACrD,SAAS,aAAa,WAAAC,gBAAe;AAkD7B,gBAAAC,aAAA;AAtCD,IAAM,4BAAsE,CAAC;AAAA,EAClF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,EAAE,gBAAgB,0BAA0B,oBAAoB,WAAW,eAAe,aAAa,IAAI,aAAa,MAAM;AAEpI,QAAM,kBAAiB,qEAA0B,cAAa,CAAC,yBAAyB,SAAS,CAAC,IAAI,CAAC;AACvG,QAAM,kBAAiB,yDAAoB,WAAU,OAAM,iDAAgB,WAAU;AACrF,QAAM,YAAY,CAAC,GAAE,iDAAgB,WAAU,IAAI;AACnD,QAAM,EAAE,MAAM,MAAM,KAAK,IAAIC,SAAQ,MAAM,gBAAgB,EAAE,MAAM,QAAW,MAAM,QAAW,MAAM,OAAU,GAAG,CAAC,YAAY,CAAC;AAEhI,QAAM,iBAAiBA;AAAA,IACrB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAChB;AAAA,IACA,CAAC,eAAe,MAAM,IAAI;AAAA,EAC5B;AAEA,QAAM,gBAAgB,YAAY,MAAM;AACtC,yCAAW;AAAA,EACb,GAAG,CAAC,gBAAgB,QAAQ,CAAC;AAE7B,QAAM,iBAAiB,YAAY,YAAY;AAC7C,QAAI,qBAAqB;AACvB,aAAM;AAAA,IACR,OAAO;AACL,uDAAiB;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,gBAAgB,eAAe,qBAAqB,cAAc,CAAC;AAEvE,SACE,gBAAAD,MAAC,YAAU,GAAG,OACX,iBAAO,OAAO,yBAAyB,EAAE,IAAI,CAAC,MAAM,UACnD,gBAAAA;AAAA,IAAC;AAAA;AAAA,MAEC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW;AAAA,MACX,UAAU;AAAA,MACV;AAAA,MACA,YAAY;AAAA,MACZ,YAAY;AAAA;AAAA,IAVP;AAAA,EAWP,CACD,GACH;AAEJ;;;ACpEA,SAAmC,YAAAE,iBAAgB;AAI5C,IAAM,+BAA+B,CAC1C,sBACoE;AACpE,QAAM,CAAC,MAAM,OAAO,IAAIA,UAAS,KAAK;AACtC,QAAM,sBAAsB,CAAC,mBAAmC;AAC9D,YAAQ,IAAI;AACZ,sBAAkB,cAAc;AAAA,EAClC;AAEA,QAAM,UAAU,MAAM;AACpB,YAAQ,KAAK;AACb,sBAAkB,CAAC,CAAC;AAAA,EACtB;AAEA,SAAO,CAAC,MAAM,qBAAqB,OAAO;AAC5C;;;AHEI,mBAKU,OAAAC,OAJR,QAAAC,aADF;AANG,IAAM,wBAA8D,CAAC,EAAE,qBAAqB,uBAAuB,SAAS,GAAG,MAAM,MAAM;AAChJ,QAAM,CAAC,gBAAgB,iBAAiB,IAAIC,UAAyB;AACrE,QAAM,CAAC,aAAa,4BAA4B,cAAc,IAAI,6BAA6B,iBAAiB;AAChH,QAAM,CAAC,YAAY,2BAA2B,aAAa,IAAI,6BAA6B,iBAAiB;AAE7G,SACE,gBAAAD,MAAA,YACE;AAAA,oBAAAA,MAAC,SAAO,GAAG,OACT;AAAA,sBAAAD,MAAC,aACC,0BAAAA,MAACG,WAAA,EACE,gCAAsB,IAAI,CAAC,EAAE,gBAAgB,IAAI,OAAO,OAAO,MAAM,MACpE,gBAAAH,MAACI,YAAA,EAAU,OAAuB,SAAS,iBAAiB,SAAS,UAAU,OAAO,SAAS,QAC5F,mBAD2B,EAE9B,CACD,GACH,GACF;AAAA,MACA,gBAAAJ,MAAC,aACG,sBAAW,CAAC,GAAG,IAAI,CAAC,WAAQ;AAjCxC;AAkCY,+BAAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YAEA,gBAAgB;AAAA,YAChB,UAAU;AAAA,YACV;AAAA;AAAA,WAHK,YAAO,iBAAP,mBAAqB;AAAA,QAI5B;AAAA,OACD,GACH;AAAA,OACF;AAAA,IACA,gBAAAA,MAAC,gCAA6B,MAAM,YAAY,SAAS,eAAe,gBAAgC;AAAA,IACxG,gBAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,SAAS;AAAA,QACT,MAAM;AAAA,QACN;AAAA;AAAA,IACF;AAAA,KACF;AAEJ;;;Af/BU,gBAAAK,OAIE,QAAAC,aAJF;AATH,IAAM,2BAA2B;AAAA,EACtC,CAAC,EAAE,qBAAqB,uBAAuB,GAAG,MAAM,GAAG,QAAQ;AACjE,UAAM,QAAQC,UAAS;AAEvB,UAAM,EAAE,wBAAwB,cAAc,IAAI,mBAAmB;AAErE,WACE,gBAAAD,MAACE,UAAA,EAAQ,YAAW,WAAU,gBAAe,SAAQ,KAAK,GAAG,KAAW,GAAG,OACzE;AAAA,sBAAAF,MAACE,UAAA,EAAQ,YAAW,SAClB;AAAA,wBAAAH,MAACI,aAAA,EAAW,SAAS,MAAM,IAAI,EAAE,IAAI,IAAI,GAAG,mCAE5C;AAAA,QACC,yBACC,gBAAAH,MAACG,aAAA,EAAW,SAAS,aAAa,OAAO,MAAM,QAAQ,UAAU,MAAM,IAAI,EAAE,SAAS,IAAI,GAAG;AAAA;AAAA,UAChE;AAAA,WAC7B,IACE;AAAA,SACN;AAAA,MACA,gBAAAJ,MAAC,yBAAsB,SAAS,eAAe,qBAA0C,uBAA8C;AAAA,OACzI;AAAA,EAEJ;AACF;AAEA,yBAAyB,cAAc;","names":["Typography","useTheme","FlexCol","refresh","useWalletDiscovery","useMemo","useWalletDiscovery","useMemo","jsx","jsxs","Typography","FlexCol","jsx","jsxs","jsx","jsxs","Button","Dialog","DialogActions","DialogContent","DialogTitle","Typography","ConstrainedImage","FlexRow","jsx","jsxs","Typography","jsx","Button","TableCell","Typography","FlexRow","jsx","jsxs","TableCell","jsx","TableCell","useMemo","jsx","useMemo","TableCell","TableCell","ConstrainedImage","FlexRow","jsx","jsxs","TableCell","TableRow","useState","useMemo","jsx","useMemo","useState","jsx","jsxs","useState","TableRow","TableCell","jsx","jsxs","useTheme","FlexCol","Typography"]}
package/package.json CHANGED
@@ -10,14 +10,14 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/react-crypto": "^3.0.34",
14
- "@xylabs/react-flexbox": "3.0.34",
15
- "@xyo-network/react-table": "~2.67.0"
13
+ "@xylabs/react-crypto": "^3.0.35",
14
+ "@xylabs/react-flexbox": "3.0.35",
15
+ "@xyo-network/react-table": "~2.67.1"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@storybook/react": "^7.6.4",
19
- "@xylabs/ts-scripts-yarn3": "^3.2.10",
20
- "@xylabs/tsconfig-react": "^3.2.10",
19
+ "@xylabs/ts-scripts-yarn3": "^3.2.19",
20
+ "@xylabs/tsconfig-react": "^3.2.19",
21
21
  "typescript": "^5.3.3"
22
22
  },
23
23
  "peerDependencies": {
@@ -78,6 +78,6 @@
78
78
  },
79
79
  "sideEffects": false,
80
80
  "types": "dist/browser/index.d.ts",
81
- "version": "2.67.0",
81
+ "version": "2.67.1",
82
82
  "type": "module"
83
83
  }
@@ -23,7 +23,7 @@ export type WalletListener = () => void
23
23
 
24
24
  export class EnabledEthWalletConnections {
25
25
  // control whether or not enabled/disabled preferences are persisted (i.e. in localStorage)
26
- public persistPreferences = true
26
+ persistPreferences = true
27
27
 
28
28
  // Map of wallet names and their enabled/disabled state
29
29
  private enabledWallets: EnabledWalletsSavedState = {}