@xyo-network/react-node-renderer 2.64.0 → 2.64.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.
Files changed (78) hide show
  1. package/dist/browser/Cytoscape/CytoscapeElements.js +40 -9
  2. package/dist/browser/Cytoscape/CytoscapeElements.js.map +1 -1
  3. package/dist/browser/Cytoscape/CytoscapeIcons.js +2 -1
  4. package/dist/browser/Cytoscape/CytoscapeIcons.js.map +1 -1
  5. package/dist/browser/Cytoscape/CytoscapeStyles.js +4 -3
  6. package/dist/browser/Cytoscape/CytoscapeStyles.js.map +1 -1
  7. package/dist/browser/Cytoscape/index.js +220 -4
  8. package/dist/browser/Cytoscape/index.js.map +1 -1
  9. package/dist/browser/Cytoscape/lib/encodeSvg.js +3 -2
  10. package/dist/browser/Cytoscape/lib/encodeSvg.js.map +1 -1
  11. package/dist/browser/Cytoscape/lib/iconMap.js +2 -1
  12. package/dist/browser/Cytoscape/lib/iconMap.js.map +1 -1
  13. package/dist/browser/Cytoscape/lib/index.js +80 -5
  14. package/dist/browser/Cytoscape/lib/index.js.map +1 -1
  15. package/dist/browser/Cytoscape/lib/layout/ColaLayout.js +2 -1
  16. package/dist/browser/Cytoscape/lib/layout/ColaLayout.js.map +1 -1
  17. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.js +2 -1
  18. package/dist/browser/Cytoscape/lib/layout/ConcentricLayout.js.map +1 -1
  19. package/dist/browser/Cytoscape/lib/layout/index.js +22 -2
  20. package/dist/browser/Cytoscape/lib/layout/index.js.map +1 -1
  21. package/dist/browser/Cytoscape/lib/parseModuleType.js +2 -1
  22. package/dist/browser/Cytoscape/lib/parseModuleType.js.map +1 -1
  23. package/dist/browser/components/ModuleCardParser.js +3 -2
  24. package/dist/browser/components/ModuleCardParser.js.map +1 -1
  25. package/dist/browser/components/ModuleGraphFlexBox.js +459 -11
  26. package/dist/browser/components/ModuleGraphFlexBox.js.map +1 -1
  27. package/dist/browser/components/ProvidedNodeRenderer.js +352 -5
  28. package/dist/browser/components/ProvidedNodeRenderer.js.map +1 -1
  29. package/dist/browser/components/RelationalGraph.js +15 -5
  30. package/dist/browser/components/RelationalGraph.js.map +1 -1
  31. package/dist/browser/components/WithCola.js +3 -2
  32. package/dist/browser/components/WithCola.js.map +1 -1
  33. package/dist/browser/components/cytoscape-extensions/WithExtensions.js +3 -2
  34. package/dist/browser/components/cytoscape-extensions/WithExtensions.js.map +1 -1
  35. package/dist/browser/components/cytoscape-extensions/index.js +18 -1
  36. package/dist/browser/components/cytoscape-extensions/index.js.map +1 -1
  37. package/dist/browser/components/index.js +381 -4
  38. package/dist/browser/components/index.js.map +1 -1
  39. package/dist/browser/components/lib/index.js +0 -1
  40. package/dist/browser/components/lib/index.js.map +1 -1
  41. package/dist/browser/components/story/TestData.js +4 -3
  42. package/dist/browser/components/story/TestData.js.map +1 -1
  43. package/dist/browser/components/story/index.js +48 -1
  44. package/dist/browser/components/story/index.js.map +1 -1
  45. package/dist/browser/contexts/CytoscapeInstance/Context.js +2 -1
  46. package/dist/browser/contexts/CytoscapeInstance/Context.js.map +1 -1
  47. package/dist/browser/contexts/CytoscapeInstance/Provider.js +9 -3
  48. package/dist/browser/contexts/CytoscapeInstance/Provider.js.map +1 -1
  49. package/dist/browser/contexts/CytoscapeInstance/index.js +23 -4
  50. package/dist/browser/contexts/CytoscapeInstance/index.js.map +1 -1
  51. package/dist/browser/contexts/CytoscapeInstance/use.js +8 -2
  52. package/dist/browser/contexts/CytoscapeInstance/use.js.map +1 -1
  53. package/dist/browser/contexts/index.js +23 -1
  54. package/dist/browser/contexts/index.js.map +1 -1
  55. package/dist/browser/hooks/cytoscape/index.js +395 -6
  56. package/dist/browser/hooks/cytoscape/index.js.map +1 -1
  57. package/dist/browser/hooks/cytoscape/useAddNewElements.js +51 -4
  58. package/dist/browser/hooks/cytoscape/useAddNewElements.js.map +1 -1
  59. package/dist/browser/hooks/cytoscape/useCytoscapeElements.js +113 -4
  60. package/dist/browser/hooks/cytoscape/useCytoscapeElements.js.map +1 -1
  61. package/dist/browser/hooks/cytoscape/useCytoscapeOptions.js +136 -4
  62. package/dist/browser/hooks/cytoscape/useCytoscapeOptions.js.map +1 -1
  63. package/dist/browser/hooks/cytoscape/useCytoscapeStyle.js +105 -4
  64. package/dist/browser/hooks/cytoscape/useCytoscapeStyle.js.map +1 -1
  65. package/dist/browser/hooks/cytoscape/useIcons.js +51 -3
  66. package/dist/browser/hooks/cytoscape/useIcons.js.map +1 -1
  67. package/dist/browser/hooks/cytoscape/useNewElements.js +160 -5
  68. package/dist/browser/hooks/cytoscape/useNewElements.js.map +1 -1
  69. package/dist/browser/hooks/cytoscape/usePopperListener.js +2 -1
  70. package/dist/browser/hooks/cytoscape/usePopperListener.js.map +1 -1
  71. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.js +306 -7
  72. package/dist/browser/hooks/cytoscape/useRelationalGraphOptions.js.map +1 -1
  73. package/dist/browser/hooks/index.js +395 -1
  74. package/dist/browser/hooks/index.js.map +1 -1
  75. package/dist/browser/index.js +484 -3
  76. package/dist/browser/index.js.map +1 -1
  77. package/dist/docs.json +88 -88
  78. package/package.json +25 -25
@@ -1,5 +1,382 @@
1
- export * from "./lib";
2
- export * from "./ModuleCardParser";
3
- export * from "./ProvidedNodeRenderer";
4
- export * from "./RelationalGraph";
1
+ // src/components/ModuleCardParser.tsx
2
+ import { asArchivistInstance } from "@xyo-network/archivist-model";
3
+ import { asDivinerInstance } from "@xyo-network/diviner-model";
4
+ import { ArchivistCard } from "@xyo-network/react-archivist";
5
+ import { DivinerCard, ModuleCard } from "@xyo-network/react-module";
6
+ import { jsx } from "react/jsx-runtime";
7
+ var ModuleCardParser = ({ module }) => {
8
+ switch (true) {
9
+ case module?.config.schema.includes("archivist"):
10
+ return /* @__PURE__ */ jsx(ArchivistCard, { module: asArchivistInstance(module) });
11
+ case module?.config.schema.includes("diviner"):
12
+ return /* @__PURE__ */ jsx(DivinerCard, { module: asDivinerInstance(module) });
13
+ default:
14
+ return /* @__PURE__ */ jsx(ModuleCard, { module });
15
+ }
16
+ };
17
+
18
+ // src/components/ProvidedNodeRenderer.tsx
19
+ import { useProvidedNode } from "@xyo-network/react-node";
20
+
21
+ // src/contexts/CytoscapeInstance/Context.ts
22
+ import { createContextEx } from "@xyo-network/react-shared";
23
+ var CytoscapeInstanceContext = createContextEx();
24
+
25
+ // src/contexts/CytoscapeInstance/use.ts
26
+ import { useContextEx } from "@xyo-network/react-shared";
27
+ var useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, "CytoscapeInstance", required);
28
+
29
+ // src/Cytoscape/CytoscapeElements.ts
30
+ import { isNodeInstance as isNodeInstance2 } from "@xyo-network/node-model";
31
+
32
+ // src/Cytoscape/lib/encodeSvg.ts
33
+ import { renderToStaticMarkup } from "react-dom/server";
34
+ var dataUri = "data:image/svg+xml,";
35
+ var encodeSvg = (reactElement, color) => {
36
+ const svgString = renderToStaticMarkup(reactElement);
37
+ const doc = new DOMParser().parseFromString(svgString, "text/html");
38
+ const svgElement = doc.getElementsByTagName("svg")[0];
39
+ if (svgElement) {
40
+ svgElement.setAttribute("xmlns", "http://www.w3.org/2000/svg");
41
+ svgElement.setAttribute("height", "100");
42
+ svgElement.style.fill = color ?? "black";
43
+ }
44
+ return `${dataUri}${window.encodeURIComponent(svgElement.outerHTML)}`;
45
+ };
46
+
47
+ // src/Cytoscape/lib/iconMap.ts
48
+ var generateIconMap = () => ({
49
+ archivist: "",
50
+ bridge: "",
51
+ diviner: "",
52
+ module: "",
53
+ node: "",
54
+ sentinel: "",
55
+ witness: ""
56
+ });
57
+
58
+ // src/Cytoscape/lib/layout/ConcentricLayout.ts
59
+ var ConcentricLayout = {
60
+ concentric: function(node) {
61
+ return node.degree();
62
+ },
63
+ levelWidth: function() {
64
+ return 2;
65
+ },
66
+ minNodeSpacing: 75,
67
+ name: "concentric"
68
+ };
69
+
70
+ // src/Cytoscape/lib/parseModuleType.ts
71
+ import { isArchivistInstance } from "@xyo-network/archivist-model";
72
+ import { isBridgeInstance } from "@xyo-network/bridge-model";
73
+ import { isDivinerInstance } from "@xyo-network/diviner-model";
74
+ import { isNodeInstance } from "@xyo-network/node-model";
75
+ import { isSentinelInstance } from "@xyo-network/sentinel";
76
+ import { isWitnessModule } from "@xyo-network/witness";
77
+ var parseModuleType = (module) => {
78
+ let type = "module";
79
+ if (module) {
80
+ if (isArchivistInstance(module)) {
81
+ type = "archivist";
82
+ } else if (isBridgeInstance(module)) {
83
+ type = "bridge";
84
+ } else if (isDivinerInstance(module)) {
85
+ type = "diviner";
86
+ } else if (isNodeInstance(module)) {
87
+ type = "node";
88
+ } else if (isSentinelInstance(module)) {
89
+ type = "sentinel";
90
+ } else if (isWitnessModule(module)) {
91
+ type = "witness";
92
+ } else {
93
+ type = "module";
94
+ }
95
+ }
96
+ return type;
97
+ };
98
+
99
+ // src/Cytoscape/CytoscapeElements.ts
100
+ var CytoscapeElements = class _CytoscapeElements {
101
+ static MaxNameLength = 20;
102
+ static buildEdge(rootNode, newNode) {
103
+ return {
104
+ data: {
105
+ id: `${rootNode.data.id}/${newNode.data.id}`,
106
+ source: rootNode.data.id,
107
+ target: newNode.data.id
108
+ }
109
+ };
110
+ }
111
+ static async buildElements(module) {
112
+ const newRootNode = _CytoscapeElements.buildRootNode(module);
113
+ const newElements = [newRootNode];
114
+ try {
115
+ const childElements = await _CytoscapeElements.recurseNodes(module);
116
+ childElements?.forEach((module2) => {
117
+ const newNode = _CytoscapeElements.buildNode(module2, newRootNode.data.id);
118
+ newElements.push(newNode);
119
+ const newEdge = _CytoscapeElements.buildEdge(newRootNode, newNode);
120
+ newElements.push(newEdge);
121
+ });
122
+ return newElements;
123
+ } catch (e) {
124
+ console.error("error resolving modules", e);
125
+ return [];
126
+ }
127
+ }
128
+ static buildNode(module, rootNodeId) {
129
+ const { address, config } = module;
130
+ const normalizedName = config.name ?? address.substring(0, 8);
131
+ return {
132
+ data: {
133
+ address,
134
+ id: address,
135
+ name: normalizedName,
136
+ rootNodeId,
137
+ type: parseModuleType(module)
138
+ }
139
+ };
140
+ }
141
+ static buildRootNode = (module) => {
142
+ return _CytoscapeElements.buildNode(module);
143
+ };
144
+ static normalizeName(name) {
145
+ if (!name)
146
+ return;
147
+ if (name.length > this.MaxNameLength)
148
+ return `${name.substring(0, 20)}...`;
149
+ return name;
150
+ }
151
+ static async recurseNodes(module, maxTraversals = 1) {
152
+ let localDepth = 0;
153
+ const childModules = [];
154
+ const traverse = async (nestedNode) => {
155
+ if (localDepth < maxTraversals) {
156
+ const modules = await nestedNode.resolve(void 0, { direction: "down", maxDepth: 2 });
157
+ await Promise.all(
158
+ modules.map(async (child) => {
159
+ if (child !== nestedNode && isNodeInstance2(child)) {
160
+ localDepth++;
161
+ await traverse(child);
162
+ } else if (child !== module) {
163
+ childModules.push(child);
164
+ }
165
+ })
166
+ );
167
+ }
168
+ };
169
+ await traverse(module);
170
+ return childModules;
171
+ }
172
+ };
173
+
174
+ // src/Cytoscape/CytoscapeIcons.tsx
175
+ import {
176
+ BubbleChartRounded as BubbleChartRoundedIcon,
177
+ Hub as HubIcon,
178
+ InsertLinkRounded as InsertLinkRoundedIcon,
179
+ Inventory2Rounded as Inventory2RoundedIcon,
180
+ QuestionMarkRounded as QuestionMarkRoundedIcon,
181
+ TimerRounded as TimerRoundedIcon,
182
+ VisibilityRounded as VisibilityRoundedIcon
183
+ } from "@mui/icons-material";
184
+ var CyIconSet = {
185
+ archivist: Inventory2RoundedIcon,
186
+ bridge: InsertLinkRoundedIcon,
187
+ diviner: BubbleChartRoundedIcon,
188
+ module: QuestionMarkRoundedIcon,
189
+ node: HubIcon,
190
+ sentinel: TimerRoundedIcon,
191
+ witness: VisibilityRoundedIcon
192
+ };
193
+
194
+ // src/Cytoscape/CytoscapeStyles.ts
195
+ var NodeIdStyles = (color, outlineColor) => ({
196
+ selector: "node[name]",
197
+ style: {
198
+ color,
199
+ "font-family": "Lexend Deca, Helvetica, sans-serif",
200
+ "font-size": 12,
201
+ "overlay-padding": "6px",
202
+ "text-halign": "center",
203
+ "text-outline-color": outlineColor,
204
+ "text-outline-width": "1px",
205
+ "text-valign": "top"
206
+ }
207
+ });
208
+ var NodeStyled = (icons, bgColor, hideLabels = false) => ({
209
+ selector: "node",
210
+ style: {
211
+ "background-color": bgColor,
212
+ "background-height": "75%",
213
+ "background-image": (elem) => icons[elem.data("type")],
214
+ "background-width": "24",
215
+ label: hideLabels ? void 0 : "data(name)",
216
+ shape: "round-rectangle"
217
+ }
218
+ });
219
+ var EdgeStyled = (lineColor, targetArrowColor) => ({
220
+ selector: "edge",
221
+ style: {
222
+ "curve-style": "bezier",
223
+ "line-color": lineColor,
224
+ "line-opacity": 0.1,
225
+ "target-arrow-color": targetArrowColor,
226
+ "target-arrow-shape": "triangle",
227
+ width: 3
228
+ }
229
+ });
230
+
231
+ // src/hooks/cytoscape/useCytoscapeElements.ts
232
+ import { useAsyncEffect } from "@xylabs/react-async-effect";
233
+ import { isNodeInstance as isNodeInstance3 } from "@xyo-network/node-model";
234
+ import { useEffect, useState } from "react";
235
+ var useCytoscapeElements = (module) => {
236
+ const [elements, setElements] = useState([]);
237
+ useAsyncEffect(
238
+ // eslint-disable-next-line react-hooks/exhaustive-deps
239
+ async () => {
240
+ if (module) {
241
+ const newElements = await CytoscapeElements.buildElements(module) ?? [];
242
+ setElements(newElements);
243
+ }
244
+ },
245
+ [module]
246
+ );
247
+ useEffect(() => {
248
+ let attachedListener = void 0;
249
+ let detachedListener = void 0;
250
+ if (module && isNodeInstance3(module)) {
251
+ attachedListener = module.on("moduleAttached", async () => {
252
+ const newElements = await CytoscapeElements.buildElements(module) ?? [];
253
+ setElements(newElements);
254
+ });
255
+ detachedListener = module.on("moduleDetached", async () => {
256
+ const newElements = await CytoscapeElements.buildElements(module) ?? [];
257
+ setElements(newElements);
258
+ });
259
+ }
260
+ return () => {
261
+ attachedListener?.();
262
+ detachedListener?.();
263
+ };
264
+ }, [module]);
265
+ return elements;
266
+ };
267
+
268
+ // src/hooks/cytoscape/useCytoscapeOptions.ts
269
+ import { useMemo as useMemo3 } from "react";
270
+
271
+ // src/hooks/cytoscape/useCytoscapeStyle.tsx
272
+ import { useTheme as useTheme2 } from "@mui/material";
273
+ import { useMemo as useMemo2 } from "react";
274
+
275
+ // src/hooks/cytoscape/useIcons.tsx
276
+ import { useTheme } from "@mui/material";
277
+ import { useMemo } from "react";
278
+ import { jsx as jsx2 } from "react/jsx-runtime";
279
+ var useIcons = () => {
280
+ const theme = useTheme();
281
+ const icons = useMemo(() => {
282
+ const iconMap = generateIconMap();
283
+ return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {
284
+ const icon = /* @__PURE__ */ jsx2(IconComponent, { fontSize: "small" });
285
+ acc[name] = encodeSvg(icon, theme.palette.getContrastText(theme.palette.text.primary));
286
+ return acc;
287
+ }, iconMap);
288
+ }, [theme.palette]);
289
+ return icons;
290
+ };
291
+
292
+ // src/hooks/cytoscape/useCytoscapeStyle.tsx
293
+ var useCytoscapeStyle = (hideLabels = false) => {
294
+ const theme = useTheme2();
295
+ const icons = useIcons();
296
+ const style = useMemo2(
297
+ () => [
298
+ NodeIdStyles(theme.palette.text.primary, theme.palette.getContrastText(theme.palette.text.primary)),
299
+ NodeStyled(icons, theme.palette.primary.main, hideLabels),
300
+ EdgeStyled(theme.palette.divider, theme.palette.divider)
301
+ ],
302
+ [icons, hideLabels, theme]
303
+ );
304
+ return style;
305
+ };
306
+
307
+ // src/hooks/cytoscape/useCytoscapeOptions.ts
308
+ var useCytoscapeOptions = (elements, style, layout) => {
309
+ const defaultStyle = useCytoscapeStyle();
310
+ const options = useMemo3(() => {
311
+ if (elements && layout && style) {
312
+ return {
313
+ elements,
314
+ layout: layout ?? ConcentricLayout,
315
+ style: style ?? defaultStyle
316
+ };
317
+ }
318
+ }, [elements, layout, style]);
319
+ return options;
320
+ };
321
+
322
+ // src/components/RelationalGraph.tsx
323
+ import { Button, ButtonGroup, styled } from "@mui/material";
324
+ import { FlexCol, FlexRow } from "@xylabs/react-flexbox";
325
+ import { useShareForwardedRef } from "@xyo-network/react-shared";
326
+ import cytoscape from "cytoscape";
327
+ import { forwardRef, useEffect as useEffect2, useState as useState2 } from "react";
328
+ import { jsx as jsx3, jsxs } from "react/jsx-runtime";
329
+ var NodeRelationalGraphFlexBox = forwardRef(({ actions, options, ...props }, ref) => {
330
+ const [cy, setCy] = useState2();
331
+ const { setCy: setCyContext } = useCytoscapeInstance();
332
+ const sharedRef = useShareForwardedRef(ref);
333
+ const handleReset = () => {
334
+ cy?.reset();
335
+ cy?.fit(void 0, 20);
336
+ };
337
+ useEffect2(() => {
338
+ if (sharedRef) {
339
+ const newCy = cytoscape({
340
+ container: sharedRef.current,
341
+ ...options
342
+ });
343
+ setCy(newCy);
344
+ }
345
+ }, [options, sharedRef]);
346
+ useEffect2(() => {
347
+ setCyContext?.(cy);
348
+ }, [cy, setCyContext]);
349
+ return /* @__PURE__ */ jsxs(FlexCol, { ...props, children: [
350
+ /* @__PURE__ */ jsx3(ActionsContainer, { children: /* @__PURE__ */ jsxs(ButtonGroup, { children: [
351
+ actions,
352
+ /* @__PURE__ */ jsx3(Button, { size: "small", variant: "contained", onClick: handleReset, children: "Reset" })
353
+ ] }) }),
354
+ /* @__PURE__ */ jsx3(FlexCol, { alignItems: "stretch", height: "100%", position: "absolute", ref: sharedRef, width: "100%" })
355
+ ] });
356
+ });
357
+ NodeRelationalGraphFlexBox.displayName = "NodeRelationalGraph";
358
+ var ActionsContainer = styled(FlexRow, { name: "ActionsContainer" })(({ theme }) => ({
359
+ flexWrap: "wrap",
360
+ gap: theme.spacing(1),
361
+ position: "absolute",
362
+ right: "10px",
363
+ top: "10px",
364
+ zIndex: 2
365
+ }));
366
+ var NodeRelationalGraph = NodeRelationalGraphFlexBox;
367
+
368
+ // src/components/ProvidedNodeRenderer.tsx
369
+ import { jsx as jsx4 } from "react/jsx-runtime";
370
+ var ProvidedNodeRenderer = ({ node, ...props }) => {
371
+ const [providedNode] = useProvidedNode();
372
+ const elements = useCytoscapeElements(node ?? providedNode);
373
+ const options = useCytoscapeOptions(elements);
374
+ return /* @__PURE__ */ jsx4(NodeRelationalGraphFlexBox, { alignItems: "stretch", flexGrow: 1, height: "100%", options, ...props });
375
+ };
376
+ export {
377
+ ModuleCardParser,
378
+ NodeRelationalGraph,
379
+ NodeRelationalGraphFlexBox,
380
+ ProvidedNodeRenderer
381
+ };
5
382
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/index.ts"],"sourcesContent":["export * from './lib'\nexport * from './ModuleCardParser'\nexport * from './ProvidedNodeRenderer'\nexport * from './RelationalGraph'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/components/ModuleCardParser.tsx","../../../src/components/ProvidedNodeRenderer.tsx","../../../src/contexts/CytoscapeInstance/Context.ts","../../../src/contexts/CytoscapeInstance/use.ts","../../../src/Cytoscape/CytoscapeElements.ts","../../../src/Cytoscape/lib/encodeSvg.ts","../../../src/Cytoscape/lib/iconMap.ts","../../../src/Cytoscape/lib/layout/ConcentricLayout.ts","../../../src/Cytoscape/lib/parseModuleType.ts","../../../src/Cytoscape/CytoscapeIcons.tsx","../../../src/Cytoscape/CytoscapeStyles.ts","../../../src/hooks/cytoscape/useCytoscapeElements.ts","../../../src/hooks/cytoscape/useCytoscapeOptions.ts","../../../src/hooks/cytoscape/useCytoscapeStyle.tsx","../../../src/hooks/cytoscape/useIcons.tsx","../../../src/components/RelationalGraph.tsx"],"sourcesContent":["import { asArchivistInstance } from '@xyo-network/archivist-model'\nimport { asDivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleInstance } from '@xyo-network/module'\nimport { ArchivistCard } from '@xyo-network/react-archivist'\nimport { DivinerCard, ModuleCard } from '@xyo-network/react-module'\n\nexport interface ModuleCardParserProps {\n module?: ModuleInstance\n}\n\nexport const ModuleCardParser: React.FC<ModuleCardParserProps> = ({ module }) => {\n switch (true) {\n case module?.config.schema.includes('archivist'):\n return <ArchivistCard module={asArchivistInstance(module)} />\n case module?.config.schema.includes('diviner'):\n return <DivinerCard module={asDivinerInstance(module)} />\n default:\n return <ModuleCard module={module} />\n }\n}\n","import { AccountInstance } from '@xyo-network/account-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\n\nimport { useCytoscapeElements, useCytoscapeOptions } from '../hooks'\nimport { NodeRelationalGraphProps } from './lib'\nimport { NodeRelationalGraphFlexBox } from './RelationalGraph'\n\nexport interface ProvidedNodeRendererProps extends NodeRelationalGraphProps {\n account?: AccountInstance\n node?: NodeInstance\n}\n\nexport const ProvidedNodeRenderer: React.FC<ProvidedNodeRendererProps> = ({ node, ...props }) => {\n const [providedNode] = useProvidedNode()\n const elements = useCytoscapeElements(node ?? providedNode)\n const options = useCytoscapeOptions(elements)\n\n return <NodeRelationalGraphFlexBox alignItems=\"stretch\" flexGrow={1} height=\"100%\" options={options} {...props} />\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, 'CytoscapeInstance', required)\n","import { ModuleInstance } from '@xyo-network/module'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { ElementDefinition } from 'cytoscape'\n\nimport { parseModuleType } from './lib'\n\nexport class CytoscapeElements {\n static MaxNameLength = 20\n\n static buildEdge(rootNode: ElementDefinition, newNode: ElementDefinition) {\n return {\n data: {\n id: `${rootNode.data.id}/${newNode.data.id}`,\n source: rootNode.data.id,\n target: newNode.data.id,\n },\n }\n }\n\n static async buildElements(module: ModuleInstance): Promise<ElementDefinition[]> {\n const newRootNode = CytoscapeElements.buildRootNode(module)\n const newElements: ElementDefinition[] = [newRootNode]\n\n try {\n const childElements = await CytoscapeElements.recurseNodes(module)\n childElements?.forEach((module) => {\n const newNode = CytoscapeElements.buildNode(module, newRootNode.data.id)\n newElements.push(newNode)\n\n const newEdge = CytoscapeElements.buildEdge(newRootNode, newNode)\n newElements.push(newEdge)\n })\n\n return newElements\n } catch (e) {\n console.error('error resolving modules', e)\n return []\n }\n }\n\n static buildNode(module: ModuleInstance, rootNodeId?: string): ElementDefinition {\n const { address, config } = module\n const normalizedName = config.name ?? address.substring(0, 8)\n return {\n data: {\n address,\n id: address,\n name: normalizedName,\n rootNodeId,\n type: parseModuleType(module),\n },\n }\n }\n\n static buildRootNode = (module: ModuleInstance): ElementDefinition => {\n return CytoscapeElements.buildNode(module)\n }\n\n static normalizeName(name?: string) {\n if (!name) return\n if (name.length > this.MaxNameLength) return `${name.substring(0, 20)}...`\n return name\n }\n\n static async recurseNodes(module: ModuleInstance, maxTraversals = 1): Promise<ModuleInstance[]> {\n let localDepth = 0\n const childModules: ModuleInstance[] = []\n\n const traverse = async (nestedNode: ModuleInstance) => {\n if (localDepth < maxTraversals) {\n const modules = await nestedNode.resolve(undefined, { direction: 'down', maxDepth: 2 })\n await Promise.all(\n modules.map(async (child) => {\n if (child !== nestedNode && isNodeInstance(child)) {\n localDepth++\n await traverse(child)\n // don't re add the root module that was passed in\n } else if (child !== module) {\n childModules.push(child)\n }\n }),\n )\n }\n }\n\n await traverse(module)\n\n return childModules\n }\n}\n","import { ReactElement } from 'react'\n// eslint-disable-next-line import/no-internal-modules\nimport { renderToStaticMarkup } from 'react-dom/server'\n\nconst dataUri = 'data:image/svg+xml,'\n\nexport const encodeSvg = (reactElement: ReactElement, color?: string) => {\n const svgString = renderToStaticMarkup(reactElement)\n\n const doc = new DOMParser().parseFromString(svgString, 'text/html')\n const svgElement = doc.getElementsByTagName('svg')[0]\n if (svgElement) {\n svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg')\n svgElement.setAttribute('height', '100')\n svgElement.style.fill = color ?? 'black'\n }\n\n return `${dataUri}${window.encodeURIComponent(svgElement.outerHTML)}`\n}\n","import { CyNodeModuleTypes } from './CyNodeModuleTypes'\n\nexport const generateIconMap: () => Record<CyNodeModuleTypes, string> = () => ({\n archivist: '',\n bridge: '',\n diviner: '',\n module: '',\n node: '',\n sentinel: '',\n witness: '',\n})\n","import { CytoscapeOptions } from 'cytoscape'\n\nexport const ConcentricLayout: CytoscapeOptions['layout'] = {\n concentric: function (node) {\n return node.degree()\n },\n levelWidth: function () {\n return 2\n },\n minNodeSpacing: 75,\n name: 'concentric',\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { ModuleInstance } from '@xyo-network/module'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel'\nimport { isWitnessModule } from '@xyo-network/witness'\n\nimport { CyNodeModuleTypes } from './CyNodeModuleTypes'\n\nexport const parseModuleType = (module?: ModuleInstance): CyNodeModuleTypes => {\n let type: CyNodeModuleTypes = 'module'\n if (module) {\n if (isArchivistInstance(module)) {\n type = 'archivist'\n } else if (isBridgeInstance(module)) {\n type = 'bridge'\n } else if (isDivinerInstance(module)) {\n type = 'diviner'\n } else if (isNodeInstance(module)) {\n type = 'node'\n } else if (isSentinelInstance(module)) {\n type = 'sentinel'\n } else if (isWitnessModule(module)) {\n type = 'witness'\n } else {\n type = 'module'\n }\n }\n return type\n}\n","import {\n BubbleChartRounded as BubbleChartRoundedIcon,\n Hub as HubIcon,\n InsertLinkRounded as InsertLinkRoundedIcon,\n Inventory2Rounded as Inventory2RoundedIcon,\n QuestionMarkRounded as QuestionMarkRoundedIcon,\n TimerRounded as TimerRoundedIcon,\n VisibilityRounded as VisibilityRoundedIcon,\n} from '@mui/icons-material'\nimport { SvgIconTypeMap } from '@mui/material'\nimport { OverridableComponent } from '@mui/material/OverridableComponent'\n\nimport { CyNodeModuleTypes } from './lib'\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport const CyIconSet: Record<CyNodeModuleTypes, OverridableComponent<SvgIconTypeMap<{}, 'svg'>>> = {\n archivist: Inventory2RoundedIcon,\n bridge: InsertLinkRoundedIcon,\n diviner: BubbleChartRoundedIcon,\n module: QuestionMarkRoundedIcon,\n node: HubIcon,\n sentinel: TimerRoundedIcon,\n witness: VisibilityRoundedIcon,\n}\n","import { Stylesheet } from 'cytoscape'\n\nimport { CyNodeModuleTypes } from './lib'\n\nexport const NodeIdStyles = (color?: string, outlineColor?: string): Stylesheet => ({\n selector: 'node[name]',\n style: {\n color,\n 'font-family': 'Lexend Deca, Helvetica, sans-serif',\n 'font-size': 12,\n 'overlay-padding': '6px',\n 'text-halign': 'center',\n 'text-outline-color': outlineColor,\n 'text-outline-width': '1px',\n 'text-valign': 'top',\n },\n})\n\nexport const NodeStyled = (icons: Record<CyNodeModuleTypes, string>, bgColor?: string, hideLabels = false): Stylesheet => ({\n selector: 'node',\n style: {\n 'background-color': bgColor,\n 'background-height': '75%',\n 'background-image': (elem) => icons[elem.data('type') as CyNodeModuleTypes],\n 'background-width': '24',\n label: hideLabels ? undefined : 'data(name)',\n shape: 'round-rectangle',\n },\n})\n\nexport const EdgeStyled = (lineColor?: string, targetArrowColor?: string) => ({\n selector: 'edge',\n style: {\n 'curve-style': 'bezier',\n 'line-color': lineColor,\n 'line-opacity': 0.1,\n 'target-arrow-color': targetArrowColor,\n 'target-arrow-shape': 'triangle',\n width: 3,\n },\n})\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { EventUnsubscribeFunction, ModuleInstance } from '@xyo-network/module'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { ElementDefinition } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeElements } from '../../Cytoscape'\n\nexport const useCytoscapeElements = (module?: ModuleInstance | null) => {\n const [elements, setElements] = useState<ElementDefinition[]>([])\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n if (module) {\n const newElements = (await CytoscapeElements.buildElements(module)) ?? []\n setElements(newElements)\n }\n },\n [module],\n )\n\n useEffect(() => {\n let attachedListener: EventUnsubscribeFunction | undefined = undefined\n let detachedListener: EventUnsubscribeFunction | undefined = undefined\n\n if (module && isNodeInstance(module)) {\n attachedListener = module.on('moduleAttached', async () => {\n const newElements = (await CytoscapeElements.buildElements(module)) ?? []\n setElements(newElements)\n })\n detachedListener = module.on('moduleDetached', async () => {\n const newElements = (await CytoscapeElements.buildElements(module)) ?? []\n setElements(newElements)\n })\n }\n\n return () => {\n attachedListener?.()\n detachedListener?.()\n }\n }, [module])\n\n return elements\n}\n","import { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape'\nimport { useCytoscapeStyle } from './useCytoscapeStyle'\n\nexport const useCytoscapeOptions = (\n elements: CytoscapeOptions['elements'],\n style?: CytoscapeOptions['style'],\n layout?: CytoscapeOptions['layout'],\n) => {\n const defaultStyle = useCytoscapeStyle()\n\n const options = useMemo<CytoscapeOptions | undefined>(() => {\n if (elements && layout && style) {\n return {\n elements,\n layout: layout ?? ConcentricLayout,\n style: style ?? defaultStyle,\n }\n }\n }, [elements, layout, style])\n\n return options\n}\n","import { useTheme } from '@mui/material'\nimport { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { EdgeStyled, NodeIdStyles, NodeStyled } from '../../Cytoscape'\nimport { useIcons } from './useIcons'\n\nexport const useCytoscapeStyle = (hideLabels = false) => {\n const theme = useTheme()\n const icons = useIcons()\n\n const style: CytoscapeOptions['style'] = useMemo(\n () => [\n NodeIdStyles(theme.palette.text.primary, theme.palette.getContrastText(theme.palette.text.primary)),\n NodeStyled(icons, theme.palette.primary.main, hideLabels),\n EdgeStyled(theme.palette.divider, theme.palette.divider),\n ],\n [icons, hideLabels, theme],\n )\n\n return style\n}\n","import { useTheme } from '@mui/material'\nimport { useMemo } from 'react'\n\nimport { CyIconSet, CyNodeModuleTypes, encodeSvg, generateIconMap } from '../../Cytoscape'\n\nexport const useIcons = () => {\n const theme = useTheme()\n const icons = useMemo(() => {\n const iconMap = generateIconMap()\n return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {\n const icon = <IconComponent fontSize=\"small\" />\n acc[name as CyNodeModuleTypes] = encodeSvg(icon, theme.palette.getContrastText(theme.palette.text.primary))\n return acc\n }, iconMap)\n }, [theme.palette])\n\n return icons\n}\n","import { Button, ButtonGroup, styled } from '@mui/material'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useShareForwardedRef } from '@xyo-network/react-shared'\nimport cytoscape, { Core } from 'cytoscape'\nimport { forwardRef, useEffect, useState } from 'react'\n\nimport { useCytoscapeInstance } from '../contexts'\nimport { NodeRelationalGraphProps } from './lib'\n\nexport const NodeRelationalGraphFlexBox = forwardRef<HTMLDivElement, NodeRelationalGraphProps>(({ actions, options, ...props }, ref) => {\n const [cy, setCy] = useState<Core>()\n const { setCy: setCyContext } = useCytoscapeInstance()\n const sharedRef = useShareForwardedRef(ref)\n\n const handleReset = () => {\n cy?.reset()\n cy?.fit(undefined, 20)\n }\n\n useEffect(() => {\n if (sharedRef) {\n const newCy = cytoscape({\n container: sharedRef.current,\n ...options,\n })\n setCy(newCy)\n }\n }, [options, sharedRef])\n\n useEffect(() => {\n setCyContext?.(cy)\n }, [cy, setCyContext])\n\n return (\n <FlexCol {...props}>\n <ActionsContainer>\n <ButtonGroup>\n {actions}\n <Button size={'small'} variant={'contained'} onClick={handleReset}>\n Reset\n </Button>\n </ButtonGroup>\n </ActionsContainer>\n {/* Cytoscape Element */}\n <FlexCol alignItems=\"stretch\" height=\"100%\" position=\"absolute\" ref={sharedRef} width=\"100%\"></FlexCol>\n </FlexCol>\n )\n})\n\nNodeRelationalGraphFlexBox.displayName = 'NodeRelationalGraph'\n\nconst ActionsContainer = styled(FlexRow, { name: 'ActionsContainer' })(({ theme }) => ({\n flexWrap: 'wrap',\n gap: theme.spacing(1),\n position: 'absolute',\n right: '10px',\n top: '10px',\n zIndex: 2,\n}))\n\n/** @deprecated */\nexport const NodeRelationalGraph = NodeRelationalGraphFlexBox\n"],"mappings":"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","names":["isNodeInstance","module","isNodeInstance","isNodeInstance","isNodeInstance","useMemo","useTheme","useMemo","jsx","useTheme","useMemo","useMemo","useEffect","useState","jsx","useState","useEffect","jsx"]}
@@ -1,2 +1 @@
1
- export * from "./RelationalGraphProps";
2
1
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/lib/index.ts"],"sourcesContent":["export * from './RelationalGraphProps'\n"],"mappings":"AAAA,cAAc;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,4 +1,5 @@
1
- const elements = [
1
+ // src/components/story/TestData.tsx
2
+ var elements = [
2
3
  {
3
4
  // node a
4
5
  data: { id: "a", name: "element a" }
@@ -20,7 +21,7 @@ const elements = [
20
21
  data: { id: "ac", source: "a", target: "c" }
21
22
  }
22
23
  ];
23
- const style = [
24
+ var style = [
24
25
  {
25
26
  selector: "node",
26
27
  style: {
@@ -38,7 +39,7 @@ const style = [
38
39
  }
39
40
  }
40
41
  ];
41
- const options = {
42
+ var options = {
42
43
  elements,
43
44
  style
44
45
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/story/TestData.tsx"],"sourcesContent":["import { CytoscapeOptions } from 'cytoscape'\n\nconst elements: CytoscapeOptions['elements'] = [\n {\n // node a\n data: { id: 'a', name: 'element a' },\n },\n {\n // node b\n data: { id: 'b', name: 'element b' },\n },\n {\n // node c\n data: { id: 'c', name: 'element c' },\n },\n {\n // edge ab\n data: { id: 'ab', source: 'a', target: 'b' },\n },\n {\n // edge ac\n data: { id: 'ac', source: 'a', target: 'c' },\n },\n]\n\nconst style: CytoscapeOptions['style'] = [\n {\n selector: 'node',\n style: {\n label: 'data(id)',\n },\n },\n\n {\n selector: 'edge',\n style: {\n 'curve-style': 'bezier',\n 'line-color': '#ccc',\n 'target-arrow-color': '#ccc',\n 'target-arrow-shape': 'triangle',\n width: 3,\n },\n },\n]\n\nexport const options: CytoscapeOptions = {\n elements,\n style,\n}\n"],"mappings":"AAEA,MAAM,WAAyC;AAAA,EAC7C;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,KAAK,MAAM,YAAY;AAAA,EACrC;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,KAAK,MAAM,YAAY;AAAA,EACrC;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,KAAK,MAAM,YAAY;AAAA,EACrC;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,MAAM,QAAQ,KAAK,QAAQ,IAAI;AAAA,EAC7C;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,MAAM,QAAQ,KAAK,QAAQ,IAAI;AAAA,EAC7C;AACF;AAEA,MAAM,QAAmC;AAAA,EACvC;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,MACL,eAAe;AAAA,MACf,cAAc;AAAA,MACd,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,MAAM,UAA4B;AAAA,EACvC;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/story/TestData.tsx"],"sourcesContent":["import { CytoscapeOptions } from 'cytoscape'\n\nconst elements: CytoscapeOptions['elements'] = [\n {\n // node a\n data: { id: 'a', name: 'element a' },\n },\n {\n // node b\n data: { id: 'b', name: 'element b' },\n },\n {\n // node c\n data: { id: 'c', name: 'element c' },\n },\n {\n // edge ab\n data: { id: 'ab', source: 'a', target: 'b' },\n },\n {\n // edge ac\n data: { id: 'ac', source: 'a', target: 'c' },\n },\n]\n\nconst style: CytoscapeOptions['style'] = [\n {\n selector: 'node',\n style: {\n label: 'data(id)',\n },\n },\n\n {\n selector: 'edge',\n style: {\n 'curve-style': 'bezier',\n 'line-color': '#ccc',\n 'target-arrow-color': '#ccc',\n 'target-arrow-shape': 'triangle',\n width: 3,\n },\n },\n]\n\nexport const options: CytoscapeOptions = {\n elements,\n style,\n}\n"],"mappings":";AAEA,IAAM,WAAyC;AAAA,EAC7C;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,KAAK,MAAM,YAAY;AAAA,EACrC;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,KAAK,MAAM,YAAY;AAAA,EACrC;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,KAAK,MAAM,YAAY;AAAA,EACrC;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,MAAM,QAAQ,KAAK,QAAQ,IAAI;AAAA,EAC7C;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,MAAM,QAAQ,KAAK,QAAQ,IAAI;AAAA,EAC7C;AACF;AAEA,IAAM,QAAmC;AAAA,EACvC;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,MACL,eAAe;AAAA,MACf,cAAc;AAAA,MACd,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,UAA4B;AAAA,EACvC;AAAA,EACA;AACF;","names":[]}
@@ -1,2 +1,49 @@
1
- export * from "./TestData";
1
+ // src/components/story/TestData.tsx
2
+ var elements = [
3
+ {
4
+ // node a
5
+ data: { id: "a", name: "element a" }
6
+ },
7
+ {
8
+ // node b
9
+ data: { id: "b", name: "element b" }
10
+ },
11
+ {
12
+ // node c
13
+ data: { id: "c", name: "element c" }
14
+ },
15
+ {
16
+ // edge ab
17
+ data: { id: "ab", source: "a", target: "b" }
18
+ },
19
+ {
20
+ // edge ac
21
+ data: { id: "ac", source: "a", target: "c" }
22
+ }
23
+ ];
24
+ var style = [
25
+ {
26
+ selector: "node",
27
+ style: {
28
+ label: "data(id)"
29
+ }
30
+ },
31
+ {
32
+ selector: "edge",
33
+ style: {
34
+ "curve-style": "bezier",
35
+ "line-color": "#ccc",
36
+ "target-arrow-color": "#ccc",
37
+ "target-arrow-shape": "triangle",
38
+ width: 3
39
+ }
40
+ }
41
+ ];
42
+ var options = {
43
+ elements,
44
+ style
45
+ };
46
+ export {
47
+ options
48
+ };
2
49
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/story/index.ts"],"sourcesContent":["export * from './TestData'\n"],"mappings":"AAAA,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/story/TestData.tsx"],"sourcesContent":["import { CytoscapeOptions } from 'cytoscape'\n\nconst elements: CytoscapeOptions['elements'] = [\n {\n // node a\n data: { id: 'a', name: 'element a' },\n },\n {\n // node b\n data: { id: 'b', name: 'element b' },\n },\n {\n // node c\n data: { id: 'c', name: 'element c' },\n },\n {\n // edge ab\n data: { id: 'ab', source: 'a', target: 'b' },\n },\n {\n // edge ac\n data: { id: 'ac', source: 'a', target: 'c' },\n },\n]\n\nconst style: CytoscapeOptions['style'] = [\n {\n selector: 'node',\n style: {\n label: 'data(id)',\n },\n },\n\n {\n selector: 'edge',\n style: {\n 'curve-style': 'bezier',\n 'line-color': '#ccc',\n 'target-arrow-color': '#ccc',\n 'target-arrow-shape': 'triangle',\n width: 3,\n },\n },\n]\n\nexport const options: CytoscapeOptions = {\n elements,\n style,\n}\n"],"mappings":";AAEA,IAAM,WAAyC;AAAA,EAC7C;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,KAAK,MAAM,YAAY;AAAA,EACrC;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,KAAK,MAAM,YAAY;AAAA,EACrC;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,KAAK,MAAM,YAAY;AAAA,EACrC;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,MAAM,QAAQ,KAAK,QAAQ,IAAI;AAAA,EAC7C;AAAA,EACA;AAAA;AAAA,IAEE,MAAM,EAAE,IAAI,MAAM,QAAQ,KAAK,QAAQ,IAAI;AAAA,EAC7C;AACF;AAEA,IAAM,QAAmC;AAAA,EACvC;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA;AAAA,IACE,UAAU;AAAA,IACV,OAAO;AAAA,MACL,eAAe;AAAA,MACf,cAAc;AAAA,MACd,sBAAsB;AAAA,MACtB,sBAAsB;AAAA,MACtB,OAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,UAA4B;AAAA,EACvC;AAAA,EACA;AACF;","names":[]}
@@ -1,5 +1,6 @@
1
+ // src/contexts/CytoscapeInstance/Context.ts
1
2
  import { createContextEx } from "@xyo-network/react-shared";
2
- const CytoscapeInstanceContext = createContextEx();
3
+ var CytoscapeInstanceContext = createContextEx();
3
4
  export {
4
5
  CytoscapeInstanceContext
5
6
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/contexts/CytoscapeInstance/Context.ts"],"sourcesContent":["import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n"],"mappings":"AAAA,SAAS,uBAAuB;AAIzB,MAAM,2BAA2B,gBAAwC;","names":[]}
1
+ {"version":3,"sources":["../../../../src/contexts/CytoscapeInstance/Context.ts"],"sourcesContent":["import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n"],"mappings":";AAAA,SAAS,uBAAuB;AAIzB,IAAM,2BAA2B,gBAAwC;","names":[]}
@@ -1,7 +1,13 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ // src/contexts/CytoscapeInstance/Provider.tsx
2
2
  import { useEffect, useState } from "react";
3
- import { CytoscapeInstanceContext } from "./Context";
4
- const CytoscapeInstanceProvider = ({ children, defaultInstance }) => {
3
+
4
+ // src/contexts/CytoscapeInstance/Context.ts
5
+ import { createContextEx } from "@xyo-network/react-shared";
6
+ var CytoscapeInstanceContext = createContextEx();
7
+
8
+ // src/contexts/CytoscapeInstance/Provider.tsx
9
+ import { jsx } from "react/jsx-runtime";
10
+ var CytoscapeInstanceProvider = ({ children, defaultInstance }) => {
5
11
  const [cy, setCy] = useState(defaultInstance);
6
12
  useEffect(() => {
7
13
  setCy(defaultInstance);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/contexts/CytoscapeInstance/Provider.tsx"],"sourcesContent":["import type { WithChildren } from '@xylabs/react-shared'\nimport { Core } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport interface CytoscapeInstanceProviderProps extends WithChildren {\n defaultInstance?: Core\n}\n\nexport const CytoscapeInstanceProvider: React.FC<CytoscapeInstanceProviderProps> = ({ children, defaultInstance }) => {\n const [cy, setCy] = useState<Core | undefined>(defaultInstance)\n useEffect(() => {\n setCy(defaultInstance)\n }, [defaultInstance])\n\n return <CytoscapeInstanceContext.Provider value={{ cy, provided: true, setCy }}>{children}</CytoscapeInstanceContext.Provider>\n}\n"],"mappings":"AAgBS;AAdT,SAAS,WAAW,gBAAgB;AAEpC,SAAS,gCAAgC;AAMlC,MAAM,4BAAsE,CAAC,EAAE,UAAU,gBAAgB,MAAM;AACpH,QAAM,CAAC,IAAI,KAAK,IAAI,SAA2B,eAAe;AAC9D,YAAU,MAAM;AACd,UAAM,eAAe;AAAA,EACvB,GAAG,CAAC,eAAe,CAAC;AAEpB,SAAO,oBAAC,yBAAyB,UAAzB,EAAkC,OAAO,EAAE,IAAI,UAAU,MAAM,MAAM,GAAI,UAAS;AAC5F;","names":[]}
1
+ {"version":3,"sources":["../../../../src/contexts/CytoscapeInstance/Provider.tsx","../../../../src/contexts/CytoscapeInstance/Context.ts"],"sourcesContent":["import type { WithChildren } from '@xylabs/react-shared'\nimport { Core } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport interface CytoscapeInstanceProviderProps extends WithChildren {\n defaultInstance?: Core\n}\n\nexport const CytoscapeInstanceProvider: React.FC<CytoscapeInstanceProviderProps> = ({ children, defaultInstance }) => {\n const [cy, setCy] = useState<Core | undefined>(defaultInstance)\n useEffect(() => {\n setCy(defaultInstance)\n }, [defaultInstance])\n\n return <CytoscapeInstanceContext.Provider value={{ cy, provided: true, setCy }}>{children}</CytoscapeInstanceContext.Provider>\n}\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n"],"mappings":";AAEA,SAAS,WAAW,gBAAgB;;;ACFpC,SAAS,uBAAuB;AAIzB,IAAM,2BAA2B,gBAAwC;;;ADYvE;AANF,IAAM,4BAAsE,CAAC,EAAE,UAAU,gBAAgB,MAAM;AACpH,QAAM,CAAC,IAAI,KAAK,IAAI,SAA2B,eAAe;AAC9D,YAAU,MAAM;AACd,UAAM,eAAe;AAAA,EACvB,GAAG,CAAC,eAAe,CAAC;AAEpB,SAAO,oBAAC,yBAAyB,UAAzB,EAAkC,OAAO,EAAE,IAAI,UAAU,MAAM,MAAM,GAAI,UAAS;AAC5F;","names":[]}
@@ -1,5 +1,24 @@
1
- export * from "./Context";
2
- export * from "./Provider";
3
- export * from "./State";
4
- export * from "./use";
1
+ // src/contexts/CytoscapeInstance/Context.ts
2
+ import { createContextEx } from "@xyo-network/react-shared";
3
+ var CytoscapeInstanceContext = createContextEx();
4
+
5
+ // src/contexts/CytoscapeInstance/Provider.tsx
6
+ import { useEffect, useState } from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+ var CytoscapeInstanceProvider = ({ children, defaultInstance }) => {
9
+ const [cy, setCy] = useState(defaultInstance);
10
+ useEffect(() => {
11
+ setCy(defaultInstance);
12
+ }, [defaultInstance]);
13
+ return /* @__PURE__ */ jsx(CytoscapeInstanceContext.Provider, { value: { cy, provided: true, setCy }, children });
14
+ };
15
+
16
+ // src/contexts/CytoscapeInstance/use.ts
17
+ import { useContextEx } from "@xyo-network/react-shared";
18
+ var useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, "CytoscapeInstance", required);
19
+ export {
20
+ CytoscapeInstanceContext,
21
+ CytoscapeInstanceProvider,
22
+ useCytoscapeInstance
23
+ };
5
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/contexts/CytoscapeInstance/index.ts"],"sourcesContent":["export * from './Context'\nexport * from './Provider'\nexport * from './State'\nexport * from './use'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../../src/contexts/CytoscapeInstance/Context.ts","../../../../src/contexts/CytoscapeInstance/Provider.tsx","../../../../src/contexts/CytoscapeInstance/use.ts"],"sourcesContent":["import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n","import type { WithChildren } from '@xylabs/react-shared'\nimport { Core } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport interface CytoscapeInstanceProviderProps extends WithChildren {\n defaultInstance?: Core\n}\n\nexport const CytoscapeInstanceProvider: React.FC<CytoscapeInstanceProviderProps> = ({ children, defaultInstance }) => {\n const [cy, setCy] = useState<Core | undefined>(defaultInstance)\n useEffect(() => {\n setCy(defaultInstance)\n }, [defaultInstance])\n\n return <CytoscapeInstanceContext.Provider value={{ cy, provided: true, setCy }}>{children}</CytoscapeInstanceContext.Provider>\n}\n","import { useContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, 'CytoscapeInstance', required)\n"],"mappings":";AAAA,SAAS,uBAAuB;AAIzB,IAAM,2BAA2B,gBAAwC;;;ACFhF,SAAS,WAAW,gBAAgB;AAc3B;AANF,IAAM,4BAAsE,CAAC,EAAE,UAAU,gBAAgB,MAAM;AACpH,QAAM,CAAC,IAAI,KAAK,IAAI,SAA2B,eAAe;AAC9D,YAAU,MAAM;AACd,UAAM,eAAe;AAAA,EACvB,GAAG,CAAC,eAAe,CAAC;AAEpB,SAAO,oBAAC,yBAAyB,UAAzB,EAAkC,OAAO,EAAE,IAAI,UAAU,MAAM,MAAM,GAAI,UAAS;AAC5F;;;ACjBA,SAAS,oBAAoB;AAItB,IAAM,uBAAuB,CAAC,WAAW,UAAU,aAAa,0BAA0B,qBAAqB,QAAQ;","names":[]}
@@ -1,6 +1,12 @@
1
+ // src/contexts/CytoscapeInstance/use.ts
1
2
  import { useContextEx } from "@xyo-network/react-shared";
2
- import { CytoscapeInstanceContext } from "./Context";
3
- const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, "CytoscapeInstance", required);
3
+
4
+ // src/contexts/CytoscapeInstance/Context.ts
5
+ import { createContextEx } from "@xyo-network/react-shared";
6
+ var CytoscapeInstanceContext = createContextEx();
7
+
8
+ // src/contexts/CytoscapeInstance/use.ts
9
+ var useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, "CytoscapeInstance", required);
4
10
  export {
5
11
  useCytoscapeInstance
6
12
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/contexts/CytoscapeInstance/use.ts"],"sourcesContent":["import { useContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, 'CytoscapeInstance', required)\n"],"mappings":"AAAA,SAAS,oBAAoB;AAE7B,SAAS,gCAAgC;AAElC,MAAM,uBAAuB,CAAC,WAAW,UAAU,aAAa,0BAA0B,qBAAqB,QAAQ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/contexts/CytoscapeInstance/use.ts","../../../../src/contexts/CytoscapeInstance/Context.ts"],"sourcesContent":["import { useContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceContext } from './Context'\n\nexport const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, 'CytoscapeInstance', required)\n","import { createContextEx } from '@xyo-network/react-shared'\n\nimport { CytoscapeInstanceState } from './State'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n"],"mappings":";AAAA,SAAS,oBAAoB;;;ACA7B,SAAS,uBAAuB;AAIzB,IAAM,2BAA2B,gBAAwC;;;ADAzE,IAAM,uBAAuB,CAAC,WAAW,UAAU,aAAa,0BAA0B,qBAAqB,QAAQ;","names":[]}