@xyo-network/react-node 2.68.2 → 2.69.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAwBjE,CAAA"}
1
+ {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsBjE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAwBjE,CAAA"}
1
+ {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsBjE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAwBjE,CAAA"}
1
+ {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsBjE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { ModuleFromNodeConfig } from './ModuleFromNodeConfig';
2
2
  export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) => {
3
- direction: "up" | "down" | "all" | undefined;
3
+ direction: import("@xyo-network/module-model").Direction | undefined;
4
4
  identity: import("@xyo-network/module-model").InstanceTypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xylabs/object").BaseParamsFields & {
5
5
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
6
6
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
@@ -14,8 +14,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
14
14
  schema: "network.xyo.module.config";
15
15
  readonly security?: {
16
16
  readonly allowAnonymous?: boolean | undefined;
17
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
- readonly disallowed?: Record<string, string[]> | undefined;
17
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
19
19
  } | undefined;
20
20
  readonly sign?: boolean | undefined;
21
21
  readonly storeQueries?: boolean | undefined;
@@ -31,8 +31,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
31
31
  schema: "network.xyo.module.config";
32
32
  readonly security?: {
33
33
  readonly allowAnonymous?: boolean | undefined;
34
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
- readonly disallowed?: Record<string, string[]> | undefined;
34
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
36
36
  } | undefined;
37
37
  readonly sign?: boolean | undefined;
38
38
  readonly storeQueries?: boolean | undefined;
@@ -43,6 +43,6 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
43
43
  ephemeralQueryAccountEnabled?: boolean | undefined;
44
44
  }, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
45
45
  maxDepth: number | undefined;
46
- visibility: "all" | "public" | "private" | undefined;
46
+ visibility: import("@xyo-network/module-model").Visibility | undefined;
47
47
  };
48
48
  //# sourceMappingURL=useModuleFilterOptions.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { ModuleFromNodeConfig } from './ModuleFromNodeConfig';
2
2
  export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) => {
3
- direction: "up" | "down" | "all" | undefined;
3
+ direction: import("@xyo-network/module-model").Direction | undefined;
4
4
  identity: import("@xyo-network/module-model").InstanceTypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xylabs/object").BaseParamsFields & {
5
5
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
6
6
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
@@ -14,8 +14,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
14
14
  schema: "network.xyo.module.config";
15
15
  readonly security?: {
16
16
  readonly allowAnonymous?: boolean | undefined;
17
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
- readonly disallowed?: Record<string, string[]> | undefined;
17
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
19
19
  } | undefined;
20
20
  readonly sign?: boolean | undefined;
21
21
  readonly storeQueries?: boolean | undefined;
@@ -31,8 +31,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
31
31
  schema: "network.xyo.module.config";
32
32
  readonly security?: {
33
33
  readonly allowAnonymous?: boolean | undefined;
34
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
- readonly disallowed?: Record<string, string[]> | undefined;
34
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
36
36
  } | undefined;
37
37
  readonly sign?: boolean | undefined;
38
38
  readonly storeQueries?: boolean | undefined;
@@ -43,6 +43,6 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
43
43
  ephemeralQueryAccountEnabled?: boolean | undefined;
44
44
  }, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
45
45
  maxDepth: number | undefined;
46
- visibility: "all" | "public" | "private" | undefined;
46
+ visibility: import("@xyo-network/module-model").Visibility | undefined;
47
47
  };
48
48
  //# sourceMappingURL=useModuleFilterOptions.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { ModuleFromNodeConfig } from './ModuleFromNodeConfig';
2
2
  export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) => {
3
- direction: "up" | "down" | "all" | undefined;
3
+ direction: import("@xyo-network/module-model").Direction | undefined;
4
4
  identity: import("@xyo-network/module-model").InstanceTypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xylabs/object").BaseParamsFields & {
5
5
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
6
6
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
@@ -14,8 +14,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
14
14
  schema: "network.xyo.module.config";
15
15
  readonly security?: {
16
16
  readonly allowAnonymous?: boolean | undefined;
17
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
- readonly disallowed?: Record<string, string[]> | undefined;
17
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
19
19
  } | undefined;
20
20
  readonly sign?: boolean | undefined;
21
21
  readonly storeQueries?: boolean | undefined;
@@ -31,8 +31,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
31
31
  schema: "network.xyo.module.config";
32
32
  readonly security?: {
33
33
  readonly allowAnonymous?: boolean | undefined;
34
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
- readonly disallowed?: Record<string, string[]> | undefined;
34
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
36
36
  } | undefined;
37
37
  readonly sign?: boolean | undefined;
38
38
  readonly storeQueries?: boolean | undefined;
@@ -43,6 +43,6 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
43
43
  ephemeralQueryAccountEnabled?: boolean | undefined;
44
44
  }, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
45
45
  maxDepth: number | undefined;
46
- visibility: "all" | "public" | "private" | undefined;
46
+ visibility: import("@xyo-network/module-model").Visibility | undefined;
47
47
  };
48
48
  //# sourceMappingURL=useModuleFilterOptions.d.ts.map
@@ -170,7 +170,7 @@ var useNodeFromNode = (nameOrAddressOrInstance, config) => {
170
170
  const [module2, error] = useModuleFromNode(nameOrAddressOrInstance, config);
171
171
  const instance = (0, import_node_model2.asNodeInstance)(module2);
172
172
  if (module2 && !instance) {
173
- const error2 = Error(`Resolved module is not a NodeInstance [${module2.config?.schema}:${module2.config?.name}:${module2.address}]`);
173
+ const error2 = new Error(`Resolved module is not a NodeInstance [${module2.config?.schema}:${module2.config?.name}:${module2.address}]`);
174
174
  console.error(error2.message);
175
175
  return [void 0, error2];
176
176
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/components/NodeDescriptionBox.tsx","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/useModuleFilterOptions.ts","../../src/hooks/useModuleFromNode.ts","../../src/hooks/useNode.ts","../../src/hooks/useNodeConfigNodeField.ts","../../src/hooks/useModulesFromNode.ts","../../src/hooks/useNodeDescription.ts","../../src/hooks/useNodeFromNode.tsx","../../src/components/Node.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx"],"sourcesContent":["export * from './components'\nexport * from './hooks'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { useNodeDescription } from '../hooks'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useNodeDescription({ node })\n\n return (\n <FlexCol {...props}>\n <code color={error ? 'red' : undefined}>{error ? error.message : JSON.stringify(description, null, 2)}</code>\n </FlexCol>\n )\n}\n","import { Logger } from '@xylabs/logger'\nimport { ModuleFilterOptions } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const useModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { useContext } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = useContext(NodeContext)\n return [node]\n}\n","import { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const { direction, identity, maxDepth, visibility } = config ?? {}\n return { direction, identity, maxDepth, visibility }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asModuleInstance, isModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig, useModuleFromNodeConfigLogger } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModuleFromNode = (\n nameOrAddressOrInstance?: string | ModuleInstance,\n config?: ModuleFromNodeConfig,\n): [ModuleInstance | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = useModuleFromNodeConfigLogger(config)\n const filterOptions = useModuleFilterOptions(config)\n const [result, setResult] = useState<ModuleInstance | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(asModuleInstance(module))\n }\n })\n node.on('moduleDetached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (isModuleInstance(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(result)\n }\n return result\n }\n logger?.debug('Result: No Node')\n return\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useProvidedNode } from './provided'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField'\n\nexport const useNode = (config?: ModuleFromNodeConfig | undefined): [NodeInstance | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config)\n const [providedNode] = useProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n if (providedNode && nodeAddress) {\n return asNodeInstance(await providedNode.resolve(nodeAddress), 'Module is not a node')\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useNodeConfigNodeField = (config?: ModuleFromNodeConfig | undefined): [string | undefined, NodeInstance | undefined] => {\n const nodeAddress = useMemo(() => (typeof config?.node === 'string' ? config?.node : undefined), [config?.node])\n const nodeInstance = useMemo(() => (typeof config?.node === 'object' ? config?.node : undefined), [config?.node])\n return [nodeAddress, nodeInstance]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleFilter, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModulesFromNode = (filter?: ModuleFilter, config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = useModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n node.on('moduleAttached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n node.on('moduleDetached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n setResult(moduleInstances)\n return moduleInstances\n }\n console.log('Result: No Node')\n return\n }, [node, filter])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescription } from '@xyo-network/module-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useNode } from './useNode'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n return await activeNode?.describe()\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFromNode } from './useModuleFromNode'\n\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(module)\n if (module && !instance) {\n const error = Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n variant?: 'description'\n}\n\nexport const NodeBox: React.FC<NodeBoxProps> = ({ variant, ...props }) => {\n switch (variant) {\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case 'description':\n default: {\n return <NodeDescriptionBox {...props} />\n }\n }\n}\n","import { Close as CloseIcon } from '@mui/icons-material'\nimport { ClickAwayListener, Drawer, DrawerProps, IconButton } from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\n\nimport { useProvidedNode } from '../hooks'\nimport { ModuleDescriptionBox } from './render'\n\nexport interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useProvidedNode()\n\n return (\n <Drawer open={open ?? false} anchor=\"right\" {...props}>\n <ClickAwayListener onClickAway={() => setOpen?.(false)}>\n <FlexGrowCol role=\"presentation\" justifyContent=\"start\" p={2} rowGap={2} minWidth=\"33vw\">\n <FlexRow alignContent=\"start\" justifyContent=\"start\" width=\"100%\">\n <IconButton onClick={() => setOpen?.(false)}>\n <CloseIcon />\n </IconButton>\n </FlexRow>\n <ModuleDescriptionBox module={node} />\n {children}\n </FlexGrowCol>\n </ClickAwayListener>\n </Drawer>\n )\n}\n","import { ChevronRight as ChevronRightIcon, ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { styled, Typography } from '@mui/material'\nimport { TreeView } from '@mui/x-tree-view'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n module?: ModuleInstance | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {module ? (\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule module={module} idRef={idRef} />\n </StyledTreeView>\n </>\n ) : module === null ? (\n <Typography variant=\"h4\">Node loading...</Typography>\n ) : (\n <Typography variant=\"h4\">Node not found</Typography>\n )}\n </>\n )\n}\n\nconst StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({\n height: 'auto',\n maxWidth: 'auto',\n}))\n","import { styled } from '@mui/material'\nimport { TreeItem } from '@mui/x-tree-view'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { MutableRefObject, useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n module: ModuleInstance\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) => {\n const { address, queries } = module ?? {}\n const [childModules, setChildModules] = useState<ModuleInstance[]>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const children = (await module.resolve()).filter((childModule) => childModule.address !== address)\n if (mounted()) {\n setChildModules(children)\n }\n },\n [module, address],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n return (\n <StyledAddressTreeItem nodeId={increment()} label={`address: ${address}`}>\n {queries.map((query, index) => {\n return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0 ? (\n <TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>\n {childModules.map((childModule) => (\n <RenderModule key={childModule.address} module={childModule} idRef={idRef} />\n ))}\n </TreeItem>\n ) : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({\n '& .MuiTreeItem-content': {\n marginBottom: theme.spacing(0.25),\n },\n}))\n"],"mappings":"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","names":["import_react_promise","import_react","import_react","module","result","import_react_promise","import_react","module","moduleInstances","import_react_promise","import_node_model","module","error","import_jsx_runtime","import_icons_material","import_material","import_react_flexbox","import_material","import_x_tree_view","import_react","import_react","import_jsx_runtime","module","import_jsx_runtime","module","ExpandMoreIcon","ChevronRightIcon","import_jsx_runtime","CloseIcon"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/components/NodeDescriptionBox.tsx","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/useModuleFilterOptions.ts","../../src/hooks/useModuleFromNode.ts","../../src/hooks/useNode.ts","../../src/hooks/useNodeConfigNodeField.ts","../../src/hooks/useModulesFromNode.ts","../../src/hooks/useNodeDescription.ts","../../src/hooks/useNodeFromNode.tsx","../../src/components/Node.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx"],"sourcesContent":["export * from './components'\nexport * from './hooks'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { useNodeDescription } from '../hooks'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useNodeDescription({ node })\n\n return (\n <FlexCol {...props}>\n <code color={error ? 'red' : undefined}>{error ? error.message : JSON.stringify(description, null, 2)}</code>\n </FlexCol>\n )\n}\n","import { Logger } from '@xylabs/logger'\nimport { ModuleFilterOptions } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const useModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { useContext } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = useContext(NodeContext)\n return [node]\n}\n","import { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const { direction, identity, maxDepth, visibility } = config ?? {}\n return { direction, identity, maxDepth, visibility }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asModuleInstance, isModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig, useModuleFromNodeConfigLogger } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModuleFromNode = (\n nameOrAddressOrInstance?: string | ModuleInstance,\n config?: ModuleFromNodeConfig,\n): [ModuleInstance | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = useModuleFromNodeConfigLogger(config)\n const filterOptions = useModuleFilterOptions(config)\n const [result, setResult] = useState<ModuleInstance | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(asModuleInstance(module))\n }\n })\n node.on('moduleDetached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (isModuleInstance(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(result)\n }\n return result\n }\n logger?.debug('Result: No Node')\n return\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useProvidedNode } from './provided'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField'\n\nexport const useNode = (config?: ModuleFromNodeConfig | undefined): [NodeInstance | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config)\n const [providedNode] = useProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n if (providedNode && nodeAddress) {\n return asNodeInstance(await providedNode.resolve(nodeAddress), 'Module is not a node')\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useNodeConfigNodeField = (config?: ModuleFromNodeConfig | undefined): [string | undefined, NodeInstance | undefined] => {\n const nodeAddress = useMemo(() => (typeof config?.node === 'string' ? config?.node : undefined), [config?.node])\n const nodeInstance = useMemo(() => (typeof config?.node === 'object' ? config?.node : undefined), [config?.node])\n return [nodeAddress, nodeInstance]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleFilter, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModulesFromNode = (filter?: ModuleFilter, config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = useModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n node.on('moduleAttached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n node.on('moduleDetached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n setResult(moduleInstances)\n return moduleInstances\n }\n console.log('Result: No Node')\n return\n }, [node, filter])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescription } from '@xyo-network/module-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useNode } from './useNode'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n return await activeNode?.describe()\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFromNode } from './useModuleFromNode'\n\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(module)\n if (module && !instance) {\n const error = new Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n variant?: 'description'\n}\n\nexport const NodeBox: React.FC<NodeBoxProps> = ({ variant, ...props }) => {\n switch (variant) {\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case 'description':\n default: {\n return <NodeDescriptionBox {...props} />\n }\n }\n}\n","import { Close as CloseIcon } from '@mui/icons-material'\nimport { ClickAwayListener, Drawer, DrawerProps, IconButton } from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\n\nimport { useProvidedNode } from '../hooks'\nimport { ModuleDescriptionBox } from './render'\n\nexport interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useProvidedNode()\n\n return (\n <Drawer open={open ?? false} anchor=\"right\" {...props}>\n <ClickAwayListener onClickAway={() => setOpen?.(false)}>\n <FlexGrowCol role=\"presentation\" justifyContent=\"start\" p={2} rowGap={2} minWidth=\"33vw\">\n <FlexRow alignContent=\"start\" justifyContent=\"start\" width=\"100%\">\n <IconButton onClick={() => setOpen?.(false)}>\n <CloseIcon />\n </IconButton>\n </FlexRow>\n <ModuleDescriptionBox module={node} />\n {children}\n </FlexGrowCol>\n </ClickAwayListener>\n </Drawer>\n )\n}\n","import { ChevronRight as ChevronRightIcon, ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { styled, Typography } from '@mui/material'\nimport { TreeView } from '@mui/x-tree-view'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n module?: ModuleInstance | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {module ?\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule module={module} idRef={idRef} />\n </StyledTreeView>\n </>\n : module === null ?\n <Typography variant=\"h4\">Node loading...</Typography>\n : <Typography variant=\"h4\">Node not found</Typography>}\n </>\n )\n}\n\nconst StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({\n height: 'auto',\n maxWidth: 'auto',\n}))\n","import { styled } from '@mui/material'\nimport { TreeItem } from '@mui/x-tree-view'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { MutableRefObject, useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n module: ModuleInstance\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) => {\n const { address, queries } = module ?? {}\n const [childModules, setChildModules] = useState<ModuleInstance[]>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const children = (await module.resolve()).filter((childModule) => childModule.address !== address)\n if (mounted()) {\n setChildModules(children)\n }\n },\n [module, address],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n return (\n <StyledAddressTreeItem nodeId={increment()} label={`address: ${address}`}>\n {queries.map((query, index) => {\n return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0 ?\n <TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>\n {childModules.map((childModule) => (\n <RenderModule key={childModule.address} module={childModule} idRef={idRef} />\n ))}\n </TreeItem>\n : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({\n '& .MuiTreeItem-content': {\n marginBottom: theme.spacing(0.25),\n },\n}))\n"],"mappings":"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","names":["import_react_promise","import_react","import_react","module","result","import_react_promise","import_react","module","moduleInstances","import_react_promise","import_node_model","module","error","import_jsx_runtime","import_icons_material","import_material","import_react_flexbox","import_material","import_x_tree_view","import_react","import_react","import_jsx_runtime","module","import_jsx_runtime","module","ExpandMoreIcon","ChevronRightIcon","import_jsx_runtime","CloseIcon"]}
@@ -133,7 +133,7 @@ var useNodeFromNode = (nameOrAddressOrInstance, config) => {
133
133
  const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config);
134
134
  const instance = asNodeInstance2(module);
135
135
  if (module && !instance) {
136
- const error2 = Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`);
136
+ const error2 = new Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`);
137
137
  console.error(error2.message);
138
138
  return [void 0, error2];
139
139
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/NodeDescriptionBox.tsx","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/useModuleFilterOptions.ts","../../src/hooks/useModuleFromNode.ts","../../src/hooks/useNode.ts","../../src/hooks/useNodeConfigNodeField.ts","../../src/hooks/useModulesFromNode.ts","../../src/hooks/useNodeDescription.ts","../../src/hooks/useNodeFromNode.tsx","../../src/components/Node.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx","../../src/index.ts"],"sourcesContent":["import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { useNodeDescription } from '../hooks'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useNodeDescription({ node })\n\n return (\n <FlexCol {...props}>\n <code color={error ? 'red' : undefined}>{error ? error.message : JSON.stringify(description, null, 2)}</code>\n </FlexCol>\n )\n}\n","import { Logger } from '@xylabs/logger'\nimport { ModuleFilterOptions } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const useModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { useContext } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = useContext(NodeContext)\n return [node]\n}\n","import { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const { direction, identity, maxDepth, visibility } = config ?? {}\n return { direction, identity, maxDepth, visibility }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asModuleInstance, isModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig, useModuleFromNodeConfigLogger } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModuleFromNode = (\n nameOrAddressOrInstance?: string | ModuleInstance,\n config?: ModuleFromNodeConfig,\n): [ModuleInstance | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = useModuleFromNodeConfigLogger(config)\n const filterOptions = useModuleFilterOptions(config)\n const [result, setResult] = useState<ModuleInstance | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(asModuleInstance(module))\n }\n })\n node.on('moduleDetached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (isModuleInstance(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(result)\n }\n return result\n }\n logger?.debug('Result: No Node')\n return\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useProvidedNode } from './provided'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField'\n\nexport const useNode = (config?: ModuleFromNodeConfig | undefined): [NodeInstance | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config)\n const [providedNode] = useProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n if (providedNode && nodeAddress) {\n return asNodeInstance(await providedNode.resolve(nodeAddress), 'Module is not a node')\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useNodeConfigNodeField = (config?: ModuleFromNodeConfig | undefined): [string | undefined, NodeInstance | undefined] => {\n const nodeAddress = useMemo(() => (typeof config?.node === 'string' ? config?.node : undefined), [config?.node])\n const nodeInstance = useMemo(() => (typeof config?.node === 'object' ? config?.node : undefined), [config?.node])\n return [nodeAddress, nodeInstance]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleFilter, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModulesFromNode = (filter?: ModuleFilter, config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = useModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n node.on('moduleAttached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n node.on('moduleDetached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n setResult(moduleInstances)\n return moduleInstances\n }\n console.log('Result: No Node')\n return\n }, [node, filter])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescription } from '@xyo-network/module-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useNode } from './useNode'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n return await activeNode?.describe()\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFromNode } from './useModuleFromNode'\n\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(module)\n if (module && !instance) {\n const error = Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n variant?: 'description'\n}\n\nexport const NodeBox: React.FC<NodeBoxProps> = ({ variant, ...props }) => {\n switch (variant) {\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case 'description':\n default: {\n return <NodeDescriptionBox {...props} />\n }\n }\n}\n","import { Close as CloseIcon } from '@mui/icons-material'\nimport { ClickAwayListener, Drawer, DrawerProps, IconButton } from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\n\nimport { useProvidedNode } from '../hooks'\nimport { ModuleDescriptionBox } from './render'\n\nexport interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useProvidedNode()\n\n return (\n <Drawer open={open ?? false} anchor=\"right\" {...props}>\n <ClickAwayListener onClickAway={() => setOpen?.(false)}>\n <FlexGrowCol role=\"presentation\" justifyContent=\"start\" p={2} rowGap={2} minWidth=\"33vw\">\n <FlexRow alignContent=\"start\" justifyContent=\"start\" width=\"100%\">\n <IconButton onClick={() => setOpen?.(false)}>\n <CloseIcon />\n </IconButton>\n </FlexRow>\n <ModuleDescriptionBox module={node} />\n {children}\n </FlexGrowCol>\n </ClickAwayListener>\n </Drawer>\n )\n}\n","import { ChevronRight as ChevronRightIcon, ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { styled, Typography } from '@mui/material'\nimport { TreeView } from '@mui/x-tree-view'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n module?: ModuleInstance | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {module ? (\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule module={module} idRef={idRef} />\n </StyledTreeView>\n </>\n ) : module === null ? (\n <Typography variant=\"h4\">Node loading...</Typography>\n ) : (\n <Typography variant=\"h4\">Node not found</Typography>\n )}\n </>\n )\n}\n\nconst StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({\n height: 'auto',\n maxWidth: 'auto',\n}))\n","import { styled } from '@mui/material'\nimport { TreeItem } from '@mui/x-tree-view'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { MutableRefObject, useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n module: ModuleInstance\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) => {\n const { address, queries } = module ?? {}\n const [childModules, setChildModules] = useState<ModuleInstance[]>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const children = (await module.resolve()).filter((childModule) => childModule.address !== address)\n if (mounted()) {\n setChildModules(children)\n }\n },\n [module, address],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n return (\n <StyledAddressTreeItem nodeId={increment()} label={`address: ${address}`}>\n {queries.map((query, index) => {\n return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0 ? (\n <TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>\n {childModules.map((childModule) => (\n <RenderModule key={childModule.address} module={childModule} idRef={idRef} />\n ))}\n </TreeItem>\n ) : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({\n '& .MuiTreeItem-content': {\n marginBottom: theme.spacing(0.25),\n },\n}))\n","export * from './components'\nexport * from './hooks'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n"],"mappings":"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","names":["usePromise","usePromise","result","usePromise","useState","useState","usePromise","moduleInstances","usePromise","usePromise","asNodeInstance","asNodeInstance","error","jsx","styled","useState","jsx","jsx","jsxs","styled","jsx","jsxs"]}
1
+ {"version":3,"sources":["../../src/components/NodeDescriptionBox.tsx","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/useModuleFilterOptions.ts","../../src/hooks/useModuleFromNode.ts","../../src/hooks/useNode.ts","../../src/hooks/useNodeConfigNodeField.ts","../../src/hooks/useModulesFromNode.ts","../../src/hooks/useNodeDescription.ts","../../src/hooks/useNodeFromNode.tsx","../../src/components/Node.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx","../../src/index.ts"],"sourcesContent":["import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { useNodeDescription } from '../hooks'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useNodeDescription({ node })\n\n return (\n <FlexCol {...props}>\n <code color={error ? 'red' : undefined}>{error ? error.message : JSON.stringify(description, null, 2)}</code>\n </FlexCol>\n )\n}\n","import { Logger } from '@xylabs/logger'\nimport { ModuleFilterOptions } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const useModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { useContext } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = useContext(NodeContext)\n return [node]\n}\n","import { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const { direction, identity, maxDepth, visibility } = config ?? {}\n return { direction, identity, maxDepth, visibility }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asModuleInstance, isModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig, useModuleFromNodeConfigLogger } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModuleFromNode = (\n nameOrAddressOrInstance?: string | ModuleInstance,\n config?: ModuleFromNodeConfig,\n): [ModuleInstance | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = useModuleFromNodeConfigLogger(config)\n const filterOptions = useModuleFilterOptions(config)\n const [result, setResult] = useState<ModuleInstance | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(asModuleInstance(module))\n }\n })\n node.on('moduleDetached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (isModuleInstance(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(result)\n }\n return result\n }\n logger?.debug('Result: No Node')\n return\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useProvidedNode } from './provided'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField'\n\nexport const useNode = (config?: ModuleFromNodeConfig | undefined): [NodeInstance | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config)\n const [providedNode] = useProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n if (providedNode && nodeAddress) {\n return asNodeInstance(await providedNode.resolve(nodeAddress), 'Module is not a node')\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useNodeConfigNodeField = (config?: ModuleFromNodeConfig | undefined): [string | undefined, NodeInstance | undefined] => {\n const nodeAddress = useMemo(() => (typeof config?.node === 'string' ? config?.node : undefined), [config?.node])\n const nodeInstance = useMemo(() => (typeof config?.node === 'object' ? config?.node : undefined), [config?.node])\n return [nodeAddress, nodeInstance]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleFilter, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModulesFromNode = (filter?: ModuleFilter, config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = useModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n node.on('moduleAttached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n node.on('moduleDetached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n setResult(moduleInstances)\n return moduleInstances\n }\n console.log('Result: No Node')\n return\n }, [node, filter])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescription } from '@xyo-network/module-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useNode } from './useNode'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n return await activeNode?.describe()\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFromNode } from './useModuleFromNode'\n\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(module)\n if (module && !instance) {\n const error = new Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n variant?: 'description'\n}\n\nexport const NodeBox: React.FC<NodeBoxProps> = ({ variant, ...props }) => {\n switch (variant) {\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case 'description':\n default: {\n return <NodeDescriptionBox {...props} />\n }\n }\n}\n","import { Close as CloseIcon } from '@mui/icons-material'\nimport { ClickAwayListener, Drawer, DrawerProps, IconButton } from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\n\nimport { useProvidedNode } from '../hooks'\nimport { ModuleDescriptionBox } from './render'\n\nexport interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useProvidedNode()\n\n return (\n <Drawer open={open ?? false} anchor=\"right\" {...props}>\n <ClickAwayListener onClickAway={() => setOpen?.(false)}>\n <FlexGrowCol role=\"presentation\" justifyContent=\"start\" p={2} rowGap={2} minWidth=\"33vw\">\n <FlexRow alignContent=\"start\" justifyContent=\"start\" width=\"100%\">\n <IconButton onClick={() => setOpen?.(false)}>\n <CloseIcon />\n </IconButton>\n </FlexRow>\n <ModuleDescriptionBox module={node} />\n {children}\n </FlexGrowCol>\n </ClickAwayListener>\n </Drawer>\n )\n}\n","import { ChevronRight as ChevronRightIcon, ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { styled, Typography } from '@mui/material'\nimport { TreeView } from '@mui/x-tree-view'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n module?: ModuleInstance | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {module ?\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule module={module} idRef={idRef} />\n </StyledTreeView>\n </>\n : module === null ?\n <Typography variant=\"h4\">Node loading...</Typography>\n : <Typography variant=\"h4\">Node not found</Typography>}\n </>\n )\n}\n\nconst StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({\n height: 'auto',\n maxWidth: 'auto',\n}))\n","import { styled } from '@mui/material'\nimport { TreeItem } from '@mui/x-tree-view'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { MutableRefObject, useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n module: ModuleInstance\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) => {\n const { address, queries } = module ?? {}\n const [childModules, setChildModules] = useState<ModuleInstance[]>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const children = (await module.resolve()).filter((childModule) => childModule.address !== address)\n if (mounted()) {\n setChildModules(children)\n }\n },\n [module, address],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n return (\n <StyledAddressTreeItem nodeId={increment()} label={`address: ${address}`}>\n {queries.map((query, index) => {\n return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0 ?\n <TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>\n {childModules.map((childModule) => (\n <RenderModule key={childModule.address} module={childModule} idRef={idRef} />\n ))}\n </TreeItem>\n : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({\n '& .MuiTreeItem-content': {\n marginBottom: theme.spacing(0.25),\n },\n}))\n","export * from './components'\nexport * from './hooks'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n"],"mappings":"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","names":["usePromise","usePromise","result","usePromise","useState","useState","usePromise","moduleInstances","usePromise","usePromise","asNodeInstance","asNodeInstance","error","jsx","styled","useState","jsx","jsx","jsxs","styled","jsx","jsxs"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAwBjE,CAAA"}
1
+ {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsBjE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAwBjE,CAAA"}
1
+ {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsBjE,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAwBjE,CAAA"}
1
+ {"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;CAC/B;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsBjE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { ModuleFromNodeConfig } from './ModuleFromNodeConfig';
2
2
  export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) => {
3
- direction: "up" | "down" | "all" | undefined;
3
+ direction: import("@xyo-network/module-model").Direction | undefined;
4
4
  identity: import("@xyo-network/module-model").InstanceTypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xylabs/object").BaseParamsFields & {
5
5
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
6
6
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
@@ -14,8 +14,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
14
14
  schema: "network.xyo.module.config";
15
15
  readonly security?: {
16
16
  readonly allowAnonymous?: boolean | undefined;
17
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
- readonly disallowed?: Record<string, string[]> | undefined;
17
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
19
19
  } | undefined;
20
20
  readonly sign?: boolean | undefined;
21
21
  readonly storeQueries?: boolean | undefined;
@@ -31,8 +31,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
31
31
  schema: "network.xyo.module.config";
32
32
  readonly security?: {
33
33
  readonly allowAnonymous?: boolean | undefined;
34
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
- readonly disallowed?: Record<string, string[]> | undefined;
34
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
36
36
  } | undefined;
37
37
  readonly sign?: boolean | undefined;
38
38
  readonly storeQueries?: boolean | undefined;
@@ -43,6 +43,6 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
43
43
  ephemeralQueryAccountEnabled?: boolean | undefined;
44
44
  }, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
45
45
  maxDepth: number | undefined;
46
- visibility: "all" | "public" | "private" | undefined;
46
+ visibility: import("@xyo-network/module-model").Visibility | undefined;
47
47
  };
48
48
  //# sourceMappingURL=useModuleFilterOptions.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { ModuleFromNodeConfig } from './ModuleFromNodeConfig';
2
2
  export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) => {
3
- direction: "up" | "down" | "all" | undefined;
3
+ direction: import("@xyo-network/module-model").Direction | undefined;
4
4
  identity: import("@xyo-network/module-model").InstanceTypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xylabs/object").BaseParamsFields & {
5
5
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
6
6
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
@@ -14,8 +14,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
14
14
  schema: "network.xyo.module.config";
15
15
  readonly security?: {
16
16
  readonly allowAnonymous?: boolean | undefined;
17
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
- readonly disallowed?: Record<string, string[]> | undefined;
17
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
19
19
  } | undefined;
20
20
  readonly sign?: boolean | undefined;
21
21
  readonly storeQueries?: boolean | undefined;
@@ -31,8 +31,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
31
31
  schema: "network.xyo.module.config";
32
32
  readonly security?: {
33
33
  readonly allowAnonymous?: boolean | undefined;
34
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
- readonly disallowed?: Record<string, string[]> | undefined;
34
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
36
36
  } | undefined;
37
37
  readonly sign?: boolean | undefined;
38
38
  readonly storeQueries?: boolean | undefined;
@@ -43,6 +43,6 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
43
43
  ephemeralQueryAccountEnabled?: boolean | undefined;
44
44
  }, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
45
45
  maxDepth: number | undefined;
46
- visibility: "all" | "public" | "private" | undefined;
46
+ visibility: import("@xyo-network/module-model").Visibility | undefined;
47
47
  };
48
48
  //# sourceMappingURL=useModuleFilterOptions.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { ModuleFromNodeConfig } from './ModuleFromNodeConfig';
2
2
  export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) => {
3
- direction: "up" | "down" | "all" | undefined;
3
+ direction: import("@xyo-network/module-model").Direction | undefined;
4
4
  identity: import("@xyo-network/module-model").InstanceTypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xylabs/object").BaseParamsFields & {
5
5
  account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
6
6
  config: import("@xyo-network/payload-model").SchemaFields & object & Omit<{
@@ -14,8 +14,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
14
14
  schema: "network.xyo.module.config";
15
15
  readonly security?: {
16
16
  readonly allowAnonymous?: boolean | undefined;
17
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
- readonly disallowed?: Record<string, string[]> | undefined;
17
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
18
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
19
19
  } | undefined;
20
20
  readonly sign?: boolean | undefined;
21
21
  readonly storeQueries?: boolean | undefined;
@@ -31,8 +31,8 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
31
31
  schema: "network.xyo.module.config";
32
32
  readonly security?: {
33
33
  readonly allowAnonymous?: boolean | undefined;
34
- readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
- readonly disallowed?: Record<string, string[]> | undefined;
34
+ readonly allowed?: Record<string, (Lowercase<string> | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
35
+ readonly disallowed?: Record<string, Lowercase<string>[]> | undefined;
36
36
  } | undefined;
37
37
  readonly sign?: boolean | undefined;
38
38
  readonly storeQueries?: boolean | undefined;
@@ -43,6 +43,6 @@ export declare const useModuleFilterOptions: (config?: ModuleFromNodeConfig) =>
43
43
  ephemeralQueryAccountEnabled?: boolean | undefined;
44
44
  }, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
45
45
  maxDepth: number | undefined;
46
- visibility: "all" | "public" | "private" | undefined;
46
+ visibility: import("@xyo-network/module-model").Visibility | undefined;
47
47
  };
48
48
  //# sourceMappingURL=useModuleFilterOptions.d.ts.map
@@ -173,7 +173,7 @@ var useNodeFromNode = (nameOrAddressOrInstance, config) => {
173
173
  const [module2, error] = useModuleFromNode(nameOrAddressOrInstance, config);
174
174
  const instance = (0, import_node_model2.asNodeInstance)(module2);
175
175
  if (module2 && !instance) {
176
- const error2 = Error(`Resolved module is not a NodeInstance [${(_a = module2.config) == null ? void 0 : _a.schema}:${(_b = module2.config) == null ? void 0 : _b.name}:${module2.address}]`);
176
+ const error2 = new Error(`Resolved module is not a NodeInstance [${(_a = module2.config) == null ? void 0 : _a.schema}:${(_b = module2.config) == null ? void 0 : _b.name}:${module2.address}]`);
177
177
  console.error(error2.message);
178
178
  return [void 0, error2];
179
179
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/components/NodeDescriptionBox.tsx","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/useModuleFilterOptions.ts","../../src/hooks/useModuleFromNode.ts","../../src/hooks/useNode.ts","../../src/hooks/useNodeConfigNodeField.ts","../../src/hooks/useModulesFromNode.ts","../../src/hooks/useNodeDescription.ts","../../src/hooks/useNodeFromNode.tsx","../../src/components/Node.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx"],"sourcesContent":["export * from './components'\nexport * from './hooks'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { useNodeDescription } from '../hooks'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useNodeDescription({ node })\n\n return (\n <FlexCol {...props}>\n <code color={error ? 'red' : undefined}>{error ? error.message : JSON.stringify(description, null, 2)}</code>\n </FlexCol>\n )\n}\n","import { Logger } from '@xylabs/logger'\nimport { ModuleFilterOptions } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const useModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { useContext } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = useContext(NodeContext)\n return [node]\n}\n","import { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const { direction, identity, maxDepth, visibility } = config ?? {}\n return { direction, identity, maxDepth, visibility }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asModuleInstance, isModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig, useModuleFromNodeConfigLogger } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModuleFromNode = (\n nameOrAddressOrInstance?: string | ModuleInstance,\n config?: ModuleFromNodeConfig,\n): [ModuleInstance | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = useModuleFromNodeConfigLogger(config)\n const filterOptions = useModuleFilterOptions(config)\n const [result, setResult] = useState<ModuleInstance | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(asModuleInstance(module))\n }\n })\n node.on('moduleDetached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (isModuleInstance(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(result)\n }\n return result\n }\n logger?.debug('Result: No Node')\n return\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useProvidedNode } from './provided'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField'\n\nexport const useNode = (config?: ModuleFromNodeConfig | undefined): [NodeInstance | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config)\n const [providedNode] = useProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n if (providedNode && nodeAddress) {\n return asNodeInstance(await providedNode.resolve(nodeAddress), 'Module is not a node')\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useNodeConfigNodeField = (config?: ModuleFromNodeConfig | undefined): [string | undefined, NodeInstance | undefined] => {\n const nodeAddress = useMemo(() => (typeof config?.node === 'string' ? config?.node : undefined), [config?.node])\n const nodeInstance = useMemo(() => (typeof config?.node === 'object' ? config?.node : undefined), [config?.node])\n return [nodeAddress, nodeInstance]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleFilter, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModulesFromNode = (filter?: ModuleFilter, config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = useModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n node.on('moduleAttached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n node.on('moduleDetached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n setResult(moduleInstances)\n return moduleInstances\n }\n console.log('Result: No Node')\n return\n }, [node, filter])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescription } from '@xyo-network/module-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useNode } from './useNode'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n return await activeNode?.describe()\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFromNode } from './useModuleFromNode'\n\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(module)\n if (module && !instance) {\n const error = Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n variant?: 'description'\n}\n\nexport const NodeBox: React.FC<NodeBoxProps> = ({ variant, ...props }) => {\n switch (variant) {\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case 'description':\n default: {\n return <NodeDescriptionBox {...props} />\n }\n }\n}\n","import { Close as CloseIcon } from '@mui/icons-material'\nimport { ClickAwayListener, Drawer, DrawerProps, IconButton } from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\n\nimport { useProvidedNode } from '../hooks'\nimport { ModuleDescriptionBox } from './render'\n\nexport interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useProvidedNode()\n\n return (\n <Drawer open={open ?? false} anchor=\"right\" {...props}>\n <ClickAwayListener onClickAway={() => setOpen?.(false)}>\n <FlexGrowCol role=\"presentation\" justifyContent=\"start\" p={2} rowGap={2} minWidth=\"33vw\">\n <FlexRow alignContent=\"start\" justifyContent=\"start\" width=\"100%\">\n <IconButton onClick={() => setOpen?.(false)}>\n <CloseIcon />\n </IconButton>\n </FlexRow>\n <ModuleDescriptionBox module={node} />\n {children}\n </FlexGrowCol>\n </ClickAwayListener>\n </Drawer>\n )\n}\n","import { ChevronRight as ChevronRightIcon, ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { styled, Typography } from '@mui/material'\nimport { TreeView } from '@mui/x-tree-view'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n module?: ModuleInstance | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {module ? (\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule module={module} idRef={idRef} />\n </StyledTreeView>\n </>\n ) : module === null ? (\n <Typography variant=\"h4\">Node loading...</Typography>\n ) : (\n <Typography variant=\"h4\">Node not found</Typography>\n )}\n </>\n )\n}\n\nconst StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({\n height: 'auto',\n maxWidth: 'auto',\n}))\n","import { styled } from '@mui/material'\nimport { TreeItem } from '@mui/x-tree-view'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { MutableRefObject, useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n module: ModuleInstance\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) => {\n const { address, queries } = module ?? {}\n const [childModules, setChildModules] = useState<ModuleInstance[]>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const children = (await module.resolve()).filter((childModule) => childModule.address !== address)\n if (mounted()) {\n setChildModules(children)\n }\n },\n [module, address],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n return (\n <StyledAddressTreeItem nodeId={increment()} label={`address: ${address}`}>\n {queries.map((query, index) => {\n return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0 ? (\n <TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>\n {childModules.map((childModule) => (\n <RenderModule key={childModule.address} module={childModule} idRef={idRef} />\n ))}\n </TreeItem>\n ) : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({\n '& .MuiTreeItem-content': {\n marginBottom: theme.spacing(0.25),\n },\n}))\n"],"mappings":"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","names":["import_react_promise","import_react","import_react","module","result","import_react_promise","import_react","module","moduleInstances","import_react_promise","import_node_model","module","error","import_jsx_runtime","import_icons_material","import_material","import_react_flexbox","import_material","import_x_tree_view","import_react","import_react","import_jsx_runtime","module","import_jsx_runtime","module","ExpandMoreIcon","ChevronRightIcon","import_jsx_runtime","CloseIcon"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/components/NodeDescriptionBox.tsx","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/useModuleFilterOptions.ts","../../src/hooks/useModuleFromNode.ts","../../src/hooks/useNode.ts","../../src/hooks/useNodeConfigNodeField.ts","../../src/hooks/useModulesFromNode.ts","../../src/hooks/useNodeDescription.ts","../../src/hooks/useNodeFromNode.tsx","../../src/components/Node.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx"],"sourcesContent":["export * from './components'\nexport * from './hooks'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { useNodeDescription } from '../hooks'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useNodeDescription({ node })\n\n return (\n <FlexCol {...props}>\n <code color={error ? 'red' : undefined}>{error ? error.message : JSON.stringify(description, null, 2)}</code>\n </FlexCol>\n )\n}\n","import { Logger } from '@xylabs/logger'\nimport { ModuleFilterOptions } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const useModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { useContext } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = useContext(NodeContext)\n return [node]\n}\n","import { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const { direction, identity, maxDepth, visibility } = config ?? {}\n return { direction, identity, maxDepth, visibility }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asModuleInstance, isModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig, useModuleFromNodeConfigLogger } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModuleFromNode = (\n nameOrAddressOrInstance?: string | ModuleInstance,\n config?: ModuleFromNodeConfig,\n): [ModuleInstance | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = useModuleFromNodeConfigLogger(config)\n const filterOptions = useModuleFilterOptions(config)\n const [result, setResult] = useState<ModuleInstance | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(asModuleInstance(module))\n }\n })\n node.on('moduleDetached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (isModuleInstance(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(result)\n }\n return result\n }\n logger?.debug('Result: No Node')\n return\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useProvidedNode } from './provided'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField'\n\nexport const useNode = (config?: ModuleFromNodeConfig | undefined): [NodeInstance | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config)\n const [providedNode] = useProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n if (providedNode && nodeAddress) {\n return asNodeInstance(await providedNode.resolve(nodeAddress), 'Module is not a node')\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useNodeConfigNodeField = (config?: ModuleFromNodeConfig | undefined): [string | undefined, NodeInstance | undefined] => {\n const nodeAddress = useMemo(() => (typeof config?.node === 'string' ? config?.node : undefined), [config?.node])\n const nodeInstance = useMemo(() => (typeof config?.node === 'object' ? config?.node : undefined), [config?.node])\n return [nodeAddress, nodeInstance]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleFilter, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModulesFromNode = (filter?: ModuleFilter, config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = useModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n node.on('moduleAttached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n node.on('moduleDetached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n setResult(moduleInstances)\n return moduleInstances\n }\n console.log('Result: No Node')\n return\n }, [node, filter])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescription } from '@xyo-network/module-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useNode } from './useNode'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n return await activeNode?.describe()\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFromNode } from './useModuleFromNode'\n\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(module)\n if (module && !instance) {\n const error = new Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n variant?: 'description'\n}\n\nexport const NodeBox: React.FC<NodeBoxProps> = ({ variant, ...props }) => {\n switch (variant) {\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case 'description':\n default: {\n return <NodeDescriptionBox {...props} />\n }\n }\n}\n","import { Close as CloseIcon } from '@mui/icons-material'\nimport { ClickAwayListener, Drawer, DrawerProps, IconButton } from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\n\nimport { useProvidedNode } from '../hooks'\nimport { ModuleDescriptionBox } from './render'\n\nexport interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useProvidedNode()\n\n return (\n <Drawer open={open ?? false} anchor=\"right\" {...props}>\n <ClickAwayListener onClickAway={() => setOpen?.(false)}>\n <FlexGrowCol role=\"presentation\" justifyContent=\"start\" p={2} rowGap={2} minWidth=\"33vw\">\n <FlexRow alignContent=\"start\" justifyContent=\"start\" width=\"100%\">\n <IconButton onClick={() => setOpen?.(false)}>\n <CloseIcon />\n </IconButton>\n </FlexRow>\n <ModuleDescriptionBox module={node} />\n {children}\n </FlexGrowCol>\n </ClickAwayListener>\n </Drawer>\n )\n}\n","import { ChevronRight as ChevronRightIcon, ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { styled, Typography } from '@mui/material'\nimport { TreeView } from '@mui/x-tree-view'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n module?: ModuleInstance | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {module ?\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule module={module} idRef={idRef} />\n </StyledTreeView>\n </>\n : module === null ?\n <Typography variant=\"h4\">Node loading...</Typography>\n : <Typography variant=\"h4\">Node not found</Typography>}\n </>\n )\n}\n\nconst StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({\n height: 'auto',\n maxWidth: 'auto',\n}))\n","import { styled } from '@mui/material'\nimport { TreeItem } from '@mui/x-tree-view'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { MutableRefObject, useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n module: ModuleInstance\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) => {\n const { address, queries } = module ?? {}\n const [childModules, setChildModules] = useState<ModuleInstance[]>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const children = (await module.resolve()).filter((childModule) => childModule.address !== address)\n if (mounted()) {\n setChildModules(children)\n }\n },\n [module, address],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n return (\n <StyledAddressTreeItem nodeId={increment()} label={`address: ${address}`}>\n {queries.map((query, index) => {\n return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0 ?\n <TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>\n {childModules.map((childModule) => (\n <RenderModule key={childModule.address} module={childModule} idRef={idRef} />\n ))}\n </TreeItem>\n : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({\n '& .MuiTreeItem-content': {\n marginBottom: theme.spacing(0.25),\n },\n}))\n"],"mappings":"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","names":["import_react_promise","import_react","import_react","module","result","import_react_promise","import_react","module","moduleInstances","import_react_promise","import_node_model","module","error","import_jsx_runtime","import_icons_material","import_material","import_react_flexbox","import_material","import_x_tree_view","import_react","import_react","import_jsx_runtime","module","import_jsx_runtime","module","ExpandMoreIcon","ChevronRightIcon","import_jsx_runtime","CloseIcon"]}
@@ -136,7 +136,7 @@ var useNodeFromNode = (nameOrAddressOrInstance, config) => {
136
136
  const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config);
137
137
  const instance = asNodeInstance2(module);
138
138
  if (module && !instance) {
139
- const error2 = Error(`Resolved module is not a NodeInstance [${(_a = module.config) == null ? void 0 : _a.schema}:${(_b = module.config) == null ? void 0 : _b.name}:${module.address}]`);
139
+ const error2 = new Error(`Resolved module is not a NodeInstance [${(_a = module.config) == null ? void 0 : _a.schema}:${(_b = module.config) == null ? void 0 : _b.name}:${module.address}]`);
140
140
  console.error(error2.message);
141
141
  return [void 0, error2];
142
142
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/NodeDescriptionBox.tsx","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/useModuleFilterOptions.ts","../../src/hooks/useModuleFromNode.ts","../../src/hooks/useNode.ts","../../src/hooks/useNodeConfigNodeField.ts","../../src/hooks/useModulesFromNode.ts","../../src/hooks/useNodeDescription.ts","../../src/hooks/useNodeFromNode.tsx","../../src/components/Node.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx","../../src/index.ts"],"sourcesContent":["import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { useNodeDescription } from '../hooks'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useNodeDescription({ node })\n\n return (\n <FlexCol {...props}>\n <code color={error ? 'red' : undefined}>{error ? error.message : JSON.stringify(description, null, 2)}</code>\n </FlexCol>\n )\n}\n","import { Logger } from '@xylabs/logger'\nimport { ModuleFilterOptions } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const useModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { useContext } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = useContext(NodeContext)\n return [node]\n}\n","import { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const { direction, identity, maxDepth, visibility } = config ?? {}\n return { direction, identity, maxDepth, visibility }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asModuleInstance, isModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig, useModuleFromNodeConfigLogger } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModuleFromNode = (\n nameOrAddressOrInstance?: string | ModuleInstance,\n config?: ModuleFromNodeConfig,\n): [ModuleInstance | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = useModuleFromNodeConfigLogger(config)\n const filterOptions = useModuleFilterOptions(config)\n const [result, setResult] = useState<ModuleInstance | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(asModuleInstance(module))\n }\n })\n node.on('moduleDetached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (isModuleInstance(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(result)\n }\n return result\n }\n logger?.debug('Result: No Node')\n return\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useProvidedNode } from './provided'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField'\n\nexport const useNode = (config?: ModuleFromNodeConfig | undefined): [NodeInstance | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config)\n const [providedNode] = useProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n if (providedNode && nodeAddress) {\n return asNodeInstance(await providedNode.resolve(nodeAddress), 'Module is not a node')\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useNodeConfigNodeField = (config?: ModuleFromNodeConfig | undefined): [string | undefined, NodeInstance | undefined] => {\n const nodeAddress = useMemo(() => (typeof config?.node === 'string' ? config?.node : undefined), [config?.node])\n const nodeInstance = useMemo(() => (typeof config?.node === 'object' ? config?.node : undefined), [config?.node])\n return [nodeAddress, nodeInstance]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleFilter, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModulesFromNode = (filter?: ModuleFilter, config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = useModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n node.on('moduleAttached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n node.on('moduleDetached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n setResult(moduleInstances)\n return moduleInstances\n }\n console.log('Result: No Node')\n return\n }, [node, filter])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescription } from '@xyo-network/module-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useNode } from './useNode'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n return await activeNode?.describe()\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFromNode } from './useModuleFromNode'\n\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(module)\n if (module && !instance) {\n const error = Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n variant?: 'description'\n}\n\nexport const NodeBox: React.FC<NodeBoxProps> = ({ variant, ...props }) => {\n switch (variant) {\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case 'description':\n default: {\n return <NodeDescriptionBox {...props} />\n }\n }\n}\n","import { Close as CloseIcon } from '@mui/icons-material'\nimport { ClickAwayListener, Drawer, DrawerProps, IconButton } from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\n\nimport { useProvidedNode } from '../hooks'\nimport { ModuleDescriptionBox } from './render'\n\nexport interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useProvidedNode()\n\n return (\n <Drawer open={open ?? false} anchor=\"right\" {...props}>\n <ClickAwayListener onClickAway={() => setOpen?.(false)}>\n <FlexGrowCol role=\"presentation\" justifyContent=\"start\" p={2} rowGap={2} minWidth=\"33vw\">\n <FlexRow alignContent=\"start\" justifyContent=\"start\" width=\"100%\">\n <IconButton onClick={() => setOpen?.(false)}>\n <CloseIcon />\n </IconButton>\n </FlexRow>\n <ModuleDescriptionBox module={node} />\n {children}\n </FlexGrowCol>\n </ClickAwayListener>\n </Drawer>\n )\n}\n","import { ChevronRight as ChevronRightIcon, ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { styled, Typography } from '@mui/material'\nimport { TreeView } from '@mui/x-tree-view'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n module?: ModuleInstance | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {module ? (\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule module={module} idRef={idRef} />\n </StyledTreeView>\n </>\n ) : module === null ? (\n <Typography variant=\"h4\">Node loading...</Typography>\n ) : (\n <Typography variant=\"h4\">Node not found</Typography>\n )}\n </>\n )\n}\n\nconst StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({\n height: 'auto',\n maxWidth: 'auto',\n}))\n","import { styled } from '@mui/material'\nimport { TreeItem } from '@mui/x-tree-view'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { MutableRefObject, useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n module: ModuleInstance\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) => {\n const { address, queries } = module ?? {}\n const [childModules, setChildModules] = useState<ModuleInstance[]>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const children = (await module.resolve()).filter((childModule) => childModule.address !== address)\n if (mounted()) {\n setChildModules(children)\n }\n },\n [module, address],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n return (\n <StyledAddressTreeItem nodeId={increment()} label={`address: ${address}`}>\n {queries.map((query, index) => {\n return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0 ? (\n <TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>\n {childModules.map((childModule) => (\n <RenderModule key={childModule.address} module={childModule} idRef={idRef} />\n ))}\n </TreeItem>\n ) : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({\n '& .MuiTreeItem-content': {\n marginBottom: theme.spacing(0.25),\n },\n}))\n","export * from './components'\nexport * from './hooks'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n"],"mappings":"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","names":["usePromise","usePromise","result","usePromise","useState","useState","usePromise","moduleInstances","usePromise","usePromise","asNodeInstance","asNodeInstance","error","jsx","styled","useState","jsx","jsx","jsxs","styled","jsx","jsxs"]}
1
+ {"version":3,"sources":["../../src/components/NodeDescriptionBox.tsx","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/useModuleFilterOptions.ts","../../src/hooks/useModuleFromNode.ts","../../src/hooks/useNode.ts","../../src/hooks/useNodeConfigNodeField.ts","../../src/hooks/useModulesFromNode.ts","../../src/hooks/useNodeDescription.ts","../../src/hooks/useNodeFromNode.tsx","../../src/components/Node.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx","../../src/index.ts"],"sourcesContent":["import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { useNodeDescription } from '../hooks'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useNodeDescription({ node })\n\n return (\n <FlexCol {...props}>\n <code color={error ? 'red' : undefined}>{error ? error.message : JSON.stringify(description, null, 2)}</code>\n </FlexCol>\n )\n}\n","import { Logger } from '@xylabs/logger'\nimport { ModuleFilterOptions } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const useModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { useContext } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = useContext(NodeContext)\n return [node]\n}\n","import { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const { direction, identity, maxDepth, visibility } = config ?? {}\n return { direction, identity, maxDepth, visibility }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asModuleInstance, isModuleInstance, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig, useModuleFromNodeConfigLogger } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModuleFromNode = (\n nameOrAddressOrInstance?: string | ModuleInstance,\n config?: ModuleFromNodeConfig,\n): [ModuleInstance | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = useModuleFromNodeConfigLogger(config)\n const filterOptions = useModuleFilterOptions(config)\n const [result, setResult] = useState<ModuleInstance | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(asModuleInstance(module))\n }\n })\n node.on('moduleDetached', ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n if (module.address === nameOrAddressOrInstance || module.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (isModuleInstance(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(result)\n }\n return result\n }\n logger?.debug('Result: No Node')\n return\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useProvidedNode } from './provided'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField'\n\nexport const useNode = (config?: ModuleFromNodeConfig | undefined): [NodeInstance | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config)\n const [providedNode] = useProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n if (providedNode && nodeAddress) {\n return asNodeInstance(await providedNode.resolve(nodeAddress), 'Module is not a node')\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\n\nexport const useNodeConfigNodeField = (config?: ModuleFromNodeConfig | undefined): [string | undefined, NodeInstance | undefined] => {\n const nodeAddress = useMemo(() => (typeof config?.node === 'string' ? config?.node : undefined), [config?.node])\n const nodeInstance = useMemo(() => (typeof config?.node === 'object' ? config?.node : undefined), [config?.node])\n return [nodeAddress, nodeInstance]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleFilter, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFilterOptions } from './useModuleFilterOptions'\nimport { useNode } from './useNode'\n\nexport const useModulesFromNode = (filter?: ModuleFilter, config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = useModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n node.on('moduleAttached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n node.on('moduleDetached', async ({ module }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n })\n const moduleInstances = await node.resolve(filter, filterOptions)\n setResult(moduleInstances)\n setResult(moduleInstances)\n return moduleInstances\n }\n console.log('Result: No Node')\n return\n }, [node, filter])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescription } from '@xyo-network/module-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useNode } from './useNode'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n return await activeNode?.describe()\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import { asNodeInstance, NodeInstance } from '@xyo-network/node-model'\n\nimport { ModuleFromNodeConfig } from './ModuleFromNodeConfig'\nimport { useModuleFromNode } from './useModuleFromNode'\n\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(module)\n if (module && !instance) {\n const error = new Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | NodeInstance\n variant?: 'description'\n}\n\nexport const NodeBox: React.FC<NodeBoxProps> = ({ variant, ...props }) => {\n switch (variant) {\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case 'description':\n default: {\n return <NodeDescriptionBox {...props} />\n }\n }\n}\n","import { Close as CloseIcon } from '@mui/icons-material'\nimport { ClickAwayListener, Drawer, DrawerProps, IconButton } from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { WithChildren } from '@xylabs/react-shared'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\n\nimport { useProvidedNode } from '../hooks'\nimport { ModuleDescriptionBox } from './render'\n\nexport interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useProvidedNode()\n\n return (\n <Drawer open={open ?? false} anchor=\"right\" {...props}>\n <ClickAwayListener onClickAway={() => setOpen?.(false)}>\n <FlexGrowCol role=\"presentation\" justifyContent=\"start\" p={2} rowGap={2} minWidth=\"33vw\">\n <FlexRow alignContent=\"start\" justifyContent=\"start\" width=\"100%\">\n <IconButton onClick={() => setOpen?.(false)}>\n <CloseIcon />\n </IconButton>\n </FlexRow>\n <ModuleDescriptionBox module={node} />\n {children}\n </FlexGrowCol>\n </ClickAwayListener>\n </Drawer>\n )\n}\n","import { ChevronRight as ChevronRightIcon, ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { styled, Typography } from '@mui/material'\nimport { TreeView } from '@mui/x-tree-view'\nimport { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n module?: ModuleInstance | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {module ?\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n defaultCollapseIcon={<ExpandMoreIcon />}\n defaultExpandIcon={<ChevronRightIcon />}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule module={module} idRef={idRef} />\n </StyledTreeView>\n </>\n : module === null ?\n <Typography variant=\"h4\">Node loading...</Typography>\n : <Typography variant=\"h4\">Node not found</Typography>}\n </>\n )\n}\n\nconst StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({\n height: 'auto',\n maxWidth: 'auto',\n}))\n","import { styled } from '@mui/material'\nimport { TreeItem } from '@mui/x-tree-view'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { MutableRefObject, useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n module: ModuleInstance\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) => {\n const { address, queries } = module ?? {}\n const [childModules, setChildModules] = useState<ModuleInstance[]>()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async (mounted) => {\n const children = (await module.resolve()).filter((childModule) => childModule.address !== address)\n if (mounted()) {\n setChildModules(children)\n }\n },\n [module, address],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n return (\n <StyledAddressTreeItem nodeId={increment()} label={`address: ${address}`}>\n {queries.map((query, index) => {\n return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0 ?\n <TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>\n {childModules.map((childModule) => (\n <RenderModule key={childModule.address} module={childModule} idRef={idRef} />\n ))}\n </TreeItem>\n : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({\n '& .MuiTreeItem-content': {\n marginBottom: theme.spacing(0.25),\n },\n}))\n","export * from './components'\nexport * from './hooks'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n"],"mappings":"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","names":["usePromise","usePromise","result","usePromise","useState","useState","usePromise","moduleInstances","usePromise","usePromise","asNodeInstance","asNodeInstance","error","jsx","styled","useState","jsx","jsx","jsxs","styled","jsx","jsxs"]}
package/package.json CHANGED
@@ -14,26 +14,26 @@
14
14
  "@emotion/styled": "^11.11.0",
15
15
  "@mui/system": "^5.15.9",
16
16
  "@mui/x-tree-view": "^6.17.0",
17
- "@xylabs/logger": "^2.14.2",
18
- "@xylabs/react-async-effect": "^3.0.39",
19
- "@xylabs/react-flexbox": "^3.0.39",
20
- "@xylabs/react-promise": "^3.0.39",
21
- "@xylabs/react-shared": "^3.0.39",
22
- "@xyo-network/module-abstract": "^2.90.18",
23
- "@xyo-network/module-model": "^2.90.18",
24
- "@xyo-network/node-model": "^2.90.18",
25
- "@xyo-network/payload-model": "^2.90.18",
26
- "@xyo-network/react-node-context": "~2.68.2",
27
- "@xyo-network/react-node-provider": "~2.68.2"
17
+ "@xylabs/logger": "^3.0.1",
18
+ "@xylabs/react-async-effect": "^3.1.0",
19
+ "@xylabs/react-flexbox": "^3.1.0",
20
+ "@xylabs/react-promise": "^3.1.0",
21
+ "@xylabs/react-shared": "^3.1.0",
22
+ "@xyo-network/module-abstract": "^2.91.0",
23
+ "@xyo-network/module-model": "^2.91.0",
24
+ "@xyo-network/node-model": "^2.91.0",
25
+ "@xyo-network/payload-model": "^2.91.0",
26
+ "@xyo-network/react-node-context": "~2.69.0",
27
+ "@xyo-network/react-node-provider": "~2.69.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@storybook/react": "^7.6.16",
31
- "@xylabs/ts-scripts-yarn3": "^3.2.42",
32
- "@xylabs/tsconfig-react": "^3.2.42",
33
- "@xyo-network/node-memory": "^2.90.18",
34
- "@xyo-network/payload-model": "^2.90.18",
35
- "@xyo-network/react-storybook": "~2.68.2",
36
- "@xyo-network/react-wallet": "~2.68.2",
31
+ "@xylabs/ts-scripts-yarn3": "^3.4.1",
32
+ "@xylabs/tsconfig-react": "^3.4.1",
33
+ "@xyo-network/node-memory": "^2.91.0",
34
+ "@xyo-network/payload-model": "^2.91.0",
35
+ "@xyo-network/react-storybook": "~2.69.0",
36
+ "@xyo-network/react-wallet": "~2.69.0",
37
37
  "typescript": "^5.3.3"
38
38
  },
39
39
  "peerDependencies": {
@@ -94,6 +94,6 @@
94
94
  },
95
95
  "sideEffects": false,
96
96
  "types": "dist/browser/index.d.ts",
97
- "version": "2.68.2",
97
+ "version": "2.69.0",
98
98
  "type": "module"
99
99
  }
@@ -15,7 +15,7 @@ export const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module
15
15
 
16
16
  return (
17
17
  <>
18
- {module ? (
18
+ {module ?
19
19
  <>
20
20
  <Typography variant="h4">Node Configuration</Typography>
21
21
  <StyledTreeView
@@ -27,11 +27,9 @@ export const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ module
27
27
  <RenderModule module={module} idRef={idRef} />
28
28
  </StyledTreeView>
29
29
  </>
30
- ) : module === null ? (
30
+ : module === null ?
31
31
  <Typography variant="h4">Node loading...</Typography>
32
- ) : (
33
- <Typography variant="h4">Node not found</Typography>
34
- )}
32
+ : <Typography variant="h4">Node not found</Typography>}
35
33
  </>
36
34
  )
37
35
  }
@@ -38,13 +38,13 @@ export const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) =>
38
38
  {queries.map((query, index) => {
39
39
  return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />
40
40
  })}
41
- {childModules && childModules.length > 0 ? (
41
+ {childModules && childModules.length > 0 ?
42
42
  <TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>
43
43
  {childModules.map((childModule) => (
44
44
  <RenderModule key={childModule.address} module={childModule} idRef={idRef} />
45
45
  ))}
46
46
  </TreeItem>
47
- ) : null}
47
+ : null}
48
48
  </StyledAddressTreeItem>
49
49
  )
50
50
  }
@@ -10,7 +10,7 @@ export const useNodeFromNode = (
10
10
  const [module, error] = useModuleFromNode(nameOrAddressOrInstance, config)
11
11
  const instance = asNodeInstance(module)
12
12
  if (module && !instance) {
13
- const error = Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)
13
+ const error = new Error(`Resolved module is not a NodeInstance [${module.config?.schema}:${module.config?.name}:${module.address}]`)
14
14
  console.error(error.message)
15
15
  return [undefined, error]
16
16
  }
@@ -9,8 +9,8 @@ export const useNodesFromNode = (filter?: ModuleFilter, config?: ModuleFromNodeC
9
9
  if (error) {
10
10
  return [null, error]
11
11
  }
12
- return modules
13
- ? [
12
+ return modules ?
13
+ [
14
14
  // eslint-disable-next-line unicorn/no-array-reduce
15
15
  modules.reduce<NodeInstance[]>((prev, module) => {
16
16
  if (isNodeInstance(module)) {