@xyo-network/react-node 2.77.2 → 2.78.1
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/index.cjs +464 -1
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +440 -1
- package/dist/browser/index.js.map +1 -1
- package/dist/neutral/index.cjs +464 -1
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.js +440 -1
- package/dist/neutral/index.js.map +1 -1
- package/dist/node/index.cjs +495 -1
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +446 -1
- package/dist/node/index.js.map +1 -1
- package/package.json +22 -22
package/dist/neutral/index.cjs
CHANGED
|
@@ -1,2 +1,465 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/index.ts
|
|
22
|
+
var src_exports = {};
|
|
23
|
+
__export(src_exports, {
|
|
24
|
+
NodeBox: () => NodeBox,
|
|
25
|
+
NodeDrawer: () => NodeDrawer,
|
|
26
|
+
useModuleFilterOptions: () => useModuleFilterOptions,
|
|
27
|
+
useModuleFromNode: () => useModuleFromNode,
|
|
28
|
+
useModuleFromNodeConfigLogger: () => useModuleFromNodeConfigLogger,
|
|
29
|
+
useModulesFromNode: () => useModulesFromNode,
|
|
30
|
+
useNode: () => useNode,
|
|
31
|
+
useNodeConfigNodeField: () => useNodeConfigNodeField,
|
|
32
|
+
useNodeDescription: () => useNodeDescription,
|
|
33
|
+
useNodeFromNode: () => useNodeFromNode,
|
|
34
|
+
useNodesFromNode: () => useNodesFromNode,
|
|
35
|
+
useProvidedNode: () => useProvidedNode,
|
|
36
|
+
useWeakModuleFilterOptions: () => useWeakModuleFilterOptions,
|
|
37
|
+
useWeakModuleFromNode: () => useWeakModuleFromNode,
|
|
38
|
+
useWeakModuleFromNodeConfigLogger: () => useWeakModuleFromNodeConfigLogger,
|
|
39
|
+
useWeakModulesFromNode: () => useWeakModulesFromNode,
|
|
40
|
+
useWeakNodeConfigNodeField: () => useWeakNodeConfigNodeField,
|
|
41
|
+
useWeakNodeDescription: () => useWeakNodeDescription,
|
|
42
|
+
useWeakNodeFromNode: () => useWeakNodeFromNode,
|
|
43
|
+
useWeakProvidedNode: () => useWeakProvidedNode
|
|
44
|
+
});
|
|
45
|
+
module.exports = __toCommonJS(src_exports);
|
|
46
|
+
|
|
47
|
+
// src/components/NodeDescriptionBox.tsx
|
|
48
|
+
var import_react_flexbox = require("@xylabs/react-flexbox");
|
|
49
|
+
|
|
50
|
+
// src/hooks/ModuleFromNodeConfig.ts
|
|
51
|
+
var useModuleFromNodeConfigLogger = (config) => {
|
|
52
|
+
return config?.logger;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
// src/hooks/provided/useProvidedNode.tsx
|
|
56
|
+
var import_react_node_context = require("@xyo-network/react-node-context");
|
|
57
|
+
var import_react = require("react");
|
|
58
|
+
var useProvidedNode = () => {
|
|
59
|
+
const { node } = (0, import_react.useContext)(import_react_node_context.NodeContext);
|
|
60
|
+
return [node];
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
// src/hooks/provided/useWeakProvidedNode.tsx
|
|
64
|
+
var import_react_node_context2 = require("@xyo-network/react-node-context");
|
|
65
|
+
var import_react2 = require("react");
|
|
66
|
+
var useWeakProvidedNode = () => {
|
|
67
|
+
const { node } = (0, import_react2.useContext)(import_react_node_context2.NodeContext);
|
|
68
|
+
const weakNode = (0, import_react2.useMemo)(() => node ? new WeakRef(node) : null, [node]);
|
|
69
|
+
return [weakNode];
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/hooks/useModuleFilterOptions.ts
|
|
73
|
+
var useModuleFilterOptions = (config) => {
|
|
74
|
+
const { direction, identity, maxDepth } = config ?? {};
|
|
75
|
+
return { direction, identity, maxDepth };
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
// src/hooks/useModuleFromNode.ts
|
|
79
|
+
var import_react_promise2 = require("@xylabs/react-promise");
|
|
80
|
+
var import_module_model = require("@xyo-network/module-model");
|
|
81
|
+
var import_react4 = require("react");
|
|
82
|
+
|
|
83
|
+
// src/hooks/useNode.ts
|
|
84
|
+
var import_react_promise = require("@xylabs/react-promise");
|
|
85
|
+
var import_node_model = require("@xyo-network/node-model");
|
|
86
|
+
|
|
87
|
+
// src/hooks/useNodeConfigNodeField.ts
|
|
88
|
+
var import_react3 = require("react");
|
|
89
|
+
var useNodeConfigNodeField = (config) => {
|
|
90
|
+
const nodeAddress = (0, import_react3.useMemo)(() => typeof config?.node === "string" ? config?.node : void 0, [config?.node]);
|
|
91
|
+
const nodeInstance = (0, import_react3.useMemo)(() => typeof config?.node === "object" ? config?.node : void 0, [config?.node]);
|
|
92
|
+
return [nodeAddress, nodeInstance];
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
// src/hooks/useNode.ts
|
|
96
|
+
var useNode = (config) => {
|
|
97
|
+
const [nodeAddress, nodeInstance] = useNodeConfigNodeField(config);
|
|
98
|
+
const [providedNode] = useProvidedNode();
|
|
99
|
+
const [nodeAddressNode, error] = (0, import_react_promise.usePromise)(async () => {
|
|
100
|
+
if (providedNode && nodeAddress) {
|
|
101
|
+
return (0, import_node_model.asNodeInstance)(await providedNode.resolve(nodeAddress), "Module is not a node");
|
|
102
|
+
}
|
|
103
|
+
}, [providedNode, nodeAddress]);
|
|
104
|
+
return [nodeAddressNode ?? nodeInstance ?? providedNode ?? void 0, error];
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
// src/hooks/useModuleFromNode.ts
|
|
108
|
+
var useModuleFromNode = (nameOrAddressOrInstance = void 0, config) => {
|
|
109
|
+
const [node, nodeError] = useNode(config);
|
|
110
|
+
const logger = useModuleFromNodeConfigLogger(config);
|
|
111
|
+
const filterOptions = useModuleFilterOptions(config);
|
|
112
|
+
const [result, setResult] = (0, import_react4.useState)();
|
|
113
|
+
const [, error] = (0, import_react_promise2.usePromise)(async () => {
|
|
114
|
+
logger?.debug("useModuleFromNode: resolving");
|
|
115
|
+
const identity = config?.identity ?? import_module_model.isModuleInstance;
|
|
116
|
+
if (node && nameOrAddressOrInstance) {
|
|
117
|
+
node.on("moduleAttached", ({ module: mod }) => {
|
|
118
|
+
logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`);
|
|
119
|
+
if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {
|
|
120
|
+
setResult(identity(mod) ? mod : void 0);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
node.on("moduleDetached", ({ module: mod }) => {
|
|
124
|
+
logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`);
|
|
125
|
+
if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {
|
|
126
|
+
setResult(void 0);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
if (identity(nameOrAddressOrInstance)) {
|
|
130
|
+
setResult(nameOrAddressOrInstance);
|
|
131
|
+
} else {
|
|
132
|
+
const result2 = await node.resolve(nameOrAddressOrInstance, filterOptions);
|
|
133
|
+
logger?.debug(`Result: ${result2?.address}`);
|
|
134
|
+
setResult(identity(result2) ? result2 : void 0);
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
logger?.debug("Result: No Node");
|
|
139
|
+
return;
|
|
140
|
+
}, [node, nameOrAddressOrInstance]);
|
|
141
|
+
return [result, nodeError ?? error];
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// src/hooks/useModulesFromNode.ts
|
|
145
|
+
var import_react_promise3 = require("@xylabs/react-promise");
|
|
146
|
+
var import_react5 = require("react");
|
|
147
|
+
var useModulesFromNode = (filter, config) => {
|
|
148
|
+
const [node, nodeError] = useNode(config);
|
|
149
|
+
const logger = config?.logger;
|
|
150
|
+
const filterOptions = useModuleFilterOptions();
|
|
151
|
+
const [result, setResult] = (0, import_react5.useState)();
|
|
152
|
+
const [, error] = (0, import_react_promise3.usePromise)(async () => {
|
|
153
|
+
logger?.debug("useModuleFromNode: resolving");
|
|
154
|
+
if (node) {
|
|
155
|
+
node.on("moduleAttached", async ({ module: mod }) => {
|
|
156
|
+
logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`);
|
|
157
|
+
const moduleInstances2 = filter ? await node.resolve(filter, filterOptions) : await node.resolve("*", filterOptions);
|
|
158
|
+
setResult(moduleInstances2);
|
|
159
|
+
});
|
|
160
|
+
node.on("moduleDetached", async ({ module: mod }) => {
|
|
161
|
+
logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`);
|
|
162
|
+
const moduleInstances2 = filter ? await node.resolve(filter, filterOptions) : await node.resolve("*", filterOptions);
|
|
163
|
+
setResult(moduleInstances2);
|
|
164
|
+
});
|
|
165
|
+
const moduleInstances = filter ? await node.resolve(filter, filterOptions) : await node.resolve("*", filterOptions);
|
|
166
|
+
setResult(moduleInstances);
|
|
167
|
+
return moduleInstances;
|
|
168
|
+
}
|
|
169
|
+
console.log("Result: No Node");
|
|
170
|
+
return;
|
|
171
|
+
}, [node, filter]);
|
|
172
|
+
return [result, nodeError ?? error];
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
// src/hooks/useNodeDescription.ts
|
|
176
|
+
var import_react_promise4 = require("@xylabs/react-promise");
|
|
177
|
+
var import_module_model2 = require("@xyo-network/module-model");
|
|
178
|
+
var import_payload_model = require("@xyo-network/payload-model");
|
|
179
|
+
var useNodeDescription = (config) => {
|
|
180
|
+
const [activeNode, nodeError] = useNode(config);
|
|
181
|
+
const [description, error] = (0, import_react_promise4.usePromise)(async () => {
|
|
182
|
+
const state = await activeNode?.state();
|
|
183
|
+
return state?.find((0, import_payload_model.isPayloadOfSchemaType)(import_module_model2.ModuleDescriptionSchema));
|
|
184
|
+
}, [activeNode]);
|
|
185
|
+
return [description, nodeError ?? error];
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
// src/hooks/useNodeFromNode.tsx
|
|
189
|
+
var import_node_model2 = require("@xyo-network/node-model");
|
|
190
|
+
var useNodeFromNode = (nameOrAddressOrInstance, config) => {
|
|
191
|
+
const [mod, error] = useModuleFromNode(nameOrAddressOrInstance, config);
|
|
192
|
+
const instance = (0, import_node_model2.asNodeInstance)(mod);
|
|
193
|
+
if (mod && !instance) {
|
|
194
|
+
const error2 = new Error(`Resolved module is not a NodeInstance [${mod.config?.schema}:${mod.config?.name}:${mod.address}]`);
|
|
195
|
+
console.error(error2.message);
|
|
196
|
+
return [void 0, error2];
|
|
197
|
+
}
|
|
198
|
+
return [instance, error];
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
// src/hooks/useNodesFromNode.tsx
|
|
202
|
+
var import_node_model3 = require("@xyo-network/node-model");
|
|
203
|
+
var useNodesFromNode = (filter, config) => {
|
|
204
|
+
const [modules, error] = useModulesFromNode(filter, config);
|
|
205
|
+
if (error) {
|
|
206
|
+
return [null, error];
|
|
207
|
+
}
|
|
208
|
+
return modules ? [
|
|
209
|
+
// eslint-disable-next-line unicorn/no-array-reduce
|
|
210
|
+
modules.reduce((prev, mod) => {
|
|
211
|
+
if ((0, import_node_model3.isNodeInstance)(mod)) {
|
|
212
|
+
prev.push(mod);
|
|
213
|
+
}
|
|
214
|
+
return prev;
|
|
215
|
+
}, []),
|
|
216
|
+
void 0
|
|
217
|
+
] : [modules, error];
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
// src/hooks/useWeakModuleFilterOptions.ts
|
|
221
|
+
var useWeakModuleFilterOptions = (config) => {
|
|
222
|
+
const { direction, identity, maxDepth } = config ?? {};
|
|
223
|
+
return { direction, identity, maxDepth };
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
// src/hooks/useWeakModuleFromNode.ts
|
|
227
|
+
var import_react_promise6 = require("@xylabs/react-promise");
|
|
228
|
+
var import_module_model3 = require("@xyo-network/module-model");
|
|
229
|
+
var import_react7 = require("react");
|
|
230
|
+
|
|
231
|
+
// src/hooks/useWeakNode.ts
|
|
232
|
+
var import_react_promise5 = require("@xylabs/react-promise");
|
|
233
|
+
var import_node_model4 = require("@xyo-network/node-model");
|
|
234
|
+
|
|
235
|
+
// src/hooks/useWeakNodeConfigNodeField.ts
|
|
236
|
+
var import_react6 = require("react");
|
|
237
|
+
var useWeakNodeConfigNodeField = (config) => {
|
|
238
|
+
const nodeAddress = (0, import_react6.useMemo)(() => typeof config?.node === "string" ? config?.node : void 0, [config?.node]);
|
|
239
|
+
const nodeInstance = (0, import_react6.useMemo)(() => typeof config?.node === "object" ? config?.node : void 0, [config?.node]);
|
|
240
|
+
return [nodeAddress, nodeInstance];
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
// src/hooks/useWeakNode.ts
|
|
244
|
+
var useWeakNode = (config) => {
|
|
245
|
+
const [nodeAddress, nodeInstance] = useWeakNodeConfigNodeField(config);
|
|
246
|
+
const [providedNode] = useWeakProvidedNode();
|
|
247
|
+
const [nodeAddressNode, error] = (0, import_react_promise5.usePromise)(async () => {
|
|
248
|
+
const providedNodeInstance = providedNode?.deref();
|
|
249
|
+
if (providedNodeInstance && nodeAddress) {
|
|
250
|
+
return new WeakRef((0, import_node_model4.asNodeInstance)(await providedNodeInstance.resolve(nodeAddress), "Module is not a node"));
|
|
251
|
+
}
|
|
252
|
+
}, [providedNode, nodeAddress]);
|
|
253
|
+
return [nodeAddressNode ?? nodeInstance ?? providedNode ?? void 0, error];
|
|
254
|
+
};
|
|
255
|
+
|
|
256
|
+
// src/hooks/WeakModuleFromNodeConfig.ts
|
|
257
|
+
var useWeakModuleFromNodeConfigLogger = (config) => {
|
|
258
|
+
return config?.logger;
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
// src/hooks/useWeakModuleFromNode.ts
|
|
262
|
+
var useWeakModuleFromNode = (nameOrAddressOrInstance = void 0, config) => {
|
|
263
|
+
const [node, nodeError] = useWeakNode(config);
|
|
264
|
+
const logger = useWeakModuleFromNodeConfigLogger(config);
|
|
265
|
+
const filterOptions = useWeakModuleFilterOptions(config);
|
|
266
|
+
const [result, setResult] = (0, import_react7.useState)();
|
|
267
|
+
const [, error] = (0, import_react_promise6.usePromise)(async () => {
|
|
268
|
+
logger?.debug("useModuleFromNode: resolving");
|
|
269
|
+
const identity = config?.identity ?? import_module_model3.isModuleInstance;
|
|
270
|
+
const nodeInstance = node?.deref();
|
|
271
|
+
if (nodeInstance && nameOrAddressOrInstance) {
|
|
272
|
+
nodeInstance.on("moduleAttached", ({ module: mod }) => {
|
|
273
|
+
logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`);
|
|
274
|
+
if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {
|
|
275
|
+
setResult(identity(mod) ? new WeakRef(mod) : void 0);
|
|
276
|
+
}
|
|
277
|
+
});
|
|
278
|
+
nodeInstance.on("moduleDetached", ({ module: mod }) => {
|
|
279
|
+
logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`);
|
|
280
|
+
if (mod.address === nameOrAddressOrInstance || mod.config?.name === nameOrAddressOrInstance) {
|
|
281
|
+
setResult(void 0);
|
|
282
|
+
}
|
|
283
|
+
});
|
|
284
|
+
if (identity(nameOrAddressOrInstance)) {
|
|
285
|
+
setResult(new WeakRef(nameOrAddressOrInstance));
|
|
286
|
+
} else {
|
|
287
|
+
const result2 = await nodeInstance.resolve(nameOrAddressOrInstance, filterOptions);
|
|
288
|
+
logger?.debug(`Result: ${result2?.address}`);
|
|
289
|
+
setResult(identity(result2) ? new WeakRef(result2) : void 0);
|
|
290
|
+
}
|
|
291
|
+
return result;
|
|
292
|
+
}
|
|
293
|
+
logger?.debug("Result: No Node");
|
|
294
|
+
return;
|
|
295
|
+
}, [node, nameOrAddressOrInstance]);
|
|
296
|
+
return [result, nodeError ?? error];
|
|
297
|
+
};
|
|
298
|
+
|
|
299
|
+
// src/hooks/useWeakModulesFromNode.ts
|
|
300
|
+
var import_react_promise7 = require("@xylabs/react-promise");
|
|
301
|
+
var import_react8 = require("react");
|
|
302
|
+
var useWeakModulesFromNode = (filter, config) => {
|
|
303
|
+
const [node, nodeError] = useNode(config);
|
|
304
|
+
const logger = config?.logger;
|
|
305
|
+
const filterOptions = useModuleFilterOptions();
|
|
306
|
+
const [result, setResult] = (0, import_react8.useState)();
|
|
307
|
+
const [, error] = (0, import_react_promise7.usePromise)(async () => {
|
|
308
|
+
logger?.debug("useModuleFromNode: resolving");
|
|
309
|
+
const nodeInstance = node;
|
|
310
|
+
if (nodeInstance) {
|
|
311
|
+
nodeInstance.on("moduleAttached", async ({ module: mod }) => {
|
|
312
|
+
const nodeInstance2 = node;
|
|
313
|
+
logger?.debug(`useModuleFromNode: moduleAttached [${mod.config.name ?? mod.address}]`);
|
|
314
|
+
const moduleInstances2 = filter ? await nodeInstance2?.resolve(filter, filterOptions) : await nodeInstance2?.resolve("*", filterOptions);
|
|
315
|
+
setResult(moduleInstances2?.map((mod2) => new WeakRef(mod2)));
|
|
316
|
+
});
|
|
317
|
+
nodeInstance.on("moduleDetached", async ({ module: mod }) => {
|
|
318
|
+
const nodeInstance2 = node;
|
|
319
|
+
logger?.debug(`useModuleFromNode: moduleDetached [${mod.config.name ?? mod.address}]`);
|
|
320
|
+
const moduleInstances2 = filter ? await nodeInstance2?.resolve(filter, filterOptions) : await nodeInstance2?.resolve("*", filterOptions);
|
|
321
|
+
setResult(moduleInstances2?.map((mod2) => new WeakRef(mod2)));
|
|
322
|
+
});
|
|
323
|
+
const moduleInstances = filter ? await nodeInstance.resolve(filter, filterOptions) : await nodeInstance.resolve("*", filterOptions);
|
|
324
|
+
setResult(moduleInstances?.map((mod) => new WeakRef(mod)));
|
|
325
|
+
return moduleInstances;
|
|
326
|
+
}
|
|
327
|
+
console.log("Result: No Node");
|
|
328
|
+
return;
|
|
329
|
+
}, [node, filter]);
|
|
330
|
+
return [result, nodeError ?? error];
|
|
331
|
+
};
|
|
332
|
+
|
|
333
|
+
// src/hooks/useWeakNodeDescription.ts
|
|
334
|
+
var import_react_promise8 = require("@xylabs/react-promise");
|
|
335
|
+
var import_module_model4 = require("@xyo-network/module-model");
|
|
336
|
+
var import_payload_model2 = require("@xyo-network/payload-model");
|
|
337
|
+
var useWeakNodeDescription = (config) => {
|
|
338
|
+
const [activeNode, nodeError] = useWeakNode(config);
|
|
339
|
+
const [description, error] = (0, import_react_promise8.usePromise)(async () => {
|
|
340
|
+
const state = await activeNode?.deref()?.state();
|
|
341
|
+
return state?.find((0, import_payload_model2.isPayloadOfSchemaType)(import_module_model4.ModuleDescriptionSchema));
|
|
342
|
+
}, [activeNode]);
|
|
343
|
+
return [description, nodeError ?? error];
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
// src/hooks/useWeakNodeFromNode.tsx
|
|
347
|
+
var import_node_model5 = require("@xyo-network/node-model");
|
|
348
|
+
var useWeakNodeFromNode = (nameOrAddressOrInstance, config) => {
|
|
349
|
+
return useWeakModuleFromNode(nameOrAddressOrInstance, { identity: import_node_model5.isNodeInstance, ...config });
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
// src/components/NodeDescriptionBox.tsx
|
|
353
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
354
|
+
var NodeDescriptionBox = ({ node, ...props }) => {
|
|
355
|
+
const [description, error] = useWeakNodeDescription({ node });
|
|
356
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_flexbox.FlexCol, { ...props, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { color: error ? "red" : void 0, children: error ? error.message : JSON.stringify(description, null, 2) }) });
|
|
357
|
+
};
|
|
358
|
+
|
|
359
|
+
// src/components/Node.tsx
|
|
360
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
361
|
+
var NodeBox = ({ variant, ...props }) => {
|
|
362
|
+
switch (variant) {
|
|
363
|
+
case "description":
|
|
364
|
+
default: {
|
|
365
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(NodeDescriptionBox, { ...props });
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
};
|
|
369
|
+
|
|
370
|
+
// src/components/NodeDrawer.tsx
|
|
371
|
+
var import_icons_material2 = require("@mui/icons-material");
|
|
372
|
+
var import_material3 = require("@mui/material");
|
|
373
|
+
var import_react_flexbox2 = require("@xylabs/react-flexbox");
|
|
374
|
+
var import_react_node_provider = require("@xyo-network/react-node-provider");
|
|
375
|
+
|
|
376
|
+
// src/components/render/ModuleDescriptionBox.tsx
|
|
377
|
+
var import_icons_material = require("@mui/icons-material");
|
|
378
|
+
var import_material2 = require("@mui/material");
|
|
379
|
+
var import_x_tree_view2 = require("@mui/x-tree-view");
|
|
380
|
+
var import_react10 = require("react");
|
|
381
|
+
|
|
382
|
+
// src/components/render/RenderModule.tsx
|
|
383
|
+
var import_material = require("@mui/material");
|
|
384
|
+
var import_x_tree_view = require("@mui/x-tree-view");
|
|
385
|
+
var import_react_async_effect = require("@xylabs/react-async-effect");
|
|
386
|
+
var import_react9 = require("react");
|
|
387
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
388
|
+
var RenderModule = ({ mod, idRef }) => {
|
|
389
|
+
const [childModules, setChildModules] = (0, import_react9.useState)();
|
|
390
|
+
(0, import_react_async_effect.useAsyncEffect)(
|
|
391
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
392
|
+
async (mounted) => {
|
|
393
|
+
const moduleInstance2 = mod.deref();
|
|
394
|
+
const { address: address2 } = moduleInstance2 ?? {};
|
|
395
|
+
if (moduleInstance2) {
|
|
396
|
+
const children = (await moduleInstance2.resolve("*")).filter((childModule) => childModule.address !== address2);
|
|
397
|
+
if (mounted()) {
|
|
398
|
+
setChildModules(children.map((childModule) => new WeakRef(childModule)));
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
},
|
|
402
|
+
[mod]
|
|
403
|
+
);
|
|
404
|
+
const increment = () => {
|
|
405
|
+
const newId = (idRef.current.idIncrementor++).toString();
|
|
406
|
+
idRef.current.ids.push(newId);
|
|
407
|
+
return newId;
|
|
408
|
+
};
|
|
409
|
+
const moduleInstance = mod.deref();
|
|
410
|
+
const { queries, address } = moduleInstance ?? {};
|
|
411
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(StyledAddressTreeItem, { nodeId: increment(), label: `address: ${address}`, children: [
|
|
412
|
+
queries?.map((query, index) => {
|
|
413
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_x_tree_view.TreeItem, { nodeId: increment(), label: `query : ${query}`, sx: { mb: index === queries.length - 1 ? 1.5 : 0.5 } }, query);
|
|
414
|
+
}),
|
|
415
|
+
childModules && childModules.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_x_tree_view.TreeItem, { nodeId: increment(), label: "children", sx: { mb: 0.5 }, children: childModules.map((childModuleRef) => {
|
|
416
|
+
const childModule = childModuleRef.deref();
|
|
417
|
+
return childModule ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(RenderModule, { mod: childModuleRef, idRef }, childModule?.address) : null;
|
|
418
|
+
}) }) : null
|
|
419
|
+
] });
|
|
420
|
+
};
|
|
421
|
+
var StyledAddressTreeItem = (0, import_material.styled)(import_x_tree_view.TreeItem, { name: "StyledAddressTreeItem" })(({ theme }) => ({
|
|
422
|
+
"& .MuiTreeItem-content": {
|
|
423
|
+
marginBottom: theme.spacing(0.25)
|
|
424
|
+
}
|
|
425
|
+
}));
|
|
426
|
+
|
|
427
|
+
// src/components/render/ModuleDescriptionBox.tsx
|
|
428
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
429
|
+
var ModuleDescriptionBox = ({ mod }) => {
|
|
430
|
+
const idRef = (0, import_react10.useRef)({ idIncrementor: 0, ids: [] });
|
|
431
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children: mod ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
|
|
432
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_material2.Typography, { variant: "h4", children: "Node Configuration" }),
|
|
433
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
434
|
+
StyledTreeView,
|
|
435
|
+
{
|
|
436
|
+
"aria-label": "file system navigator",
|
|
437
|
+
defaultCollapseIcon: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_icons_material.ExpandMore, {}),
|
|
438
|
+
defaultExpandIcon: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_icons_material.ChevronRight, {}),
|
|
439
|
+
sx: { flexGrow: 1 },
|
|
440
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(RenderModule, { mod, idRef })
|
|
441
|
+
}
|
|
442
|
+
)
|
|
443
|
+
] }) : mod === null ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_material2.Typography, { variant: "h4", children: "Node loading..." }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_material2.Typography, { variant: "h4", children: "Node not found" }) });
|
|
444
|
+
};
|
|
445
|
+
var StyledTreeView = (0, import_material2.styled)(import_x_tree_view2.TreeView, { name: "StyledTreeView" })(() => ({
|
|
446
|
+
height: "auto",
|
|
447
|
+
maxWidth: "auto"
|
|
448
|
+
}));
|
|
449
|
+
|
|
450
|
+
// src/components/NodeDrawer.tsx
|
|
451
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
452
|
+
var NodeDrawer = ({ children, ...props }) => {
|
|
453
|
+
const { open, setOpen } = (0, import_react_node_provider.useNodeDrawer)();
|
|
454
|
+
const [node] = useWeakProvidedNode();
|
|
455
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_material3.Drawer, { open: open ?? false, anchor: "right", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_material3.ClickAwayListener, { onClickAway: () => setOpen?.(false), children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_react_flexbox2.FlexGrowCol, { role: "presentation", justifyContent: "start", p: 2, rowGap: 2, minWidth: "33vw", children: [
|
|
456
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_flexbox2.FlexRow, { alignContent: "start", justifyContent: "start", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_material3.IconButton, { onClick: () => setOpen?.(false), children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_icons_material2.Close, {}) }) }),
|
|
457
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ModuleDescriptionBox, { mod: node }),
|
|
458
|
+
children
|
|
459
|
+
] }) }) });
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
// src/index.ts
|
|
463
|
+
__reExport(src_exports, require("@xyo-network/react-node-context"), module.exports);
|
|
464
|
+
__reExport(src_exports, require("@xyo-network/react-node-provider"), module.exports);
|
|
2
465
|
//# sourceMappingURL=index.cjs.map
|