@wallet-ui/react
Version:
React components for Wallet UI
1 lines • 64.5 kB
Source Map (JSON)
{"version":3,"sources":["../src/base-button.tsx","../src/wallet-ui-context.tsx","../src/use-wallet-ui.tsx","../src/wallet-ui-account-context.tsx","../src/use-wallet-ui-account.tsx","../src/use-wallet-ui-wallet.tsx","../src/wallet-ui-icon.tsx","../src/base-dropdown.tsx","../src/base-svg.tsx","../src/wallet-ui-icon-close.tsx","../src/base-modal.tsx","../src/use-base-dropdown.tsx","../src/use-base-modal.tsx","../src/wallet-ui-cluster-context.tsx","../src/use-wallet-ui-cluster.tsx","../src/use-wallet-ui-dropdown.tsx","../src/use-wallet-ui-signer.tsx","../src/use-wallet-ui-wallets.tsx","../src/wallet-ui-account-context-provider.tsx","../src/wallet-ui-cluster-context-provider.tsx","../src/wallet-ui-context-provider.tsx","../src/wallet-ui.tsx","../src/wallet-ui-dropdown.tsx","../src/wallet-ui-account-guard.tsx","../src/wallet-ui-cluster-dropdown.tsx","../src/wallet-ui-icon-no-wallet.tsx","../src/wallet-ui-label.tsx","../src/wallet-ui-list-button.tsx","../src/wallet-ui-list.tsx","../src/wallet-ui-modal.tsx","../src/wallet-ui-modal-trigger.tsx"],"names":["React","connect","BaseDropdownItemType","useMachine","useId","normalizeProps","createContext","useContext","useMemo","useWallets","useEffect","useStore","clusterId","account","cluster"],"mappings":"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","file":"index.native.mjs","sourcesContent":["import React from 'react';\n\nimport { WalletUiButton } from './types/wallet-ui-button';\n\nexport interface BaseButtonProps extends Omit<WalletUiButton, 'children'> {\n label: React.ReactNode;\n leftSection?: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n rightSection?: React.ReactNode;\n}\n\nexport function BaseButton({ className, label, leftSection, onClick, rightSection, ...props }: BaseButtonProps) {\n return (\n <button data-wu=\"base-button\" className={`${className ?? ''}`} onClick={onClick} {...props}>\n {leftSection ? <span data-wu=\"base-button-left-section\">{leftSection}</span> : null}\n {label}\n {rightSection ? <span data-wu=\"base-button-right-section\">{rightSection}</span> : null}\n </button>\n );\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport { SolanaCluster } from '@wallet-ui/core';\nimport React, { ReactNode } from 'react';\n\nexport interface WalletUiContextProviderProps {\n children: ReactNode;\n}\n\nexport interface WalletUiContextValue {\n account?: UiWalletAccount;\n accountKeys: string[];\n cluster: SolanaCluster;\n connect: (wallet: UiWalletAccount) => void;\n connected: boolean;\n copy: () => void;\n disconnect: () => void;\n wallet?: UiWallet;\n wallets: UiWallet[];\n}\n\nexport interface WalletUiContextProviderProps {\n children: ReactNode;\n}\n\nexport const WalletUiContext = React.createContext<WalletUiContextValue>({} as WalletUiContextValue);\n","import React from 'react';\n\nimport { WalletUiContext } from './wallet-ui-context';\n\nexport function useWalletUi() {\n return React.useContext(WalletUiContext);\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport { SolanaCluster } from '@wallet-ui/core';\nimport React, { createContext } from 'react';\n\nexport interface WalletUiAccountInfo {\n account: UiWalletAccount;\n accountKeys: string[];\n cluster: SolanaCluster;\n wallet: UiWallet | undefined;\n}\n\nexport interface WalletUiAccountState extends Omit<WalletUiAccountInfo, 'account'> {\n account: UiWalletAccount | undefined;\n setAccount: React.Dispatch<React.SetStateAction<UiWalletAccount | undefined>>;\n}\n\nexport const WalletUiAccountContext = createContext<WalletUiAccountState>({} as WalletUiAccountState);\n","import { useContext } from 'react';\n\nimport { WalletUiAccountContext } from './wallet-ui-account-context';\n\nexport function useWalletUiAccount() {\n return useContext(WalletUiAccountContext);\n}\n","import { UiWallet, useConnect, useDisconnect } from '@wallet-standard/react';\nimport { useEffect } from 'react';\n\nimport { useWalletUi } from './use-wallet-ui';\nimport { useWalletUiAccount } from './use-wallet-ui-account';\n\nexport function useWalletUiWallet({ wallet }: { wallet: UiWallet }) {\n const { connect: connectAccount } = useWalletUi();\n const { setAccount } = useWalletUiAccount();\n const [isConnecting, connect] = useConnect(wallet);\n const [isDisconnecting, disconnect] = useDisconnect(wallet);\n useEffect(() => {}, [isDisconnecting]);\n\n return {\n connect: async () => {\n const connectedAccount = await connect();\n if (!connectedAccount.length) {\n console.warn(`Connect to ${wallet.name} but there are no accounts.`);\n return connectedAccount;\n }\n // TODO: Support wallets with multiple accounts\n const first = connectedAccount[0];\n setAccount(first);\n connectAccount(first);\n return connectedAccount;\n },\n disconnect,\n isConnecting,\n isDisconnecting,\n };\n}\n","import { UiWallet } from '@wallet-standard/react';\nimport React from 'react';\n\nimport { WalletUiImg } from './types/wallet-ui-img';\n\nexport interface WalletUiIconProps extends WalletUiImg {\n wallet?: Pick<UiWallet, 'icon' | 'name'>;\n}\n\nexport function WalletUiIcon({ className, wallet, ...props }: WalletUiIconProps) {\n if (!wallet) {\n return null;\n }\n\n return <img data-wu=\"wallet-ui-icon\" src={wallet.icon} alt={wallet.name} className={className ?? ''} {...props} />;\n}\n","import { UiWallet } from '@wallet-standard/react';\nimport React, { HTMLAttributes } from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { BaseDropdownControl } from './use-base-dropdown';\nimport { useWalletUiWallet } from './use-wallet-ui-wallet';\nimport { WalletUiIcon } from './wallet-ui-icon';\n\nexport enum BaseDropdownItemType {\n Item = 'Item',\n WalletConnect = 'WalletConnect',\n WalletCopy = 'WalletCopy',\n WalletDisconnect = 'WalletDisconnect',\n WalletNeeded = 'WalletNeeded',\n}\n\nexport interface BaseDropdownItem {\n closeMenu?: boolean;\n disabled?: boolean;\n handler: () => Promise<void>;\n label: string;\n leftSection?: React.ReactNode;\n rightSection?: React.ReactNode;\n type: BaseDropdownItemType;\n value: string;\n wallet?: UiWallet;\n}\n\nexport interface BaseDropdownProps {\n buttonProps: BaseButtonProps;\n dropdown: BaseDropdownControl;\n items: BaseDropdownItem[];\n showIndicator?: boolean;\n}\n\nexport function BaseDropdown({ buttonProps, dropdown, items, showIndicator }: BaseDropdownProps) {\n const api = dropdown.api;\n const trigger = (\n <BaseButton\n {...api.getTriggerProps()}\n rightSection={\n showIndicator ? (\n <span {...api.getIndicatorProps()}>\n <BaseDropdownChevronDown />\n </span>\n ) : null\n }\n {...buttonProps}\n />\n );\n\n return (\n <div data-wu=\"base-dropdown\">\n {trigger}\n <div {...api.getPositionerProps()} data-wu=\"base-dropdown-wrapper\">\n <div {...api.getContentProps()} data-wu=\"base-dropdown-list\" data-part=\"content\">\n {items.map(item => {\n return (\n <BaseDropdownItem\n {...api.getItemProps({ value: item.value })}\n key={item.value}\n item={item}\n afterClick={() => {\n if (item.disabled) {\n return;\n }\n if (item.closeMenu !== false) {\n dropdown.close();\n }\n }}\n />\n );\n })}\n </div>\n </div>\n </div>\n );\n}\n\nfunction BaseDropdownItem({ afterClick, item }: BaseDropdownItemRenderProps) {\n if (!item.wallet) {\n return <BaseDropdownItemRender afterClick={afterClick} item={item} />;\n }\n switch (item.type) {\n case BaseDropdownItemType.Item:\n return <BaseDropdownItemRender afterClick={afterClick} item={item} />;\n case BaseDropdownItemType.WalletConnect:\n return <BaseDropdownItemWalletConnect afterClick={afterClick} item={item} wallet={item.wallet} />;\n case BaseDropdownItemType.WalletCopy:\n return <BaseDropdownItemRender afterClick={afterClick} item={item} />;\n case BaseDropdownItemType.WalletDisconnect:\n return <BaseDropdownItemWalletDisconnect afterClick={afterClick} item={item} wallet={item.wallet} />;\n }\n}\n\nfunction BaseDropdownItemWalletConnect({\n afterClick,\n item,\n wallet,\n}: BaseDropdownItemRenderProps & {\n wallet: UiWallet;\n}) {\n const { connect } = useWalletUiWallet({ wallet });\n return (\n <BaseDropdownItemRender\n afterClick={afterClick}\n item={{\n ...item,\n handler: async () => {\n //\n await connect();\n return await item.handler();\n },\n leftSection: wallet ? <WalletUiIcon wallet={wallet} /> : undefined,\n }}\n />\n );\n}\n\nfunction BaseDropdownItemWalletDisconnect({\n afterClick,\n item,\n wallet,\n}: BaseDropdownItemRenderProps & {\n wallet: UiWallet;\n}) {\n const { disconnect } = useWalletUiWallet({ wallet });\n return (\n <BaseDropdownItemRender\n afterClick={afterClick}\n item={{\n ...item,\n handler: async () => {\n //\n await disconnect();\n return await item.handler();\n },\n }}\n />\n );\n}\n\ninterface BaseDropdownItemRenderProps {\n afterClick: () => void;\n item: BaseDropdownItem;\n}\n\nfunction BaseDropdownItemRender({ afterClick, item }: BaseDropdownItemRenderProps) {\n function onClick() {\n if (item.disabled) {\n return;\n }\n void item.handler().then(() => {\n afterClick();\n });\n }\n\n return (\n <button type=\"button\" data-wu=\"base-dropdown-item\" data-part=\"item\" onClick={onClick}>\n {item.leftSection ? <span data-wu=\"base-dropdown-item-left-section\">{item.leftSection}</span> : null}\n {item.label}\n {item.rightSection ? <span data-wu=\"base-dropdown-item-right-section\">{item.rightSection}</span> : null}\n </button>\n );\n}\n\nexport function BaseDropdownChevronDown(props: HTMLAttributes<SVGElement>) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={12}\n height={12}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m6 9 6 6 6-6\" />\n </svg>\n );\n}\n","import React from 'react';\n\nexport interface BaseSvgProps extends React.DetailedHTMLProps<React.SVGProps<SVGSVGElement>, SVGSVGElement> {\n viewBox: string;\n}\n\nexport function BaseSvg({ ...props }: BaseSvgProps) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n {props.children}\n </svg>\n );\n}\n","import React from 'react';\n\nimport { BaseSvg, BaseSvgProps } from './base-svg';\n\nexport function WalletUiIconClose({ ...props }: Omit<BaseSvgProps, 'viewBox'>) {\n return (\n <BaseSvg\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"3\"\n width={12}\n height={12}\n viewBox=\"0 0 14 14\"\n {...props}\n >\n <path d=\"M14 12.461 8.3 6.772l5.234-5.233L12.006 0 6.772 5.234 1.54 0 0 1.539l5.234 5.233L0 12.006l1.539 1.528L6.772 8.3l5.69 5.7L14 12.461z\"></path>\n </BaseSvg>\n );\n}\n","import { Portal } from '@zag-js/react';\nimport React from 'react';\n\nimport { BaseButton, BaseButtonProps } from './base-button';\nimport { BaseModalControl } from './use-base-modal';\nimport { WalletUiIconClose } from './wallet-ui-icon-close';\n\nexport interface BaseModalProps {\n buttonLabel?: React.ReactNode;\n buttonProps?: Partial<BaseButtonProps>;\n children: React.ReactNode;\n description?: React.ReactNode;\n modal: BaseModalControl;\n title?: React.ReactNode;\n}\n\nexport function BaseModal({ modal, buttonLabel, buttonProps = {}, ...props }: BaseModalProps) {\n const api = modal.api;\n return (\n <>\n {buttonLabel ? <BaseButton label={buttonLabel} {...buttonProps} {...api.getTriggerProps()} /> : null}\n {api.open && (\n <Portal>\n <div {...api.getBackdropProps()} />\n <div {...api.getPositionerProps()}>\n <div {...api.getContentProps()}>\n <header>\n <button {...api.getCloseTriggerProps()}>\n <WalletUiIconClose />\n </button>\n </header>\n {props.description ? <p {...api.getDescriptionProps()}>{props.description}</p> : null}\n <main>{props.children}</main>\n </div>\n </div>\n </Portal>\n )}\n </>\n );\n}\n","import * as menu from '@zag-js/menu';\nimport { normalizeProps, useMachine } from '@zag-js/react';\nimport { useId } from 'react';\n\nexport type BaseDropdownApi = ReturnType<typeof menu.connect>;\n\nexport interface BaseDropdownControl {\n api: BaseDropdownApi;\n close: () => void;\n open: () => void;\n}\n\nexport function useBaseDropdown(): BaseDropdownControl {\n const service = useMachine(menu.machine, { id: useId() });\n const api = menu.connect(service, normalizeProps);\n\n return {\n api,\n close: () => service.send({ type: 'CLOSE' }),\n open: () => service.send({ type: 'OPEN' }),\n };\n}\n","import * as dialog from '@zag-js/dialog';\nimport { normalizeProps, useMachine } from '@zag-js/react';\nimport { useId } from 'react';\n\nexport type BaseModalApi = ReturnType<typeof dialog.connect>;\n\nexport interface BaseModalControl {\n api: BaseModalApi;\n close: () => void;\n open: () => void;\n}\n\nexport function useBaseModal(): BaseModalControl {\n const service = useMachine(dialog.machine, { id: useId(), modal: true });\n const api = dialog.connect(service, normalizeProps);\n\n return {\n api,\n close: () => service.send({ type: 'CLOSE' }),\n open: () => service.send({ type: 'OPEN' }),\n };\n}\n","import { SolanaCluster, SolanaClusterId, StorageCluster } from '@wallet-ui/core';\nimport { createContext, ReactNode } from 'react';\n\nexport interface WalletUiClusterContextProviderProps {\n clusters: SolanaCluster[];\n render: (props: WalletUiClusterContextValue) => ReactNode;\n storage?: StorageCluster;\n}\n\nexport interface WalletUiClusterContextValue {\n cluster: SolanaCluster;\n clusters: SolanaCluster[];\n\n setCluster(cluster: SolanaClusterId): void;\n}\n\nexport const WalletUiClusterContext = createContext<WalletUiClusterContextValue>({} as WalletUiClusterContextValue);\n","import { useContext } from 'react';\n\nimport { WalletUiClusterContext } from './wallet-ui-cluster-context';\n\nexport function useWalletUiCluster() {\n return useContext(WalletUiClusterContext);\n}\n","import { UiWallet, UiWalletAccount } from '@wallet-standard/react';\nimport React, { useMemo } from 'react';\n\nimport { BaseButtonProps } from './base-button';\nimport { BaseDropdownItem, BaseDropdownItemType } from './base-dropdown';\nimport { BaseDropdownControl, useBaseDropdown } from './use-base-dropdown';\nimport { useWalletUi } from './use-wallet-ui';\nimport { WalletUiIcon } from './wallet-ui-icon';\n\nfunction getDropdownItemsWallets({\n wallets,\n connect,\n}: {\n connect: (wallet: UiWalletAccount) => void;\n wallets: UiWallet[];\n}): BaseDropdownItem[] {\n return wallets.length\n ? wallets.map(wallet => ({\n handler: async () => {\n // TODO: Add support for multiple accounts, properly handle no accounts\n const account = wallet.accounts.length > 0 ? wallet.accounts[0] : undefined;\n if (!account) {\n return;\n }\n connect(account);\n await Promise.resolve();\n },\n label: wallet.name,\n\n type: BaseDropdownItemType.WalletConnect,\n value: wallet.name,\n wallet,\n }))\n : [\n {\n handler: async () => {\n window.open('https://solana.com/solana-wallets', '_blank');\n await Promise.resolve();\n },\n label: \"You'll need a wallet on Solana to continue\",\n type: BaseDropdownItemType.WalletNeeded,\n value: 'no-wallets',\n },\n ];\n}\n\nexport function useWalletUiDropdown(): {\n buttonProps: BaseButtonProps;\n connected: boolean;\n dropdown: BaseDropdownControl;\n items: BaseDropdownItem[];\n} {\n const dropdown = useBaseDropdown();\n\n const { account, connect, copy, disconnect, connected, wallet, wallets } = useWalletUi();\n\n const itemsWallets = useMemo(() => getDropdownItemsWallets({ connect, wallets }), [wallets, connect]);\n\n const itemsConnected: BaseDropdownItem[] = useMemo(\n () => [\n {\n handler: async () => {\n copy();\n void (await Promise.resolve());\n },\n label: 'Copy Address',\n type: BaseDropdownItemType.WalletCopy,\n value: 'copy',\n },\n {\n handler: async () => {\n disconnect();\n dropdown.close();\n await Promise.resolve();\n },\n label: 'Disconnect',\n type: BaseDropdownItemType.WalletDisconnect,\n value: 'disconnect',\n wallet,\n },\n ...itemsWallets,\n ],\n [copy, disconnect, dropdown, wallet, itemsWallets],\n );\n const items = useMemo(() => {\n return connected ? itemsConnected : itemsWallets;\n }, [connected, itemsConnected, itemsWallets]);\n\n const buttonProps: BaseButtonProps = useMemo(() => {\n return {\n label: connected ? ((account ? ellipsify(account.address) : wallet?.name) ?? 'Connected') : 'Select Wallet',\n leftSection: connected ? <WalletUiIcon wallet={wallet} /> : undefined,\n };\n }, [account, connected, wallet]);\n\n return {\n buttonProps,\n connected,\n dropdown,\n items,\n };\n}\n\nexport function ellipsify(str = '', len = 4, delimiter = '..') {\n const strLen = str.length;\n const limit = len * 2 + delimiter.length;\n\n return strLen >= limit ? str.substring(0, len) + delimiter + str.substring(strLen - len, strLen) : str;\n}\n","import { useWalletAccountTransactionSendingSigner } from '@solana/react';\nimport { TransactionSendingSigner } from '@solana/signers';\nimport { UiWalletAccount } from '@wallet-standard/react';\n\nimport { useWalletUi } from './use-wallet-ui';\n\nexport function useWalletUiSigner({\n account,\n}: {\n account: UiWalletAccount;\n}): TransactionSendingSigner<UiWalletAccount['address']> {\n const { cluster } = useWalletUi();\n\n return useWalletAccountTransactionSendingSigner(account, cluster.id);\n}\n","import { useWallets } from '@wallet-standard/react';\nimport { useMemo } from 'react';\n\nexport function useWalletUiWallets() {\n const readonlyWallets = useWallets();\n return useMemo(\n () =>\n readonlyWallets\n .filter(wallet => wallet.chains.some(i => i.startsWith('solana:')))\n .sort((a, b) => a.name.localeCompare(b.name)),\n [readonlyWallets],\n );\n}\n","import { useStore } from '@nanostores/react';\nimport {\n getUiWalletAccountStorageKey,\n UiWallet,\n UiWalletAccount,\n uiWalletAccountBelongsToUiWallet,\n uiWalletAccountsAreSame,\n useWallets,\n} from '@wallet-standard/react';\nimport { createStorageAccount, SolanaCluster, StorageAccount } from '@wallet-ui/core';\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { WalletUiAccountContext } from './wallet-ui-account-context';\n\nlet wasSetterInvoked = false;\n\nfunction getSavedWalletAccount(\n wallets: readonly UiWallet[],\n savedWalletNameAndAddress?: string,\n): UiWalletAccount | undefined {\n if (wasSetterInvoked) {\n // After the user makes an explicit choice of wallet, stop trying to auto-select the\n // saved wallet, if and when it appears.\n return;\n }\n if (!savedWalletNameAndAddress || typeof savedWalletNameAndAddress !== 'string') {\n return;\n }\n const [savedWalletName, savedAccountAddress] = savedWalletNameAndAddress.split(':');\n if (!savedWalletName || !savedAccountAddress) {\n return;\n }\n const wallet = wallets.find(w => w.name === savedWalletName);\n if (!wallet) {\n return;\n }\n return wallet.accounts.find(a => a.address === savedAccountAddress);\n}\n\n/**\n * Saves the selected wallet account's storage key to the browser's local storage. In future\n * sessions it will try to return that same wallet account, or at least one from the same brand of\n * wallet if the wallet from which it came is still in the Wallet Standard registry.\n */\nexport function WalletUiAccountContextProvider({\n children,\n cluster,\n storage = createStorageAccount(),\n}: {\n children: React.ReactNode;\n cluster: SolanaCluster;\n storage?: StorageAccount;\n}) {\n const wallets = useWallets();\n const accountId = useStore(storage.value);\n const [account, setAccountInternal] = useState<UiWalletAccount | undefined>(() =>\n getSavedWalletAccount(wallets, accountId),\n );\n\n const setAccount = useCallback(\n (setStateAction: React.SetStateAction<UiWalletAccount | undefined>) => {\n setAccountInternal(prevAccount => {\n wasSetterInvoked = true;\n const nextWalletAccount =\n typeof setStateAction === 'function' ? setStateAction(prevAccount) : setStateAction;\n const accountKey = nextWalletAccount ? getUiWalletAccountStorageKey(nextWalletAccount) : undefined;\n storage.set(accountKey ? accountKey : undefined);\n return nextWalletAccount;\n });\n },\n [storage],\n );\n\n useEffect(() => {\n const savedWalletAccount = getSavedWalletAccount(wallets, accountId);\n if (savedWalletAccount) {\n setAccountInternal(savedWalletAccount);\n }\n }, [accountId, wallets]);\n const walletAccount = useMemo(() => {\n if (account) {\n for (const uiWallet of wallets) {\n for (const uiWalletAccount of uiWallet.accounts) {\n if (uiWalletAccountsAreSame(account, uiWalletAccount)) {\n return uiWalletAccount;\n }\n }\n if (uiWalletAccountBelongsToUiWallet(account, uiWallet) && uiWallet.accounts[0]) {\n // If the selected account belongs to this connected wallet, at least, then\n // select one of its accounts.\n return uiWallet.accounts[0];\n }\n }\n }\n }, [account, wallets]);\n useEffect(() => {\n // If there is a selected wallet account but the wallet to which it belongs has since\n // disconnected, clear the selected wallet.\n if (account && !walletAccount) {\n setAccountInternal(undefined);\n }\n }, [account, walletAccount]);\n\n const wallet = useMemo(() => {\n if (!walletAccount) {\n return undefined;\n }\n for (const uiWallet of wallets) {\n for (const uiWalletAccount of uiWallet.accounts) {\n if (uiWalletAccountsAreSame(walletAccount, uiWalletAccount)) {\n return uiWallet;\n }\n }\n if (uiWalletAccountBelongsToUiWallet(walletAccount, uiWallet) && uiWallet.accounts[0]) {\n // If the selected account belongs to this connected wallet, at least, then\n // select one of its accounts.\n return uiWallet;\n }\n }\n }, [walletAccount, wallets]);\n\n // Expose the error boundary reset keys to the context\n const accountKeys = useMemo(() => {\n if (!walletAccount) {\n return [];\n }\n return [cluster.id, getUiWalletAccountStorageKey(walletAccount)].filter(Boolean);\n }, [walletAccount, cluster.id]);\n\n return (\n <WalletUiAccountContext.Provider\n value={useMemo(\n () => ({\n account: walletAccount,\n accountKeys,\n cluster,\n setAccount,\n wallet,\n }),\n [accountKeys, cluster, setAccount, wallet, walletAccount],\n )}\n >\n {children}\n </WalletUiAccountContext.Provider>\n );\n}\n","import { useStore } from '@nanostores/react';\nimport { createStorageCluster, SolanaClusterId } from '@wallet-ui/core';\nimport React from 'react';\n\nimport {\n WalletUiClusterContext,\n WalletUiClusterContextProviderProps,\n WalletUiClusterContextValue,\n} from './wallet-ui-cluster-context';\n\nexport function WalletUiClusterContextProvider({\n clusters,\n render,\n storage = createStorageCluster(),\n}: WalletUiClusterContextProviderProps) {\n const clusterId = useStore(storage.value);\n\n if (!clusters.length) {\n throw new Error('No clusters provided');\n }\n\n const found = clusters.find(c => c.id === clusterId);\n const first = clusters[0];\n\n const value: WalletUiClusterContextValue = {\n cluster: found ?? first,\n clusters,\n setCluster: (clusterId: SolanaClusterId) => {\n const cluster = clusters.find(c => c.id === clu