UNPKG

@xyo-network/react-node

Version:

Common React library for all XYO projects that use React

20 lines (17 loc) 1.04 kB
import { usePromise } from '@xylabs/react-promise' import type { NodeInstance } from '@xyo-network/node-model' import { asNodeInstance } from '@xyo-network/node-model' import { useWeakProvidedNode } from './provided/index.ts' import { useWeakNodeConfigNodeField } from './useWeakNodeConfigNodeField.ts' import type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts' export const useWeakNode = (config?: WeakModuleFromNodeConfig | undefined): [WeakRef<NodeInstance> | undefined, Error | undefined] => { const [nodeAddress, nodeInstance] = useWeakNodeConfigNodeField(config) const [providedNode] = useWeakProvidedNode() const [nodeAddressNode, error] = usePromise(async () => { const providedNodeInstance = providedNode?.deref() if (providedNodeInstance && nodeAddress) { return new WeakRef(asNodeInstance(await providedNodeInstance.resolve(nodeAddress), 'Module is not a node')) } }, [providedNode, nodeAddress]) return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error] }