@xyo-network/react-node 2.78.0 → 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.
@@ -1,2 +1,465 @@
1
- "use strict";var P=Object.defineProperty;var ve=Object.getOwnPropertyDescriptor;var De=Object.getOwnPropertyNames;var Pe=Object.prototype.hasOwnProperty;var be=(e,o)=>{for(var n in o)P(e,n,{get:o[n],enumerable:!0})},D=(e,o,n,d)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of De(o))!Pe.call(e,r)&&r!==n&&P(e,r,{get:()=>o[r],enumerable:!(d=ve(o,r))||d.enumerable});return e},p=(e,o,n)=>(D(e,o,"default"),n&&D(n,o,"default"));var Ee=e=>D(P({},"__esModule",{value:!0}),e);var f={};be(f,{NodeBox:()=>Ge,NodeDrawer:()=>qe,useModuleFilterOptions:()=>I,useModuleFromNode:()=>$,useModuleFromNodeConfigLogger:()=>b,useModulesFromNode:()=>L,useNode:()=>M,useNodeConfigNodeField:()=>S,useNodeDescription:()=>Be,useNodeFromNode:()=>Se,useNodesFromNode:()=>$e,useProvidedNode:()=>E,useWeakModuleFilterOptions:()=>A,useWeakModuleFromNode:()=>q,useWeakModuleFromNodeConfigLogger:()=>j,useWeakModulesFromNode:()=>Le,useWeakNodeConfigNodeField:()=>V,useWeakNodeDescription:()=>J,useWeakNodeFromNode:()=>Ae,useWeakProvidedNode:()=>k});module.exports=Ee(f);var Ie=require("@xylabs/react-flexbox");var b=e=>e?.logger;var K=require("@xyo-network/react-node-context"),Q=require("react"),E=()=>{let{node:e}=(0,Q.useContext)(K.NodeContext);return[e]};var U=require("@xyo-network/react-node-context"),y=require("react"),k=()=>{let{node:e}=(0,y.useContext)(U.NodeContext);return[(0,y.useMemo)(()=>e?new WeakRef(e):null,[e])]};var I=e=>{let{direction:o,identity:n,maxDepth:d}=e??{};return{direction:o,identity:n,maxDepth:d}};var Z=require("@xylabs/react-promise"),_=require("@xyo-network/module-model"),O=require("react");var X=require("@xylabs/react-promise"),Y=require("@xyo-network/node-model");var B=require("react"),S=e=>{let o=(0,B.useMemo)(()=>typeof e?.node=="string"?e?.node:void 0,[e?.node]),n=(0,B.useMemo)(()=>typeof e?.node=="object"?e?.node:void 0,[e?.node]);return[o,n]};var M=e=>{let[o,n]=S(e),[d]=E(),[r,t]=(0,X.usePromise)(async()=>{if(d&&o)return(0,Y.asNodeInstance)(await d.resolve(o),"Module is not a node")},[d,o]);return[r??n??d??void 0,t]};var $=(e=void 0,o)=>{let[n,d]=M(o),r=b(o),t=I(o),[m,a]=(0,O.useState)(),[,l]=(0,Z.usePromise)(async()=>{r?.debug("useModuleFromNode: resolving");let u=o?.identity??_.isModuleInstance;if(n&&e){if(n.on("moduleAttached",({module:s})=>{r?.debug(`useModuleFromNode: moduleAttached [${s.config.name??s.address}]`),(s.address===e||s.config?.name===e)&&a(u(s)?s:void 0)}),n.on("moduleDetached",({module:s})=>{r?.debug(`useModuleFromNode: moduleDetached [${s.config.name??s.address}]`),(s.address===e||s.config?.name===e)&&a(void 0)}),u(e))a(e);else{let s=await n.resolve(e,t);r?.debug(`Result: ${s?.address}`),a(u(s)?s:void 0)}return m}r?.debug("Result: No Node")},[n,e]);return[m,d??l]};var ee=require("@xylabs/react-promise"),oe=require("react");var L=(e,o)=>{let[n,d]=M(o),r=o?.logger,t=I(),[m,a]=(0,oe.useState)(),[,l]=(0,ee.usePromise)(async()=>{if(r?.debug("useModuleFromNode: resolving"),n){n.on("moduleAttached",async({module:s})=>{r?.debug(`useModuleFromNode: moduleAttached [${s.config.name??s.address}]`);let i=e?await n.resolve(e,t):await n.resolve("*",t);a(i)}),n.on("moduleDetached",async({module:s})=>{r?.debug(`useModuleFromNode: moduleDetached [${s.config.name??s.address}]`);let i=e?await n.resolve(e,t):await n.resolve("*",t);a(i)});let u=e?await n.resolve(e,t):await n.resolve("*",t);return a(u),u}console.log("Result: No Node")},[n,e]);return[m,d??l]};var ne=require("@xylabs/react-promise"),re=require("@xyo-network/module-model"),de=require("@xyo-network/payload-model");var Be=e=>{let[o,n]=M(e),[d,r]=(0,ne.usePromise)(async()=>(await o?.state())?.find((0,de.isPayloadOfSchemaType)(re.ModuleDescriptionSchema)),[o]);return[d,n??r]};var te=require("@xyo-network/node-model");var Se=(e,o)=>{let[n,d]=$(e,o),r=(0,te.asNodeInstance)(n);if(n&&!r){let t=new Error(`Resolved module is not a NodeInstance [${n.config?.schema}:${n.config?.name}:${n.address}]`);return console.error(t.message),[void 0,t]}return[r,d]};var se=require("@xyo-network/node-model");var $e=(e,o)=>{let[n,d]=L(e,o);return d?[null,d]:n?[n.reduce((r,t)=>((0,se.isNodeInstance)(t)&&r.push(t),r),[]),void 0]:[n,d]};var A=e=>{let{direction:o,identity:n,maxDepth:d}=e??{};return{direction:o,identity:n,maxDepth:d}};var ae=require("@xylabs/react-promise"),le=require("@xyo-network/module-model"),me=require("react");var ie=require("@xylabs/react-promise"),ue=require("@xyo-network/node-model");var G=require("react"),V=e=>{let o=(0,G.useMemo)(()=>typeof e?.node=="string"?e?.node:void 0,[e?.node]),n=(0,G.useMemo)(()=>typeof e?.node=="object"?e?.node:void 0,[e?.node]);return[o,n]};var h=e=>{let[o,n]=V(e),[d]=k(),[r,t]=(0,ie.usePromise)(async()=>{let m=d?.deref();if(m&&o)return new WeakRef((0,ue.asNodeInstance)(await m.resolve(o),"Module is not a node"))},[d,o]);return[r??n??d??void 0,t]};var j=e=>e?.logger;var q=(e=void 0,o)=>{let[n,d]=h(o),r=j(o),t=A(o),[m,a]=(0,me.useState)(),[,l]=(0,ae.usePromise)(async()=>{r?.debug("useModuleFromNode: resolving");let u=o?.identity??le.isModuleInstance,s=n?.deref();if(s&&e){if(s.on("moduleAttached",({module:i})=>{r?.debug(`useModuleFromNode: moduleAttached [${i.config.name??i.address}]`),(i.address===e||i.config?.name===e)&&a(u(i)?new WeakRef(i):void 0)}),s.on("moduleDetached",({module:i})=>{r?.debug(`useModuleFromNode: moduleDetached [${i.config.name??i.address}]`),(i.address===e||i.config?.name===e)&&a(void 0)}),u(e))a(new WeakRef(e));else{let i=await s.resolve(e,t);r?.debug(`Result: ${i?.address}`),a(u(i)?new WeakRef(i):void 0)}return m}r?.debug("Result: No Node")},[n,e]);return[m,d??l]};var ce=require("@xylabs/react-promise"),fe=require("react");var Le=(e,o)=>{let[n,d]=M(o),r=o?.logger,t=I(),[m,a]=(0,fe.useState)(),[,l]=(0,ce.usePromise)(async()=>{r?.debug("useModuleFromNode: resolving");let u=n;if(u){u.on("moduleAttached",async({module:i})=>{let N=n;r?.debug(`useModuleFromNode: moduleAttached [${i.config.name??i.address}]`);let R=e?await N?.resolve(e,t):await N?.resolve("*",t);a(R?.map(v=>new WeakRef(v)))}),u.on("moduleDetached",async({module:i})=>{let N=n;r?.debug(`useModuleFromNode: moduleDetached [${i.config.name??i.address}]`);let R=e?await N?.resolve(e,t):await N?.resolve("*",t);a(R?.map(v=>new WeakRef(v)))});let s=e?await u.resolve(e,t):await u.resolve("*",t);return a(s?.map(i=>new WeakRef(i))),s}console.log("Result: No Node")},[n,e]);return[m,d??l]};var pe=require("@xylabs/react-promise"),Ne=require("@xyo-network/module-model"),Me=require("@xyo-network/payload-model");var J=e=>{let[o,n]=h(e),[d,r]=(0,pe.usePromise)(async()=>(await o?.deref()?.state())?.find((0,Me.isPayloadOfSchemaType)(Ne.ModuleDescriptionSchema)),[o]);return[d,n??r]};var ge=require("@xyo-network/node-model");var Ae=(e,o)=>q(e,{identity:ge.isNodeInstance,...o});var z=require("react/jsx-runtime"),Fe=({node:e,...o})=>{let[n,d]=J({node:e});return(0,z.jsx)(Ie.FlexCol,{...o,children:(0,z.jsx)("code",{color:d?"red":void 0,children:d?d.message:JSON.stringify(n,null,2)})})};var xe=require("react/jsx-runtime"),Ge=({variant:e,...o})=>{switch(e){case"description":default:return(0,xe.jsx)(Fe,{...o})}};var we=require("@mui/icons-material"),C=require("@mui/material"),w=require("@xylabs/react-flexbox"),Re=require("@xyo-network/react-node-provider");var T=require("@mui/icons-material"),x=require("@mui/material"),he=require("@mui/x-tree-view"),We=require("react");var Ce=require("@mui/material"),W=require("@mui/x-tree-view"),ke=require("@xylabs/react-async-effect"),ye=require("react"),F=require("react/jsx-runtime"),H=({mod:e,idRef:o})=>{let[n,d]=(0,ye.useState)();(0,ke.useAsyncEffect)(async l=>{let u=e.deref(),{address:s}=u??{};if(u){let i=(await u.resolve("*")).filter(N=>N.address!==s);l()&&d(i.map(N=>new WeakRef(N)))}},[e]);let r=()=>{let l=(o.current.idIncrementor++).toString();return o.current.ids.push(l),l},t=e.deref(),{queries:m,address:a}=t??{};return(0,F.jsxs)(Ve,{nodeId:r(),label:`address: ${a}`,children:[m?.map((l,u)=>(0,F.jsx)(W.TreeItem,{nodeId:r(),label:`query : ${l}`,sx:{mb:u===m.length-1?1.5:.5}},l)),n&&n.length>0?(0,F.jsx)(W.TreeItem,{nodeId:r(),label:"children",sx:{mb:.5},children:n.map(l=>{let u=l.deref();return u?(0,F.jsx)(H,{mod:l,idRef:o},u?.address):null})}):null]})},Ve=(0,Ce.styled)(W.TreeItem,{name:"StyledAddressTreeItem"})(({theme:e})=>({"& .MuiTreeItem-content":{marginBottom:e.spacing(.25)}}));var c=require("react/jsx-runtime"),Te=({mod:e})=>{let o=(0,We.useRef)({idIncrementor:0,ids:[]});return(0,c.jsx)(c.Fragment,{children:e?(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(x.Typography,{variant:"h4",children:"Node Configuration"}),(0,c.jsx)(je,{"aria-label":"file system navigator",defaultCollapseIcon:(0,c.jsx)(T.ExpandMore,{}),defaultExpandIcon:(0,c.jsx)(T.ChevronRight,{}),sx:{flexGrow:1},children:(0,c.jsx)(H,{mod:e,idRef:o})})]}):e===null?(0,c.jsx)(x.Typography,{variant:"h4",children:"Node loading..."}):(0,c.jsx)(x.Typography,{variant:"h4",children:"Node not found"})})},je=(0,x.styled)(he.TreeView,{name:"StyledTreeView"})(()=>({height:"auto",maxWidth:"auto"}));var g=require("react/jsx-runtime"),qe=({children:e,...o})=>{let{open:n,setOpen:d}=(0,Re.useNodeDrawer)(),[r]=k();return(0,g.jsx)(C.Drawer,{open:n??!1,anchor:"right",...o,children:(0,g.jsx)(C.ClickAwayListener,{onClickAway:()=>d?.(!1),children:(0,g.jsxs)(w.FlexGrowCol,{role:"presentation",justifyContent:"start",p:2,rowGap:2,minWidth:"33vw",children:[(0,g.jsx)(w.FlexRow,{alignContent:"start",justifyContent:"start",width:"100%",children:(0,g.jsx)(C.IconButton,{onClick:()=>d?.(!1),children:(0,g.jsx)(we.Close,{})})}),(0,g.jsx)(Te,{mod:r}),e]})})})};p(f,require("@xyo-network/react-node-context"),module.exports);p(f,require("@xyo-network/react-node-provider"),module.exports);
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