@xyo-network/react-chain-provider 1.15.13 → 1.15.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -2,10 +2,10 @@ import type { StackProps } from '@mui/material';
|
|
|
2
2
|
import type { ComponentType, MouseEventHandler } from 'react';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
export interface ConnectClientAccountsStackProps extends StackProps {
|
|
5
|
-
AccountComponent
|
|
5
|
+
AccountComponent?: ComponentType<{
|
|
6
6
|
account?: string;
|
|
7
7
|
}>;
|
|
8
|
-
ConnectComponent
|
|
8
|
+
ConnectComponent?: ComponentType<{
|
|
9
9
|
onClick?: MouseEventHandler<HTMLElement>;
|
|
10
10
|
}>;
|
|
11
11
|
timeout?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectAccountsStack.d.ts","sourceRoot":"","sources":["../../../../src/components/connected/ConnectAccountsStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAM/C,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,MAAM,WAAW,+BAAgC,SAAQ,UAAU;IACjE,gBAAgB,EAAE,aAAa,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"ConnectAccountsStack.d.ts","sourceRoot":"","sources":["../../../../src/components/connected/ConnectAccountsStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAM/C,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC7D,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,MAAM,WAAW,+BAAgC,SAAQ,UAAU;IACjE,gBAAgB,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,CAAA;KAAE,CAAC,CAAA;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAkB1E,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/connected/account/Connected.tsx","../../src/components/connected/ConnectAccountsStack.tsx","../../src/hooks/client/useClient.ts","../../src/hooks/helpers/getXyoClient.ts","../../src/hooks/client/permissions/usePermissions.ts","../../src/hooks/client/permissions/usePermissionsAccounts.ts","../../src/hooks/client/helpers/findCaveat.ts","../../src/hooks/client/useGateway.ts","../../src/hooks/useAddressBalance.ts","../../src/hooks/useConnectAccount.ts","../../src/hooks/useCurrentBlock.ts","../../src/hooks/useHttpRpcRunner.ts","../../src/hooks/useNetwork.ts","../../src/hooks/useSigner.ts","../../src/hooks/viewer/useCheckRpc.ts","../../src/hooks/viewer/useHttpRpcViewer.ts","../../src/hooks/viewer/useViewerFromWallet.ts"],"sourcesContent":["import {\n Stack, Tooltip, Typography,\n} from '@mui/material'\nimport { EthAddressWrapper } from '@xylabs/eth-address'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport React from 'react'\n\nexport const ConnectedAccount: React.FC<{ address: string }> = ({ address }) => {\n const shortenedAddress = `${EthAddressWrapper.fromString(address)?.toShortString(4)}`\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <BlockiesAvatarAddress address={address} size={21} />\n <Tooltip title={address}>\n <Typography color=\"textSecondary\" variant=\"caption\" fontFamily=\"monospace\">{shortenedAddress}</Typography>\n </Tooltip>\n </Stack>\n )\n}\n","import type { StackProps } from '@mui/material'\nimport { Stack } from '@mui/material'\nimport type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { isDefined } from '@xylabs/typeof'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport type { ComponentType, MouseEventHandler } from 'react'\nimport React from 'react'\n\nimport { useConnectAccount } from '../../hooks/index.ts'\nimport { ConnectedAccount } from './account/index.ts'\n\nconst DefaultConnectComponent: React.FC<ButtonExProps> = props => (\n <ButtonEx variant=\"contained\" size=\"small\" {...props} />\n)\n\nexport interface ConnectClientAccountsStackProps extends StackProps {\n AccountComponent: ComponentType<{ account?: string }>\n ConnectComponent: ComponentType<{ onClick?: MouseEventHandler<HTMLElement> }>\n timeout?: number\n}\n\nexport const ConnectAccountsStack: React.FC<ConnectClientAccountsStackProps> = ({\n AccountComponent = ConnectedAccount, ConnectComponent = DefaultConnectComponent, timeout, ...props\n}) => {\n const {\n address, connectSigner, error, timedout,\n } = useConnectAccount(undefined, timeout)\n\n return (\n <Stack direction=\"row\" alignItems=\"start\" spacing={2} {...props}>\n {isDefined(address)\n ? <AccountComponent address={address} />\n : (\n <ConnectComponent onClick={() => void connectSigner()}>Connect</ConnectComponent>\n )}\n <ErrorRender error={timedout ? new Error('Gateway Not Found') : undefined} scope=\"ConnectSigner:notFound\" />\n <ErrorRender error={error} scope=\"ConnectSigner:error\" />\n </Stack>\n )\n}\n","import type { XyoClient } from '@xyo-network/xl1-protocol'\nimport { useSyncExternalStore } from 'react'\n\nimport { getXyoClient } from '../helpers/index.ts'\n\ninterface ClientState {\n client?: XyoClient\n error: Error | null\n isLoading: boolean\n timedout: boolean\n}\n\nlet currentState: ClientState = {\n client: undefined,\n error: null,\n isLoading: false,\n timedout: false,\n}\n\nconst listeners = new Set<() => void>()\n\nconst emitChange = () => {\n for (const listener of listeners) listener()\n}\n\nconst updateState = (newState: Partial<ClientState>) => {\n currentState = { ...currentState, ...newState }\n emitChange()\n}\n\nconst initializeClient = async (timeout?: number) => {\n if (currentState.isLoading || currentState.client) return\n\n updateState({ isLoading: true, error: null })\n\n try {\n const client = await getXyoClient(timeout)\n if (client === null) {\n updateState({ timedout: true, isLoading: false })\n return\n }\n updateState({\n client, isLoading: false, error: null,\n })\n } catch (error) {\n console.error('Error initializing XyoClient', error)\n updateState({ error: error as Error, isLoading: false })\n }\n}\n\nconst subscribe = (listener: () => void, timeout?: number) => {\n listeners.add(listener)\n\n void initializeClient(timeout)\n\n return () => {\n listeners.delete(listener)\n }\n}\n\nconst getSnapshot = (): ClientState => currentState\n\nexport const useClient = (timeout?: number) => {\n const subscribeWithTimeout = (listener: () => void) => subscribe(listener, timeout)\n return useSyncExternalStore(subscribeWithTimeout, getSnapshot)\n}\n","import type { XyoClient } from '@xyo-network/xl1-protocol'\n\nconst CLIENT_LISTENER_TIMEOUT = 500\n\nconst hasXyoClient = () => {\n return 'client' in globalThis.xyo\n}\n\nexport const listenForClientInjection = (onClientReady: () => void, timeout: number, onTimeout: () => void) => {\n let resolved = false\n const listener: EventListener = () => {\n onClientReady()\n resolved = true\n }\n globalThis.addEventListener('xyo:plugin-ready', listener)\n setTimeout(() => {\n if (!resolved) {\n onTimeout()\n }\n }, timeout)\n}\n\ntype ReturnType = XyoClient | undefined | null\n\nexport async function getXyoClient(timeout = CLIENT_LISTENER_TIMEOUT): Promise<ReturnType> {\n return hasXyoClient()\n ? globalThis.xyo.client\n // listen for the XyoWallet to be injected\n : await new Promise<ReturnType>((resolve) => {\n listenForClientInjection(\n () => {\n resolve(globalThis.xyo.client)\n },\n timeout,\n () => {\n resolve(null)\n },\n )\n })\n}\n","import { useClient } from '../useClient.ts'\n\nexport const usePermissions = () => {\n const {\n client, isLoading, error, timedout,\n } = useClient()\n const permissions = client?.permissions\n return {\n permissions,\n isLoading,\n error,\n timedout,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n isArray, isDefined, isDefinedNotNull, isString,\n} from '@xylabs/typeof'\nimport type { JsonValue } from '@xyo-network/xl1-rpc'\n\nimport { findCaveat } from '../helpers/index.ts'\nimport { usePermissions } from './usePermissions.ts'\n\nconst validateRestrictedAccounts = (restrictedAccounts: JsonValue): readonly string [] => {\n if (isDefined(restrictedAccounts)) {\n if (isArray(restrictedAccounts) && restrictedAccounts.every(isString)) {\n return restrictedAccounts\n }\n throw new Error(\n `Unrecognized format for restrictReturnedAccounts caveat found on permissions. \\n\n Should be an array of strings: ${JSON.stringify(restrictedAccounts)}`,\n )\n }\n return []\n}\n\nexport const useAccountPermissions = () => {\n const { permissions, error } = usePermissions()\n\n return usePromise(async () => {\n if (isDefinedNotNull(error)) throw error\n if (isDefined(permissions)) {\n const restrictedAccounts = await findCaveat(\n permissions,\n // TODO - extract to constant in protocol package\n 'xyoWallet_getAccounts',\n 'restrictReturnedAccounts',\n )\n return validateRestrictedAccounts(restrictedAccounts)\n }\n }, [permissions])\n}\n","import { isDefined } from '@xylabs/typeof'\nimport type { CaveatTypes, XyoPermissions } from '@xyo-network/xl1-protocol'\nimport type { ParentCapability } from '@xyo-network/xl1-rpc'\n\nexport const findCaveat = async (\n permissions: XyoPermissions,\n targetCapability: ParentCapability,\n targetCaveatType: CaveatTypes,\n) => {\n const existingPermissions = await permissions.getPermissions()\n if (isDefined(existingPermissions) && existingPermissions.length > 0) {\n const foundPermissions = existingPermissions\n .find(p => p.parentCapability === targetCapability)\n if (isDefined(foundPermissions)) {\n return foundPermissions.caveats?.find(caveat => caveat.type === targetCaveatType)?.value ?? []\n }\n }\n return existingPermissions\n}\n","import type { GatewayName } from '@xyo-network/xl1-protocol'\n\nimport { useClient } from './useClient.ts'\n\nexport const useGateway = (gatewayName?: GatewayName, timeout?: number) => {\n const {\n client, isLoading, error, timedout,\n } = useClient(timeout)\n return {\n gateway: gatewayName ? client?.gateways?.[gatewayName] : undefined,\n isLoading,\n error,\n timedout,\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport { isUndefined, isUndefinedOrNull } from '@xylabs/typeof'\nimport type { AttoXL1, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { ShiftedBigInt } from '@xyo-network/xl1-protocol'\nimport {\n useEffect, useMemo, useState,\n} from 'react'\n\nexport const useAddressBalance = (\n // address to get balance for\n address?: Address,\n // viewer to use for fetching balance\n viewer?: XyoViewer,\n // refresh balance trigger\n refresh?: number,\n) => {\n const [balancesResult, setBalancesResult] = useState<AttoXL1 | null>()\n const [loading, setLoading] = useState(false)\n const [balancesError, setBalancesError] = useState<Error>()\n\n useEffect(() => {\n let isCurrent = true\n if (isUndefined(viewer) || isUndefined(address)) return\n // Ensure the render is the current one before setting the state.\n // This solves the issue of overlapping calls where a previous call takes\n // longer than a subsequent one and returns a state value. Now, the latest\n // result is always returned.\n (viewer.accountBalance(address) as Promise<AttoXL1>).then((result) => {\n if (isCurrent) {\n setBalancesResult(result as AttoXL1)\n setLoading(false)\n }\n })\n .catch((err) => {\n if (isCurrent) {\n console.error('Error in queued call:', err)\n setBalancesResult(undefined)\n setBalancesError(err)\n setLoading(false)\n }\n })\n\n return () => {\n isCurrent = false\n }\n }, [address, viewer, refresh])\n\n useMemo(() => {\n if (balancesError) {\n setLoading(false)\n }\n }, [balancesError])\n\n const shiftedBigInt = useMemo(() => {\n if (typeof balancesResult !== 'bigint') return\n return new ShiftedBigInt(balancesResult, {\n places: 18, maxDecimal: 18, maxCharacters: 9, minDecimals: 1, locale: navigator.language,\n })\n }, [balancesResult])\n\n const balanceIntlFriendly = useMemo(() => {\n return shiftedBigInt?.toFullString()\n }, [shiftedBigInt])\n\n const shortBalanceIntlFriendly = useMemo(() => {\n return isUndefinedOrNull(balancesResult)\n ? undefined\n : (balancesResult < 1_000_000_000_000n && balancesResult > 0n) ? '<0.00001' : shiftedBigInt?.toShortString()\n }, [shiftedBigInt])\n\n return {\n address,\n balanceForAddress: balancesResult,\n balanceIntlFriendly,\n shortBalanceIntlFriendly,\n error: balancesError,\n loading,\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { MainNetwork } from '@xyo-network/chain-network-model'\nimport type { GatewayName } from '@xyo-network/xl1-protocol'\nimport { useCallback, useState } from 'react'\n\nimport { useAccountPermissions, useGateway } from './client/index.ts'\n\nexport const useConnectAccount = (gatewayName: GatewayName = MainNetwork.id, timeout?: number) => {\n const {\n gateway, error, timedout,\n } = useGateway(gatewayName, timeout)\n\n const [accountPermissions, accountPermissionsError] = useAccountPermissions()\n\n const [address, setAddress] = useState<string>()\n\n const connectSigner = useCallback(async () => {\n const assertedGateway = assertEx(gateway, () => `Gateway ${gatewayName} is not available`)\n const signer = await assertedGateway.signer()\n const address = await signer.address()\n setAddress(address)\n return address\n }, [gateway, gatewayName])\n\n return {\n address: accountPermissions?.[0] ?? address, connectSigner, error: error ?? accountPermissionsError, gateway, timedout,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { isDefinedNotNull } from '@xylabs/typeof'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\n\nexport const useCurrentBlock = (refresh = 1, viewer?: XyoViewer | null) => {\n return usePromise(async () => {\n if (isDefinedNotNull(viewer) && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { RpcTransport, XyoRunnerRpcSchemas } from '@xyo-network/xl1-rpc'\nimport {\n AllRpcSchemas, HttpRpcTransport, JsonRpcXyoRunner,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcRunner = (url?: string) => {\n return useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, AllRpcSchemas)\n return new JsonRpcXyoRunner(transport as RpcTransport<typeof XyoRunnerRpcSchemas>)\n }, [url])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { DefaultNetworkIds } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoNetwork } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useNetwork = (id?: DefaultNetworkIds) => {\n const network = useMemo(() => {\n if (isUndefined(id)) return\n return new MemoryXyoNetwork(id)\n }, [id])\n\n return network\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { XyoConnection, XyoSigner } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoSigner } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useSigner = (_provider?: XyoConnection, account?: AccountInstance) => {\n return useMemo<XyoSigner | undefined>(() => account ? new MemoryXyoSigner(account) : undefined, [account])\n}\n","import { delay } from '@xylabs/delay'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport { LocalNetwork, SequenceNetwork } from '@xyo-network/chain-network-model'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport {\n useEffect, useMemo, useState,\n} from 'react'\n\nconst INTERVAL = 5000 // 5 seconds\n\nconst localRpcEndpoint: string = `${LocalNetwork.url}/rpc`\nconst sequenceRpcEndpoint: string = `${SequenceNetwork.url}/rpc`\n\nexport const useCheckLocalRpc = () => {\n const isLocalProducer = useCheckRpc(localRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckSequenceRpc = () => {\n const isLocalProducer = useCheckRpc(sequenceRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckRpc = (endpoint?: string) => {\n const [isLocalProducer, setIsLocalProducer] = useState(false)\n const [error, setError] = useState<Error>()\n\n const viewer = useMemo(() => {\n if (isUndefined(endpoint)) return\n\n const transport = new HttpRpcTransport(endpoint, XyoViewerRpcSchemas)\n const viewer = new JsonRpcXyoViewer(transport)\n return viewer\n }, [endpoint])\n\n useEffect(() => {\n if (isUndefined(viewer)) return\n\n void (async () => {\n setError(undefined)\n while (!isLocalProducer) {\n try {\n const block = await viewer.currentBlock()\n setIsLocalProducer(isDefined(block))\n } catch (err) {\n setError(err as Error)\n setIsLocalProducer(false)\n }\n await delay(INTERVAL)\n }\n })()\n }, [viewer])\n\n return { isLocalProducer, error }\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcViewer = (url?: string) => {\n const resolvedViewer = useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, XyoViewerRpcSchemas)\n return new JsonRpcXyoViewer(transport)\n }, [url])\n\n return resolvedViewer\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { isDefined, isDefinedNotNull } from '@xylabs/typeof'\nimport type { GatewayName } from '@xyo-network/xl1-protocol'\n\nimport { useGateway } from '../client/index.ts'\n\n/**\n * Creates a JsonRpcXyoViewer instance based on the provided networkId.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns An instance of XyoViewer if the networkId is found in wallet gateways\n * otherwise undefined.\n */\nexport const useViewerFromWallet = (networkId?: GatewayName) => {\n const {\n gateway, error, isLoading,\n } = useGateway(networkId)\n\n return usePromise(async () => {\n if (isDefinedNotNull(error)) return null\n if (isLoading) return\n if (isDefined(gateway) && isDefined(networkId)) {\n const connection = await gateway?.connection()\n return connection?.viewer\n }\n }, [gateway, networkId])\n}\n"],"mappings":"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","names":["Stack","Tooltip","Typography","EthAddressWrapper","BlockiesAvatarAddress","React","ConnectedAccount","address","shortenedAddress","EthAddressWrapper","fromString","toShortString","Stack","direction","alignItems","spacing","BlockiesAvatarAddress","size","Tooltip","title","Typography","color","variant","fontFamily","Stack","ButtonEx","isDefined","ErrorRender","React","useSyncExternalStore","CLIENT_LISTENER_TIMEOUT","hasXyoClient","globalThis","xyo","listenForClientInjection","onClientReady","timeout","onTimeout","resolved","listener","addEventListener","setTimeout","getXyoClient","client","Promise","resolve","currentState","client","undefined","error","isLoading","timedout","listeners","Set","emitChange","listener","updateState","newState","initializeClient","timeout","getXyoClient","console","subscribe","add","delete","getSnapshot","useClient","subscribeWithTimeout","useSyncExternalStore","usePermissions","client","isLoading","error","timedout","useClient","permissions","usePromise","isArray","isDefined","isDefinedNotNull","isString","isDefined","findCaveat","permissions","targetCapability","targetCaveatType","existingPermissions","getPermissions","isDefined","length","foundPermissions","find","p","parentCapability","caveats","caveat","type","value","validateRestrictedAccounts","restrictedAccounts","isDefined","isArray","every","isString","Error","JSON","stringify","useAccountPermissions","permissions","error","usePermissions","usePromise","isDefinedNotNull","findCaveat","useGateway","gatewayName","timeout","client","isLoading","error","timedout","useClient","gateway","gateways","undefined","isUndefined","isUndefinedOrNull","ShiftedBigInt","useEffect","useMemo","useState","useAddressBalance","address","viewer","refresh","balancesResult","setBalancesResult","useState","loading","setLoading","balancesError","setBalancesError","useEffect","isCurrent","isUndefined","accountBalance","then","result","catch","err","console","error","undefined","useMemo","shiftedBigInt","ShiftedBigInt","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","balanceIntlFriendly","toFullString","shortBalanceIntlFriendly","isUndefinedOrNull","toShortString","balanceForAddress","assertEx","MainNetwork","useCallback","useState","useConnectAccount","gatewayName","MainNetwork","id","timeout","gateway","error","timedout","useGateway","accountPermissions","accountPermissionsError","useAccountPermissions","address","setAddress","useState","connectSigner","useCallback","assertedGateway","assertEx","signer","usePromise","isDefinedNotNull","useCurrentBlock","refresh","viewer","usePromise","isDefinedNotNull","block","currentBlock","isUndefined","AllRpcSchemas","HttpRpcTransport","JsonRpcXyoRunner","useMemo","useHttpRpcRunner","url","useMemo","isUndefined","transport","HttpRpcTransport","AllRpcSchemas","JsonRpcXyoRunner","isUndefined","MemoryXyoNetwork","useMemo","useNetwork","id","network","useMemo","isUndefined","MemoryXyoNetwork","MemoryXyoSigner","useMemo","useSigner","_provider","account","useMemo","MemoryXyoSigner","undefined","delay","isDefined","isUndefined","LocalNetwork","SequenceNetwork","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useEffect","useMemo","useState","INTERVAL","localRpcEndpoint","LocalNetwork","url","sequenceRpcEndpoint","SequenceNetwork","useCheckLocalRpc","isLocalProducer","useCheckRpc","useCheckSequenceRpc","endpoint","setIsLocalProducer","useState","error","setError","viewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","useEffect","undefined","block","currentBlock","isDefined","err","delay","isUndefined","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useMemo","useHttpRpcViewer","url","resolvedViewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","usePromise","isDefined","isDefinedNotNull","useViewerFromWallet","networkId","gateway","error","isLoading","useGateway","usePromise","isDefinedNotNull","isDefined","connection","viewer","DefaultConnectComponent","props","React","ButtonEx","variant","size","ConnectAccountsStack","AccountComponent","ConnectedAccount","ConnectComponent","timeout","address","connectSigner","error","timedout","useConnectAccount","undefined","Stack","direction","alignItems","spacing","isDefined","onClick","ErrorRender","Error","scope"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/connected/account/Connected.tsx","../../src/components/connected/ConnectAccountsStack.tsx","../../src/hooks/client/useClient.ts","../../src/hooks/helpers/getXyoClient.ts","../../src/hooks/client/permissions/usePermissions.ts","../../src/hooks/client/permissions/usePermissionsAccounts.ts","../../src/hooks/client/helpers/findCaveat.ts","../../src/hooks/client/useGateway.ts","../../src/hooks/useAddressBalance.ts","../../src/hooks/useConnectAccount.ts","../../src/hooks/useCurrentBlock.ts","../../src/hooks/useHttpRpcRunner.ts","../../src/hooks/useNetwork.ts","../../src/hooks/useSigner.ts","../../src/hooks/viewer/useCheckRpc.ts","../../src/hooks/viewer/useHttpRpcViewer.ts","../../src/hooks/viewer/useViewerFromWallet.ts"],"sourcesContent":["import {\n Stack, Tooltip, Typography,\n} from '@mui/material'\nimport { EthAddressWrapper } from '@xylabs/eth-address'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport React from 'react'\n\nexport const ConnectedAccount: React.FC<{ address: string }> = ({ address }) => {\n const shortenedAddress = `${EthAddressWrapper.fromString(address)?.toShortString(4)}`\n\n return (\n <Stack direction=\"row\" alignItems=\"center\" spacing={1}>\n <BlockiesAvatarAddress address={address} size={21} />\n <Tooltip title={address}>\n <Typography color=\"textSecondary\" variant=\"caption\" fontFamily=\"monospace\">{shortenedAddress}</Typography>\n </Tooltip>\n </Stack>\n )\n}\n","import type { StackProps } from '@mui/material'\nimport { Stack } from '@mui/material'\nimport type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { isDefined } from '@xylabs/typeof'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport type { ComponentType, MouseEventHandler } from 'react'\nimport React from 'react'\n\nimport { useConnectAccount } from '../../hooks/index.ts'\nimport { ConnectedAccount } from './account/index.ts'\n\nconst DefaultConnectComponent: React.FC<ButtonExProps> = props => (\n <ButtonEx variant=\"contained\" size=\"small\" {...props} />\n)\n\nexport interface ConnectClientAccountsStackProps extends StackProps {\n AccountComponent?: ComponentType<{ account?: string }>\n ConnectComponent?: ComponentType<{ onClick?: MouseEventHandler<HTMLElement> }>\n timeout?: number\n}\n\nexport const ConnectAccountsStack: React.FC<ConnectClientAccountsStackProps> = ({\n AccountComponent = ConnectedAccount, ConnectComponent = DefaultConnectComponent, timeout, ...props\n}) => {\n const {\n address, connectSigner, error, timedout,\n } = useConnectAccount(undefined, timeout)\n\n return (\n <Stack direction=\"row\" alignItems=\"start\" spacing={2} {...props}>\n {isDefined(address)\n ? <AccountComponent address={address} />\n : (\n <ConnectComponent onClick={() => void connectSigner()}>Connect</ConnectComponent>\n )}\n <ErrorRender error={timedout ? new Error('Gateway Not Found') : undefined} scope=\"ConnectSigner:notFound\" />\n <ErrorRender error={error} scope=\"ConnectSigner:error\" />\n </Stack>\n )\n}\n","import type { XyoClient } from '@xyo-network/xl1-protocol'\nimport { useSyncExternalStore } from 'react'\n\nimport { getXyoClient } from '../helpers/index.ts'\n\ninterface ClientState {\n client?: XyoClient\n error: Error | null\n isLoading: boolean\n timedout: boolean\n}\n\nlet currentState: ClientState = {\n client: undefined,\n error: null,\n isLoading: false,\n timedout: false,\n}\n\nconst listeners = new Set<() => void>()\n\nconst emitChange = () => {\n for (const listener of listeners) listener()\n}\n\nconst updateState = (newState: Partial<ClientState>) => {\n currentState = { ...currentState, ...newState }\n emitChange()\n}\n\nconst initializeClient = async (timeout?: number) => {\n if (currentState.isLoading || currentState.client) return\n\n updateState({ isLoading: true, error: null })\n\n try {\n const client = await getXyoClient(timeout)\n if (client === null) {\n updateState({ timedout: true, isLoading: false })\n return\n }\n updateState({\n client, isLoading: false, error: null,\n })\n } catch (error) {\n console.error('Error initializing XyoClient', error)\n updateState({ error: error as Error, isLoading: false })\n }\n}\n\nconst subscribe = (listener: () => void, timeout?: number) => {\n listeners.add(listener)\n\n void initializeClient(timeout)\n\n return () => {\n listeners.delete(listener)\n }\n}\n\nconst getSnapshot = (): ClientState => currentState\n\nexport const useClient = (timeout?: number) => {\n const subscribeWithTimeout = (listener: () => void) => subscribe(listener, timeout)\n return useSyncExternalStore(subscribeWithTimeout, getSnapshot)\n}\n","import type { XyoClient } from '@xyo-network/xl1-protocol'\n\nconst CLIENT_LISTENER_TIMEOUT = 500\n\nconst hasXyoClient = () => {\n return 'client' in globalThis.xyo\n}\n\nexport const listenForClientInjection = (onClientReady: () => void, timeout: number, onTimeout: () => void) => {\n let resolved = false\n const listener: EventListener = () => {\n onClientReady()\n resolved = true\n }\n globalThis.addEventListener('xyo:plugin-ready', listener)\n setTimeout(() => {\n if (!resolved) {\n onTimeout()\n }\n }, timeout)\n}\n\ntype ReturnType = XyoClient | undefined | null\n\nexport async function getXyoClient(timeout = CLIENT_LISTENER_TIMEOUT): Promise<ReturnType> {\n return hasXyoClient()\n ? globalThis.xyo.client\n // listen for the XyoWallet to be injected\n : await new Promise<ReturnType>((resolve) => {\n listenForClientInjection(\n () => {\n resolve(globalThis.xyo.client)\n },\n timeout,\n () => {\n resolve(null)\n },\n )\n })\n}\n","import { useClient } from '../useClient.ts'\n\nexport const usePermissions = () => {\n const {\n client, isLoading, error, timedout,\n } = useClient()\n const permissions = client?.permissions\n return {\n permissions,\n isLoading,\n error,\n timedout,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n isArray, isDefined, isDefinedNotNull, isString,\n} from '@xylabs/typeof'\nimport type { JsonValue } from '@xyo-network/xl1-rpc'\n\nimport { findCaveat } from '../helpers/index.ts'\nimport { usePermissions } from './usePermissions.ts'\n\nconst validateRestrictedAccounts = (restrictedAccounts: JsonValue): readonly string [] => {\n if (isDefined(restrictedAccounts)) {\n if (isArray(restrictedAccounts) && restrictedAccounts.every(isString)) {\n return restrictedAccounts\n }\n throw new Error(\n `Unrecognized format for restrictReturnedAccounts caveat found on permissions. \\n\n Should be an array of strings: ${JSON.stringify(restrictedAccounts)}`,\n )\n }\n return []\n}\n\nexport const useAccountPermissions = () => {\n const { permissions, error } = usePermissions()\n\n return usePromise(async () => {\n if (isDefinedNotNull(error)) throw error\n if (isDefined(permissions)) {\n const restrictedAccounts = await findCaveat(\n permissions,\n // TODO - extract to constant in protocol package\n 'xyoWallet_getAccounts',\n 'restrictReturnedAccounts',\n )\n return validateRestrictedAccounts(restrictedAccounts)\n }\n }, [permissions])\n}\n","import { isDefined } from '@xylabs/typeof'\nimport type { CaveatTypes, XyoPermissions } from '@xyo-network/xl1-protocol'\nimport type { ParentCapability } from '@xyo-network/xl1-rpc'\n\nexport const findCaveat = async (\n permissions: XyoPermissions,\n targetCapability: ParentCapability,\n targetCaveatType: CaveatTypes,\n) => {\n const existingPermissions = await permissions.getPermissions()\n if (isDefined(existingPermissions) && existingPermissions.length > 0) {\n const foundPermissions = existingPermissions\n .find(p => p.parentCapability === targetCapability)\n if (isDefined(foundPermissions)) {\n return foundPermissions.caveats?.find(caveat => caveat.type === targetCaveatType)?.value ?? []\n }\n }\n return existingPermissions\n}\n","import type { GatewayName } from '@xyo-network/xl1-protocol'\n\nimport { useClient } from './useClient.ts'\n\nexport const useGateway = (gatewayName?: GatewayName, timeout?: number) => {\n const {\n client, isLoading, error, timedout,\n } = useClient(timeout)\n return {\n gateway: gatewayName ? client?.gateways?.[gatewayName] : undefined,\n isLoading,\n error,\n timedout,\n }\n}\n","import type { Address } from '@xylabs/hex'\nimport { isUndefined, isUndefinedOrNull } from '@xylabs/typeof'\nimport type { AttoXL1, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { ShiftedBigInt } from '@xyo-network/xl1-protocol'\nimport {\n useEffect, useMemo, useState,\n} from 'react'\n\nexport const useAddressBalance = (\n // address to get balance for\n address?: Address,\n // viewer to use for fetching balance\n viewer?: XyoViewer,\n // refresh balance trigger\n refresh?: number,\n) => {\n const [balancesResult, setBalancesResult] = useState<AttoXL1 | null>()\n const [loading, setLoading] = useState(false)\n const [balancesError, setBalancesError] = useState<Error>()\n\n useEffect(() => {\n let isCurrent = true\n if (isUndefined(viewer) || isUndefined(address)) return\n // Ensure the render is the current one before setting the state.\n // This solves the issue of overlapping calls where a previous call takes\n // longer than a subsequent one and returns a state value. Now, the latest\n // result is always returned.\n (viewer.accountBalance(address) as Promise<AttoXL1>).then((result) => {\n if (isCurrent) {\n setBalancesResult(result as AttoXL1)\n setLoading(false)\n }\n })\n .catch((err) => {\n if (isCurrent) {\n console.error('Error in queued call:', err)\n setBalancesResult(undefined)\n setBalancesError(err)\n setLoading(false)\n }\n })\n\n return () => {\n isCurrent = false\n }\n }, [address, viewer, refresh])\n\n useMemo(() => {\n if (balancesError) {\n setLoading(false)\n }\n }, [balancesError])\n\n const shiftedBigInt = useMemo(() => {\n if (typeof balancesResult !== 'bigint') return\n return new ShiftedBigInt(balancesResult, {\n places: 18, maxDecimal: 18, maxCharacters: 9, minDecimals: 1, locale: navigator.language,\n })\n }, [balancesResult])\n\n const balanceIntlFriendly = useMemo(() => {\n return shiftedBigInt?.toFullString()\n }, [shiftedBigInt])\n\n const shortBalanceIntlFriendly = useMemo(() => {\n return isUndefinedOrNull(balancesResult)\n ? undefined\n : (balancesResult < 1_000_000_000_000n && balancesResult > 0n) ? '<0.00001' : shiftedBigInt?.toShortString()\n }, [shiftedBigInt])\n\n return {\n address,\n balanceForAddress: balancesResult,\n balanceIntlFriendly,\n shortBalanceIntlFriendly,\n error: balancesError,\n loading,\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { MainNetwork } from '@xyo-network/chain-network-model'\nimport type { GatewayName } from '@xyo-network/xl1-protocol'\nimport { useCallback, useState } from 'react'\n\nimport { useAccountPermissions, useGateway } from './client/index.ts'\n\nexport const useConnectAccount = (gatewayName: GatewayName = MainNetwork.id, timeout?: number) => {\n const {\n gateway, error, timedout,\n } = useGateway(gatewayName, timeout)\n\n const [accountPermissions, accountPermissionsError] = useAccountPermissions()\n\n const [address, setAddress] = useState<string>()\n\n const connectSigner = useCallback(async () => {\n const assertedGateway = assertEx(gateway, () => `Gateway ${gatewayName} is not available`)\n const signer = await assertedGateway.signer()\n const address = await signer.address()\n setAddress(address)\n return address\n }, [gateway, gatewayName])\n\n return {\n address: accountPermissions?.[0] ?? address, connectSigner, error: error ?? accountPermissionsError, gateway, timedout,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { isDefinedNotNull } from '@xylabs/typeof'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\n\nexport const useCurrentBlock = (refresh = 1, viewer?: XyoViewer | null) => {\n return usePromise(async () => {\n if (isDefinedNotNull(viewer) && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { RpcTransport, XyoRunnerRpcSchemas } from '@xyo-network/xl1-rpc'\nimport {\n AllRpcSchemas, HttpRpcTransport, JsonRpcXyoRunner,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcRunner = (url?: string) => {\n return useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, AllRpcSchemas)\n return new JsonRpcXyoRunner(transport as RpcTransport<typeof XyoRunnerRpcSchemas>)\n }, [url])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { DefaultNetworkIds } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoNetwork } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useNetwork = (id?: DefaultNetworkIds) => {\n const network = useMemo(() => {\n if (isUndefined(id)) return\n return new MemoryXyoNetwork(id)\n }, [id])\n\n return network\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { XyoConnection, XyoSigner } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoSigner } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useSigner = (_provider?: XyoConnection, account?: AccountInstance) => {\n return useMemo<XyoSigner | undefined>(() => account ? new MemoryXyoSigner(account) : undefined, [account])\n}\n","import { delay } from '@xylabs/delay'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport { LocalNetwork, SequenceNetwork } from '@xyo-network/chain-network-model'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport {\n useEffect, useMemo, useState,\n} from 'react'\n\nconst INTERVAL = 5000 // 5 seconds\n\nconst localRpcEndpoint: string = `${LocalNetwork.url}/rpc`\nconst sequenceRpcEndpoint: string = `${SequenceNetwork.url}/rpc`\n\nexport const useCheckLocalRpc = () => {\n const isLocalProducer = useCheckRpc(localRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckSequenceRpc = () => {\n const isLocalProducer = useCheckRpc(sequenceRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckRpc = (endpoint?: string) => {\n const [isLocalProducer, setIsLocalProducer] = useState(false)\n const [error, setError] = useState<Error>()\n\n const viewer = useMemo(() => {\n if (isUndefined(endpoint)) return\n\n const transport = new HttpRpcTransport(endpoint, XyoViewerRpcSchemas)\n const viewer = new JsonRpcXyoViewer(transport)\n return viewer\n }, [endpoint])\n\n useEffect(() => {\n if (isUndefined(viewer)) return\n\n void (async () => {\n setError(undefined)\n while (!isLocalProducer) {\n try {\n const block = await viewer.currentBlock()\n setIsLocalProducer(isDefined(block))\n } catch (err) {\n setError(err as Error)\n setIsLocalProducer(false)\n }\n await delay(INTERVAL)\n }\n })()\n }, [viewer])\n\n return { isLocalProducer, error }\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcViewer = (url?: string) => {\n const resolvedViewer = useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, XyoViewerRpcSchemas)\n return new JsonRpcXyoViewer(transport)\n }, [url])\n\n return resolvedViewer\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { isDefined, isDefinedNotNull } from '@xylabs/typeof'\nimport type { GatewayName } from '@xyo-network/xl1-protocol'\n\nimport { useGateway } from '../client/index.ts'\n\n/**\n * Creates a JsonRpcXyoViewer instance based on the provided networkId.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns An instance of XyoViewer if the networkId is found in wallet gateways\n * otherwise undefined.\n */\nexport const useViewerFromWallet = (networkId?: GatewayName) => {\n const {\n gateway, error, isLoading,\n } = useGateway(networkId)\n\n return usePromise(async () => {\n if (isDefinedNotNull(error)) return null\n if (isLoading) return\n if (isDefined(gateway) && isDefined(networkId)) {\n const connection = await gateway?.connection()\n return connection?.viewer\n }\n }, [gateway, networkId])\n}\n"],"mappings":"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","names":["Stack","Tooltip","Typography","EthAddressWrapper","BlockiesAvatarAddress","React","ConnectedAccount","address","shortenedAddress","EthAddressWrapper","fromString","toShortString","Stack","direction","alignItems","spacing","BlockiesAvatarAddress","size","Tooltip","title","Typography","color","variant","fontFamily","Stack","ButtonEx","isDefined","ErrorRender","React","useSyncExternalStore","CLIENT_LISTENER_TIMEOUT","hasXyoClient","globalThis","xyo","listenForClientInjection","onClientReady","timeout","onTimeout","resolved","listener","addEventListener","setTimeout","getXyoClient","client","Promise","resolve","currentState","client","undefined","error","isLoading","timedout","listeners","Set","emitChange","listener","updateState","newState","initializeClient","timeout","getXyoClient","console","subscribe","add","delete","getSnapshot","useClient","subscribeWithTimeout","useSyncExternalStore","usePermissions","client","isLoading","error","timedout","useClient","permissions","usePromise","isArray","isDefined","isDefinedNotNull","isString","isDefined","findCaveat","permissions","targetCapability","targetCaveatType","existingPermissions","getPermissions","isDefined","length","foundPermissions","find","p","parentCapability","caveats","caveat","type","value","validateRestrictedAccounts","restrictedAccounts","isDefined","isArray","every","isString","Error","JSON","stringify","useAccountPermissions","permissions","error","usePermissions","usePromise","isDefinedNotNull","findCaveat","useGateway","gatewayName","timeout","client","isLoading","error","timedout","useClient","gateway","gateways","undefined","isUndefined","isUndefinedOrNull","ShiftedBigInt","useEffect","useMemo","useState","useAddressBalance","address","viewer","refresh","balancesResult","setBalancesResult","useState","loading","setLoading","balancesError","setBalancesError","useEffect","isCurrent","isUndefined","accountBalance","then","result","catch","err","console","error","undefined","useMemo","shiftedBigInt","ShiftedBigInt","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","balanceIntlFriendly","toFullString","shortBalanceIntlFriendly","isUndefinedOrNull","toShortString","balanceForAddress","assertEx","MainNetwork","useCallback","useState","useConnectAccount","gatewayName","MainNetwork","id","timeout","gateway","error","timedout","useGateway","accountPermissions","accountPermissionsError","useAccountPermissions","address","setAddress","useState","connectSigner","useCallback","assertedGateway","assertEx","signer","usePromise","isDefinedNotNull","useCurrentBlock","refresh","viewer","usePromise","isDefinedNotNull","block","currentBlock","isUndefined","AllRpcSchemas","HttpRpcTransport","JsonRpcXyoRunner","useMemo","useHttpRpcRunner","url","useMemo","isUndefined","transport","HttpRpcTransport","AllRpcSchemas","JsonRpcXyoRunner","isUndefined","MemoryXyoNetwork","useMemo","useNetwork","id","network","useMemo","isUndefined","MemoryXyoNetwork","MemoryXyoSigner","useMemo","useSigner","_provider","account","useMemo","MemoryXyoSigner","undefined","delay","isDefined","isUndefined","LocalNetwork","SequenceNetwork","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useEffect","useMemo","useState","INTERVAL","localRpcEndpoint","LocalNetwork","url","sequenceRpcEndpoint","SequenceNetwork","useCheckLocalRpc","isLocalProducer","useCheckRpc","useCheckSequenceRpc","endpoint","setIsLocalProducer","useState","error","setError","viewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","useEffect","undefined","block","currentBlock","isDefined","err","delay","isUndefined","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useMemo","useHttpRpcViewer","url","resolvedViewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","usePromise","isDefined","isDefinedNotNull","useViewerFromWallet","networkId","gateway","error","isLoading","useGateway","usePromise","isDefinedNotNull","isDefined","connection","viewer","DefaultConnectComponent","props","React","ButtonEx","variant","size","ConnectAccountsStack","AccountComponent","ConnectedAccount","ConnectComponent","timeout","address","connectSigner","error","timedout","useConnectAccount","undefined","Stack","direction","alignItems","spacing","isDefined","onClick","ErrorRender","Error","scope"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/react-chain-provider",
|
|
4
|
-
"version": "1.15.
|
|
4
|
+
"version": "1.15.14",
|
|
5
5
|
"description": "XYO Layer One API",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"@xylabs/react-promise": "~7.1.6",
|
|
50
50
|
"@xylabs/typeof": "~5.0.13",
|
|
51
51
|
"@xyo-network/account-model": "~5.1.7",
|
|
52
|
-
"@xyo-network/chain-network-model": "~1.15.
|
|
53
|
-
"@xyo-network/react-chain-blockies": "~1.15.
|
|
52
|
+
"@xyo-network/chain-network-model": "~1.15.14",
|
|
53
|
+
"@xyo-network/react-chain-blockies": "~1.15.14",
|
|
54
54
|
"@xyo-network/react-error": "~7.3.6",
|
|
55
55
|
"@xyo-network/xl1-protocol": "~1.12.84",
|
|
56
|
-
"@xyo-network/xl1-rpc": "~1.15.
|
|
56
|
+
"@xyo-network/xl1-rpc": "~1.15.14"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
59
|
"@emotion/react": "~11.14.0",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"@xylabs/tsconfig": "~7.1.8",
|
|
67
67
|
"@xylabs/tsconfig-dom": "~7.1.8",
|
|
68
68
|
"@xylabs/tsconfig-react": "~7.1.8",
|
|
69
|
-
"@xyo-network/react-chain-model": "~1.15.
|
|
69
|
+
"@xyo-network/react-chain-model": "~1.15.14",
|
|
70
70
|
"@xyo-network/react-error": "~7.3.6",
|
|
71
71
|
"eslint": "^9.38.0",
|
|
72
72
|
"react": "~19.2.0",
|
|
@@ -15,8 +15,8 @@ const DefaultConnectComponent: React.FC<ButtonExProps> = props => (
|
|
|
15
15
|
)
|
|
16
16
|
|
|
17
17
|
export interface ConnectClientAccountsStackProps extends StackProps {
|
|
18
|
-
AccountComponent
|
|
19
|
-
ConnectComponent
|
|
18
|
+
AccountComponent?: ComponentType<{ account?: string }>
|
|
19
|
+
ConnectComponent?: ComponentType<{ onClick?: MouseEventHandler<HTMLElement> }>
|
|
20
20
|
timeout?: number
|
|
21
21
|
}
|
|
22
22
|
|