@xyo-network/react-node 7.4.2 → 7.5.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.
- package/dist/browser/components/Node.stories.d.ts +2 -2
- package/dist/browser/components/Node.stories.d.ts.map +1 -1
- package/dist/browser/components/NodeDrawer.stories.d.ts +1 -1
- package/dist/browser/components/NodeDrawer.stories.d.ts.map +1 -1
- package/dist/browser/components/TestModule.d.ts +5 -3
- package/dist/browser/components/TestModule.d.ts.map +1 -1
- package/dist/browser/hooks/getModuleFilterOptions.d.ts +1 -1
- package/dist/browser/hooks/getWeakModuleFilterOptions.d.ts +1 -1
- package/dist/browser/index.mjs +280 -152
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +33 -33
- package/src/components/TestModule.ts +5 -3
- package/src/hooks/useModuleFromNode.ts +1 -1
- package/src/hooks/useWeakModuleFromNode.ts +1 -1
- package/src/hooks/useWeakNode.ts +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Meta } from '@storybook/react-vite';
|
|
2
2
|
declare const _default: Meta;
|
|
3
3
|
export default _default;
|
|
4
|
-
declare const Default: import("
|
|
5
|
-
declare const WithModules: import("
|
|
4
|
+
declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, {}>;
|
|
5
|
+
declare const WithModules: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, {}>;
|
|
6
6
|
export { Default, WithModules };
|
|
7
7
|
//# sourceMappingURL=Node.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Node.stories.d.ts","sourceRoot":"","sources":["../../../src/components/Node.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACC,IAAI,EAChB,MAAM,uBAAuB,CAAA;wBA2BsB,IAAI;AAAxD,wBAAwD;AA8BxD,QAAA,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"Node.stories.d.ts","sourceRoot":"","sources":["../../../src/components/Node.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACC,IAAI,EAChB,MAAM,uBAAuB,CAAA;wBA2BsB,IAAI;AAAxD,wBAAwD;AA8BxD,QAAA,MAAM,OAAO,iGAAoB,CAAA;AAGjC,QAAA,MAAM,WAAW,iGAAoB,CAAA;AAIrC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Meta } from '@storybook/react-vite';
|
|
2
2
|
import { NodeDrawer } from './NodeDrawer.tsx';
|
|
3
3
|
declare const StorybookEntry: Meta<typeof NodeDrawer>;
|
|
4
|
-
declare const Default: import("
|
|
4
|
+
declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, import("./NodeDrawer.tsx").NodeDrawerProps>;
|
|
5
5
|
export { Default };
|
|
6
6
|
export default StorybookEntry;
|
|
7
7
|
//# sourceMappingURL=NodeDrawer.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeDrawer.stories.d.ts","sourceRoot":"","sources":["../../../src/components/NodeDrawer.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACC,IAAI,EAChB,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAU7C,QAAA,MAAM,cAAc,EAIf,IAAI,CAAC,OAAO,UAAU,CAAC,CAAA;AAc5B,QAAA,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"NodeDrawer.stories.d.ts","sourceRoot":"","sources":["../../../src/components/NodeDrawer.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACC,IAAI,EAChB,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAU7C,QAAA,MAAM,cAAc,EAIf,IAAI,CAAC,OAAO,UAAU,CAAC,CAAA;AAc5B,QAAA,MAAM,OAAO,yIAAoB,CAAA;AAGjC,OAAO,EAAE,OAAO,EAAE,CAAA;AAElB,eAAe,cAAc,CAAA"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { AbstractModuleInstance } from '@xyo-network/module-abstract';
|
|
2
2
|
import type { ModuleConfig, ModuleParams } from '@xyo-network/module-model';
|
|
3
|
-
import type
|
|
4
|
-
export
|
|
5
|
-
|
|
3
|
+
import { type Query, type Schema } from '@xyo-network/payload-model';
|
|
4
|
+
export declare const TestModuleConfigSchema: "network.xyo.test.module" & {
|
|
5
|
+
readonly __schema: true;
|
|
6
|
+
};
|
|
7
|
+
export type TestModuleConfigSchema = typeof TestModuleConfigSchema;
|
|
6
8
|
export declare class TestModule extends AbstractModuleInstance<ModuleParams<ModuleConfig<{
|
|
7
9
|
schema: TestModuleConfigSchema;
|
|
8
10
|
}>>> {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestModule.d.ts","sourceRoot":"","sources":["../../../src/components/TestModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,KAAK,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"TestModule.d.ts","sourceRoot":"","sources":["../../../src/components/TestModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EACK,KAAK,KAAK,EAAE,KAAK,MAAM,EAClC,MAAM,4BAA4B,CAAA;AAEnC,eAAO,MAAM,sBAAsB;;CAA4C,CAAA;AAC/E,MAAM,MAAM,sBAAsB,GAAG,OAAO,sBAAsB,CAAA;AAElE,qBAAa,UAAW,SAAQ,sBAAsB,CAAC,YAAY,CAAC,YAAY,CAAC;IAAE,MAAM,EAAE,sBAAsB,CAAA;CAAE,CAAC,CAAC,CAAC;IACpH,gBAAyB,aAAa,EAAE,MAAM,EAAE,CAAmD;IACnG,gBAAyB,mBAAmB,EAAE,MAAM,CAAyB;IAC7E,IAAI,kBAAkB,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAExD;CACF;AAED,eAAO,MAAM,IAAI,qBAEhB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts';
|
|
2
2
|
export declare const getModuleFilterOptions: (config?: ModuleFromNodeConfig) => {
|
|
3
3
|
direction: import("@xyo-network/module-model").Direction | undefined;
|
|
4
|
-
identity: import("@xylabs/object").TypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xyo-network/module-model").ModuleParams<import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model").ModuleConfig>>, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
|
|
4
|
+
identity: import("@xylabs/object-model").TypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xyo-network/module-model").ModuleParams<import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model").ModuleConfig>>, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
|
|
5
5
|
maxDepth: number | undefined;
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=getModuleFilterOptions.d.ts.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts';
|
|
2
2
|
export declare const getWeakModuleFilterOptions: (config?: WeakModuleFromNodeConfig) => {
|
|
3
3
|
direction: import("@xyo-network/module-model").Direction | undefined;
|
|
4
|
-
identity: import("@xylabs/object").TypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xyo-network/module-model").ModuleParams<import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model").ModuleConfig>>, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
|
|
4
|
+
identity: import("@xylabs/object-model").TypeCheck<import("@xyo-network/module-model").ModuleInstance<import("@xyo-network/module-model").ModuleParams<import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/module-model").ModuleConfig>>, import("@xyo-network/module-model").ModuleEventData<object>>> | undefined;
|
|
5
5
|
maxDepth: number | undefined;
|
|
6
6
|
};
|
|
7
7
|
//# sourceMappingURL=getWeakModuleFilterOptions.d.ts.map
|
package/dist/browser/index.mjs
CHANGED
|
@@ -1,55 +1,60 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
4
|
+
// src/components/Node.tsx
|
|
5
|
+
import React2 from "react";
|
|
6
|
+
|
|
1
7
|
// src/components/NodeDescriptionBox.tsx
|
|
2
8
|
import { FlexCol } from "@xylabs/react-flexbox";
|
|
9
|
+
import React from "react";
|
|
3
10
|
|
|
4
11
|
// src/hooks/getModuleFilterOptions.ts
|
|
5
|
-
var getModuleFilterOptions = (config) => {
|
|
6
|
-
const {
|
|
7
|
-
direction,
|
|
8
|
-
identity,
|
|
9
|
-
maxDepth
|
|
10
|
-
} = config ?? {};
|
|
12
|
+
var getModuleFilterOptions = /* @__PURE__ */ __name((config) => {
|
|
13
|
+
const { direction, identity, maxDepth } = config ?? {};
|
|
11
14
|
return {
|
|
12
15
|
direction,
|
|
13
16
|
identity,
|
|
14
17
|
maxDepth
|
|
15
18
|
};
|
|
16
|
-
};
|
|
19
|
+
}, "getModuleFilterOptions");
|
|
17
20
|
|
|
18
21
|
// src/hooks/getWeakModuleFilterOptions.ts
|
|
19
|
-
var getWeakModuleFilterOptions = (config) => {
|
|
20
|
-
const {
|
|
21
|
-
direction,
|
|
22
|
-
identity,
|
|
23
|
-
maxDepth
|
|
24
|
-
} = config ?? {};
|
|
22
|
+
var getWeakModuleFilterOptions = /* @__PURE__ */ __name((config) => {
|
|
23
|
+
const { direction, identity, maxDepth } = config ?? {};
|
|
25
24
|
return {
|
|
26
25
|
direction,
|
|
27
26
|
identity,
|
|
28
27
|
maxDepth
|
|
29
28
|
};
|
|
30
|
-
};
|
|
29
|
+
}, "getWeakModuleFilterOptions");
|
|
31
30
|
|
|
32
31
|
// src/hooks/ModuleFromNodeConfig.ts
|
|
33
|
-
var getModuleFromNodeConfigLogger = (config) => {
|
|
32
|
+
var getModuleFromNodeConfigLogger = /* @__PURE__ */ __name((config) => {
|
|
34
33
|
return config?.logger;
|
|
35
|
-
};
|
|
34
|
+
}, "getModuleFromNodeConfigLogger");
|
|
36
35
|
|
|
37
36
|
// src/hooks/provided/useProvidedNode.tsx
|
|
38
37
|
import { NodeContext } from "@xyo-network/react-node-context";
|
|
39
38
|
import { use } from "react";
|
|
40
|
-
var useProvidedNode = () => {
|
|
39
|
+
var useProvidedNode = /* @__PURE__ */ __name(() => {
|
|
41
40
|
const { node } = use(NodeContext);
|
|
42
|
-
return [
|
|
43
|
-
|
|
41
|
+
return [
|
|
42
|
+
node
|
|
43
|
+
];
|
|
44
|
+
}, "useProvidedNode");
|
|
44
45
|
|
|
45
46
|
// src/hooks/provided/useWeakProvidedNode.tsx
|
|
46
47
|
import { NodeContext as NodeContext2 } from "@xyo-network/react-node-context";
|
|
47
48
|
import { use as use2, useMemo } from "react";
|
|
48
|
-
var useWeakProvidedNode = () => {
|
|
49
|
+
var useWeakProvidedNode = /* @__PURE__ */ __name(() => {
|
|
49
50
|
const { node } = use2(NodeContext2);
|
|
50
|
-
const weakNode = useMemo(() => node ? new WeakRef(node) : null, [
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
const weakNode = useMemo(() => node ? new WeakRef(node) : null, [
|
|
52
|
+
node
|
|
53
|
+
]);
|
|
54
|
+
return [
|
|
55
|
+
weakNode
|
|
56
|
+
];
|
|
57
|
+
}, "useWeakProvidedNode");
|
|
53
58
|
|
|
54
59
|
// src/hooks/useModuleFromNode.ts
|
|
55
60
|
import { usePromise as usePromise2 } from "@xylabs/react-promise";
|
|
@@ -62,26 +67,39 @@ import { asNodeInstance } from "@xyo-network/node-model";
|
|
|
62
67
|
|
|
63
68
|
// src/hooks/useNodeConfigNodeField.ts
|
|
64
69
|
import { useMemo as useMemo2 } from "react";
|
|
65
|
-
var useNodeConfigNodeField = (config) => {
|
|
66
|
-
const nodeAddress = useMemo2(() => typeof config?.node === "string" ? config?.node : void 0, [
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
var useNodeConfigNodeField = /* @__PURE__ */ __name((config) => {
|
|
71
|
+
const nodeAddress = useMemo2(() => typeof config?.node === "string" ? config?.node : void 0, [
|
|
72
|
+
config?.node
|
|
73
|
+
]);
|
|
74
|
+
const nodeInstance = useMemo2(() => typeof config?.node === "object" ? config?.node : void 0, [
|
|
75
|
+
config?.node
|
|
76
|
+
]);
|
|
77
|
+
return [
|
|
78
|
+
nodeAddress,
|
|
79
|
+
nodeInstance
|
|
80
|
+
];
|
|
81
|
+
}, "useNodeConfigNodeField");
|
|
70
82
|
|
|
71
83
|
// src/hooks/useNode.ts
|
|
72
|
-
var useNode = (config) => {
|
|
84
|
+
var useNode = /* @__PURE__ */ __name((config) => {
|
|
73
85
|
const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config);
|
|
74
86
|
const [providedNode] = useProvidedNode();
|
|
75
87
|
const [nodeAddressNode, error] = usePromise(async () => {
|
|
76
88
|
if (providedNode && nodeAddress) {
|
|
77
89
|
return asNodeInstance(await providedNode.resolve(nodeAddress), "Module is not a node");
|
|
78
90
|
}
|
|
79
|
-
}, [
|
|
80
|
-
|
|
81
|
-
|
|
91
|
+
}, [
|
|
92
|
+
providedNode,
|
|
93
|
+
nodeAddress
|
|
94
|
+
]);
|
|
95
|
+
return [
|
|
96
|
+
nodeAddressNode ?? nodeInstance ?? providedNode ?? void 0,
|
|
97
|
+
error
|
|
98
|
+
];
|
|
99
|
+
}, "useNode");
|
|
82
100
|
|
|
83
101
|
// src/hooks/useModuleFromNode.ts
|
|
84
|
-
var useModuleFromNode = (nameOrAddressOrInstance = void 0, config) => {
|
|
102
|
+
var useModuleFromNode = /* @__PURE__ */ __name((nameOrAddressOrInstance = void 0, config) => {
|
|
85
103
|
const [node, nodeError] = useNode(config);
|
|
86
104
|
const logger = getModuleFromNodeConfigLogger(config);
|
|
87
105
|
const filterOptions = getModuleFilterOptions(config);
|
|
@@ -112,15 +130,21 @@ var useModuleFromNode = (nameOrAddressOrInstance = void 0, config) => {
|
|
|
112
130
|
return result;
|
|
113
131
|
}
|
|
114
132
|
logger?.debug("Result: No Node");
|
|
115
|
-
}, [
|
|
116
|
-
|
|
117
|
-
|
|
133
|
+
}, [
|
|
134
|
+
node,
|
|
135
|
+
nameOrAddressOrInstance
|
|
136
|
+
]);
|
|
137
|
+
return [
|
|
138
|
+
result,
|
|
139
|
+
nodeError ?? error
|
|
140
|
+
];
|
|
141
|
+
}, "useModuleFromNode");
|
|
118
142
|
|
|
119
143
|
// src/hooks/useModulesFromNode.ts
|
|
120
144
|
import { exists } from "@xylabs/exists";
|
|
121
145
|
import { usePromise as usePromise3 } from "@xylabs/react-promise";
|
|
122
146
|
import { useState as useState2 } from "react";
|
|
123
|
-
var useModulesFromNode = (ids, config) => {
|
|
147
|
+
var useModulesFromNode = /* @__PURE__ */ __name((ids, config) => {
|
|
124
148
|
const [node, nodeError] = useNode(config);
|
|
125
149
|
const logger = config?.logger;
|
|
126
150
|
const filterOptions = getModuleFilterOptions();
|
|
@@ -128,11 +152,11 @@ var useModulesFromNode = (ids, config) => {
|
|
|
128
152
|
const [, error] = usePromise3(async () => {
|
|
129
153
|
logger?.debug("useModuleFromNode: resolving");
|
|
130
154
|
if (node) {
|
|
131
|
-
const refreshModules = async () => {
|
|
155
|
+
const refreshModules = /* @__PURE__ */ __name(async () => {
|
|
132
156
|
const moduleInstances = ids ? (await Promise.all(ids.map((id) => node.resolve(id, filterOptions)))).filter(exists) : await node.resolve("*", filterOptions);
|
|
133
157
|
setResult(moduleInstances);
|
|
134
158
|
return moduleInstances;
|
|
135
|
-
};
|
|
159
|
+
}, "refreshModules");
|
|
136
160
|
node.on("moduleAttached", async ({ mod }) => {
|
|
137
161
|
logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`);
|
|
138
162
|
await refreshModules();
|
|
@@ -144,42 +168,62 @@ var useModulesFromNode = (ids, config) => {
|
|
|
144
168
|
return await refreshModules();
|
|
145
169
|
}
|
|
146
170
|
console.log("Result: No Node");
|
|
147
|
-
}, [
|
|
148
|
-
|
|
149
|
-
|
|
171
|
+
}, [
|
|
172
|
+
node,
|
|
173
|
+
ids
|
|
174
|
+
]);
|
|
175
|
+
return [
|
|
176
|
+
result,
|
|
177
|
+
nodeError ?? error
|
|
178
|
+
];
|
|
179
|
+
}, "useModulesFromNode");
|
|
150
180
|
|
|
151
181
|
// src/hooks/useNodeDescription.ts
|
|
152
182
|
import { usePromise as usePromise4 } from "@xylabs/react-promise";
|
|
153
183
|
import { ModuleDescriptionSchema } from "@xyo-network/module-model";
|
|
154
184
|
import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
|
|
155
|
-
var useNodeDescription = (config) => {
|
|
185
|
+
var useNodeDescription = /* @__PURE__ */ __name((config) => {
|
|
156
186
|
const [activeNode, nodeError] = useNode(config);
|
|
157
187
|
const [description, error] = usePromise4(async () => {
|
|
158
188
|
const state = await activeNode?.state();
|
|
159
189
|
return state?.find(isPayloadOfSchemaType(ModuleDescriptionSchema));
|
|
160
|
-
}, [
|
|
161
|
-
|
|
162
|
-
|
|
190
|
+
}, [
|
|
191
|
+
activeNode
|
|
192
|
+
]);
|
|
193
|
+
return [
|
|
194
|
+
description,
|
|
195
|
+
nodeError ?? error
|
|
196
|
+
];
|
|
197
|
+
}, "useNodeDescription");
|
|
163
198
|
|
|
164
199
|
// src/hooks/useNodeFromNode.tsx
|
|
165
200
|
import { asNodeInstance as asNodeInstance2 } from "@xyo-network/node-model";
|
|
166
|
-
var useNodeFromNode = (nameOrAddressOrInstance, config) => {
|
|
201
|
+
var useNodeFromNode = /* @__PURE__ */ __name((nameOrAddressOrInstance, config) => {
|
|
167
202
|
const [mod, error] = useModuleFromNode(nameOrAddressOrInstance, config);
|
|
168
203
|
const instance = asNodeInstance2(mod);
|
|
169
204
|
if (mod && !instance) {
|
|
170
205
|
const error2 = new Error(`Resolved module is not a NodeInstance [${mod.config?.schema}:${mod.config?.name}:${mod.address}]`);
|
|
171
206
|
console.error(error2.message);
|
|
172
|
-
return [
|
|
207
|
+
return [
|
|
208
|
+
void 0,
|
|
209
|
+
error2
|
|
210
|
+
];
|
|
173
211
|
}
|
|
174
|
-
return [
|
|
175
|
-
|
|
212
|
+
return [
|
|
213
|
+
instance,
|
|
214
|
+
error
|
|
215
|
+
];
|
|
216
|
+
}, "useNodeFromNode");
|
|
176
217
|
|
|
177
218
|
// src/hooks/useNodesFromNode.tsx
|
|
178
219
|
import { isNodeInstance } from "@xyo-network/node-model";
|
|
179
|
-
var useNodesFromNode = (ids, config) => {
|
|
220
|
+
var useNodesFromNode = /* @__PURE__ */ __name((ids, config) => {
|
|
180
221
|
const [modules, error] = useModulesFromNode(ids, config);
|
|
181
222
|
if (error) {
|
|
182
|
-
return [
|
|
223
|
+
return [
|
|
224
|
+
null,
|
|
225
|
+
error
|
|
226
|
+
];
|
|
183
227
|
}
|
|
184
228
|
return modules ? [
|
|
185
229
|
// eslint-disable-next-line unicorn/no-array-reduce
|
|
@@ -190,8 +234,11 @@ var useNodesFromNode = (ids, config) => {
|
|
|
190
234
|
return prev;
|
|
191
235
|
}, []),
|
|
192
236
|
void 0
|
|
193
|
-
] : [
|
|
194
|
-
|
|
237
|
+
] : [
|
|
238
|
+
modules,
|
|
239
|
+
error
|
|
240
|
+
];
|
|
241
|
+
}, "useNodesFromNode");
|
|
195
242
|
|
|
196
243
|
// src/hooks/useWeakModuleFromNode.ts
|
|
197
244
|
import { usePromise as usePromise6 } from "@xylabs/react-promise";
|
|
@@ -200,37 +247,52 @@ import { useState as useState3 } from "react";
|
|
|
200
247
|
|
|
201
248
|
// src/hooks/useWeakNode.ts
|
|
202
249
|
import { usePromise as usePromise5 } from "@xylabs/react-promise";
|
|
203
|
-
import { isDefined } from "@xylabs/
|
|
250
|
+
import { isDefined } from "@xylabs/sdk-js";
|
|
204
251
|
import { asNodeInstance as asNodeInstance3 } from "@xyo-network/node-model";
|
|
205
252
|
|
|
206
253
|
// src/hooks/useWeakNodeConfigNodeField.ts
|
|
207
254
|
import { useMemo as useMemo3 } from "react";
|
|
208
|
-
var useWeakNodeConfigNodeField = (config) => {
|
|
209
|
-
const nodeAddress = useMemo3(() => typeof config?.node === "string" ? config?.node : void 0, [
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
255
|
+
var useWeakNodeConfigNodeField = /* @__PURE__ */ __name((config) => {
|
|
256
|
+
const nodeAddress = useMemo3(() => typeof config?.node === "string" ? config?.node : void 0, [
|
|
257
|
+
config?.node
|
|
258
|
+
]);
|
|
259
|
+
const nodeInstance = useMemo3(() => typeof config?.node === "object" ? config?.node : void 0, [
|
|
260
|
+
config?.node
|
|
261
|
+
]);
|
|
262
|
+
return [
|
|
263
|
+
nodeAddress,
|
|
264
|
+
nodeInstance
|
|
265
|
+
];
|
|
266
|
+
}, "useWeakNodeConfigNodeField");
|
|
213
267
|
|
|
214
268
|
// src/hooks/useWeakNode.ts
|
|
215
|
-
var useWeakNode = (config) => {
|
|
269
|
+
var useWeakNode = /* @__PURE__ */ __name((config) => {
|
|
216
270
|
const [nodeAddress, nodeInstance] = useWeakNodeConfigNodeField(config);
|
|
217
271
|
const [providedNode] = useWeakProvidedNode();
|
|
218
272
|
const [nodeAddressNode, error] = usePromise5(async () => {
|
|
219
273
|
const providedNodeInstance = providedNode?.deref();
|
|
220
274
|
if (providedNodeInstance && isDefined(nodeAddress)) {
|
|
221
|
-
return new WeakRef(asNodeInstance3(await providedNodeInstance.resolve(nodeAddress), () => "Module is not a node", {
|
|
275
|
+
return new WeakRef(asNodeInstance3(await providedNodeInstance.resolve(nodeAddress), () => "Module is not a node", {
|
|
276
|
+
required: true
|
|
277
|
+
}));
|
|
222
278
|
}
|
|
223
|
-
}, [
|
|
224
|
-
|
|
225
|
-
|
|
279
|
+
}, [
|
|
280
|
+
providedNode,
|
|
281
|
+
nodeAddress
|
|
282
|
+
]);
|
|
283
|
+
return [
|
|
284
|
+
nodeAddressNode ?? nodeInstance ?? providedNode ?? void 0,
|
|
285
|
+
error
|
|
286
|
+
];
|
|
287
|
+
}, "useWeakNode");
|
|
226
288
|
|
|
227
289
|
// src/hooks/WeakModuleFromNodeConfig.ts
|
|
228
|
-
var getWeakModuleFromNodeConfigLogger = (config) => {
|
|
290
|
+
var getWeakModuleFromNodeConfigLogger = /* @__PURE__ */ __name((config) => {
|
|
229
291
|
return config?.logger;
|
|
230
|
-
};
|
|
292
|
+
}, "getWeakModuleFromNodeConfigLogger");
|
|
231
293
|
|
|
232
294
|
// src/hooks/useWeakModuleFromNode.ts
|
|
233
|
-
var useWeakModuleFromNode = (nameOrAddressOrInstance = void 0, config) => {
|
|
295
|
+
var useWeakModuleFromNode = /* @__PURE__ */ __name((nameOrAddressOrInstance = void 0, config) => {
|
|
234
296
|
const [node, nodeError] = useWeakNode(config);
|
|
235
297
|
const logger = getWeakModuleFromNodeConfigLogger(config);
|
|
236
298
|
const filterOptions = getWeakModuleFilterOptions(config);
|
|
@@ -262,15 +324,21 @@ var useWeakModuleFromNode = (nameOrAddressOrInstance = void 0, config) => {
|
|
|
262
324
|
return result;
|
|
263
325
|
}
|
|
264
326
|
logger?.debug("Result: No Node");
|
|
265
|
-
}, [
|
|
266
|
-
|
|
267
|
-
|
|
327
|
+
}, [
|
|
328
|
+
node,
|
|
329
|
+
nameOrAddressOrInstance
|
|
330
|
+
]);
|
|
331
|
+
return [
|
|
332
|
+
result,
|
|
333
|
+
nodeError ?? error
|
|
334
|
+
];
|
|
335
|
+
}, "useWeakModuleFromNode");
|
|
268
336
|
|
|
269
337
|
// src/hooks/useWeakModulesFromNode.ts
|
|
270
338
|
import { exists as exists2 } from "@xylabs/exists";
|
|
271
339
|
import { usePromise as usePromise7 } from "@xylabs/react-promise";
|
|
272
340
|
import { useState as useState4 } from "react";
|
|
273
|
-
var useWeakModulesFromNode = (ids, config) => {
|
|
341
|
+
var useWeakModulesFromNode = /* @__PURE__ */ __name((ids, config) => {
|
|
274
342
|
const [node, nodeError] = useNode(config);
|
|
275
343
|
const logger = config?.logger;
|
|
276
344
|
const filterOptions = getModuleFilterOptions();
|
|
@@ -279,11 +347,11 @@ var useWeakModulesFromNode = (ids, config) => {
|
|
|
279
347
|
logger?.debug("useModuleFromNode: resolving");
|
|
280
348
|
const nodeInstance = node;
|
|
281
349
|
if (nodeInstance) {
|
|
282
|
-
const refreshModules = async () => {
|
|
350
|
+
const refreshModules = /* @__PURE__ */ __name(async () => {
|
|
283
351
|
const moduleInstances = ids ? (await Promise.all(ids.map((id) => node.resolve(id, filterOptions)))).filter(exists2) : await node.resolve("*", filterOptions);
|
|
284
352
|
setResult(moduleInstances.map((mod) => new WeakRef(mod)));
|
|
285
353
|
return moduleInstances;
|
|
286
|
-
};
|
|
354
|
+
}, "refreshModules");
|
|
287
355
|
nodeInstance.on("moduleAttached", async ({ mod }) => {
|
|
288
356
|
logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`);
|
|
289
357
|
await refreshModules();
|
|
@@ -296,137 +364,197 @@ var useWeakModulesFromNode = (ids, config) => {
|
|
|
296
364
|
}
|
|
297
365
|
console.log("Result: No Node");
|
|
298
366
|
return;
|
|
299
|
-
}, [
|
|
300
|
-
|
|
301
|
-
|
|
367
|
+
}, [
|
|
368
|
+
node,
|
|
369
|
+
ids
|
|
370
|
+
]);
|
|
371
|
+
return [
|
|
372
|
+
result,
|
|
373
|
+
nodeError ?? error
|
|
374
|
+
];
|
|
375
|
+
}, "useWeakModulesFromNode");
|
|
302
376
|
|
|
303
377
|
// src/hooks/useWeakNodeDescription.ts
|
|
304
378
|
import { usePromise as usePromise8 } from "@xylabs/react-promise";
|
|
305
379
|
import { ModuleDescriptionSchema as ModuleDescriptionSchema2 } from "@xyo-network/module-model";
|
|
306
380
|
import { isPayloadOfSchemaType as isPayloadOfSchemaType2 } from "@xyo-network/payload-model";
|
|
307
|
-
var useWeakNodeDescription = (config) => {
|
|
381
|
+
var useWeakNodeDescription = /* @__PURE__ */ __name((config) => {
|
|
308
382
|
const [activeNode, nodeError] = useWeakNode(config);
|
|
309
383
|
const [description, error] = usePromise8(async () => {
|
|
310
384
|
const state = await activeNode?.deref()?.state();
|
|
311
385
|
return state?.find(isPayloadOfSchemaType2(ModuleDescriptionSchema2));
|
|
312
|
-
}, [
|
|
313
|
-
|
|
314
|
-
|
|
386
|
+
}, [
|
|
387
|
+
activeNode
|
|
388
|
+
]);
|
|
389
|
+
return [
|
|
390
|
+
description,
|
|
391
|
+
nodeError ?? error
|
|
392
|
+
];
|
|
393
|
+
}, "useWeakNodeDescription");
|
|
315
394
|
|
|
316
395
|
// src/hooks/useWeakNodeFromNode.tsx
|
|
317
396
|
import { isNodeInstance as isNodeInstance2 } from "@xyo-network/node-model";
|
|
318
|
-
var useWeakNodeFromNode = (nameOrAddressOrInstance, config) => {
|
|
319
|
-
return useWeakModuleFromNode(nameOrAddressOrInstance, {
|
|
320
|
-
|
|
397
|
+
var useWeakNodeFromNode = /* @__PURE__ */ __name((nameOrAddressOrInstance, config) => {
|
|
398
|
+
return useWeakModuleFromNode(nameOrAddressOrInstance, {
|
|
399
|
+
identity: isNodeInstance2,
|
|
400
|
+
...config
|
|
401
|
+
});
|
|
402
|
+
}, "useWeakNodeFromNode");
|
|
321
403
|
|
|
322
404
|
// src/components/NodeDescriptionBox.tsx
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
405
|
+
var NodeDescriptionBox = /* @__PURE__ */ __name(({ node, ...props }) => {
|
|
406
|
+
const [description, error] = useWeakNodeDescription({
|
|
407
|
+
node
|
|
408
|
+
});
|
|
409
|
+
return /* @__PURE__ */ React.createElement(FlexCol, props, /* @__PURE__ */ React.createElement("code", {
|
|
410
|
+
color: error ? "red" : void 0
|
|
411
|
+
}, error ? error.message : JSON.stringify(description, null, 2)));
|
|
412
|
+
}, "NodeDescriptionBox");
|
|
328
413
|
|
|
329
414
|
// src/components/Node.tsx
|
|
330
|
-
|
|
331
|
-
var NodeBox = ({ variant, ...props }) => {
|
|
415
|
+
var NodeBox = /* @__PURE__ */ __name(({ variant, ...props }) => {
|
|
332
416
|
switch (variant) {
|
|
333
417
|
// eslint-disable-next-line unicorn/no-useless-switch-case
|
|
334
418
|
case "description":
|
|
335
419
|
default: {
|
|
336
|
-
return /* @__PURE__ */
|
|
420
|
+
return /* @__PURE__ */ React2.createElement(NodeDescriptionBox, props);
|
|
337
421
|
}
|
|
338
422
|
}
|
|
339
|
-
};
|
|
423
|
+
}, "NodeBox");
|
|
340
424
|
|
|
341
425
|
// src/components/NodeDrawer.tsx
|
|
342
426
|
import { Close as CloseIcon } from "@mui/icons-material";
|
|
343
|
-
import {
|
|
344
|
-
ClickAwayListener,
|
|
345
|
-
Drawer,
|
|
346
|
-
IconButton
|
|
347
|
-
} from "@mui/material";
|
|
427
|
+
import { ClickAwayListener, Drawer, IconButton } from "@mui/material";
|
|
348
428
|
import { FlexGrowCol, FlexRow } from "@xylabs/react-flexbox";
|
|
349
429
|
import { useNodeDrawer } from "@xyo-network/react-node-provider";
|
|
430
|
+
import React5 from "react";
|
|
350
431
|
|
|
351
432
|
// src/components/render/ModuleDescriptionBox.tsx
|
|
352
433
|
import { ChevronRight as ChevronRightIcon, ExpandMore as ExpandMoreIcon } from "@mui/icons-material";
|
|
353
434
|
import { styled as styled2, Typography } from "@mui/material";
|
|
354
435
|
import { SimpleTreeView } from "@mui/x-tree-view";
|
|
355
|
-
import { useRef } from "react";
|
|
436
|
+
import React4, { useRef } from "react";
|
|
356
437
|
|
|
357
438
|
// src/components/render/RenderModule.tsx
|
|
358
439
|
import { styled } from "@mui/material";
|
|
359
440
|
import { TreeItem } from "@mui/x-tree-view";
|
|
360
441
|
import { useAsyncEffect } from "@xylabs/react-async-effect";
|
|
361
|
-
import { useState as useState5 } from "react";
|
|
362
|
-
|
|
363
|
-
var RenderModule = ({ mod, idRef }) => {
|
|
442
|
+
import React3, { useState as useState5 } from "react";
|
|
443
|
+
var RenderModule = /* @__PURE__ */ __name(({ mod, idRef }) => {
|
|
364
444
|
const [childModules, setChildModules] = useState5();
|
|
365
|
-
useAsyncEffect(
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
setChildModules(children.map((childModule) => new WeakRef(childModule)));
|
|
373
|
-
}
|
|
445
|
+
useAsyncEffect(async (mounted) => {
|
|
446
|
+
const moduleInstance2 = mod.deref();
|
|
447
|
+
const { address: address2 } = moduleInstance2 ?? {};
|
|
448
|
+
if (moduleInstance2) {
|
|
449
|
+
const children = (await moduleInstance2.resolve("*")).filter((childModule) => childModule.address !== address2);
|
|
450
|
+
if (mounted()) {
|
|
451
|
+
setChildModules(children.map((childModule) => new WeakRef(childModule)));
|
|
374
452
|
}
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
453
|
+
}
|
|
454
|
+
}, [
|
|
455
|
+
mod
|
|
456
|
+
]);
|
|
457
|
+
const increment = /* @__PURE__ */ __name(() => {
|
|
379
458
|
const newId = (idRef.current.idIncrementor++).toString();
|
|
380
459
|
idRef.current.ids.push(newId);
|
|
381
460
|
return newId;
|
|
382
|
-
};
|
|
461
|
+
}, "increment");
|
|
383
462
|
const moduleInstance = mod.deref();
|
|
384
463
|
const { queries, address } = moduleInstance ?? {};
|
|
385
|
-
return /* @__PURE__ */
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
464
|
+
return /* @__PURE__ */ React3.createElement(StyledAddressTreeItem, {
|
|
465
|
+
itemId: increment(),
|
|
466
|
+
label: `address: ${address}`
|
|
467
|
+
}, queries?.map((query, index) => {
|
|
468
|
+
return /* @__PURE__ */ React3.createElement(TreeItem, {
|
|
469
|
+
key: query,
|
|
470
|
+
itemId: increment(),
|
|
471
|
+
label: `query : ${query}`,
|
|
472
|
+
sx: {
|
|
473
|
+
mb: index === queries.length - 1 ? 1.5 : 0.5
|
|
474
|
+
}
|
|
475
|
+
});
|
|
476
|
+
}), childModules && childModules.length > 0 ? /* @__PURE__ */ React3.createElement(TreeItem, {
|
|
477
|
+
itemId: increment(),
|
|
478
|
+
label: "children",
|
|
479
|
+
sx: {
|
|
480
|
+
mb: 0.5
|
|
481
|
+
}
|
|
482
|
+
}, childModules.map((childModuleRef) => {
|
|
483
|
+
const childModule = childModuleRef.deref();
|
|
484
|
+
return childModule ? /* @__PURE__ */ React3.createElement(RenderModule, {
|
|
485
|
+
key: childModule?.address,
|
|
486
|
+
mod: childModuleRef,
|
|
487
|
+
idRef
|
|
488
|
+
}) : null;
|
|
489
|
+
})) : null);
|
|
490
|
+
}, "RenderModule");
|
|
491
|
+
var StyledAddressTreeItem = styled(TreeItem, {
|
|
492
|
+
name: "StyledAddressTreeItem"
|
|
493
|
+
})(({ theme }) => ({
|
|
494
|
+
"& .MuiTreeItem-content": {
|
|
495
|
+
marginBottom: theme.spacing(0.25)
|
|
496
|
+
}
|
|
497
|
+
}));
|
|
396
498
|
|
|
397
499
|
// src/components/render/ModuleDescriptionBox.tsx
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
}
|
|
414
|
-
|
|
500
|
+
var ModuleDescriptionBox = /* @__PURE__ */ __name(({ mod }) => {
|
|
501
|
+
const idRef = useRef({
|
|
502
|
+
idIncrementor: 0,
|
|
503
|
+
ids: []
|
|
504
|
+
});
|
|
505
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, mod ? /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(Typography, {
|
|
506
|
+
variant: "h4"
|
|
507
|
+
}, "Node Configuration"), /* @__PURE__ */ React4.createElement(StyledTreeView, {
|
|
508
|
+
"aria-label": "file system navigator",
|
|
509
|
+
slots: {
|
|
510
|
+
collapseIcon: ExpandMoreIcon,
|
|
511
|
+
expandIcon: ChevronRightIcon
|
|
512
|
+
},
|
|
513
|
+
sx: {
|
|
514
|
+
flexGrow: 1
|
|
515
|
+
}
|
|
516
|
+
}, /* @__PURE__ */ React4.createElement(RenderModule, {
|
|
517
|
+
mod,
|
|
518
|
+
idRef
|
|
519
|
+
}))) : mod === null ? /* @__PURE__ */ React4.createElement(Typography, {
|
|
520
|
+
variant: "h4"
|
|
521
|
+
}, "Node loading...") : /* @__PURE__ */ React4.createElement(Typography, {
|
|
522
|
+
variant: "h4"
|
|
523
|
+
}, "Node not found"));
|
|
524
|
+
}, "ModuleDescriptionBox");
|
|
525
|
+
var StyledTreeView = styled2(SimpleTreeView, {
|
|
526
|
+
name: "StyledTreeView"
|
|
527
|
+
})(() => ({
|
|
415
528
|
height: "auto",
|
|
416
529
|
maxWidth: "auto"
|
|
417
530
|
}));
|
|
418
531
|
|
|
419
532
|
// src/components/NodeDrawer.tsx
|
|
420
|
-
|
|
421
|
-
var NodeDrawer = ({ children, ...props }) => {
|
|
533
|
+
var NodeDrawer = /* @__PURE__ */ __name(({ children, ...props }) => {
|
|
422
534
|
const { open, setOpen } = useNodeDrawer();
|
|
423
535
|
const [node] = useWeakProvidedNode();
|
|
424
|
-
return /* @__PURE__ */
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
536
|
+
return /* @__PURE__ */ React5.createElement(Drawer, {
|
|
537
|
+
open: open ?? false,
|
|
538
|
+
anchor: "right",
|
|
539
|
+
...props
|
|
540
|
+
}, /* @__PURE__ */ React5.createElement(ClickAwayListener, {
|
|
541
|
+
onClickAway: /* @__PURE__ */ __name(() => setOpen?.(false), "onClickAway")
|
|
542
|
+
}, /* @__PURE__ */ React5.createElement(FlexGrowCol, {
|
|
543
|
+
role: "presentation",
|
|
544
|
+
justifyContent: "start",
|
|
545
|
+
p: 2,
|
|
546
|
+
rowGap: 2,
|
|
547
|
+
minWidth: "33vw"
|
|
548
|
+
}, /* @__PURE__ */ React5.createElement(FlexRow, {
|
|
549
|
+
alignContent: "start",
|
|
550
|
+
justifyContent: "start",
|
|
551
|
+
width: "100%"
|
|
552
|
+
}, /* @__PURE__ */ React5.createElement(IconButton, {
|
|
553
|
+
onClick: /* @__PURE__ */ __name(() => setOpen?.(false), "onClick")
|
|
554
|
+
}, /* @__PURE__ */ React5.createElement(CloseIcon, null))), /* @__PURE__ */ React5.createElement(ModuleDescriptionBox, {
|
|
555
|
+
mod: node
|
|
556
|
+
}), children)));
|
|
557
|
+
}, "NodeDrawer");
|
|
430
558
|
|
|
431
559
|
// src/index.ts
|
|
432
560
|
export * from "@xyo-network/react-node-context";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/NodeDescriptionBox.tsx","../../src/hooks/getModuleFilterOptions.ts","../../src/hooks/getWeakModuleFilterOptions.ts","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/provided/useWeakProvidedNode.tsx","../../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/hooks/useNodesFromNode.tsx","../../src/hooks/useWeakModuleFromNode.ts","../../src/hooks/useWeakNode.ts","../../src/hooks/useWeakNodeConfigNodeField.ts","../../src/hooks/WeakModuleFromNodeConfig.ts","../../src/hooks/useWeakModulesFromNode.ts","../../src/hooks/useWeakNodeDescription.ts","../../src/hooks/useWeakNodeFromNode.tsx","../../src/components/Node.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx","../../src/index.ts"],"sourcesContent":["import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport React from 'react'\n\nimport { useWeakNodeDescription } from '../hooks/index.ts'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | WeakRef<NodeInstance>\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useWeakNodeDescription({ 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 type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\n\nexport const getModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const {\n direction, identity, maxDepth,\n } = config ?? {}\n return {\n direction, identity, maxDepth,\n }\n}\n","import type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const getWeakModuleFilterOptions = (config?: WeakModuleFromNodeConfig) => {\n const {\n direction, identity, maxDepth,\n } = config ?? {}\n return {\n direction, identity, maxDepth,\n }\n}\n","import type { Logger } from '@xylabs/logger'\nimport type { ModuleFilterOptions, ModuleInstance } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig<T extends ModuleInstance = ModuleInstance> = ModuleFilterOptions<T> & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const getModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { use } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = use(NodeContext)\n return [node]\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { use, useMemo } from 'react'\n\nexport const useWeakProvidedNode = (): [WeakRef<NodeInstance> | null | undefined] => {\n const { node } = use(NodeContext)\n const weakNode = useMemo(() => (node ? new WeakRef(node) : null), [node])\n return [weakNode]\n}\n","import type { TypeCheck } from '@xylabs/object'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { isModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { getModuleFilterOptions } from './getModuleFilterOptions.ts'\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { getModuleFromNodeConfigLogger } from './ModuleFromNodeConfig.ts'\nimport { useNode } from './useNode.ts'\n\n/** @deprecated use useWeakModuleFromNode */\nexport const useModuleFromNode = <T extends ModuleInstance | void = void>(\n nameOrAddressOrInstance: string | (T extends ModuleInstance ? T : ModuleInstance) | undefined = undefined,\n config?: T extends ModuleInstance ? ModuleFromNodeConfig<T> : ModuleFromNodeConfig | undefined,\n): [(T extends ModuleInstance ? T : ModuleInstance) | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = getModuleFromNodeConfigLogger(config)\n const filterOptions = getModuleFilterOptions(config)\n const [result, setResult] = useState<(T extends ModuleInstance ? T : ModuleInstance) | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n const identity: TypeCheck<T extends ModuleInstance ? T : ModuleInstance> = (config?.identity ?? isModuleInstance) as TypeCheck<\n T extends ModuleInstance ? T : ModuleInstance\n >\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`)\n if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {\n setResult(identity(mod) ? (mod as T extends ModuleInstance ? T : ModuleInstance) : undefined)\n }\n })\n node.on('moduleDetached', ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`)\n if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (identity(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(identity(result) ? (result as T extends ModuleInstance ? T : ModuleInstance) : undefined)\n }\n return result\n }\n logger?.debug('Result: No Node')\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useProvidedNode } from './provided/index.ts'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField.ts'\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 type { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\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 { exists } from '@xylabs/exists'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { getModuleFilterOptions } from './getModuleFilterOptions.ts'\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useNode } from './useNode.ts'\n\n/** @deprecated use useWeakModulesFromNode */\nexport const useModulesFromNode = (ids?: ModuleIdentifier[], config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = getModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n const refreshModules = async () => {\n const moduleInstances = ids\n ? (await Promise.all(ids.map(id => node.resolve(id, filterOptions)))).filter(exists)\n : await node.resolve('*', filterOptions)\n setResult(moduleInstances)\n return moduleInstances\n }\n node.on('moduleAttached', async ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`)\n await refreshModules()\n })\n node.on('moduleDetached', async ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`)\n await refreshModules()\n })\n return await refreshModules()\n }\n console.log('Result: No Node')\n }, [node, ids])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { ModuleDescription, ModuleDescriptionPayload } from '@xyo-network/module-model'\nimport { ModuleDescriptionSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useNode } from './useNode.ts'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n const state = await activeNode?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useModuleFromNode } from './useModuleFromNode.ts'\n\n/** @deprecated use useWeakNodeFromNode instead */\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [mod, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(mod)\n if (mod && !instance) {\n const error = new Error(`Resolved module is not a NodeInstance [${mod.config?.schema}:${mod.config?.name}:${mod.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useModulesFromNode } from './useModulesFromNode.ts'\n\n/** @deprecated use useWeakNodesFromNode */\nexport const useNodesFromNode = (ids?: ModuleIdentifier[], config?: ModuleFromNodeConfig): [NodeInstance[] | null | undefined, Error | undefined] => {\n const [modules, error] = useModulesFromNode(ids, config)\n if (error) {\n return [null, error]\n }\n return modules\n ? [\n // eslint-disable-next-line unicorn/no-array-reduce\n modules.reduce<NodeInstance[]>((prev, mod) => {\n if (isNodeInstance(mod)) {\n prev.push(mod)\n }\n return prev\n }, []),\n undefined,\n ]\n : [modules, error]\n}\n","import type { TypeCheck } from '@xylabs/object'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { isModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { getWeakModuleFilterOptions } from './getWeakModuleFilterOptions.ts'\nimport { useWeakNode } from './useWeakNode.ts'\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\nimport { getWeakModuleFromNodeConfigLogger } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakModuleFromNode = <T extends ModuleInstance | void = void>(\n nameOrAddressOrInstance: string | (T extends ModuleInstance ? T : ModuleInstance) | undefined = undefined,\n config?: WeakModuleFromNodeConfig,\n): [WeakRef<T extends ModuleInstance ? T : ModuleInstance> | undefined, Error | undefined] => {\n const [node, nodeError] = useWeakNode(config)\n const logger = getWeakModuleFromNodeConfigLogger(config)\n const filterOptions = getWeakModuleFilterOptions(config)\n const [result, setResult] = useState<WeakRef<T extends ModuleInstance ? T : ModuleInstance> | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n const identity: TypeCheck<T extends ModuleInstance ? T : ModuleInstance> = (config?.identity ?? isModuleInstance) as TypeCheck<\n T extends ModuleInstance ? T : ModuleInstance\n >\n const nodeInstance = node?.deref()\n if (nodeInstance && nameOrAddressOrInstance) {\n nodeInstance.on('moduleAttached', ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`)\n if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {\n setResult(identity(mod) ? new WeakRef(mod as T extends ModuleInstance ? T : ModuleInstance) : undefined)\n }\n })\n nodeInstance.on('moduleDetached', ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`)\n if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (identity(nameOrAddressOrInstance)) {\n setResult(new WeakRef(nameOrAddressOrInstance as T extends ModuleInstance ? T : ModuleInstance))\n } else {\n const result = await nodeInstance.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(identity(result) ? new WeakRef(result as T extends ModuleInstance ? T : ModuleInstance) : undefined)\n }\n return result\n }\n logger?.debug('Result: No Node')\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/typeof'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nimport { useWeakProvidedNode } from './provided/index.ts'\nimport { useWeakNodeConfigNodeField } from './useWeakNodeConfigNodeField.ts'\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakNode = (config?: WeakModuleFromNodeConfig | undefined): [WeakRef<NodeInstance> | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useWeakNodeConfigNodeField(config)\n const [providedNode] = useWeakProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n const providedNodeInstance = providedNode?.deref()\n if (providedNodeInstance && isDefined(nodeAddress)) {\n return new WeakRef(asNodeInstance(await providedNodeInstance.resolve(nodeAddress), () => 'Module is not a node', { required: true }))\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakNodeConfigNodeField = (\n config?: WeakModuleFromNodeConfig | undefined,\n): [string | undefined, WeakRef<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 type { Logger } from '@xylabs/logger'\nimport type { ModuleFilterOptions } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\n\nexport type WeakModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: WeakRef<NodeInstance> | string\n}\n\nexport const getWeakModuleFromNodeConfigLogger = (config?: WeakModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { exists } from '@xylabs/exists'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { getModuleFilterOptions } from './getModuleFilterOptions.ts'\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useNode } from './useNode.ts'\n\nexport const useWeakModulesFromNode = (\n ids?: ModuleIdentifier[],\n config?: ModuleFromNodeConfig,\n): [WeakRef<ModuleInstance>[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = getModuleFilterOptions()\n const [result, setResult] = useState<WeakRef<ModuleInstance>[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n const nodeInstance = node\n if (nodeInstance) {\n const refreshModules = async () => {\n const moduleInstances = ids\n ? (await Promise.all(ids.map(id => node.resolve(id, filterOptions)))).filter(exists)\n : await node.resolve('*', filterOptions)\n setResult(moduleInstances.map(mod => new WeakRef(mod)))\n return moduleInstances\n }\n nodeInstance.on('moduleAttached', async ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`)\n await refreshModules()\n })\n nodeInstance.on('moduleDetached', async ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`)\n await refreshModules()\n })\n return await refreshModules()\n }\n console.log('Result: No Node')\n return\n }, [node, ids])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { ModuleDescription, ModuleDescriptionPayload } from '@xyo-network/module-model'\nimport { ModuleDescriptionSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { useWeakNode } from './useWeakNode.ts'\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakNodeDescription = (config?: WeakModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useWeakNode(config)\n const [description, error] = usePromise(async () => {\n const state = await activeNode?.deref()?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\n\nimport { useWeakModuleFromNode } from './useWeakModuleFromNode.ts'\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: WeakModuleFromNodeConfig,\n): [WeakRef<NodeInstance> | undefined, Error | undefined] => {\n return useWeakModuleFromNode<NodeInstance>(nameOrAddressOrInstance, { identity: isNodeInstance, ...config })\n}\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport React from 'react'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox.tsx'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | WeakRef<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 type { DrawerProps } from '@mui/material'\nimport {\n ClickAwayListener, Drawer, IconButton,\n} from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nimport { useWeakProvidedNode } from '../hooks/index.ts'\nimport { ModuleDescriptionBox } from './render/index.ts'\n\nexport interface NodeDrawerProps extends PropsWithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useWeakProvidedNode()\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 mod={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 { SimpleTreeView } from '@mui/x-tree-view'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport React, { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule.tsx'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n mod?: WeakRef<ModuleInstance> | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ mod }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {mod\n ? (\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n slots={{ collapseIcon: ExpandMoreIcon, expandIcon: ChevronRightIcon }}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule mod={mod} idRef={idRef} />\n </StyledTreeView>\n </>\n )\n : mod === null\n ? <Typography variant=\"h4\">Node loading...</Typography>\n : <Typography variant=\"h4\">Node not found</Typography>}\n </>\n )\n}\n\nconst StyledTreeView = styled(SimpleTreeView, { 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 type { ModuleInstance } from '@xyo-network/module-model'\nimport type { MutableRefObject } from 'react'\nimport React, { useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n mod: WeakRef<ModuleInstance>\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ mod, idRef }) => {\n const [childModules, setChildModules] = useState<WeakRef<ModuleInstance>[]>()\n\n useAsyncEffect(\n\n async (mounted) => {\n const moduleInstance = mod.deref()\n const { address } = moduleInstance ?? {}\n if (moduleInstance) {\n const children = (await moduleInstance.resolve('*')).filter(childModule => childModule.address !== address)\n if (mounted()) {\n setChildModules(children.map(childModule => new WeakRef(childModule)))\n }\n }\n },\n [mod],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n const moduleInstance = mod.deref()\n const { queries, address } = moduleInstance ?? {}\n\n return (\n <StyledAddressTreeItem itemId={increment()} label={`address: ${address}`}>\n {queries?.map((query, index) => {\n return <TreeItem key={query} itemId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0\n ? (\n <TreeItem itemId={increment()} label=\"children\" sx={{ mb: 0.5 }}>\n {childModules.map((childModuleRef) => {\n const childModule = childModuleRef.deref()\n return childModule ? <RenderModule key={childModule?.address} mod={childModuleRef} idRef={idRef} /> : null\n })}\n </TreeItem>\n )\n : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => (\n { '& .MuiTreeItem-content': { marginBottom: theme.spacing(0.25) } }\n))\n","export * from './components/index.ts'\nexport * from './hooks/index.ts'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n"],"mappings":"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","names":["NodeContext","use","usePromise","useMemo","usePromise","result","usePromise","useState","useState","usePromise","usePromise","usePromise","asNodeInstance","asNodeInstance","error","usePromise","isModuleInstance","useState","usePromise","asNodeInstance","useMemo","usePromise","asNodeInstance","useState","usePromise","isModuleInstance","result","exists","usePromise","useState","useState","usePromise","exists","usePromise","ModuleDescriptionSchema","isPayloadOfSchemaType","usePromise","isPayloadOfSchemaType","ModuleDescriptionSchema","isNodeInstance","isNodeInstance","jsx","styled","useState","jsx","moduleInstance","address","jsx","jsxs","styled","jsx","jsxs"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/Node.tsx","../../src/components/NodeDescriptionBox.tsx","../../src/hooks/getModuleFilterOptions.ts","../../src/hooks/getWeakModuleFilterOptions.ts","../../src/hooks/ModuleFromNodeConfig.ts","../../src/hooks/provided/useProvidedNode.tsx","../../src/hooks/provided/useWeakProvidedNode.tsx","../../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/hooks/useNodesFromNode.tsx","../../src/hooks/useWeakModuleFromNode.ts","../../src/hooks/useWeakNode.ts","../../src/hooks/useWeakNodeConfigNodeField.ts","../../src/hooks/WeakModuleFromNodeConfig.ts","../../src/hooks/useWeakModulesFromNode.ts","../../src/hooks/useWeakNodeDescription.ts","../../src/hooks/useWeakNodeFromNode.tsx","../../src/components/NodeDrawer.tsx","../../src/components/render/ModuleDescriptionBox.tsx","../../src/components/render/RenderModule.tsx","../../src/index.ts"],"sourcesContent":["import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport React from 'react'\n\nimport { NodeDescriptionBox } from './NodeDescriptionBox.tsx'\n\nexport interface NodeBoxProps extends FlexBoxProps {\n node?: string | WeakRef<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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport React from 'react'\n\nimport { useWeakNodeDescription } from '../hooks/index.ts'\n\nexport interface NodeDescriptionBoxProps extends FlexBoxProps {\n node?: string | WeakRef<NodeInstance>\n}\n\nexport const NodeDescriptionBox: React.FC<NodeDescriptionBoxProps> = ({ node, ...props }) => {\n const [description, error] = useWeakNodeDescription({ 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 type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\n\nexport const getModuleFilterOptions = (config?: ModuleFromNodeConfig) => {\n const {\n direction, identity, maxDepth,\n } = config ?? {}\n return {\n direction, identity, maxDepth,\n }\n}\n","import type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const getWeakModuleFilterOptions = (config?: WeakModuleFromNodeConfig) => {\n const {\n direction, identity, maxDepth,\n } = config ?? {}\n return {\n direction, identity, maxDepth,\n }\n}\n","import type { Logger } from '@xylabs/logger'\nimport type { ModuleFilterOptions, ModuleInstance } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\n\nexport type ModuleFromNodeConfig<T extends ModuleInstance = ModuleInstance> = ModuleFilterOptions<T> & {\n logger?: Logger\n node?: NodeInstance | string\n}\n\nexport const getModuleFromNodeConfigLogger = (config?: ModuleFromNodeConfig) => {\n return config?.logger\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { use } from 'react'\n\nexport const useProvidedNode = (): [NodeInstance | null | undefined] => {\n const { node } = use(NodeContext)\n return [node]\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { NodeContext } from '@xyo-network/react-node-context'\nimport { use, useMemo } from 'react'\n\nexport const useWeakProvidedNode = (): [WeakRef<NodeInstance> | null | undefined] => {\n const { node } = use(NodeContext)\n const weakNode = useMemo(() => (node ? new WeakRef(node) : null), [node])\n return [weakNode]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { TypeCheck } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { isModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { getModuleFilterOptions } from './getModuleFilterOptions.ts'\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { getModuleFromNodeConfigLogger } from './ModuleFromNodeConfig.ts'\nimport { useNode } from './useNode.ts'\n\n/** @deprecated use useWeakModuleFromNode */\nexport const useModuleFromNode = <T extends ModuleInstance | void = void>(\n nameOrAddressOrInstance: string | (T extends ModuleInstance ? T : ModuleInstance) | undefined = undefined,\n config?: T extends ModuleInstance ? ModuleFromNodeConfig<T> : ModuleFromNodeConfig | undefined,\n): [(T extends ModuleInstance ? T : ModuleInstance) | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = getModuleFromNodeConfigLogger(config)\n const filterOptions = getModuleFilterOptions(config)\n const [result, setResult] = useState<(T extends ModuleInstance ? T : ModuleInstance) | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n const identity: TypeCheck<T extends ModuleInstance ? T : ModuleInstance> = (config?.identity ?? isModuleInstance) as TypeCheck<\n T extends ModuleInstance ? T : ModuleInstance\n >\n if (node && nameOrAddressOrInstance) {\n node.on('moduleAttached', ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`)\n if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {\n setResult(identity(mod) ? (mod as T extends ModuleInstance ? T : ModuleInstance) : undefined)\n }\n })\n node.on('moduleDetached', ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`)\n if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (identity(nameOrAddressOrInstance)) {\n setResult(nameOrAddressOrInstance)\n } else {\n const result = await node.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(identity(result) ? (result as T extends ModuleInstance ? T : ModuleInstance) : undefined)\n }\n return result\n }\n logger?.debug('Result: No Node')\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useProvidedNode } from './provided/index.ts'\nimport { useNodeConfigNodeField } from './useNodeConfigNodeField.ts'\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 type { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\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 { exists } from '@xylabs/exists'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { getModuleFilterOptions } from './getModuleFilterOptions.ts'\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useNode } from './useNode.ts'\n\n/** @deprecated use useWeakModulesFromNode */\nexport const useModulesFromNode = (ids?: ModuleIdentifier[], config?: ModuleFromNodeConfig): [ModuleInstance[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = getModuleFilterOptions()\n const [result, setResult] = useState<ModuleInstance[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n if (node) {\n const refreshModules = async () => {\n const moduleInstances = ids\n ? (await Promise.all(ids.map(id => node.resolve(id, filterOptions)))).filter(exists)\n : await node.resolve('*', filterOptions)\n setResult(moduleInstances)\n return moduleInstances\n }\n node.on('moduleAttached', async ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`)\n await refreshModules()\n })\n node.on('moduleDetached', async ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`)\n await refreshModules()\n })\n return await refreshModules()\n }\n console.log('Result: No Node')\n }, [node, ids])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { ModuleDescription, ModuleDescriptionPayload } from '@xyo-network/module-model'\nimport { ModuleDescriptionSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useNode } from './useNode.ts'\n\nexport const useNodeDescription = (config?: ModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useNode(config)\n const [description, error] = usePromise(async () => {\n const state = await activeNode?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useModuleFromNode } from './useModuleFromNode.ts'\n\n/** @deprecated use useWeakNodeFromNode instead */\nexport const useNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: ModuleFromNodeConfig,\n): [NodeInstance | undefined, Error | undefined] => {\n const [mod, error] = useModuleFromNode(nameOrAddressOrInstance, config)\n const instance = asNodeInstance(mod)\n if (mod && !instance) {\n const error = new Error(`Resolved module is not a NodeInstance [${mod.config?.schema}:${mod.config?.name}:${mod.address}]`)\n console.error(error.message)\n return [undefined, error]\n }\n return [instance, error]\n}\n","import type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\n\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useModulesFromNode } from './useModulesFromNode.ts'\n\n/** @deprecated use useWeakNodesFromNode */\nexport const useNodesFromNode = (ids?: ModuleIdentifier[], config?: ModuleFromNodeConfig): [NodeInstance[] | null | undefined, Error | undefined] => {\n const [modules, error] = useModulesFromNode(ids, config)\n if (error) {\n return [null, error]\n }\n return modules\n ? [\n // eslint-disable-next-line unicorn/no-array-reduce\n modules.reduce<NodeInstance[]>((prev, mod) => {\n if (isNodeInstance(mod)) {\n prev.push(mod)\n }\n return prev\n }, []),\n undefined,\n ]\n : [modules, error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { TypeCheck } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { isModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { getWeakModuleFilterOptions } from './getWeakModuleFilterOptions.ts'\nimport { useWeakNode } from './useWeakNode.ts'\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\nimport { getWeakModuleFromNodeConfigLogger } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakModuleFromNode = <T extends ModuleInstance | void = void>(\n nameOrAddressOrInstance: string | (T extends ModuleInstance ? T : ModuleInstance) | undefined = undefined,\n config?: WeakModuleFromNodeConfig,\n): [WeakRef<T extends ModuleInstance ? T : ModuleInstance> | undefined, Error | undefined] => {\n const [node, nodeError] = useWeakNode(config)\n const logger = getWeakModuleFromNodeConfigLogger(config)\n const filterOptions = getWeakModuleFilterOptions(config)\n const [result, setResult] = useState<WeakRef<T extends ModuleInstance ? T : ModuleInstance> | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n const identity: TypeCheck<T extends ModuleInstance ? T : ModuleInstance> = (config?.identity ?? isModuleInstance) as TypeCheck<\n T extends ModuleInstance ? T : ModuleInstance\n >\n const nodeInstance = node?.deref()\n if (nodeInstance && nameOrAddressOrInstance) {\n nodeInstance.on('moduleAttached', ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`)\n if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {\n setResult(identity(mod) ? new WeakRef(mod as T extends ModuleInstance ? T : ModuleInstance) : undefined)\n }\n })\n nodeInstance.on('moduleDetached', ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`)\n if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {\n setResult(undefined)\n }\n })\n if (identity(nameOrAddressOrInstance)) {\n setResult(new WeakRef(nameOrAddressOrInstance as T extends ModuleInstance ? T : ModuleInstance))\n } else {\n const result = await nodeInstance.resolve(nameOrAddressOrInstance, filterOptions)\n logger?.debug(`Result: ${result?.address}`)\n setResult(identity(result) ? new WeakRef(result as T extends ModuleInstance ? T : ModuleInstance) : undefined)\n }\n return result\n }\n logger?.debug('Result: No Node')\n }, [node, nameOrAddressOrInstance])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { asNodeInstance } from '@xyo-network/node-model'\n\nimport { useWeakProvidedNode } from './provided/index.ts'\nimport { useWeakNodeConfigNodeField } from './useWeakNodeConfigNodeField.ts'\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakNode = (config?: WeakModuleFromNodeConfig | undefined): [WeakRef<NodeInstance> | undefined, Error | undefined] => {\n const [nodeAddress, nodeInstance] = useWeakNodeConfigNodeField(config)\n const [providedNode] = useWeakProvidedNode()\n const [nodeAddressNode, error] = usePromise(async () => {\n const providedNodeInstance = providedNode?.deref()\n if (providedNodeInstance && isDefined(nodeAddress)) {\n return new WeakRef(asNodeInstance(await providedNodeInstance.resolve(nodeAddress), () => 'Module is not a node', { required: true }))\n }\n }, [providedNode, nodeAddress])\n return [nodeAddressNode ?? nodeInstance ?? providedNode ?? undefined, error]\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { useMemo } from 'react'\n\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakNodeConfigNodeField = (\n config?: WeakModuleFromNodeConfig | undefined,\n): [string | undefined, WeakRef<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 type { Logger } from '@xylabs/logger'\nimport type { ModuleFilterOptions } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\n\nexport type WeakModuleFromNodeConfig = ModuleFilterOptions & {\n logger?: Logger\n node?: WeakRef<NodeInstance> | string\n}\n\nexport const getWeakModuleFromNodeConfigLogger = (config?: WeakModuleFromNodeConfig) => {\n return config?.logger\n}\n","import { exists } from '@xylabs/exists'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ModuleIdentifier, ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { getModuleFilterOptions } from './getModuleFilterOptions.ts'\nimport type { ModuleFromNodeConfig } from './ModuleFromNodeConfig.ts'\nimport { useNode } from './useNode.ts'\n\nexport const useWeakModulesFromNode = (\n ids?: ModuleIdentifier[],\n config?: ModuleFromNodeConfig,\n): [WeakRef<ModuleInstance>[] | undefined, Error | undefined] => {\n const [node, nodeError] = useNode(config)\n const logger = config?.logger\n const filterOptions = getModuleFilterOptions()\n const [result, setResult] = useState<WeakRef<ModuleInstance>[] | undefined>()\n const [, error] = usePromise(async () => {\n logger?.debug('useModuleFromNode: resolving')\n const nodeInstance = node\n if (nodeInstance) {\n const refreshModules = async () => {\n const moduleInstances = ids\n ? (await Promise.all(ids.map(id => node.resolve(id, filterOptions)))).filter(exists)\n : await node.resolve('*', filterOptions)\n setResult(moduleInstances.map(mod => new WeakRef(mod)))\n return moduleInstances\n }\n nodeInstance.on('moduleAttached', async ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`)\n await refreshModules()\n })\n nodeInstance.on('moduleDetached', async ({ mod }) => {\n logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`)\n await refreshModules()\n })\n return await refreshModules()\n }\n console.log('Result: No Node')\n return\n }, [node, ids])\n return [result, nodeError ?? error]\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { ModuleDescription, ModuleDescriptionPayload } from '@xyo-network/module-model'\nimport { ModuleDescriptionSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nimport { useWeakNode } from './useWeakNode.ts'\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakNodeDescription = (config?: WeakModuleFromNodeConfig | undefined): [ModuleDescription | undefined, Error | undefined] => {\n const [activeNode, nodeError] = useWeakNode(config)\n const [description, error] = usePromise(async () => {\n const state = await activeNode?.deref()?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [activeNode])\n return [description, nodeError ?? error]\n}\n","import type { NodeInstance } from '@xyo-network/node-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\n\nimport { useWeakModuleFromNode } from './useWeakModuleFromNode.ts'\nimport type { WeakModuleFromNodeConfig } from './WeakModuleFromNodeConfig.ts'\n\nexport const useWeakNodeFromNode = (\n nameOrAddressOrInstance?: string | NodeInstance,\n config?: WeakModuleFromNodeConfig,\n): [WeakRef<NodeInstance> | undefined, Error | undefined] => {\n return useWeakModuleFromNode<NodeInstance>(nameOrAddressOrInstance, { identity: isNodeInstance, ...config })\n}\n","import { Close as CloseIcon } from '@mui/icons-material'\nimport type { DrawerProps } from '@mui/material'\nimport {\n ClickAwayListener, Drawer, IconButton,\n} from '@mui/material'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useNodeDrawer } from '@xyo-network/react-node-provider'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nimport { useWeakProvidedNode } from '../hooks/index.ts'\nimport { ModuleDescriptionBox } from './render/index.ts'\n\nexport interface NodeDrawerProps extends PropsWithChildren, Omit<DrawerProps, 'open'> {}\n\nexport const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {\n const { open, setOpen } = useNodeDrawer()\n const [node] = useWeakProvidedNode()\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 mod={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 { SimpleTreeView } from '@mui/x-tree-view'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport React, { useRef } from 'react'\n\nimport { RenderModule } from './RenderModule.tsx'\n\nexport interface ModuleDescriptionProps extends FlexBoxProps {\n mod?: WeakRef<ModuleInstance> | null\n}\nexport const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ mod }) => {\n const idRef = useRef<{ idIncrementor: number; ids: string[] }>({ idIncrementor: 0, ids: [] })\n\n return (\n <>\n {mod\n ? (\n <>\n <Typography variant=\"h4\">Node Configuration</Typography>\n <StyledTreeView\n aria-label=\"file system navigator\"\n slots={{ collapseIcon: ExpandMoreIcon, expandIcon: ChevronRightIcon }}\n sx={{ flexGrow: 1 }}\n >\n <RenderModule mod={mod} idRef={idRef} />\n </StyledTreeView>\n </>\n )\n : mod === null\n ? <Typography variant=\"h4\">Node loading...</Typography>\n : <Typography variant=\"h4\">Node not found</Typography>}\n </>\n )\n}\n\nconst StyledTreeView = styled(SimpleTreeView, { 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 type { ModuleInstance } from '@xyo-network/module-model'\nimport type { MutableRefObject } from 'react'\nimport React, { useState } from 'react'\n\ninterface RenderModuleProps {\n idRef: MutableRefObject<{\n idIncrementor: number\n ids: string[]\n }>\n mod: WeakRef<ModuleInstance>\n}\n\nexport const RenderModule: React.FC<RenderModuleProps> = ({ mod, idRef }) => {\n const [childModules, setChildModules] = useState<WeakRef<ModuleInstance>[]>()\n\n useAsyncEffect(\n\n async (mounted) => {\n const moduleInstance = mod.deref()\n const { address } = moduleInstance ?? {}\n if (moduleInstance) {\n const children = (await moduleInstance.resolve('*')).filter(childModule => childModule.address !== address)\n if (mounted()) {\n setChildModules(children.map(childModule => new WeakRef(childModule)))\n }\n }\n },\n [mod],\n )\n\n const increment = () => {\n const newId = (idRef.current.idIncrementor++).toString()\n idRef.current.ids.push(newId)\n return newId\n }\n\n const moduleInstance = mod.deref()\n const { queries, address } = moduleInstance ?? {}\n\n return (\n <StyledAddressTreeItem itemId={increment()} label={`address: ${address}`}>\n {queries?.map((query, index) => {\n return <TreeItem key={query} itemId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />\n })}\n {childModules && childModules.length > 0\n ? (\n <TreeItem itemId={increment()} label=\"children\" sx={{ mb: 0.5 }}>\n {childModules.map((childModuleRef) => {\n const childModule = childModuleRef.deref()\n return childModule ? <RenderModule key={childModule?.address} mod={childModuleRef} idRef={idRef} /> : null\n })}\n </TreeItem>\n )\n : null}\n </StyledAddressTreeItem>\n )\n}\n\nconst StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => (\n { '& .MuiTreeItem-content': { marginBottom: theme.spacing(0.25) } }\n))\n","export * from './components/index.ts'\nexport * from './hooks/index.ts'\nexport * from '@xyo-network/react-node-context'\nexport * from '@xyo-network/react-node-provider'\n"],"mappings":"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","names":["React","FlexCol","React","getModuleFilterOptions","config","direction","identity","maxDepth","getWeakModuleFilterOptions","config","direction","identity","maxDepth","getModuleFromNodeConfigLogger","config","logger","NodeContext","use","useProvidedNode","node","use","NodeContext","NodeContext","use","useMemo","useWeakProvidedNode","node","use","NodeContext","weakNode","useMemo","WeakRef","usePromise","isModuleInstance","useState","usePromise","asNodeInstance","useMemo","useNodeConfigNodeField","config","nodeAddress","useMemo","node","undefined","nodeInstance","useNode","config","nodeAddress","nodeInstance","useNodeConfigNodeField","providedNode","useProvidedNode","nodeAddressNode","error","usePromise","asNodeInstance","resolve","undefined","useModuleFromNode","nameOrAddressOrInstance","undefined","config","node","nodeError","useNode","logger","getModuleFromNodeConfigLogger","filterOptions","getModuleFilterOptions","result","setResult","useState","error","usePromise","debug","identity","isModuleInstance","on","mod","name","address","resolve","exists","usePromise","useState","useModulesFromNode","ids","config","node","nodeError","useNode","logger","filterOptions","getModuleFilterOptions","result","setResult","useState","error","usePromise","debug","refreshModules","moduleInstances","Promise","all","map","id","resolve","filter","exists","on","mod","name","address","console","log","usePromise","ModuleDescriptionSchema","isPayloadOfSchemaType","useNodeDescription","config","activeNode","nodeError","useNode","description","error","usePromise","state","find","isPayloadOfSchemaType","ModuleDescriptionSchema","asNodeInstance","useNodeFromNode","nameOrAddressOrInstance","config","mod","error","useModuleFromNode","instance","asNodeInstance","Error","schema","name","address","console","message","undefined","isNodeInstance","useNodesFromNode","ids","config","modules","error","useModulesFromNode","reduce","prev","mod","isNodeInstance","push","undefined","usePromise","isModuleInstance","useState","usePromise","isDefined","asNodeInstance","useMemo","useWeakNodeConfigNodeField","config","nodeAddress","useMemo","node","undefined","nodeInstance","useWeakNode","config","nodeAddress","nodeInstance","useWeakNodeConfigNodeField","providedNode","useWeakProvidedNode","nodeAddressNode","error","usePromise","providedNodeInstance","deref","isDefined","WeakRef","asNodeInstance","resolve","required","undefined","getWeakModuleFromNodeConfigLogger","config","logger","useWeakModuleFromNode","nameOrAddressOrInstance","undefined","config","node","nodeError","useWeakNode","logger","getWeakModuleFromNodeConfigLogger","filterOptions","getWeakModuleFilterOptions","result","setResult","useState","error","usePromise","debug","identity","isModuleInstance","nodeInstance","deref","on","mod","name","address","WeakRef","resolve","exists","usePromise","useState","useWeakModulesFromNode","ids","config","node","nodeError","useNode","logger","filterOptions","getModuleFilterOptions","result","setResult","useState","error","usePromise","debug","nodeInstance","refreshModules","moduleInstances","Promise","all","map","id","resolve","filter","exists","mod","WeakRef","on","name","address","console","log","usePromise","ModuleDescriptionSchema","isPayloadOfSchemaType","useWeakNodeDescription","config","activeNode","nodeError","useWeakNode","description","error","usePromise","state","deref","find","isPayloadOfSchemaType","ModuleDescriptionSchema","isNodeInstance","useWeakNodeFromNode","nameOrAddressOrInstance","config","useWeakModuleFromNode","identity","isNodeInstance","NodeDescriptionBox","node","props","description","error","useWeakNodeDescription","FlexCol","code","color","undefined","message","JSON","stringify","NodeBox","variant","props","React","NodeDescriptionBox","Close","CloseIcon","ClickAwayListener","Drawer","IconButton","FlexGrowCol","FlexRow","useNodeDrawer","React","ChevronRight","ChevronRightIcon","ExpandMore","ExpandMoreIcon","styled","Typography","SimpleTreeView","React","useRef","styled","TreeItem","useAsyncEffect","React","useState","RenderModule","mod","idRef","childModules","setChildModules","useState","useAsyncEffect","mounted","moduleInstance","deref","address","children","resolve","filter","childModule","map","WeakRef","increment","newId","current","idIncrementor","toString","ids","push","queries","React","StyledAddressTreeItem","itemId","label","query","index","TreeItem","key","sx","mb","length","childModuleRef","styled","name","theme","marginBottom","spacing","ModuleDescriptionBox","mod","idRef","useRef","idIncrementor","ids","React","Typography","variant","StyledTreeView","aria-label","slots","collapseIcon","ExpandMoreIcon","expandIcon","ChevronRightIcon","sx","flexGrow","RenderModule","styled","SimpleTreeView","name","height","maxWidth","NodeDrawer","children","props","open","setOpen","useNodeDrawer","node","useWeakProvidedNode","React","Drawer","anchor","ClickAwayListener","onClickAway","FlexGrowCol","role","justifyContent","p","rowGap","minWidth","FlexRow","alignContent","width","IconButton","onClick","CloseIcon","ModuleDescriptionBox","mod"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/react-node",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
4
4
|
"description": "Common React library for all XYO projects that use React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xyo",
|
|
@@ -43,42 +43,42 @@
|
|
|
43
43
|
"src"
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@mui/x-tree-view": "~8.
|
|
47
|
-
"@xylabs/exists": "~5.0.
|
|
48
|
-
"@xylabs/logger": "~5.0.
|
|
49
|
-
"@xylabs/react-async-effect": "~7.1.
|
|
50
|
-
"@xylabs/react-flexbox": "~7.1.
|
|
51
|
-
"@xylabs/react-promise": "~7.1.
|
|
52
|
-
"@xylabs/typeof": "~5.0.
|
|
53
|
-
"@xyo-network/module-abstract": "~5.2
|
|
54
|
-
"@xyo-network/module-model": "~5.2
|
|
55
|
-
"@xyo-network/node-model": "~5.2
|
|
56
|
-
"@xyo-network/payload-model": "~5.2
|
|
57
|
-
"@xyo-network/react-node-context": "
|
|
58
|
-
"@xyo-network/react-node-provider": "
|
|
46
|
+
"@mui/x-tree-view": "~8.26.0",
|
|
47
|
+
"@xylabs/exists": "~5.0.64",
|
|
48
|
+
"@xylabs/logger": "~5.0.64",
|
|
49
|
+
"@xylabs/react-async-effect": "~7.1.9",
|
|
50
|
+
"@xylabs/react-flexbox": "~7.1.9",
|
|
51
|
+
"@xylabs/react-promise": "~7.1.9",
|
|
52
|
+
"@xylabs/typeof": "~5.0.64",
|
|
53
|
+
"@xyo-network/module-abstract": "~5.3.2",
|
|
54
|
+
"@xyo-network/module-model": "~5.3.2",
|
|
55
|
+
"@xyo-network/node-model": "~5.3.2",
|
|
56
|
+
"@xyo-network/payload-model": "~5.3.2",
|
|
57
|
+
"@xyo-network/react-node-context": "7.5.0",
|
|
58
|
+
"@xyo-network/react-node-provider": "7.5.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@emotion/react": "~11.14.0",
|
|
62
62
|
"@emotion/styled": "~11.14.1",
|
|
63
|
-
"@mui/icons-material": "~7.3.
|
|
64
|
-
"@mui/material": "~7.3.
|
|
65
|
-
"@mui/system": "~7.3.
|
|
66
|
-
"@storybook/react-vite": "~10.1
|
|
67
|
-
"@types/react": "^19.2.
|
|
68
|
-
"@xylabs/object": "~5.0.
|
|
69
|
-
"@xylabs/ts-scripts-yarn3": "~7.2
|
|
70
|
-
"@xylabs/tsconfig": "~7.2
|
|
71
|
-
"@xylabs/tsconfig-dom": "~7.2
|
|
72
|
-
"@xylabs/tsconfig-react": "~7.2
|
|
73
|
-
"@xyo-network/node-memory": "~5.2
|
|
74
|
-
"@xyo-network/payload-model": "~5.2
|
|
75
|
-
"@xyo-network/react-storybook": "
|
|
76
|
-
"@xyo-network/react-wallet": "
|
|
77
|
-
"react": "^19.2.
|
|
78
|
-
"react-dom": "^19.2.
|
|
79
|
-
"storybook": "~10.1
|
|
63
|
+
"@mui/icons-material": "~7.3.7",
|
|
64
|
+
"@mui/material": "~7.3.7",
|
|
65
|
+
"@mui/system": "~7.3.7",
|
|
66
|
+
"@storybook/react-vite": "~10.2.1",
|
|
67
|
+
"@types/react": "^19.2.10",
|
|
68
|
+
"@xylabs/object": "~5.0.64",
|
|
69
|
+
"@xylabs/ts-scripts-yarn3": "~7.3.2",
|
|
70
|
+
"@xylabs/tsconfig": "~7.3.2",
|
|
71
|
+
"@xylabs/tsconfig-dom": "~7.3.2",
|
|
72
|
+
"@xylabs/tsconfig-react": "~7.3.2",
|
|
73
|
+
"@xyo-network/node-memory": "~5.3.2",
|
|
74
|
+
"@xyo-network/payload-model": "~5.3.2",
|
|
75
|
+
"@xyo-network/react-storybook": "7.5.0",
|
|
76
|
+
"@xyo-network/react-wallet": "7.5.0",
|
|
77
|
+
"react": "^19.2.4",
|
|
78
|
+
"react-dom": "^19.2.4",
|
|
79
|
+
"storybook": "~10.2.1",
|
|
80
80
|
"typescript": "^5.9.3",
|
|
81
|
-
"vite": "~7.
|
|
81
|
+
"vite": "~7.3.1"
|
|
82
82
|
},
|
|
83
83
|
"peerDependencies": {
|
|
84
84
|
"@mui/icons-material": ">=6 <8",
|
|
@@ -90,4 +90,4 @@
|
|
|
90
90
|
"access": "public"
|
|
91
91
|
},
|
|
92
92
|
"docs": "dist/docs.json"
|
|
93
|
-
}
|
|
93
|
+
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { AbstractModuleInstance } from '@xyo-network/module-abstract'
|
|
2
2
|
import type { ModuleConfig, ModuleParams } from '@xyo-network/module-model'
|
|
3
|
-
import
|
|
3
|
+
import {
|
|
4
|
+
asSchema, type Query, type Schema,
|
|
5
|
+
} from '@xyo-network/payload-model'
|
|
4
6
|
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
+
export const TestModuleConfigSchema = asSchema('network.xyo.test.module', true)
|
|
8
|
+
export type TestModuleConfigSchema = typeof TestModuleConfigSchema
|
|
7
9
|
|
|
8
10
|
export class TestModule extends AbstractModuleInstance<ModuleParams<ModuleConfig<{ schema: TestModuleConfigSchema }>>> {
|
|
9
11
|
static override readonly configSchemas: Schema[] = [...super.configSchemas, TestModuleConfigSchema]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TypeCheck } from '@xylabs/object'
|
|
2
1
|
import { usePromise } from '@xylabs/react-promise'
|
|
2
|
+
import type { TypeCheck } from '@xylabs/sdk-js'
|
|
3
3
|
import type { ModuleInstance } from '@xyo-network/module-model'
|
|
4
4
|
import { isModuleInstance } from '@xyo-network/module-model'
|
|
5
5
|
import { useState } from 'react'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TypeCheck } from '@xylabs/object'
|
|
2
1
|
import { usePromise } from '@xylabs/react-promise'
|
|
2
|
+
import type { TypeCheck } from '@xylabs/sdk-js'
|
|
3
3
|
import type { ModuleInstance } from '@xyo-network/module-model'
|
|
4
4
|
import { isModuleInstance } from '@xyo-network/module-model'
|
|
5
5
|
import { useState } from 'react'
|
package/src/hooks/useWeakNode.ts
CHANGED