@xyo-network/react-chain-network 1.0.9 → 1.0.10

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.
@@ -208,19 +208,26 @@ var LocalNetwork = {
208
208
  var ChainNetworkProvider = /* @__PURE__ */ __name(({ children, getActiveNetwork, networks, setActiveNetwork: setActiveNetworkExternal }) => {
209
209
  const [activeNetwork, setActiveNetwork] = useState();
210
210
  const [error, setError] = useState();
211
- const [, activeNetworkError] = usePromise(async () => {
211
+ const [resolvedActiveNetwork, activeNetworkError] = usePromise(async () => {
212
212
  if (!networks) return;
213
213
  const activeNetwork2 = await getActiveNetwork?.();
214
214
  if (activeNetwork2 && networks?.find((network) => network.id === activeNetwork2.id)) {
215
- setActiveNetwork(activeNetwork2);
215
+ return activeNetwork2;
216
216
  } else {
217
217
  const defaultNetwork = networks.find((network) => network.id === MainNetwork.id) ?? networks[0];
218
218
  await setActiveNetworkExternal?.(defaultNetwork.id);
219
- setActiveNetwork(defaultNetwork);
219
+ return defaultNetwork;
220
220
  }
221
221
  }, [
222
222
  networks
223
223
  ]);
224
+ useMemo(() => {
225
+ if (resolvedActiveNetwork) {
226
+ setActiveNetwork(resolvedActiveNetwork);
227
+ }
228
+ }, [
229
+ resolvedActiveNetwork
230
+ ]);
224
231
  const updateActiveNetwork = useCallback((networkId) => {
225
232
  setError(void 0);
226
233
  const network = networks?.find((network2) => network2.id === networkId);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/menu/Icon.tsx","../../src/components/menu/MenuItem.tsx","../../src/context/network/context.ts","../../src/context/network/Provider.tsx","../../src/helpers/getBridgedNodes.ts","../../src/helpers/initNetworkNode.ts","../../src/helpers/getNetworkNode.ts","../../src/helpers/manifest/network.json","../../src/helpers/manifest/networkManifest.ts","../../src/images/icons/LocalNetwork.tsx","../../src/images/icons/xyoColorLogo.tsx","../../src/models/Bootstrap.ts","../../src/helpers/Networks.ts","../../src/context/network/use.ts","../../src/provider/NetworkProvider.ts"],"sourcesContent":["import type { IconProps } from '@mui/material'\nimport { Icon } from '@mui/material'\nimport React from 'react'\n\nexport const NetworkIcon: React.FC<IconProps & { icon?: string }> = ({ icon, ...props }) => {\n return (\n <Icon\n sx={{\n display: 'inline-flex', alignItems: 'center', justifyContent: 'center',\n }}\n ref={(ref) => {\n if (ref && icon) {\n ref.innerHTML = icon\n }\n }}\n {...props}\n />\n )\n}\n","import type { MenuItemProps } from '@mui/material'\nimport { ListItemText } from '@mui/material'\nimport { ActiveMenuItem } from '@xyo-network/react-chain-shared'\nimport type { MouseEvent as ReactMouseEvent } from 'react'\nimport React from 'react'\n\nimport type { NetworkBootstrap } from '../../models/index.ts'\nimport { NetworkIcon } from './Icon.tsx'\n\nexport interface NetworkMenuItemProps extends MenuItemProps {\n active?: boolean\n network?: NetworkBootstrap\n updateActiveNetwork?: (networkId: string) => void\n}\n\nexport const NetworkMenuItem: React.FC<NetworkMenuItemProps> = ({\n active, network, onClick, updateActiveNetwork, ...props\n}) => {\n const handleClick = (event: ReactMouseEvent<HTMLLIElement, MouseEvent>) => {\n if (network === undefined) throw new Error('Network is undefined')\n updateActiveNetwork?.(network.id)\n onClick?.(event)\n }\n\n return (\n <ActiveMenuItem\n title={network?.name}\n disableRipple\n onClick={handleClick}\n active={active}\n {...props}\n >\n <NetworkIcon icon={network?.icon} />\n <ListItemText>{network?.name}</ListItemText>\n </ActiveMenuItem>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { ChainNetworkState } from './state.ts'\n\nexport const ChainNetworkContext = createContextEx<ChainNetworkState>()\n","import { ErrorRender } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { MainNetwork } from '../../helpers/index.ts'\nimport type { NetworkBootstrap } from '../../models/index.ts'\nimport { ChainNetworkContext } from './context.ts'\nimport type { ChainNetworkState } from './state.ts'\n\nexport interface ChainNetworkProviderProps extends PropsWithChildren {\n getActiveNetwork?: () => Promise<NetworkBootstrap | undefined>\n networks?: NetworkBootstrap[]\n setActiveNetwork?: (networkId: NetworkBootstrap['id']) => Promise<NetworkBootstrap>\n}\n\nexport const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({\n children, getActiveNetwork, networks, setActiveNetwork: setActiveNetworkExternal,\n}) => {\n const [activeNetwork, setActiveNetwork] = useState<NetworkBootstrap>()\n const [error, setError] = useState<Error>()\n\n // Set the active network upon initialization\n const [, activeNetworkError] = usePromise(async () => {\n // ensure networks are loaded\n if (!networks) return\n // get last saved active network\n const activeNetwork = await getActiveNetwork?.()\n // ensure the active network saved is found in the list of networks\n if (activeNetwork && networks?.find(network => network.id === activeNetwork.id)) {\n // Set the active network if it exists\n setActiveNetwork(activeNetwork)\n } else {\n // Set the default network if no active network exists\n const defaultNetwork = networks.find(network => network.id === MainNetwork.id) ?? networks[0]\n await setActiveNetworkExternal?.(defaultNetwork.id)\n\n // Set the active network in the context\n setActiveNetwork(defaultNetwork)\n }\n }, [networks])\n\n const updateActiveNetwork = useCallback((networkId: NetworkBootstrap['id']) => {\n setError(undefined)\n const network = networks?.find(network => network.id === networkId)\n // set internally\n setActiveNetwork(network)\n // set externally\n void setActiveNetworkExternal?.(networkId)\n }, [networks])\n\n const value = useMemo<ChainNetworkState>(() => ({\n activeNetwork,\n networks,\n provided: true,\n updateActiveNetwork,\n walletNetworkError: error ?? activeNetworkError,\n }), [activeNetwork, networks, updateActiveNetwork])\n\n return (\n <ChainNetworkContext value={value}>\n <ErrorRender error={error ?? activeNetworkError} scope=\"WalletNetworkProvider\" />\n {children}\n </ChainNetworkContext>\n )\n}\n","import type { AttachableNodeInstance } from '@xyo-network/node-model'\n\nconst bridgedNodeMap = new Map<string, AttachableNodeInstance>()\n\nexport const getBridgedNodes = () => {\n return bridgedNodeMap\n}\n","import { initBridge } from '@xyo-network/chain-sdk'\nimport type { AttachableNodeInstance } from '@xyo-network/node-model'\n\nimport type { NetworkBootstrap } from '../models/index.ts'\nimport { getBridgedNodes } from './getBridgedNodes.ts'\nimport { getNetworkNode } from './getNetworkNode.ts'\n\nexport const initNetworkNode = async (activeNetwork: NetworkBootstrap): Promise<AttachableNodeInstance> => {\n const bridgedNodeMap = getBridgedNodes()\n if (bridgedNodeMap.has(activeNetwork.url)) return bridgedNodeMap.get(activeNetwork.url)!\n\n const bridge = await initBridge(activeNetwork.url)\n const activeNetworkNode = await getNetworkNode()\n await activeNetworkNode.register?.(bridge)\n await activeNetworkNode.attach?.(bridge.address, true)\n bridgedNodeMap.set(activeNetwork.url, activeNetworkNode)\n\n return activeNetworkNode\n}\n","import { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper } from '@xyo-network/manifest-wrapper'\n\nimport { NetworkNodeManifest } from './manifest/index.ts'\n\nexport const getNetworkNode = async () => {\n const wrapper = new ManifestWrapper(NetworkNodeManifest, await HDWallet.random())\n const [node] = await wrapper.loadNodes()\n return node\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"44'/60'/1\",\n \"name\": \"Network\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": []\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}","import type { PackageManifestPayload } from '@xyo-network/manifest-model'\n\nimport node from './network.json' with { type: 'json' }\n\n/**\n * Root Node Manifest\n */\nexport const NetworkNodeManifest = node as PackageManifestPayload\n","/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon } from '@mui/material'\nimport React from 'react'\n\nexport const LocalNetworkIcon = createSvgIcon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 -960 960 960\">\n <path fill=\"currentColor\" d=\"M40-120v-80h880v80H40Zm120-120q-33 0-56.5-23.5T80-320v-440q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v440q0 33-23.5 56.5T800-240H160Zm0-80h640v-440H160v440Zm0 0v-440 440Z\" />\n </svg>,\n 'LocalNetworkIcon',\n)\n\nexport const LocalNetworkIconString = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"18\" width=\"18\" viewBox=\"0 -960 960 960\">\n <path fill=\"currentColor\" d=\"M40-120v-80h880v80H40Zm120-120q-33 0-56.5-23.5T80-320v-440q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v440q0 33-23.5 56.5T800-240H160Zm0-80h640v-440H160v440Zm0 0v-440 440Z\" />\n </svg>\n`\n","/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon } from '@mui/material'\nimport React from 'react'\n\nexport const XyoColorLogo = createSvgIcon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\">\n <path\n className=\"cls-1\"\n d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"\n fill=\"#8d8fc6\"\n />\n <path\n className=\"cls-2\"\n d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"\n fill=\"#579fd6\"\n />\n <path\n className=\"cls-3\"\n d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"\n fill=\"#f27046\"\n />\n <path\n className=\"cls-4\"\n d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"\n fill=\"#eb407a\"\n />\n </svg>,\n 'XyoColorLogo',\n)\n\nexport const XyoColorLogoString = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\">\n <path\n className=\"cls-1\"\n d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"\n fill=\"#8d8fc6\"\n />\n <path\n className=\"cls-2\"\n d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"\n fill=\"#579fd6\"\n />\n <path\n className=\"cls-3\"\n d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"\n fill=\"#f27046\"\n />\n <path\n className=\"cls-4\"\n d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"\n fill=\"#eb407a\"\n />\n </svg>\n`\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { ChainInformation } from '@xyo-network/chain-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const NetworkBootstrapSchema = 'network.xyo.network.bootstrap' as const\nexport type NetworkBootstrapSchema = typeof NetworkBootstrapSchema\n\nexport interface ChainForkFields {\n /** Block Number at which the chain was forked from */\n forkedAtLastBlockNumber?: string\n /** Hash in the last block the chain was forked from */\n forkedAtLastHash?: string\n /** Address of the forked chain */\n forkedChainId?: Address\n}\n\nexport interface NetworkFields {\n /** Description of the network */\n description: string\n /** string representation of the icon (svg) */\n icon?: string\n /** Machine-readable identifier */\n id: string\n /** Human-readable identifier */\n name: string\n schema: NetworkBootstrapSchema\n /** Symbol of the network */\n symbol?: string\n /** Url for accessing the network */\n url: string\n}\n\n/** Note: Optional Properties can be found walking the chain to the genesis block */\nexport interface NetworkBootstrapFields extends NetworkFields, ChainForkFields {\n /** Address of the chain, i.e. smart contract address */\n chainInfo?: ChainInformation\n}\n\nexport interface Network extends NetworkBootstrap {\n custom: boolean\n}\n\nexport type NetworkBootstrap = Payload<NetworkBootstrapFields, NetworkBootstrapSchema>\n\nexport const isNetworkBootstrap = isPayloadOfSchemaType<NetworkBootstrap>(NetworkBootstrapSchema)\n\nexport const asOptionalNetwork = AsObjectFactory.createOptional(isNetworkBootstrap)\n","import { LocalNetworkIconString, XyoColorLogoString } from '../images/index.ts'\nimport type { NetworkBootstrap } from '../models/index.ts'\nimport { NetworkBootstrapSchema } from '../models/index.ts'\n\nexport const MainNetwork: NetworkBootstrap = {\n description: 'Main Node for the XYO Network',\n icon: XyoColorLogoString,\n id: 'mainnet',\n name: 'Mainnet',\n schema: NetworkBootstrapSchema,\n symbol: 'XYOG',\n url: 'https://api.chain.xyo.network',\n}\n\nexport const SequenceNetwork: NetworkBootstrap = {\n description: 'Test Node for the XYO Network',\n icon: XyoColorLogoString,\n id: 'sequence',\n name: 'Sequence',\n schema: NetworkBootstrapSchema,\n symbol: 'XYOG',\n url: 'https://beta.api.chain.xyo.network/',\n}\n\nexport const LocalNetwork: NetworkBootstrap = {\n description: 'Local Node',\n icon: LocalNetworkIconString,\n id: 'local',\n name: 'Local',\n schema: NetworkBootstrapSchema,\n symbol: 'XYOG',\n url: 'http://localhost:8080',\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainNetworkContext } from './context.ts'\n\nexport const useChainNetwork = (required = true) => useContextEx(ChainNetworkContext, 'WalletNetwork', required)\n","import { assertEx } from '@xylabs/assert'\nimport type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { Signed } from '@xyo-network/boundwitness-model'\nimport type { BridgeInstance } from '@xyo-network/bridge-model'\nimport type {\n HydratedBlock, SignedHydratedBlock, SignedHydratedTransaction, TransactionBoundWitness, XyoProvider,\n} from '@xyo-network/chain-model'\nimport { findMostRecentBlock, hydrateBlock } from '@xyo-network/chain-protocol'\nimport { initBridge } from '@xyo-network/chain-sdk'\nimport { XyoChainBlockNumberIterator } from '@xyo-network/chain-services'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\n\nexport const FINALIZED_ARCHIVIST = 'XYOChain:Chain:Finalized' as const\n\nexport interface NetworkProviderParams {\n network: string\n}\n\nexport class NetworkProvider implements XyoProvider {\n private _bridge: BridgeInstance\n\n constructor(bridge: BridgeInstance) {\n this._bridge = bridge\n }\n\n private get bridge() {\n return assertEx(this._bridge, () => 'Bridge not set')\n }\n\n static async create({ network }: NetworkProviderParams): Promise<NetworkProvider> {\n const bridge = await initBridge(network)\n return new NetworkProvider(bridge)\n }\n\n accountBalance(_address: Address, _blockNumber: bigint, _full: boolean): Promisable<bigint> {\n throw new Error('Method not implemented.')\n }\n\n blockByHash(_hash: Hash): Promisable<SignedHydratedBlock | null> {\n throw new Error('Method not implemented.')\n }\n\n blockByNumber(_blockNumber: bigint): Promisable<SignedHydratedBlock | null> {\n throw new Error('Method not implemented.')\n }\n\n currentBlockNumber(): Promisable<bigint> {\n throw new Error('Method not implemented.')\n }\n\n async getPreviousBlocks(startingBlock?: Hex, count = 25): Promise<HydratedBlock[]> {\n const chainArchivist = await this.getFinalizedArchivist()\n const head = assertEx(await findMostRecentBlock(chainArchivist, { cursor: startingBlock }), () => 'Unable to find most recent block')\n const iterator = await XyoChainBlockNumberIterator.create({ chainArchivist, head })\n const blocks = await iterator.previous(head.block, count)\n\n let hydratedBlocks: HydratedBlock[] = []\n for (const block of blocks) {\n hydratedBlocks.push(await hydrateBlock(chainArchivist, await PayloadBuilder.hash(block)))\n }\n return hydratedBlocks\n }\n\n sendTransaction(_transaction: SignedHydratedTransaction): Promisable<Hash> {\n throw new Error('Method not implemented.')\n }\n\n signTransaction(_transaction: TransactionBoundWitness): Promisable<Signed<TransactionBoundWitness>> {\n throw new Error('Method not implemented.')\n }\n\n transactionByBlockHashAndIndex(_blockHash: Hash, _transactionIndex: bigint): Promisable<SignedHydratedTransaction | undefined> {\n throw new Error('Method not implemented.')\n }\n\n transactionByBlockNumberAndIndex(_blockNumber: bigint, _transactionIndex: bigint): Promisable<SignedHydratedTransaction | undefined> {\n throw new Error('Method not implemented.')\n }\n\n transactionByHash(_transactionHash: Hash): Promisable<SignedHydratedTransaction | undefined> {\n throw new Error('Method not implemented.')\n }\n\n private async getFinalizedArchivist(): Promise<ArchivistInstance> {\n const bridge = this.bridge\n const mod = assertEx(await bridge.resolve(FINALIZED_ARCHIVIST), () => `${FINALIZED_ARCHIVIST} not found`)\n return assertEx(asArchivistInstance(mod), () => `${FINALIZED_ARCHIVIST} is not an archivist`)\n }\n}\n"],"mappings":";;;;AACA,SAASA,YAAY;AACrB,OAAOC,WAAW;AAEX,IAAMC,cAAuD,wBAAC,EAAEC,MAAM,GAAGC,MAAAA,MAAO;AACrF,SACE,sBAAA,cAACC,MAAAA;IACCC,IAAI;MACFC,SAAS;MAAeC,YAAY;MAAUC,gBAAgB;IAChE;IACAC,KAAK,wBAACA,QAAAA;AACJ,UAAIA,OAAOP,MAAM;AACfO,YAAIC,YAAYR;MAClB;IACF,GAJK;IAKJ,GAAGC;;AAGV,GAdoE;;;ACHpE,SAASQ,oBAAoB;AAC7B,SAASC,sBAAsB;AAE/B,OAAOC,YAAW;AAWX,IAAMC,kBAAkD,wBAAC,EAC9DC,QAAQC,SAASC,SAASC,qBAAqB,GAAGC,MAAAA,MACnD;AACC,QAAMC,cAAc,wBAACC,UAAAA;AACnB,QAAIL,YAAYM,OAAW,OAAM,IAAIC,MAAM,sBAAA;AAC3CL,0BAAsBF,QAAQQ,EAAE;AAChCP,cAAUI,KAAAA;EACZ,GAJoB;AAMpB,SACE,gBAAAI,OAAA,cAACC,gBAAAA;IACCC,OAAOX,SAASY;IAChBC,eAAAA;IACAZ,SAASG;IACTL;IACC,GAAGI;KAEJ,gBAAAM,OAAA,cAACK,aAAAA;IAAYC,MAAMf,SAASe;MAC5B,gBAAAN,OAAA,cAACO,cAAAA,MAAchB,SAASY,IAAAA,CAAAA;AAG9B,GArB+D;;;ACf/D,SAASK,uBAAuB;AAIzB,IAAMC,sBAAsBD,gBAAAA;;;ACJnC,SAASE,mBAAmB;AAC5B,SAASC,kBAAkB;AAE3B,OAAOC,UACLC,aAAaC,SAASC,gBACjB;;;ACHP,IAAMC,iBAAiB,oBAAIC,IAAAA;AAEpB,IAAMC,kBAAkB,6BAAA;AAC7B,SAAOF;AACT,GAF+B;;;ACJ/B,SAASG,kBAAkB;;;ACA3B,SAASC,gBAAgB;AACzB,SAASC,uBAAuB;;;ACDhC;AAAA,EACE,SAAW;AAAA,EACX,OAAS;AAAA,IACP;AAAA,MACE,QAAU;AAAA,QACR,aAAe;AAAA,QACf,MAAQ;AAAA,QACR,QAAU;AAAA,MACZ;AAAA,MACA,SAAW;AAAA,QACT,SAAW,CAAC;AAAA,QACZ,QAAU,CAAC;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EACA,QAAU;AACZ;;;ACTO,IAAMC,sBAAsBC;;;AFF5B,IAAMC,iBAAiB,mCAAA;AAC5B,QAAMC,UAAU,IAAIC,gBAAgBC,qBAAqB,MAAMC,SAASC,OAAM,CAAA;AAC9E,QAAM,CAACC,IAAAA,IAAQ,MAAML,QAAQM,UAAS;AACtC,SAAOD;AACT,GAJ8B;;;ADEvB,IAAME,kBAAkB,8BAAOC,kBAAAA;AACpC,QAAMC,kBAAiBC,gBAAAA;AACvB,MAAID,gBAAeE,IAAIH,cAAcI,GAAG,EAAG,QAAOH,gBAAeI,IAAIL,cAAcI,GAAG;AAEtF,QAAME,SAAS,MAAMC,WAAWP,cAAcI,GAAG;AACjD,QAAMI,oBAAoB,MAAMC,eAAAA;AAChC,QAAMD,kBAAkBE,WAAWJ,MAAAA;AACnC,QAAME,kBAAkBG,SAASL,OAAOM,SAAS,IAAA;AACjDX,EAAAA,gBAAeY,IAAIb,cAAcI,KAAKI,iBAAAA;AAEtC,SAAOA;AACT,GAX+B;;;AIN/B,SAASM,qBAAqB;AAC9B,OAAOC,YAAW;AAEX,IAAMC,mBAAmBF,cAC9B,gBAAAC,OAAA,cAACE,OAAAA;EAAIC,OAAM;EAA6BC,SAAQ;GAC9C,gBAAAJ,OAAA,cAACK,QAAAA;EAAKC,MAAK;EAAeC,GAAE;KAE9B,kBAAA;AAGK,IAAMC,yBAAyB;;;;;;;ACVtC,SAASC,iBAAAA,sBAAqB;AAC9B,OAAOC,YAAW;AAEX,IAAMC,eAAeF,eAC1B,gBAAAC,OAAA,cAACE,OAAAA;EAAIC,OAAM;EAA6BC,SAAQ;GAC9C,gBAAAJ,OAAA,cAACK,QAAAA;EACCC,WAAU;EACVC,GAAE;EACFC,MAAK;IAEP,gBAAAR,OAAA,cAACK,QAAAA;EACCC,WAAU;EACVC,GAAE;EACFC,MAAK;IAEP,gBAAAR,OAAA,cAACK,QAAAA;EACCC,WAAU;EACVC,GAAE;EACFC,MAAK;IAEP,gBAAAR,OAAA,cAACK,QAAAA;EACCC,WAAU;EACVC,GAAE;EACFC,MAAK;KAGT,cAAA;AAGK,IAAMC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;AC7BlC,SAASC,uBAAuB;AAGhC,SAASC,6BAA6B;AAE/B,IAAMC,yBAAyB;AAwC/B,IAAMC,qBAAqBF,sBAAwCC,sBAAAA;AAEnE,IAAME,oBAAoBJ,gBAAgBK,eAAeF,kBAAAA;;;AC5CzD,IAAMG,cAAgC;EAC3CC,aAAa;EACbC,MAAMC;EACNC,IAAI;EACJC,MAAM;EACNC,QAAQC;EACRC,QAAQ;EACRC,KAAK;AACP;AAEO,IAAMC,kBAAoC;EAC/CT,aAAa;EACbC,MAAMC;EACNC,IAAI;EACJC,MAAM;EACNC,QAAQC;EACRC,QAAQ;EACRC,KAAK;AACP;AAEO,IAAME,eAAiC;EAC5CV,aAAa;EACbC,MAAMU;EACNR,IAAI;EACJC,MAAM;EACNC,QAAQC;EACRC,QAAQ;EACRC,KAAK;AACP;;;ATdO,IAAMI,uBAA4D,wBAAC,EACxEC,UAAUC,kBAAkBC,UAAUC,kBAAkBC,yBAAwB,MACjF;AACC,QAAM,CAACC,eAAeF,gBAAAA,IAAoBG,SAAAA;AAC1C,QAAM,CAACC,OAAOC,QAAAA,IAAYF,SAAAA;AAG1B,QAAM,CAAA,EAAGG,kBAAAA,IAAsBC,WAAW,YAAA;AAExC,QAAI,CAACR,SAAU;AAEf,UAAMG,iBAAgB,MAAMJ,mBAAAA;AAE5B,QAAII,kBAAiBH,UAAUS,KAAKC,CAAAA,YAAWA,QAAQC,OAAOR,eAAcQ,EAAE,GAAG;AAE/EV,uBAAiBE,cAAAA;IACnB,OAAO;AAEL,YAAMS,iBAAiBZ,SAASS,KAAKC,CAAAA,YAAWA,QAAQC,OAAOE,YAAYF,EAAE,KAAKX,SAAS,CAAA;AAC3F,YAAME,2BAA2BU,eAAeD,EAAE;AAGlDV,uBAAiBW,cAAAA;IACnB;EACF,GAAG;IAACZ;GAAS;AAEb,QAAMc,sBAAsBC,YAAY,CAACC,cAAAA;AACvCV,aAASW,MAAAA;AACT,UAAMP,UAAUV,UAAUS,KAAKC,CAAAA,aAAWA,SAAQC,OAAOK,SAAAA;AAEzDf,qBAAiBS,OAAAA;AAEjB,SAAKR,2BAA2Bc,SAAAA;EAClC,GAAG;IAAChB;GAAS;AAEb,QAAMkB,QAAQC,QAA2B,OAAO;IAC9ChB;IACAH;IACAoB,UAAU;IACVN;IACAO,oBAAoBhB,SAASE;EAC/B,IAAI;IAACJ;IAAeH;IAAUc;GAAoB;AAElD,SACE,gBAAAQ,OAAA,cAACC,qBAAAA;IAAoBL;KACnB,gBAAAI,OAAA,cAACE,aAAAA;IAAYnB,OAAOA,SAASE;IAAoBkB,OAAM;MACtD3B,QAAAA;AAGP,GAjDyE;;;AUlBzE,SAAS4B,oBAAoB;AAItB,IAAMC,kBAAkB,wBAACC,WAAW,SAASC,aAAaC,qBAAqB,iBAAiBF,QAAAA,GAAxE;;;ACJ/B,SAASG,gBAAgB;AAMzB,SAASC,2BAA2B;AAMpC,SAASC,qBAAqBC,oBAAoB;AAClD,SAASC,cAAAA,mBAAkB;AAC3B,SAASC,mCAAmC;AAC5C,SAASC,sBAAsB;AAExB,IAAMC,sBAAsB;AAM5B,IAAMC,kBAAN,MAAMA,iBAAAA;EAvBb,OAuBaA;;;EACHC;EAERC,YAAYC,QAAwB;AAClC,SAAKF,UAAUE;EACjB;EAEA,IAAYA,SAAS;AACnB,WAAOC,SAAS,KAAKH,SAAS,MAAM,gBAAA;EACtC;EAEA,aAAaI,OAAO,EAAEC,QAAO,GAAqD;AAChF,UAAMH,SAAS,MAAMI,YAAWD,OAAAA;AAChC,WAAO,IAAIN,iBAAgBG,MAAAA;EAC7B;EAEAK,eAAeC,UAAmBC,cAAsBC,OAAoC;AAC1F,UAAM,IAAIC,MAAM,yBAAA;EAClB;EAEAC,YAAYC,OAAqD;AAC/D,UAAM,IAAIF,MAAM,yBAAA;EAClB;EAEAG,cAAcL,cAA8D;AAC1E,UAAM,IAAIE,MAAM,yBAAA;EAClB;EAEAI,qBAAyC;AACvC,UAAM,IAAIJ,MAAM,yBAAA;EAClB;EAEA,MAAMK,kBAAkBC,eAAqBC,QAAQ,IAA8B;AACjF,UAAMC,iBAAiB,MAAM,KAAKC,sBAAqB;AACvD,UAAMC,OAAOlB,SAAS,MAAMmB,oBAAoBH,gBAAgB;MAAEI,QAAQN;IAAc,CAAA,GAAI,MAAM,kCAAA;AAClG,UAAMO,WAAW,MAAMC,4BAA4BrB,OAAO;MAAEe;MAAgBE;IAAK,CAAA;AACjF,UAAMK,SAAS,MAAMF,SAASG,SAASN,KAAKO,OAAOV,KAAAA;AAEnD,QAAIW,iBAAkC,CAAA;AACtC,eAAWD,SAASF,QAAQ;AAC1BG,qBAAeC,KAAK,MAAMC,aAAaZ,gBAAgB,MAAMa,eAAeC,KAAKL,KAAAA,CAAAA,CAAAA;IACnF;AACA,WAAOC;EACT;EAEAK,gBAAgBC,cAA2D;AACzE,UAAM,IAAIxB,MAAM,yBAAA;EAClB;EAEAyB,gBAAgBD,cAAoF;AAClG,UAAM,IAAIxB,MAAM,yBAAA;EAClB;EAEA0B,+BAA+BC,YAAkBC,mBAA8E;AAC7H,UAAM,IAAI5B,MAAM,yBAAA;EAClB;EAEA6B,iCAAiC/B,cAAsB8B,mBAA8E;AACnI,UAAM,IAAI5B,MAAM,yBAAA;EAClB;EAEA8B,kBAAkBC,kBAA2E;AAC3F,UAAM,IAAI/B,MAAM,yBAAA;EAClB;EAEA,MAAcS,wBAAoD;AAChE,UAAMlB,SAAS,KAAKA;AACpB,UAAMyC,MAAMxC,SAAS,MAAMD,OAAO0C,QAAQ9C,mBAAAA,GAAsB,MAAM,GAAGA,mBAAAA,YAA+B;AACxG,WAAOK,SAAS0C,oBAAoBF,GAAAA,GAAM,MAAM,GAAG7C,mBAAAA,sBAAyC;EAC9F;AACF;","names":["Icon","React","NetworkIcon","icon","props","Icon","sx","display","alignItems","justifyContent","ref","innerHTML","ListItemText","ActiveMenuItem","React","NetworkMenuItem","active","network","onClick","updateActiveNetwork","props","handleClick","event","undefined","Error","id","React","ActiveMenuItem","title","name","disableRipple","NetworkIcon","icon","ListItemText","createContextEx","ChainNetworkContext","ErrorRender","usePromise","React","useCallback","useMemo","useState","bridgedNodeMap","Map","getBridgedNodes","initBridge","HDWallet","ManifestWrapper","NetworkNodeManifest","node","getNetworkNode","wrapper","ManifestWrapper","NetworkNodeManifest","HDWallet","random","node","loadNodes","initNetworkNode","activeNetwork","bridgedNodeMap","getBridgedNodes","has","url","get","bridge","initBridge","activeNetworkNode","getNetworkNode","register","attach","address","set","createSvgIcon","React","LocalNetworkIcon","svg","xmlns","viewBox","path","fill","d","LocalNetworkIconString","createSvgIcon","React","XyoColorLogo","svg","xmlns","viewBox","path","className","d","fill","XyoColorLogoString","AsObjectFactory","isPayloadOfSchemaType","NetworkBootstrapSchema","isNetworkBootstrap","asOptionalNetwork","createOptional","MainNetwork","description","icon","XyoColorLogoString","id","name","schema","NetworkBootstrapSchema","symbol","url","SequenceNetwork","LocalNetwork","LocalNetworkIconString","ChainNetworkProvider","children","getActiveNetwork","networks","setActiveNetwork","setActiveNetworkExternal","activeNetwork","useState","error","setError","activeNetworkError","usePromise","find","network","id","defaultNetwork","MainNetwork","updateActiveNetwork","useCallback","networkId","undefined","value","useMemo","provided","walletNetworkError","React","ChainNetworkContext","ErrorRender","scope","useContextEx","useChainNetwork","required","useContextEx","ChainNetworkContext","assertEx","asArchivistInstance","findMostRecentBlock","hydrateBlock","initBridge","XyoChainBlockNumberIterator","PayloadBuilder","FINALIZED_ARCHIVIST","NetworkProvider","_bridge","constructor","bridge","assertEx","create","network","initBridge","accountBalance","_address","_blockNumber","_full","Error","blockByHash","_hash","blockByNumber","currentBlockNumber","getPreviousBlocks","startingBlock","count","chainArchivist","getFinalizedArchivist","head","findMostRecentBlock","cursor","iterator","XyoChainBlockNumberIterator","blocks","previous","block","hydratedBlocks","push","hydrateBlock","PayloadBuilder","hash","sendTransaction","_transaction","signTransaction","transactionByBlockHashAndIndex","_blockHash","_transactionIndex","transactionByBlockNumberAndIndex","transactionByHash","_transactionHash","mod","resolve","asArchivistInstance"]}
1
+ {"version":3,"sources":["../../src/components/menu/Icon.tsx","../../src/components/menu/MenuItem.tsx","../../src/context/network/context.ts","../../src/context/network/Provider.tsx","../../src/helpers/getBridgedNodes.ts","../../src/helpers/initNetworkNode.ts","../../src/helpers/getNetworkNode.ts","../../src/helpers/manifest/network.json","../../src/helpers/manifest/networkManifest.ts","../../src/images/icons/LocalNetwork.tsx","../../src/images/icons/xyoColorLogo.tsx","../../src/models/Bootstrap.ts","../../src/helpers/Networks.ts","../../src/context/network/use.ts","../../src/provider/NetworkProvider.ts"],"sourcesContent":["import type { IconProps } from '@mui/material'\nimport { Icon } from '@mui/material'\nimport React from 'react'\n\nexport const NetworkIcon: React.FC<IconProps & { icon?: string }> = ({ icon, ...props }) => {\n return (\n <Icon\n sx={{\n display: 'inline-flex', alignItems: 'center', justifyContent: 'center',\n }}\n ref={(ref) => {\n if (ref && icon) {\n ref.innerHTML = icon\n }\n }}\n {...props}\n />\n )\n}\n","import type { MenuItemProps } from '@mui/material'\nimport { ListItemText } from '@mui/material'\nimport { ActiveMenuItem } from '@xyo-network/react-chain-shared'\nimport type { MouseEvent as ReactMouseEvent } from 'react'\nimport React from 'react'\n\nimport type { NetworkBootstrap } from '../../models/index.ts'\nimport { NetworkIcon } from './Icon.tsx'\n\nexport interface NetworkMenuItemProps extends MenuItemProps {\n active?: boolean\n network?: NetworkBootstrap\n updateActiveNetwork?: (networkId: string) => void\n}\n\nexport const NetworkMenuItem: React.FC<NetworkMenuItemProps> = ({\n active, network, onClick, updateActiveNetwork, ...props\n}) => {\n const handleClick = (event: ReactMouseEvent<HTMLLIElement, MouseEvent>) => {\n if (network === undefined) throw new Error('Network is undefined')\n updateActiveNetwork?.(network.id)\n onClick?.(event)\n }\n\n return (\n <ActiveMenuItem\n title={network?.name}\n disableRipple\n onClick={handleClick}\n active={active}\n {...props}\n >\n <NetworkIcon icon={network?.icon} />\n <ListItemText>{network?.name}</ListItemText>\n </ActiveMenuItem>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { ChainNetworkState } from './state.ts'\n\nexport const ChainNetworkContext = createContextEx<ChainNetworkState>()\n","import { ErrorRender } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { MainNetwork } from '../../helpers/index.ts'\nimport type { NetworkBootstrap } from '../../models/index.ts'\nimport { ChainNetworkContext } from './context.ts'\nimport type { ChainNetworkState } from './state.ts'\n\nexport interface ChainNetworkProviderProps extends PropsWithChildren {\n getActiveNetwork?: () => Promise<NetworkBootstrap | undefined>\n networks?: NetworkBootstrap[]\n setActiveNetwork?: (networkId: NetworkBootstrap['id']) => Promise<NetworkBootstrap>\n}\n\nexport const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({\n children, getActiveNetwork, networks, setActiveNetwork: setActiveNetworkExternal,\n}) => {\n const [activeNetwork, setActiveNetwork] = useState<NetworkBootstrap>()\n const [error, setError] = useState<Error>()\n\n // Set the active network upon initialization\n const [resolvedActiveNetwork, activeNetworkError] = usePromise(async () => {\n // ensure networks are loaded\n if (!networks) return\n // get last saved active network\n const activeNetwork = await getActiveNetwork?.()\n // ensure the active network saved is found in the list of networks\n if (activeNetwork && networks?.find(network => network.id === activeNetwork.id)) {\n // Set the active network if it exists\n return activeNetwork\n } else {\n // Set the default network if no active network exists\n const defaultNetwork = networks.find(network => network.id === MainNetwork.id) ?? networks[0]\n await setActiveNetworkExternal?.(defaultNetwork.id)\n\n // Set the active network in the context\n return defaultNetwork\n }\n }, [networks])\n\n useMemo(() => {\n if (resolvedActiveNetwork) {\n setActiveNetwork(resolvedActiveNetwork)\n }\n }, [resolvedActiveNetwork])\n\n const updateActiveNetwork = useCallback((networkId: NetworkBootstrap['id']) => {\n setError(undefined)\n const network = networks?.find(network => network.id === networkId)\n // set internally\n setActiveNetwork(network)\n // set externally\n void setActiveNetworkExternal?.(networkId)\n }, [networks])\n\n const value = useMemo<ChainNetworkState>(() => ({\n activeNetwork,\n networks,\n provided: true,\n updateActiveNetwork,\n walletNetworkError: error ?? activeNetworkError,\n }), [activeNetwork, networks, updateActiveNetwork])\n\n return (\n <ChainNetworkContext value={value}>\n <ErrorRender error={error ?? activeNetworkError} scope=\"WalletNetworkProvider\" />\n {children}\n </ChainNetworkContext>\n )\n}\n","import type { AttachableNodeInstance } from '@xyo-network/node-model'\n\nconst bridgedNodeMap = new Map<string, AttachableNodeInstance>()\n\nexport const getBridgedNodes = () => {\n return bridgedNodeMap\n}\n","import { initBridge } from '@xyo-network/chain-sdk'\nimport type { AttachableNodeInstance } from '@xyo-network/node-model'\n\nimport type { NetworkBootstrap } from '../models/index.ts'\nimport { getBridgedNodes } from './getBridgedNodes.ts'\nimport { getNetworkNode } from './getNetworkNode.ts'\n\nexport const initNetworkNode = async (activeNetwork: NetworkBootstrap): Promise<AttachableNodeInstance> => {\n const bridgedNodeMap = getBridgedNodes()\n if (bridgedNodeMap.has(activeNetwork.url)) return bridgedNodeMap.get(activeNetwork.url)!\n\n const bridge = await initBridge(activeNetwork.url)\n const activeNetworkNode = await getNetworkNode()\n await activeNetworkNode.register?.(bridge)\n await activeNetworkNode.attach?.(bridge.address, true)\n bridgedNodeMap.set(activeNetwork.url, activeNetworkNode)\n\n return activeNetworkNode\n}\n","import { HDWallet } from '@xyo-network/account'\nimport { ManifestWrapper } from '@xyo-network/manifest-wrapper'\n\nimport { NetworkNodeManifest } from './manifest/index.ts'\n\nexport const getNetworkNode = async () => {\n const wrapper = new ManifestWrapper(NetworkNodeManifest, await HDWallet.random())\n const [node] = await wrapper.loadNodes()\n return node\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"44'/60'/1\",\n \"name\": \"Network\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": []\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}","import type { PackageManifestPayload } from '@xyo-network/manifest-model'\n\nimport node from './network.json' with { type: 'json' }\n\n/**\n * Root Node Manifest\n */\nexport const NetworkNodeManifest = node as PackageManifestPayload\n","/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon } from '@mui/material'\nimport React from 'react'\n\nexport const LocalNetworkIcon = createSvgIcon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 -960 960 960\">\n <path fill=\"currentColor\" d=\"M40-120v-80h880v80H40Zm120-120q-33 0-56.5-23.5T80-320v-440q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v440q0 33-23.5 56.5T800-240H160Zm0-80h640v-440H160v440Zm0 0v-440 440Z\" />\n </svg>,\n 'LocalNetworkIcon',\n)\n\nexport const LocalNetworkIconString = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"18\" width=\"18\" viewBox=\"0 -960 960 960\">\n <path fill=\"currentColor\" d=\"M40-120v-80h880v80H40Zm120-120q-33 0-56.5-23.5T80-320v-440q0-33 23.5-56.5T160-840h640q33 0 56.5 23.5T880-760v440q0 33-23.5 56.5T800-240H160Zm0-80h640v-440H160v440Zm0 0v-440 440Z\" />\n </svg>\n`\n","/* eslint-disable @stylistic/max-len */\nimport { createSvgIcon } from '@mui/material'\nimport React from 'react'\n\nexport const XyoColorLogo = createSvgIcon(\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\">\n <path\n className=\"cls-1\"\n d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"\n fill=\"#8d8fc6\"\n />\n <path\n className=\"cls-2\"\n d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"\n fill=\"#579fd6\"\n />\n <path\n className=\"cls-3\"\n d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"\n fill=\"#f27046\"\n />\n <path\n className=\"cls-4\"\n d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"\n fill=\"#eb407a\"\n />\n </svg>,\n 'XyoColorLogo',\n)\n\nexport const XyoColorLogoString = `\n<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\">\n <path\n className=\"cls-1\"\n d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"\n fill=\"#8d8fc6\"\n />\n <path\n className=\"cls-2\"\n d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"\n fill=\"#579fd6\"\n />\n <path\n className=\"cls-3\"\n d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"\n fill=\"#f27046\"\n />\n <path\n className=\"cls-4\"\n d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"\n fill=\"#eb407a\"\n />\n </svg>\n`\n","import type { Address } from '@xylabs/hex'\nimport { AsObjectFactory } from '@xylabs/object'\nimport type { ChainInformation } from '@xyo-network/chain-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport const NetworkBootstrapSchema = 'network.xyo.network.bootstrap' as const\nexport type NetworkBootstrapSchema = typeof NetworkBootstrapSchema\n\nexport interface ChainForkFields {\n /** Block Number at which the chain was forked from */\n forkedAtLastBlockNumber?: string\n /** Hash in the last block the chain was forked from */\n forkedAtLastHash?: string\n /** Address of the forked chain */\n forkedChainId?: Address\n}\n\nexport interface NetworkFields {\n /** Description of the network */\n description: string\n /** string representation of the icon (svg) */\n icon?: string\n /** Machine-readable identifier */\n id: string\n /** Human-readable identifier */\n name: string\n schema: NetworkBootstrapSchema\n /** Symbol of the network */\n symbol?: string\n /** Url for accessing the network */\n url: string\n}\n\n/** Note: Optional Properties can be found walking the chain to the genesis block */\nexport interface NetworkBootstrapFields extends NetworkFields, ChainForkFields {\n /** Address of the chain, i.e. smart contract address */\n chainInfo?: ChainInformation\n}\n\nexport interface Network extends NetworkBootstrap {\n custom: boolean\n}\n\nexport type NetworkBootstrap = Payload<NetworkBootstrapFields, NetworkBootstrapSchema>\n\nexport const isNetworkBootstrap = isPayloadOfSchemaType<NetworkBootstrap>(NetworkBootstrapSchema)\n\nexport const asOptionalNetwork = AsObjectFactory.createOptional(isNetworkBootstrap)\n","import { LocalNetworkIconString, XyoColorLogoString } from '../images/index.ts'\nimport type { NetworkBootstrap } from '../models/index.ts'\nimport { NetworkBootstrapSchema } from '../models/index.ts'\n\nexport const MainNetwork: NetworkBootstrap = {\n description: 'Main Node for the XYO Network',\n icon: XyoColorLogoString,\n id: 'mainnet',\n name: 'Mainnet',\n schema: NetworkBootstrapSchema,\n symbol: 'XYOG',\n url: 'https://api.chain.xyo.network',\n}\n\nexport const SequenceNetwork: NetworkBootstrap = {\n description: 'Test Node for the XYO Network',\n icon: XyoColorLogoString,\n id: 'sequence',\n name: 'Sequence',\n schema: NetworkBootstrapSchema,\n symbol: 'XYOG',\n url: 'https://beta.api.chain.xyo.network/',\n}\n\nexport const LocalNetwork: NetworkBootstrap = {\n description: 'Local Node',\n icon: LocalNetworkIconString,\n id: 'local',\n name: 'Local',\n schema: NetworkBootstrapSchema,\n symbol: 'XYOG',\n url: 'http://localhost:8080',\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainNetworkContext } from './context.ts'\n\nexport const useChainNetwork = (required = true) => useContextEx(ChainNetworkContext, 'WalletNetwork', required)\n","import { assertEx } from '@xylabs/assert'\nimport type {\n Address, Hash, Hex,\n} from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { Signed } from '@xyo-network/boundwitness-model'\nimport type { BridgeInstance } from '@xyo-network/bridge-model'\nimport type {\n ChainInformation,\n HydratedBlock, SignedHydratedBlock, SignedHydratedTransaction, TransactionBoundWitness, XyoProvider,\n} from '@xyo-network/chain-model'\nimport { findMostRecentBlock, hydrateBlock } from '@xyo-network/chain-protocol'\nimport { initBridge } from '@xyo-network/chain-sdk'\nimport { XyoChainBlockNumberIterator } from '@xyo-network/chain-services'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\n\nexport const FINALIZED_ARCHIVIST = 'XYOChain:Chain:Finalized' as const\n\nexport interface NetworkProviderParams {\n chainInformation?: ChainInformation\n network: string\n}\n\nexport class NetworkProvider implements XyoProvider {\n private _bridge: BridgeInstance\n\n constructor(bridge: BridgeInstance) {\n this._bridge = bridge\n }\n\n private get bridge() {\n return assertEx(this._bridge, () => 'Bridge not set')\n }\n\n static async create({ network }: NetworkProviderParams): Promise<NetworkProvider> {\n const bridge = await initBridge(network)\n return new NetworkProvider(bridge)\n }\n\n accountBalance(_address: Address, _blockNumber: bigint, _full: boolean): Promisable<bigint> {\n throw new Error('Method not implemented.')\n }\n\n blockByHash(_hash: Hash): Promisable<SignedHydratedBlock | null> {\n throw new Error('Method not implemented.')\n }\n\n blockByNumber(_blockNumber: bigint): Promisable<SignedHydratedBlock | null> {\n throw new Error('Method not implemented.')\n }\n\n currentBlockNumber(): Promisable<bigint> {\n throw new Error('Method not implemented.')\n }\n\n async getPreviousBlocks(startingBlock?: Hex, count = 25): Promise<HydratedBlock[]> {\n const chainArchivist = await this.getFinalizedArchivist()\n const head = assertEx(await findMostRecentBlock(chainArchivist, { cursor: startingBlock }), () => 'Unable to find most recent block')\n const iterator = await XyoChainBlockNumberIterator.create({ chainArchivist, head })\n const blocks = await iterator.previous(head.block, count)\n\n let hydratedBlocks: HydratedBlock[] = []\n for (const block of blocks) {\n hydratedBlocks.push(await hydrateBlock(chainArchivist, await PayloadBuilder.hash(block)))\n }\n return hydratedBlocks\n }\n\n sendTransaction(_transaction: SignedHydratedTransaction): Promisable<Hash> {\n throw new Error('Method not implemented.')\n }\n\n signTransaction(_transaction: TransactionBoundWitness): Promisable<Signed<TransactionBoundWitness>> {\n throw new Error('Method not implemented.')\n }\n\n transactionByBlockHashAndIndex(_blockHash: Hash, _transactionIndex: bigint): Promisable<SignedHydratedTransaction | undefined> {\n throw new Error('Method not implemented.')\n }\n\n transactionByBlockNumberAndIndex(_blockNumber: bigint, _transactionIndex: bigint): Promisable<SignedHydratedTransaction | undefined> {\n throw new Error('Method not implemented.')\n }\n\n transactionByHash(_transactionHash: Hash): Promisable<SignedHydratedTransaction | undefined> {\n throw new Error('Method not implemented.')\n }\n\n private async getFinalizedArchivist(): Promise<ArchivistInstance> {\n const bridge = this.bridge\n const mod = assertEx(await bridge.resolve(FINALIZED_ARCHIVIST), () => `${FINALIZED_ARCHIVIST} not found`)\n return assertEx(asArchivistInstance(mod), () => `${FINALIZED_ARCHIVIST} is not an archivist`)\n }\n}\n"],"mappings":"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","names":["Icon","React","NetworkIcon","icon","props","Icon","sx","display","alignItems","justifyContent","ref","innerHTML","ListItemText","ActiveMenuItem","React","NetworkMenuItem","active","network","onClick","updateActiveNetwork","props","handleClick","event","undefined","Error","id","React","ActiveMenuItem","title","name","disableRipple","NetworkIcon","icon","ListItemText","createContextEx","ChainNetworkContext","ErrorRender","usePromise","React","useCallback","useMemo","useState","bridgedNodeMap","Map","getBridgedNodes","initBridge","HDWallet","ManifestWrapper","NetworkNodeManifest","node","getNetworkNode","wrapper","ManifestWrapper","NetworkNodeManifest","HDWallet","random","node","loadNodes","initNetworkNode","activeNetwork","bridgedNodeMap","getBridgedNodes","has","url","get","bridge","initBridge","activeNetworkNode","getNetworkNode","register","attach","address","set","createSvgIcon","React","LocalNetworkIcon","svg","xmlns","viewBox","path","fill","d","LocalNetworkIconString","createSvgIcon","React","XyoColorLogo","svg","xmlns","viewBox","path","className","d","fill","XyoColorLogoString","AsObjectFactory","isPayloadOfSchemaType","NetworkBootstrapSchema","isNetworkBootstrap","asOptionalNetwork","createOptional","MainNetwork","description","icon","XyoColorLogoString","id","name","schema","NetworkBootstrapSchema","symbol","url","SequenceNetwork","LocalNetwork","LocalNetworkIconString","ChainNetworkProvider","children","getActiveNetwork","networks","setActiveNetwork","setActiveNetworkExternal","activeNetwork","useState","error","setError","resolvedActiveNetwork","activeNetworkError","usePromise","find","network","id","defaultNetwork","MainNetwork","useMemo","updateActiveNetwork","useCallback","networkId","undefined","value","provided","walletNetworkError","React","ChainNetworkContext","ErrorRender","scope","useContextEx","useChainNetwork","required","useContextEx","ChainNetworkContext","assertEx","asArchivistInstance","findMostRecentBlock","hydrateBlock","initBridge","XyoChainBlockNumberIterator","PayloadBuilder","FINALIZED_ARCHIVIST","NetworkProvider","_bridge","constructor","bridge","assertEx","create","network","initBridge","accountBalance","_address","_blockNumber","_full","Error","blockByHash","_hash","blockByNumber","currentBlockNumber","getPreviousBlocks","startingBlock","count","chainArchivist","getFinalizedArchivist","head","findMostRecentBlock","cursor","iterator","XyoChainBlockNumberIterator","blocks","previous","block","hydratedBlocks","push","hydrateBlock","PayloadBuilder","hash","sendTransaction","_transaction","signTransaction","transactionByBlockHashAndIndex","_blockHash","_transactionIndex","transactionByBlockNumberAndIndex","transactionByHash","_transactionHash","mod","resolve","asArchivistInstance"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/context/network/Provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAEN,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAI7D,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IAC9D,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACpF;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAiDpE,CAAA"}
1
+ {"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/context/network/Provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAEN,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAI7D,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IAC9D,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACpF;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAuDpE,CAAA"}
@@ -2,9 +2,10 @@ import type { Address, Hash, Hex } from '@xylabs/hex';
2
2
  import type { Promisable } from '@xylabs/promise';
3
3
  import type { Signed } from '@xyo-network/boundwitness-model';
4
4
  import type { BridgeInstance } from '@xyo-network/bridge-model';
5
- import type { HydratedBlock, SignedHydratedBlock, SignedHydratedTransaction, TransactionBoundWitness, XyoProvider } from '@xyo-network/chain-model';
5
+ import type { ChainInformation, HydratedBlock, SignedHydratedBlock, SignedHydratedTransaction, TransactionBoundWitness, XyoProvider } from '@xyo-network/chain-model';
6
6
  export declare const FINALIZED_ARCHIVIST: "XYOChain:Chain:Finalized";
7
7
  export interface NetworkProviderParams {
8
+ chainInformation?: ChainInformation;
8
9
  network: string;
9
10
  }
10
11
  export declare class NetworkProvider implements XyoProvider {
@@ -1 +1 @@
1
- {"version":3,"file":"NetworkProvider.d.ts","sourceRoot":"","sources":["../../../src/provider/NetworkProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EAAE,GAAG,EACnB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EACV,aAAa,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,WAAW,EACpG,MAAM,0BAA0B,CAAA;AAMjC,eAAO,MAAM,mBAAmB,EAAG,0BAAmC,CAAA;AAEtE,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,cAAc;IAIlC,OAAO,KAAK,MAAM,GAEjB;WAEY,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAKjF,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;IAI3F,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAIhE,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAI3E,kBAAkB,IAAI,UAAU,CAAC,MAAM,CAAC;IAIlC,iBAAiB,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAalF,eAAe,CAAC,YAAY,EAAE,yBAAyB,GAAG,UAAU,CAAC,IAAI,CAAC;IAI1E,eAAe,CAAC,YAAY,EAAE,uBAAuB,GAAG,UAAU,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAInG,8BAA8B,CAAC,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAI9H,gCAAgC,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAIpI,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,CAAC,yBAAyB,GAAG,SAAS,CAAC;YAI9E,qBAAqB;CAKpC"}
1
+ {"version":3,"file":"NetworkProvider.d.ts","sourceRoot":"","sources":["../../../src/provider/NetworkProvider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EAAE,GAAG,EACnB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,WAAW,EACpG,MAAM,0BAA0B,CAAA;AAMjC,eAAO,MAAM,mBAAmB,EAAG,0BAAmC,CAAA;AAEtE,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,cAAc;IAIlC,OAAO,KAAK,MAAM,GAEjB;WAEY,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IAKjF,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;IAI3F,WAAW,CAAC,KAAK,EAAE,IAAI,GAAG,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAIhE,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAI3E,kBAAkB,IAAI,UAAU,CAAC,MAAM,CAAC;IAIlC,iBAAiB,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAalF,eAAe,CAAC,YAAY,EAAE,yBAAyB,GAAG,UAAU,CAAC,IAAI,CAAC;IAI1E,eAAe,CAAC,YAAY,EAAE,uBAAuB,GAAG,UAAU,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAInG,8BAA8B,CAAC,UAAU,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAI9H,gCAAgC,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAIpI,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,GAAG,UAAU,CAAC,yBAAyB,GAAG,SAAS,CAAC;YAI9E,qBAAqB;CAKpC"}
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-network",
4
- "version": "1.0.9",
4
+ "version": "1.0.10",
5
5
  "description": "XYO Layer One React SDK",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -50,16 +50,16 @@
50
50
  "@xyo-network/archivist-model": "^3.10.4",
51
51
  "@xyo-network/boundwitness-model": "^3.10.4",
52
52
  "@xyo-network/bridge-model": "^3.10.4",
53
- "@xyo-network/chain-model": "^1.0.9",
54
- "@xyo-network/chain-protocol": "^1.0.9",
55
- "@xyo-network/chain-sdk": "^1.0.9",
56
- "@xyo-network/chain-services": "^1.0.9",
53
+ "@xyo-network/chain-model": "^1.0.10",
54
+ "@xyo-network/chain-protocol": "^1.0.10",
55
+ "@xyo-network/chain-sdk": "^1.0.10",
56
+ "@xyo-network/chain-services": "^1.0.10",
57
57
  "@xyo-network/manifest-model": "^3.10.4",
58
58
  "@xyo-network/manifest-wrapper": "^3.10.4",
59
59
  "@xyo-network/node-model": "^3.10.4",
60
60
  "@xyo-network/payload-builder": "^3.10.4",
61
61
  "@xyo-network/payload-model": "^3.10.4",
62
- "@xyo-network/react-chain-shared": "^1.0.9",
62
+ "@xyo-network/react-chain-shared": "^1.0.10",
63
63
  "@xyo-network/react-shared": "^5.0.7"
64
64
  },
65
65
  "devDependencies": {
@@ -23,7 +23,7 @@ export const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({
23
23
  const [error, setError] = useState<Error>()
24
24
 
25
25
  // Set the active network upon initialization
26
- const [, activeNetworkError] = usePromise(async () => {
26
+ const [resolvedActiveNetwork, activeNetworkError] = usePromise(async () => {
27
27
  // ensure networks are loaded
28
28
  if (!networks) return
29
29
  // get last saved active network
@@ -31,17 +31,23 @@ export const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({
31
31
  // ensure the active network saved is found in the list of networks
32
32
  if (activeNetwork && networks?.find(network => network.id === activeNetwork.id)) {
33
33
  // Set the active network if it exists
34
- setActiveNetwork(activeNetwork)
34
+ return activeNetwork
35
35
  } else {
36
36
  // Set the default network if no active network exists
37
37
  const defaultNetwork = networks.find(network => network.id === MainNetwork.id) ?? networks[0]
38
38
  await setActiveNetworkExternal?.(defaultNetwork.id)
39
39
 
40
40
  // Set the active network in the context
41
- setActiveNetwork(defaultNetwork)
41
+ return defaultNetwork
42
42
  }
43
43
  }, [networks])
44
44
 
45
+ useMemo(() => {
46
+ if (resolvedActiveNetwork) {
47
+ setActiveNetwork(resolvedActiveNetwork)
48
+ }
49
+ }, [resolvedActiveNetwork])
50
+
45
51
  const updateActiveNetwork = useCallback((networkId: NetworkBootstrap['id']) => {
46
52
  setError(undefined)
47
53
  const network = networks?.find(network => network.id === networkId)
@@ -8,6 +8,7 @@ import { asArchivistInstance } from '@xyo-network/archivist-model'
8
8
  import type { Signed } from '@xyo-network/boundwitness-model'
9
9
  import type { BridgeInstance } from '@xyo-network/bridge-model'
10
10
  import type {
11
+ ChainInformation,
11
12
  HydratedBlock, SignedHydratedBlock, SignedHydratedTransaction, TransactionBoundWitness, XyoProvider,
12
13
  } from '@xyo-network/chain-model'
13
14
  import { findMostRecentBlock, hydrateBlock } from '@xyo-network/chain-protocol'
@@ -18,6 +19,7 @@ import { PayloadBuilder } from '@xyo-network/payload-builder'
18
19
  export const FINALIZED_ARCHIVIST = 'XYOChain:Chain:Finalized' as const
19
20
 
20
21
  export interface NetworkProviderParams {
22
+ chainInformation?: ChainInformation
21
23
  network: string
22
24
  }
23
25