@xyo-network/react-chain-network 1.20.15 → 1.20.17

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.
Files changed (49) hide show
  1. package/README.md +9 -540
  2. package/dist/browser/context/network/context.d.ts +12 -12
  3. package/dist/browser/context/network/use.d.ts +4 -4
  4. package/dist/browser/hooks/provider/useViewerInPage.d.ts.map +1 -1
  5. package/dist/browser/index.mjs.map +1 -1
  6. package/package.json +160 -50
  7. package/src/components/broadcast/CloseDrawerIconButton.tsx +0 -23
  8. package/src/components/broadcast/Drawer.tsx +0 -88
  9. package/src/components/broadcast/details/Card.tsx +0 -71
  10. package/src/components/broadcast/details/SummaryStack.stories.tsx +0 -36
  11. package/src/components/broadcast/details/SummaryStack.tsx +0 -68
  12. package/src/components/broadcast/details/index.ts +0 -2
  13. package/src/components/broadcast/index.ts +0 -1
  14. package/src/components/broadcast/usePaginatedEventPairs.ts +0 -69
  15. package/src/components/index.ts +0 -3
  16. package/src/components/menu/Avatar.tsx +0 -42
  17. package/src/components/menu/Icon.tsx +0 -21
  18. package/src/components/menu/MenuItem.tsx +0 -38
  19. package/src/components/menu/index.ts +0 -3
  20. package/src/components/status/Alert.stories.tsx +0 -74
  21. package/src/components/status/Alert.tsx +0 -51
  22. package/src/components/status/Dialog.tsx +0 -51
  23. package/src/components/status/NetworkStatus.tsx +0 -21
  24. package/src/components/status/index.ts +0 -2
  25. package/src/context/ActiveGatewayProvider.tsx +0 -21
  26. package/src/context/index.ts +0 -2
  27. package/src/context/network/Provider.tsx +0 -85
  28. package/src/context/network/context.ts +0 -5
  29. package/src/context/network/index.ts +0 -5
  30. package/src/context/network/settings/defaultChainNetworkSettings.ts +0 -5
  31. package/src/context/network/settings/index.ts +0 -3
  32. package/src/context/network/settings/types.ts +0 -7
  33. package/src/context/network/settings/useChainNetworkSettings.ts +0 -27
  34. package/src/context/network/state.ts +0 -13
  35. package/src/context/network/use.ts +0 -5
  36. package/src/hooks/index.ts +0 -2
  37. package/src/hooks/provider/UseViewerInPageV2.stories.tsx +0 -126
  38. package/src/hooks/provider/index.ts +0 -2
  39. package/src/hooks/provider/useRpcBroadcastListener.ts +0 -70
  40. package/src/hooks/provider/useViewerInPage.ts +0 -49
  41. package/src/hooks/status/index.ts +0 -1
  42. package/src/hooks/status/usePollNetworkStatus.ts +0 -39
  43. package/src/index.ts +0 -5
  44. package/src/model/BroadcastRpc.ts +0 -29
  45. package/src/model/index.ts +0 -1
  46. package/src/story/NetworkGatewayDecorators.tsx +0 -44
  47. package/src/story/index.ts +0 -1
  48. package/src/types/global.d.ts +0 -9
  49. package/src/types/images.d.ts +0 -20
@@ -1,2 +0,0 @@
1
- export * from './ActiveGatewayProvider.tsx'
2
- export * from './network/index.ts'
@@ -1,85 +0,0 @@
1
- import { ErrorRender } from '@xylabs/react-error'
2
- import { usePromise } from '@xylabs/react-promise'
3
- import { isDefined } from '@xylabs/sdk-js'
4
- import type { NetworkBootstrap } from '@xyo-network/xl1-sdk'
5
- import { MainNetwork } from '@xyo-network/xl1-sdk'
6
- import type { PropsWithChildren } from 'react'
7
- import React, {
8
- useCallback, useMemo, useState,
9
- } from 'react'
10
-
11
- import { ChainNetworkContext } from './context.ts'
12
- import type { ChainNetworkSettings } from './settings/index.ts'
13
- import { defaultChainNetworkSettings, useChainNetworkSettings } from './settings/index.ts'
14
- import type { ChainNetworkState } from './state.ts'
15
-
16
- export interface ChainNetworkProviderProps extends PropsWithChildren {
17
- getActiveNetwork?: () => Promise<NetworkBootstrap | undefined>
18
- networkSettings?: ChainNetworkSettings
19
- networks?: NetworkBootstrap[]
20
- setActiveNetwork?: (networkId: NetworkBootstrap['id']) => Promise<NetworkBootstrap>
21
- }
22
-
23
- export const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({
24
- children, getActiveNetwork, networkSettings: networkSettingsProp = defaultChainNetworkSettings, networks, setActiveNetwork: setActiveNetworkExternal,
25
- }) => {
26
- const [activeNetwork, setActiveNetwork] = useState<NetworkBootstrap>()
27
- const [error, setError] = useState<Error>()
28
- const { networkSettings, updateNetworkSettings } = useChainNetworkSettings(networkSettingsProp)
29
-
30
- // Set the active network upon initialization
31
- const [resolvedActiveNetwork, activeNetworkError] = usePromise(async () => {
32
- // ensure networks are loaded
33
- if (!networks) return
34
- // get last saved active network
35
- const activeNetwork = await getActiveNetwork?.()
36
- // ensure the active network saved is found in the list of networks
37
- if (activeNetwork && networks?.find(network => network.id === activeNetwork.id)) {
38
- // Set the active network if it exists
39
- return activeNetwork
40
- } else {
41
- // Set the default network if no active network exists
42
- const defaultNetwork = networks.find(network => network.id === MainNetwork.id) ?? networks[0]
43
- await setActiveNetworkExternal?.(defaultNetwork.id)
44
-
45
- // Set the active network in the context
46
- return defaultNetwork
47
- }
48
- }, [networks])
49
-
50
- const [previousResolvedActiveNetwork, setPreviousResolvedActiveNetwork] = useState(resolvedActiveNetwork)
51
- if (isDefined(resolvedActiveNetwork) && resolvedActiveNetwork !== previousResolvedActiveNetwork) {
52
- setActiveNetwork(resolvedActiveNetwork)
53
- setPreviousResolvedActiveNetwork(resolvedActiveNetwork)
54
- }
55
-
56
- const updateActiveNetwork = useCallback((networkId: NetworkBootstrap['id']) => {
57
- setError(undefined)
58
- const network = networks?.find(network => network.id === networkId)
59
- if (!network) {
60
- setError(new Error(`Network with id ${networkId} not found`))
61
- return
62
- }
63
- // set internally
64
- setActiveNetwork(network)
65
- // set externally
66
- void setActiveNetworkExternal?.(networkId)
67
- }, [networks, setActiveNetworkExternal])
68
-
69
- const value: ChainNetworkState = useMemo(() => ({
70
- activeNetwork,
71
- networks,
72
- provided: true,
73
- updateActiveNetwork,
74
- networkSettings,
75
- updateNetworkSettings,
76
- chainNetworkError: error ?? activeNetworkError,
77
- }), [activeNetwork, activeNetworkError, error, networkSettings, networks, updateActiveNetwork, updateNetworkSettings])
78
-
79
- return (
80
- <ChainNetworkContext value={value}>
81
- <ErrorRender error={error ?? activeNetworkError} scope="ChainNetworkProvider" />
82
- {children}
83
- </ChainNetworkContext>
84
- )
85
- }
@@ -1,5 +0,0 @@
1
- import { createContextEx } from '@xylabs/react-shared'
2
-
3
- import type { ChainNetworkState } from './state.ts'
4
-
5
- export const ChainNetworkContext = createContextEx<ChainNetworkState>()
@@ -1,5 +0,0 @@
1
- export * from './context.ts'
2
- export * from './Provider.tsx'
3
- export * from './settings/index.ts'
4
- export * from './state.ts'
5
- export * from './use.ts'
@@ -1,5 +0,0 @@
1
- import { LocalNetwork } from '@xyo-network/xl1-sdk'
2
-
3
- import type { ChainNetworkSettings } from './types.ts'
4
-
5
- export const defaultChainNetworkSettings: ChainNetworkSettings = { [LocalNetwork.id]: { proxy: true } }
@@ -1,3 +0,0 @@
1
- export * from './defaultChainNetworkSettings.ts'
2
- export * from './types.ts'
3
- export * from './useChainNetworkSettings.ts'
@@ -1,7 +0,0 @@
1
- import type { GatewayName } from '@xyo-network/xl1-sdk'
2
-
3
- export type NetworkSetting = {
4
- proxy: boolean
5
- }
6
-
7
- export type ChainNetworkSettings = Record<GatewayName, NetworkSetting>
@@ -1,27 +0,0 @@
1
- import type { NetworkBootstrap } from '@xyo-network/xl1-sdk'
2
- import { useCallback, useState } from 'react'
3
-
4
- import { defaultChainNetworkSettings } from './defaultChainNetworkSettings.ts'
5
- import type { ChainNetworkSettings } from './types.ts'
6
-
7
- export const useChainNetworkSettings = (defaults = defaultChainNetworkSettings) => {
8
- const [networkSettings, setNetworkSettings] = useState<ChainNetworkSettings>(defaults)
9
-
10
- const updateNetworkSettings = useCallback((
11
- networkId: NetworkBootstrap['id'],
12
- settings: Partial<ChainNetworkSettings>,
13
- ) => {
14
- setNetworkSettings(prevSettings => ({
15
- ...prevSettings,
16
- [networkId]: {
17
- ...prevSettings[networkId],
18
- ...settings,
19
- },
20
- }))
21
- }, [])
22
-
23
- return {
24
- networkSettings,
25
- updateNetworkSettings,
26
- }
27
- }
@@ -1,13 +0,0 @@
1
- import type { ContextExState } from '@xylabs/react-shared'
2
- import type { NetworkBootstrap } from '@xyo-network/xl1-sdk'
3
-
4
- import type { ChainNetworkSettings, NetworkSetting } from './settings/index.ts'
5
-
6
- export type ChainNetworkState = ContextExState<{
7
- activeNetwork?: NetworkBootstrap
8
- chainNetworkError?: Error
9
- networkSettings: ChainNetworkSettings
10
- networks?: NetworkBootstrap[]
11
- updateActiveNetwork?: (networkId: NetworkBootstrap['id']) => void
12
- updateNetworkSettings?: (networkId: NetworkBootstrap['id'], settings: NetworkSetting) => void
13
- }>
@@ -1,5 +0,0 @@
1
- import { useContextEx } from '@xylabs/react-shared'
2
-
3
- import { ChainNetworkContext } from './context.ts'
4
-
5
- export const useChainNetwork = (required = true) => useContextEx(ChainNetworkContext, 'ChainNetwork', required)
@@ -1,2 +0,0 @@
1
- export * from './provider/index.ts'
2
- export * from './status/index.ts'
@@ -1,126 +0,0 @@
1
- import {
2
- MenuItem, Select, Stack, Typography,
3
- } from '@mui/material'
4
- import type { Decorator, StoryFn } from '@storybook/react-vite'
5
- import { ButtonEx } from '@xylabs/react-button'
6
- import { ErrorRender } from '@xylabs/react-error'
7
- import {
8
- isDefined, isDefinedNotNull, isUndefined, isUndefinedOrNull,
9
- } from '@xylabs/sdk-js'
10
- import { IframeWalletWarningDecorator } from '@xyo-network/react-chain-shared'
11
- import type { HydratedBlock, NetworkId } from '@xyo-network/xl1-sdk'
12
- import {
13
- LocalNetwork, MainNetwork, SequenceNetwork,
14
- } from '@xyo-network/xl1-sdk'
15
- import React, { useCallback, useState } from 'react'
16
-
17
- import { BroadcastedRpcCallsDrawer } from '../../components/index.ts'
18
- import type { ChainNetworkSettings } from '../../context/index.ts'
19
- import {
20
- ActiveGatewayProvider, ChainNetworkProvider, useChainNetwork,
21
- } from '../../context/index.ts'
22
- import { LocalNetworkGatewayDecorator } from '../../story/index.ts'
23
- import { useRpcBroadcastListener } from './useRpcBroadcastListener.ts'
24
- import { useViewerInPage } from './useViewerInPage.ts'
25
-
26
- const AvailableNetworks = [MainNetwork, SequenceNetwork, LocalNetwork]
27
- const networkSettings: ChainNetworkSettings = { [LocalNetwork.id]: { proxy: true } }
28
- const getActiveNetwork = async () => await Promise.resolve(AvailableNetworks[2])
29
-
30
- const UseViewerInPageV2StoryProxyDecorator: Decorator = (Story, args) => {
31
- return (
32
- <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveNetwork}>
33
- <ActiveGatewayProvider>
34
- <StubNetworkSelector />
35
- <Story {...args} />
36
- </ActiveGatewayProvider>
37
- </ChainNetworkProvider>
38
- )
39
- }
40
-
41
- const StubNetworkSelector: React.FC = () => {
42
- const { updateActiveNetwork } = useChainNetwork()
43
- return (
44
- <Select size="small" defaultValue={LocalNetwork.id} onChange={event => updateActiveNetwork?.(event.target.value as NetworkId)}>
45
- {AvailableNetworks.map(network => (
46
- <MenuItem key={network.id} value={network.id}>{network.name}</MenuItem>
47
- ))}
48
- </Select>
49
- )
50
- }
51
-
52
- const UseViewerInPageV2StoryTemplate: React.FC = () => {
53
- const viewer = useViewerInPage()
54
- const [error, setError] = useState<Error | null>(null)
55
- const [result, setResult] = useState<HydratedBlock | null | undefined>()
56
- const [loading, setLoading] = useState(false)
57
- const [drawerOpen, setDrawerOpen] = useState(false)
58
- const { clearEvents, events } = useRpcBroadcastListener()
59
-
60
- const handleClick = useCallback(async () => {
61
- if (isDefinedNotNull(viewer)) {
62
- try {
63
- setError(null)
64
- setResult(undefined)
65
- setLoading(true)
66
- const block = await viewer.currentBlock()
67
- setError(null)
68
- setResult(block)
69
- setLoading(false)
70
- } catch (err) {
71
- setError(err as Error)
72
- setResult(undefined)
73
- setLoading(false)
74
- }
75
- }
76
- }, [viewer])
77
-
78
- if (isDefined(viewer) && isUndefined(result) && isUndefinedOrNull(error) && !loading) {
79
- void handleClick()
80
- }
81
-
82
- return (
83
- <Stack gap={2} alignItems="center">
84
- <BroadcastedRpcCallsDrawer
85
- open={drawerOpen}
86
- events={events}
87
- onClearEvents={clearEvents}
88
- onClose={() => setDrawerOpen(false)}
89
- />
90
- <ButtonEx disabled={Object.keys(events).length === 0} variant="contained" onClick={() => setDrawerOpen(true)}>
91
- Show Broadcasted RPC Calls
92
- </ButtonEx>
93
- <ButtonEx loading={loading} variant="contained" onClick={() => void handleClick()} disabled={!isDefined(viewer)}>
94
- Get Current Block
95
- </ButtonEx>
96
- {isDefined(result)
97
- ? (
98
- <Typography variant="h4">
99
- Block:
100
- {result?.[0].block}
101
- </Typography>
102
- )
103
- : null}
104
- <pre>
105
- {JSON.stringify(result, null, 2)}
106
- </pre>
107
- <ErrorRender error={error} />
108
- </Stack>
109
- )
110
- }
111
-
112
- export default {
113
- title: 'provider/useViewerInPage',
114
- component: UseViewerInPageV2StoryTemplate,
115
- }
116
-
117
- const Template: StoryFn<typeof UseViewerInPageV2StoryTemplate> = args => <UseViewerInPageV2StoryTemplate {...args} />
118
-
119
- const Default = Template.bind({})
120
- Default.decorators = [LocalNetworkGatewayDecorator]
121
- Default.args = {}
122
- const Proxy = Template.bind({})
123
- Proxy.decorators = [IframeWalletWarningDecorator, UseViewerInPageV2StoryProxyDecorator]
124
- Proxy.args = {}
125
-
126
- export { Default, Proxy }
@@ -1,2 +0,0 @@
1
- export * from './useRpcBroadcastListener.ts'
2
- export * from './useViewerInPage.ts'
@@ -1,70 +0,0 @@
1
- import type { JsonRpcRequest, JsonRpcResponse } from '@metamask/utils'
2
- import { isJsonRpcRequest, isJsonRpcResponse } from '@metamask/utils'
3
- import { isDefined, isString } from '@xylabs/sdk-js'
4
- import { useEffect, useState } from 'react'
5
-
6
- import type {
7
- BroadcastedRpcCall, RpcRequestResponsePairs, RpcRequestResponsePairsById,
8
- } from '../../model/index.ts'
9
-
10
- const parseRpcCall = (acc: RpcRequestResponsePairsById, event: BroadcastedRpcCall) => {
11
- if (isJsonRpcResponse(event.rpcCall)) {
12
- const castedEvent = event as BroadcastedRpcCall<JsonRpcResponse>
13
- acc[castedEvent.rpcCall.id as string].result = castedEvent
14
- } else if (isJsonRpcRequest(event.rpcCall)) {
15
- const castedEvent = event as BroadcastedRpcCall<JsonRpcRequest>
16
- acc[castedEvent.rpcCall.id as string].request = castedEvent
17
- } else {
18
- console.error('Unknown RPC call type', event)
19
- }
20
- acc[event.rpcCall.id as string].source = event.source
21
-
22
- return acc
23
- }
24
-
25
- export const useRpcBroadcastListener = () => {
26
- const [events, setEvents] = useState<RpcRequestResponsePairsById>({})
27
- const clearEvents = () => setEvents({})
28
-
29
- useEffect(() => {
30
- const listener = (e: Event) => {
31
- if ('detail' in e) {
32
- const { detail } = e ?? {}
33
- if (isString(detail)) {
34
- try {
35
- const parsedDetail = JSON.parse(detail)
36
- const { data: rpcCall, source } = parsedDetail
37
- // TODO - make zod type for parsing details
38
- const broadcastedRpcCall: BroadcastedRpcCall = {
39
- rpcCall,
40
- source,
41
- timestamp: Date.now(),
42
- }
43
- setEvents((prev) => {
44
- const { id } = broadcastedRpcCall.rpcCall
45
- const newState = { ...prev }
46
- if (isDefined(newState[id as string])) {
47
- parseRpcCall(newState, broadcastedRpcCall)
48
- } else {
49
- newState[id as string] = {} as RpcRequestResponsePairs
50
- parseRpcCall(newState, broadcastedRpcCall)
51
- }
52
- return newState
53
- })
54
- } catch (err) {
55
- console.error(err)
56
- }
57
- }
58
- }
59
- }
60
- globalThis.addEventListener('xyo:broadcast-rpc-request', listener)
61
- globalThis.addEventListener('xyo:broadcast-rpc-response', listener)
62
-
63
- return () => {
64
- globalThis.removeEventListener('xyo:broadcast-rpc-request', listener)
65
- globalThis.removeEventListener('xyo:broadcast-rpc-response', listener)
66
- }
67
- }, [])
68
-
69
- return { events, clearEvents }
70
- }
@@ -1,49 +0,0 @@
1
- import {
2
- isDefined, isNull, isUndefined,
3
- } from '@xylabs/sdk-js'
4
- import { useProvidedGateway } from '@xyo-network/react-chain-provider'
5
- import type { NetworkId } from '@xyo-network/xl1-sdk'
6
-
7
- import type { ChainNetworkSettings } from '../../context/index.ts'
8
- import { useChainNetwork } from '../../context/index.ts'
9
-
10
- const shouldProxy = (networkSettings: ChainNetworkSettings, networkId: NetworkId | undefined) => {
11
- return isDefined(networkId)
12
- && isDefined(networkSettings[networkId])
13
- && networkSettings[networkId].proxy
14
- }
15
-
16
- /**
17
- * Finds the appropriate viewer based on network settings and available gateways
18
- *
19
- * Specifically, if the network settings indicate that the network should be proxied, it will attempt to use the wallet viewer.
20
- * If the wallet viewer is not available, it will fall back to the in-page viewer and log a warning. If the network should not
21
- * be proxied, it will use the in-page viewer.
22
- */
23
- export const useViewerInPage = () => {
24
- const { networkSettings, activeNetwork } = useChainNetwork()
25
- const { gateways } = useProvidedGateway()
26
-
27
- const { inPageGateway, walletGateway } = gateways
28
-
29
- const inPageViewer = inPageGateway?.connection?.viewer
30
- const walletViewer = walletGateway?.connection?.viewer
31
-
32
- // If the wallet viewer is undefined, don't return it yet, walletViewer is still checking
33
- if (isUndefined(walletGateway)) return
34
-
35
- if (shouldProxy(networkSettings, activeNetwork?.id)) {
36
- if (isNull(walletGateway)) {
37
- // eslint-disable-next-line react-x/purity
38
- console.warn(`Network ${activeNetwork?.id} is set to proxy but no wallet viewer is available, falling back to HTTP RPC viewer`)
39
- return inPageViewer
40
- }
41
- // If the network setting is to proxy and the wallet viewer is available,
42
- // try to use the wallet viewer
43
- return walletViewer
44
- }
45
-
46
- return inPageViewer
47
- }
48
- /** @deprecated - use useViewerInPage instead */
49
- export const useViewerInPageV2 = useViewerInPage
@@ -1 +0,0 @@
1
- export * from './usePollNetworkStatus.ts'
@@ -1,39 +0,0 @@
1
- import { delay, isUndefined } from '@xylabs/sdk-js'
2
- import { useNetworkFromGateway } from '@xyo-network/react-chain-provider'
3
- import type { NetworkStatus } from '@xyo-network/xl1-sdk'
4
- import { useEffect, useState } from 'react'
5
-
6
- const STATUS_CHECK_INTERVAL = 10_000
7
-
8
- export const usePollNetworkStatus = () => {
9
- const network = useNetworkFromGateway()
10
- const [networkStatus, setNetworkStatus] = useState<NetworkStatus>()
11
- const [networkStatusError, setNetworkStatusError] = useState<Error>()
12
-
13
- // Check network status every 10 seconds
14
- useEffect(() => {
15
- let checkNetwork = true
16
- void (async () => {
17
- if (isUndefined(network)) return
18
- while (checkNetwork) {
19
- try {
20
- const response = await network.status()
21
- setNetworkStatus(response)
22
- setNetworkStatusError(undefined)
23
- } catch (error) {
24
- console.info('Error fetching network status:', error)
25
- setNetworkStatus(undefined)
26
- setNetworkStatusError(error as Error)
27
- }
28
- await delay(STATUS_CHECK_INTERVAL)
29
- }
30
- })()
31
-
32
- return () => {
33
- // Cleanup function to stop checking network status at the current statusUrl
34
- checkNetwork = false
35
- }
36
- }, [network])
37
-
38
- return [networkStatus, networkStatusError] as const
39
- }
package/src/index.ts DELETED
@@ -1,5 +0,0 @@
1
- export * from './components/index.ts'
2
- export * from './context/index.ts'
3
- export * from './hooks/index.ts'
4
- export * from './model/index.ts'
5
- export * from './story/index.ts'
@@ -1,29 +0,0 @@
1
- import type { JsonRpcRequest } from '@metamask/json-rpc-engine/v2'
2
- import type { JsonRpcResponse } from '@metamask/utils'
3
-
4
- // Configuration options for broadcasting RPC calls
5
- export type BroadcastRpcConfig = { request: boolean; response: boolean }
6
-
7
- // Event Names
8
- export const BroadcastRpcRequestEventName = 'xyo:broadcast-rpc-request' as const
9
- export const BroadcastRpcResponseEventName = 'xyo:broadcast-rpc-response' as const
10
- export type BroadcastRpcEventNames = typeof BroadcastRpcRequestEventName | typeof BroadcastRpcResponseEventName
11
-
12
- // default options are to broadcast all events
13
- export const defaultBroadcastConfig: BroadcastRpcConfig = { request: true, response: true }
14
-
15
- export interface BroadcastedRpcCall<TRpcCall extends JsonRpcRequest | JsonRpcResponse = JsonRpcRequest | JsonRpcResponse> {
16
- rpcCall: TRpcCall
17
- source: string
18
- timestamp: number
19
- }
20
-
21
- export type RpcRequestResponsePairs = {
22
- request: BroadcastedRpcCall<JsonRpcRequest>
23
- result?: BroadcastedRpcCall<JsonRpcResponse>
24
- source?: string
25
- }
26
-
27
- export type RpcRequestResponsePairsById = {
28
- [id: string]: RpcRequestResponsePairs
29
- }
@@ -1 +0,0 @@
1
- export * from './BroadcastRpc.ts'
@@ -1,44 +0,0 @@
1
- import type { Decorator } from '@storybook/react-vite'
2
- import {
3
- LocalNetwork, MainNetwork, SequenceNetwork,
4
- } from '@xyo-network/xl1-sdk'
5
- import React from 'react'
6
-
7
- import type { ChainNetworkSettings } from '../context/index.ts'
8
- import { ActiveGatewayProvider, ChainNetworkProvider } from '../context/index.ts'
9
-
10
- const AvailableNetworks = [MainNetwork, SequenceNetwork, LocalNetwork]
11
- const networkSettings: ChainNetworkSettings = { [LocalNetwork.id]: { proxy: true } }
12
-
13
- const getActiveMainnetNetwork = async () => await Promise.resolve(AvailableNetworks[0])
14
- export const MainnetNetworkGatewayDecorator: Decorator = (Story, args) => {
15
- return (
16
- <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveMainnetNetwork}>
17
- <ActiveGatewayProvider>
18
- <Story {...args} />
19
- </ActiveGatewayProvider>
20
- </ChainNetworkProvider>
21
- )
22
- }
23
-
24
- const getActiveSequenceNetwork = async () => await Promise.resolve(AvailableNetworks[1])
25
- export const SequenceNetworkGatewayDecorator: Decorator = (Story, args) => {
26
- return (
27
- <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveSequenceNetwork}>
28
- <ActiveGatewayProvider>
29
- <Story {...args} />
30
- </ActiveGatewayProvider>
31
- </ChainNetworkProvider>
32
- )
33
- }
34
-
35
- const getActiveLocalNetwork = async () => await Promise.resolve(AvailableNetworks[2])
36
- export const LocalNetworkGatewayDecorator: Decorator = (Story, args) => {
37
- return (
38
- <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveLocalNetwork}>
39
- <ActiveGatewayProvider>
40
- <Story {...args} />
41
- </ActiveGatewayProvider>
42
- </ChainNetworkProvider>
43
- )
44
- }
@@ -1 +0,0 @@
1
- export * from './NetworkGatewayDecorators.tsx'
@@ -1,9 +0,0 @@
1
- import type { XyoGlobal } from '@xyo-network/react-chain-model'
2
-
3
- export declare global {
4
- interface Window {
5
- xyo: XyoGlobal
6
- }
7
-
8
- var xyo: XyoGlobal
9
- }
@@ -1,20 +0,0 @@
1
- declare module '*.png'
2
- declare module '*.jpg'
3
- declare module '*.gif'
4
- declare module '*.webp'
5
-
6
- declare module '*.svg?react' {
7
- import type * as React from 'react'
8
- const ReactComponent: React.FC<React.SVGProps<SVGSVGElement>>
9
- export default ReactComponent
10
- }
11
-
12
- declare module '*.svg' {
13
- const src: string
14
- export default src
15
- }
16
-
17
- declare module '*.svg?raw' {
18
- const content: string
19
- export default content
20
- }