@xyo-network/react-node-renderer 7.6.2 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/components/module/graph/DetailsFlexbox.d.ts.map +1 -1
- package/dist/browser/components/module/graph/node/Hover.d.ts.map +1 -1
- package/dist/browser/components/relational/graph/Graph.d.ts.map +1 -1
- package/dist/browser/components/relational/graph/ProvidedNodeRenderer.d.ts.map +1 -1
- package/dist/browser/index.mjs +114 -28
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +153 -154
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetailsFlexbox.d.ts","sourceRoot":"","sources":["../../../../../src/components/module/graph/DetailsFlexbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"DetailsFlexbox.d.ts","sourceRoot":"","sources":["../../../../../src/components/module/graph/DetailsFlexbox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,mBAAoB,SAAQ,YAAY;IACvD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAoBxD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hover.d.ts","sourceRoot":"","sources":["../../../../../../src/components/module/graph/node/Hover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,YAAY,CAAA;IAC1G,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"Hover.d.ts","sourceRoot":"","sources":["../../../../../../src/components/module/graph/node/Hover.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,YAAY,CAAA;IAC1G,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAqB3D,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../../../src/components/relational/graph/Graph.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAEN,MAAM,OAAO,CAAA;AAEd,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAyDlE,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,
|
|
1
|
+
{"version":3,"file":"Graph.d.ts","sourceRoot":"","sources":["../../../../../src/components/relational/graph/Graph.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAEN,MAAM,OAAO,CAAA;AAEd,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAyDlE,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAoJzE,CAAA;AAID,kBAAkB;AAClB,eAAO,MAAM,mBAAmB,oCAA6B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProvidedNodeRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components/relational/graph/ProvidedNodeRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAGlE,MAAM,WAAW,yBAA0B,SAAQ,wBAAwB;IACzE,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM,CAAA;IACpD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC7B;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,
|
|
1
|
+
{"version":3,"file":"ProvidedNodeRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components/relational/graph/ProvidedNodeRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAGlE,MAAM,WAAW,yBAA0B,SAAQ,wBAAwB;IACzE,OAAO,CAAC,EAAE,eAAe,CAAA;IACzB,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM,CAAA;IACpD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CAC7B;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAgBpE,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -687,28 +687,79 @@ var NodeRelationalGraphFlexBox = ({
|
|
|
687
687
|
}
|
|
688
688
|
}, [cy, layoutOptions, layout]);
|
|
689
689
|
return /* @__PURE__ */ jsxs(FlexCol, { id: "relational-graph-wrapper", ...props, children: [
|
|
690
|
-
hoverAddress && hoverBoundingBox ? /* @__PURE__ */ jsx5(
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
{
|
|
690
|
+
hoverAddress && hoverBoundingBox ? /* @__PURE__ */ jsx5(
|
|
691
|
+
Box,
|
|
692
|
+
{
|
|
693
|
+
sx: {
|
|
694
|
+
position: "absolute",
|
|
695
|
+
top: hoverBoundingBox.y1,
|
|
696
|
+
left: hoverBoundingBox.x1,
|
|
697
|
+
zIndex: 100
|
|
698
|
+
},
|
|
699
|
+
children: /* @__PURE__ */ jsx5(ModuleHoverDetails, { address: hoverAddress, name: moduleInstance?.deref()?.id ?? "Unknown" })
|
|
700
|
+
}
|
|
701
|
+
) : null,
|
|
702
|
+
/* @__PURE__ */ jsx5(
|
|
703
|
+
FlexRow,
|
|
704
|
+
{
|
|
705
|
+
sx: {
|
|
700
706
|
justifyContent: "start",
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
children:
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
707
|
+
width: "100%"
|
|
708
|
+
},
|
|
709
|
+
children: actions === null ? null : isDefined4(actions) ? /* @__PURE__ */ jsxs(ButtonGroup, { children: [
|
|
710
|
+
actions,
|
|
711
|
+
/* @__PURE__ */ jsx5(Button, { size: "small", variant: "contained", onClick: handleReset, children: "Reset View" })
|
|
712
|
+
] }) : /* @__PURE__ */ jsx5(Button, { size: "small", variant: "contained", onClick: handleReset, children: "Reset" })
|
|
713
|
+
}
|
|
714
|
+
),
|
|
715
|
+
/* @__PURE__ */ jsxs(
|
|
716
|
+
FlexGrowRow,
|
|
717
|
+
{
|
|
718
|
+
sx: {
|
|
719
|
+
width: "100%",
|
|
720
|
+
alignItems: "start"
|
|
721
|
+
},
|
|
722
|
+
children: [
|
|
723
|
+
showDetails ? /* @__PURE__ */ jsx5(
|
|
724
|
+
FlexCol,
|
|
725
|
+
{
|
|
726
|
+
sx: {
|
|
727
|
+
height: "100%",
|
|
728
|
+
width: "85%"
|
|
729
|
+
},
|
|
730
|
+
children: detail
|
|
731
|
+
}
|
|
732
|
+
) : null,
|
|
733
|
+
/* @__PURE__ */ jsxs(
|
|
734
|
+
FlexCol,
|
|
735
|
+
{
|
|
736
|
+
classes: "cytoscape-wrap",
|
|
737
|
+
sx: {
|
|
738
|
+
justifyContent: "start",
|
|
739
|
+
width: showDetails ? "15%" : "100%",
|
|
740
|
+
height: showDetails ? "50%" : "100%",
|
|
741
|
+
border: showDetails ? `1px solid ${theme.vars.palette.divider}` : void 0
|
|
742
|
+
},
|
|
743
|
+
children: [
|
|
744
|
+
/* @__PURE__ */ jsx5(
|
|
745
|
+
FlexCol,
|
|
746
|
+
{
|
|
747
|
+
ref: cytoscapeRef,
|
|
748
|
+
sx: {
|
|
749
|
+
alignItems: "stretch",
|
|
750
|
+
position: "absolute",
|
|
751
|
+
width: "100%",
|
|
752
|
+
height: "100%"
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
),
|
|
756
|
+
children
|
|
757
|
+
]
|
|
758
|
+
}
|
|
759
|
+
)
|
|
760
|
+
]
|
|
761
|
+
}
|
|
762
|
+
)
|
|
712
763
|
] });
|
|
713
764
|
};
|
|
714
765
|
NodeRelationalGraphFlexBox.displayName = "NodeRelationalGraph";
|
|
@@ -721,7 +772,18 @@ var ProvidedNodeRenderer = ({ node, ...props }) => {
|
|
|
721
772
|
const [providedNode] = useWeakProvidedNode();
|
|
722
773
|
const elements = useCytoscapeElements(node ?? providedNode);
|
|
723
774
|
const options = useCytoscapeOptions(elements);
|
|
724
|
-
return /* @__PURE__ */ jsx6(
|
|
775
|
+
return /* @__PURE__ */ jsx6(
|
|
776
|
+
NodeRelationalGraphFlexBox,
|
|
777
|
+
{
|
|
778
|
+
options,
|
|
779
|
+
...props,
|
|
780
|
+
sx: [{
|
|
781
|
+
alignItems: "stretch",
|
|
782
|
+
flexGrow: 1,
|
|
783
|
+
height: "100%"
|
|
784
|
+
}, ...Array.isArray(props.sx) ? props.sx : [props.sx]]
|
|
785
|
+
}
|
|
786
|
+
);
|
|
725
787
|
};
|
|
726
788
|
|
|
727
789
|
// src/components/module/graph/DetailsFlexbox.tsx
|
|
@@ -730,10 +792,23 @@ import { IconButton } from "@mui/material";
|
|
|
730
792
|
import { FlexGrowCol, FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
|
|
731
793
|
import { jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
732
794
|
var DetailsFlexbox = ({ children, onClose }) => {
|
|
733
|
-
return /* @__PURE__ */ jsxs2(
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
795
|
+
return /* @__PURE__ */ jsxs2(
|
|
796
|
+
FlexGrowCol,
|
|
797
|
+
{
|
|
798
|
+
id: "module-detail",
|
|
799
|
+
sx: {
|
|
800
|
+
alignItems: "end",
|
|
801
|
+
justifyContent: "start",
|
|
802
|
+
width: "100%",
|
|
803
|
+
p: 2,
|
|
804
|
+
gap: 2
|
|
805
|
+
},
|
|
806
|
+
children: [
|
|
807
|
+
/* @__PURE__ */ jsx7(FlexRow2, { sx: { justifyContent: "end" }, children: /* @__PURE__ */ jsx7(IconButton, { onClick: onClose, size: "small", children: /* @__PURE__ */ jsx7(CancelRounded, {}) }) }),
|
|
808
|
+
children
|
|
809
|
+
]
|
|
810
|
+
}
|
|
811
|
+
);
|
|
737
812
|
};
|
|
738
813
|
|
|
739
814
|
// src/components/module/graph/node/Hover.tsx
|
|
@@ -783,7 +858,18 @@ var ModuleGraphNodeHover = ({ children, node }) => {
|
|
|
783
858
|
currentElement
|
|
784
859
|
} = useNodeElement(node);
|
|
785
860
|
return /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
786
|
-
/* @__PURE__ */ jsx8(
|
|
861
|
+
/* @__PURE__ */ jsx8(
|
|
862
|
+
StyledNodeGhostElementFlexCol,
|
|
863
|
+
{
|
|
864
|
+
ref,
|
|
865
|
+
sx: {
|
|
866
|
+
left: boundingBox?.x1,
|
|
867
|
+
height: boundingBox?.h,
|
|
868
|
+
top: boundingBox?.y1,
|
|
869
|
+
width: boundingBox?.w
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
),
|
|
787
873
|
node ? /* @__PURE__ */ jsx8(Fragment2, { children: children?.(currentElement) }) : null
|
|
788
874
|
] });
|
|
789
875
|
};
|
|
@@ -876,8 +962,8 @@ var ModuleGraphFlexBox = ({
|
|
|
876
962
|
detail: /* @__PURE__ */ jsx10(DetailsFlexbox, { onClose: () => onModuleDetails(null) }),
|
|
877
963
|
options,
|
|
878
964
|
ref: cytoscapeRef,
|
|
879
|
-
width: "100%",
|
|
880
965
|
...props,
|
|
966
|
+
sx: [{ width: "100%" }, ...Array.isArray(props.sx) ? props.sx : [props.sx]],
|
|
881
967
|
children: /* @__PURE__ */ jsx10(ModuleGraphNodeHover, { node: hoveredNode, children: (element) => /* @__PURE__ */ jsx10(
|
|
882
968
|
StyledModuleHoverPopper,
|
|
883
969
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/module/CardParser.tsx","../../src/components/module/graph/GraphFlexBox.tsx","../../src/contexts/CytoscapeInstance/Context.ts","../../src/contexts/CytoscapeInstance/Provider.tsx","../../src/contexts/CytoscapeInstance/use.ts","../../src/hooks/cytoscape/elements/useCytoscapeElements.ts","../../src/Cytoscape/CytoscapeElements.ts","../../src/Cytoscape/lib/encodeSvg.ts","../../src/Cytoscape/lib/iconMap.ts","../../src/Cytoscape/lib/layout/ColaLayout.ts","../../src/Cytoscape/lib/layout/ConcentricLayout.ts","../../src/Cytoscape/lib/parseModuleType.ts","../../src/Cytoscape/CytoscapeIcons.tsx","../../src/Cytoscape/CytoscapeStyles.ts","../../src/hooks/cytoscape/elements/useHoveredNode.tsx","../../src/hooks/cytoscape/elements/useNewElements.tsx","../../src/hooks/cytoscape/elements/useRenderNewElements.tsx","../../src/hooks/cytoscape/elements/useSelectedElement.tsx","../../src/hooks/cytoscape/elements/useElements.tsx","../../src/hooks/cytoscape/useCytoscapeOptions.ts","../../src/hooks/cytoscape/useCytoscapeStyle.tsx","../../src/hooks/cytoscape/useIcons.tsx","../../src/hooks/cytoscape/useModuleDetails.tsx","../../src/hooks/cytoscape/useRelationalGraphOptions.tsx","../../src/components/cytoscape-extensions/WithExtensions.tsx","../../src/components/relational/graph/Graph.tsx","../../src/components/relational/graph/ProvidedNodeRenderer.tsx","../../src/components/module/graph/DetailsFlexbox.tsx","../../src/components/module/graph/node/Hover.tsx","../../src/components/module/graph/node/hooks/useNodeElement.tsx","../../src/components/module/graph/Popper.tsx"],"sourcesContent":["import { asArchivistInstance, isArchivistInstance } from '@xyo-network/archivist-model'\nimport { asDivinerInstance, isDivinerInstance } from '@xyo-network/diviner-model'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { ArchivistCard } from '@xyo-network/react-archivist'\nimport { DivinerCard, ModuleCard } from '@xyo-network/react-module'\nimport React from 'react'\n\nexport interface ModuleCardParserProps {\n mod?: ModuleInstance\n}\n\nexport const ModuleCardParser: React.FC<ModuleCardParserProps> = ({ mod }) => {\n switch (true) {\n case isArchivistInstance(mod): {\n return <ArchivistCard mod={asArchivistInstance(mod)} />\n }\n case isDivinerInstance(mod): {\n return <DivinerCard mod={asDivinerInstance(mod)} />\n }\n default: {\n return <ModuleCard mod={mod} />\n }\n }\n}\n","import { Button } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport React, { useRef } from 'react'\n\nimport { CytoscapeInstanceProvider } from '../../../contexts/index.ts'\nimport {\n useElements, useModuleDetails, useRelationalGraphOptions,\n} from '../../../hooks/index.ts'\nimport { WithExtensions } from '../../cytoscape-extensions/index.ts'\nimport { NodeRelationalGraphFlexBox } from '../../relational/index.ts'\nimport { DetailsFlexbox } from './DetailsFlexbox.tsx'\nimport { ModuleGraphNodeHover } from './node/index.ts'\nimport { StyledModuleHoverPopper } from './Popper.tsx'\n\nexport interface ModuleGraphFlexBoxProps extends FlexBoxProps {\n disableModuleDetails?: boolean\n hideActions?: boolean\n layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n layoutOptions?: object\n rootModule?: WeakRef<ModuleInstance> | null\n}\n\nexport const ModuleGraphFlexBox: React.FC<ModuleGraphFlexBoxProps> = ({\n hideActions, rootModule, disableModuleDetails, ...props\n}) => {\n const cytoscapeRef = useRef<HTMLDivElement>(null)\n const {\n handleToggleLabels, hideLabels, options,\n } = useRelationalGraphOptions(rootModule ?? undefined)\n const {\n hoveredNode, setHoveredNode, toggleSelectedElement,\n } = useElements(hideLabels)\n\n const { mod, onModuleDetails } = useModuleDetails(rootModule, () => setHoveredNode(undefined))\n\n return (\n <WithExtensions>\n <NodeRelationalGraphFlexBox\n actions={\n mod\n ? null\n : hideActions\n ? null\n : (\n <Button size=\"small\" onClick={handleToggleLabels} variant=\"contained\">\n Toggle Labels\n </Button>\n )\n\n }\n showDetails={!!mod}\n detail={<DetailsFlexbox onClose={() => onModuleDetails(null)} />}\n options={options}\n ref={cytoscapeRef}\n width=\"100%\"\n {...props}\n >\n <ModuleGraphNodeHover node={hoveredNode}>\n {element => (\n <StyledModuleHoverPopper\n anchorEl={element}\n container={cytoscapeRef.current}\n node={hoveredNode}\n onClose={() => setHoveredNode(undefined)}\n onModuleExplore={toggleSelectedElement}\n onModuleDetails={disableModuleDetails ? undefined : onModuleDetails}\n placement=\"top\"\n open\n />\n )}\n </ModuleGraphNodeHover>\n </NodeRelationalGraphFlexBox>\n </WithExtensions>\n )\n}\n\nexport const ModuleGraphFlexBoxWithProvider: React.FC<ModuleGraphFlexBoxProps> = (props) => {\n return (\n <CytoscapeInstanceProvider>\n <ModuleGraphFlexBox {...props} />\n </CytoscapeInstanceProvider>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { CytoscapeInstanceState } from './State.ts'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n","import type { Core } from 'cytoscape'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { CytoscapeInstanceContext } from './Context.ts'\nimport type { CytoscapeInstanceState } from './State.ts'\n\nexport interface CytoscapeInstanceProviderProps extends PropsWithChildren {\n defaultInstance?: WeakRef<Core>\n}\n\nexport const CytoscapeInstanceProvider: React.FC<CytoscapeInstanceProviderProps> = ({ children, defaultInstance }) => {\n const [cy, setCy] = useState<WeakRef<Core> | undefined>(() => defaultInstance)\n\n const value: CytoscapeInstanceState = useMemo(() => ({\n cy, provided: true, setCy,\n }), [cy, setCy])\n\n return (\n <CytoscapeInstanceContext value={value}>\n {children}\n </CytoscapeInstanceContext>\n )\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { CytoscapeInstanceContext } from './Context.ts'\n\nexport const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, 'CytoscapeInstance', required)\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport type { EventUnsubscribeFunction } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport type { ElementDefinition } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeElements } from '../../../Cytoscape/index.ts'\n\nexport const useCytoscapeElements = (mod?: WeakRef<ModuleInstance> | null) => {\n const [elements, setElements] = useState<ElementDefinition[]>([])\n\n useAsyncEffect(\n\n async () => {\n const moduleInstance = mod?.deref()\n if (moduleInstance) {\n const newElements = (await CytoscapeElements.buildElements(moduleInstance)) ?? []\n setElements(newElements)\n }\n },\n [mod],\n )\n\n useEffect(() => {\n let attachedListener: EventUnsubscribeFunction | undefined\n let detachedListener: EventUnsubscribeFunction | undefined\n\n if (mod && isNodeInstance(mod)) {\n attachedListener = mod.on('moduleAttached', async () => {\n const newElements = (await CytoscapeElements.buildElements(mod)) ?? []\n setElements(newElements)\n })\n detachedListener = mod.on('moduleDetached', async () => {\n const newElements = (await CytoscapeElements.buildElements(mod)) ?? []\n setElements(newElements)\n })\n }\n\n return () => {\n attachedListener?.()\n detachedListener?.()\n }\n }, [mod])\n\n return elements\n}\n","import { exists, isFalsy } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport type { ElementDefinition } from 'cytoscape'\n\nimport { parseModuleType } from './lib/index.ts'\n\ninterface ModuleInfo {\n children: ModuleInfo[]\n depth: number\n mod: ModuleInstance\n}\n\nexport const CytoscapeElements = {\n MaxNameLength: 20,\n\n buildEdge(rootNode: ElementDefinition, newNode: ElementDefinition, properties?: Record<string, unknown>) {\n return {\n data: {\n id: `${rootNode.data.id}/${newNode.data.id}`,\n source: rootNode.data.id,\n target: newNode.data.id,\n ...properties,\n },\n }\n },\n\n async buildElements(mod: ModuleInstance): Promise<ElementDefinition[]> {\n const info = await CytoscapeElements.recurseNodes(mod)\n const newElements: ElementDefinition[] = await this.buildElementsFromInfo(info, undefined, ['activeNode'])\n\n return newElements\n },\n\n async buildElementsFromInfo(info: ModuleInfo, root?: ElementDefinition, classes: string[] = []): Promise<ElementDefinition[]> {\n const newNode = CytoscapeElements.buildNode(info.mod, { childCount: info.children.length, depth: info.depth }, classes)\n const newEdge = root\n ? CytoscapeElements.buildEdge(root, newNode, { depth: info.depth, siblingCount: info.children.length })\n : undefined\n const newElements: ElementDefinition[] = [newNode]\n if (newEdge) {\n newElements.push(newEdge)\n }\n\n for (const childInfo of info.children) {\n newElements.push(...(await this.buildElementsFromInfo(childInfo, newNode)))\n }\n\n return newElements\n },\n\n buildNode(mod: ModuleInstance, properties?: Record<string, unknown>, classes?: string[]): ElementDefinition {\n const { address, id } = mod\n return {\n classes,\n data: {\n address,\n id: address,\n name: id,\n type: parseModuleType(mod),\n ...properties,\n },\n }\n },\n\n buildRootNode: (mod: ModuleInstance): ElementDefinition => {\n return CytoscapeElements.buildNode(mod, {}, ['activeNode'])\n },\n\n normalizeName(name?: string) {\n if (isFalsy(name)) return\n if (name.length > this.MaxNameLength) return `${name.slice(0, 20)}...`\n return name\n },\n\n async recurseNodes(root: ModuleInstance, maxDepth = 10, depth = 1): Promise<ModuleInfo> {\n const info: ModuleInfo = {\n children: [], depth, mod: root,\n }\n\n if (maxDepth > 0) {\n const children = await root.resolve('*', { direction: 'down', maxDepth: 1 })\n info.children = (\n await Promise.all(\n children.map(async (child) => {\n // don't re add the root module that was passed in\n if (child.address !== root.address) {\n return await this.recurseNodes(child, maxDepth - 1, depth + 1)\n }\n }),\n )\n ).filter(exists)\n }\n\n return info\n },\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport type { ReactElement } from 'react'\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.querySelectorAll('svg')[0]\n if (isDefined(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}${globalThis.encodeURIComponent(svgElement.outerHTML)}`\n}\n","import type { CyNodeModuleTypes } from './CyNodeModuleTypes.ts'\n\nexport const generateIconMap: () => Record<CyNodeModuleTypes, string> = () => ({\n archivist: '',\n bridge: '',\n diviner: '',\n\n module: '',\n node: '',\n sentinel: '',\n witness: '',\n})\n","export const ColaLayout = {\n centerGraph: false,\n convergenceThreshold: 0.01,\n name: 'cola',\n}\n","import type { LayoutOptions } from 'cytoscape'\n\nexport const ConcentricLayout: LayoutOptions = {\n concentric: function (node) {\n return node.degree(false)\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 type { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessModule } from '@xyo-network/witness-model'\n\nimport type { CyNodeModuleTypes } from './CyNodeModuleTypes.ts'\n\nexport const parseModuleType = (mod?: ModuleInstance): CyNodeModuleTypes => {\n let type: CyNodeModuleTypes = 'module'\n if (mod) {\n if (isArchivistInstance(mod)) {\n type = 'archivist'\n } else if (isBridgeInstance(mod)) {\n type = 'bridge'\n } else if (isDivinerInstance(mod)) {\n type = 'diviner'\n } else if (isNodeInstance(mod)) {\n type = 'node'\n } else if (isSentinelInstance(mod)) {\n type = 'sentinel'\n } else if (isWitnessModule(mod)) {\n type = 'witness'\n }\n }\n return type\n}\n","import type { SvgIconComponent } from '@mui/icons-material'\nimport {\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'\n\nimport type { CyNodeModuleTypes } from './lib/index.ts'\n\nexport const CyIconSet: Record<CyNodeModuleTypes, SvgIconComponent> = {\n archivist: Inventory2RoundedIcon,\n bridge: InsertLinkRoundedIcon,\n diviner: BubbleChartRoundedIcon,\n\n module: QuestionMarkRoundedIcon,\n node: HubIcon,\n sentinel: TimerRoundedIcon,\n witness: VisibilityRoundedIcon,\n}\n","import type { StylesheetCSS } from 'cytoscape'\n\nimport type { CyNodeModuleTypes } from './lib/index.ts'\n\nexport const NodeWithName = (color?: string, outlineColor?: string): StylesheetCSS => ({\n selector: 'node[name]',\n css: {\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 Node = (icons: Record<CyNodeModuleTypes, string>, bgColor?: string, hideLabels = false): StylesheetCSS => ({\n selector: 'node',\n css: {\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 NodeAsRoot = (bgColor?: string): StylesheetCSS => ({\n selector: '.activeNode',\n css: { 'background-color': bgColor },\n})\n\nexport const EdgeStyled = (lineColor?: string, targetArrowColor?: string): StylesheetCSS => ({\n selector: 'edge',\n css: {\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 type { NodeCollection, NodeSingular } from 'cytoscape'\nimport type { Dispatch, SetStateAction } from 'react'\nimport {\n useCallback, useEffect, useState,\n} from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts/index.ts'\n\nexport const useHoveredNode = (renderedElements?: NodeCollection): [NodeSingular | undefined, Dispatch<SetStateAction<NodeSingular | undefined>>] => {\n const { cy } = useCytoscapeInstance(true)\n const [hoveredNode, setHoveredNode] = useState<NodeSingular>()\n\n const nodeListener = useCallback((node: NodeSingular) => {\n node.on('mouseover tap', () => {\n setHoveredNode(node)\n })\n }, [])\n\n useEffect(() => {\n if (renderedElements) {\n // eslint-disable-next-line unicorn/no-array-for-each\n renderedElements.nodes().forEach(nodeListener)\n }\n }, [nodeListener, renderedElements])\n\n useEffect(() => {\n cy?.deref()?.ready(() => {\n // eslint-disable-next-line unicorn/no-array-for-each\n cy?.deref()?.nodes().forEach(nodeListener)\n })\n }, [cy, nodeListener])\n\n return [hoveredNode, setHoveredNode]\n}\n","import { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport type { NodeSingular } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { useCytoscapeElements } from './useCytoscapeElements.ts'\n\nexport const useNewElements = (selectedElement?: NodeSingular) => {\n const selectedAddress = useMemo(() => {\n const { address: selectedAddress } = selectedElement?.data() ?? {}\n return selectedAddress\n }, [selectedElement])\n\n const [mod] = useWeakModuleFromNode(selectedAddress)\n const newElements = useCytoscapeElements(mod)\n\n return newElements\n}\n","import type { ElementDefinition } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts/index.ts'\nimport { ColaLayout } from '../../../Cytoscape/index.ts'\n\nexport const useRenderNewElements = (newElements: ElementDefinition[] = [], _hideLabels?: boolean) => {\n const { cy } = useCytoscapeInstance(true)\n\n return useMemo(() => {\n if (newElements.length > 1) {\n const renderedElements = cy?.deref()?.add(newElements)\n cy?.deref()?.layout(ColaLayout).run()\n return renderedElements\n }\n }, [cy, newElements])\n}\n","import type { NodeSingular } from 'cytoscape'\nimport { useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts/index.ts'\n\nexport const useSelectedElement = () => {\n const [selectedElement, setSelectedElement] = useState<NodeSingular>()\n const { cy } = useCytoscapeInstance(true)\n\n const updateStyles = (element: NodeSingular) => {\n const nodes = cy?.deref()?.nodes()\n nodes?.toggleClass('activeNode', false)\n element.toggleClass('activeNode', true)\n }\n\n const toggleSelectedElement = (address?: string) => {\n const selectedNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)?.[0]\n if (selectedNode) {\n setSelectedElement(selectedNode)\n updateStyles(selectedNode)\n }\n }\n\n return { selectedElement, toggleSelectedElement }\n}\n","import { useHoveredNode } from './useHoveredNode.tsx'\nimport { useNewElements } from './useNewElements.tsx'\nimport { useRenderNewElements } from './useRenderNewElements.tsx'\nimport { useSelectedElement } from './useSelectedElement.tsx'\n\nexport const useElements = (hideLabels: boolean) => {\n const { selectedElement, toggleSelectedElement } = useSelectedElement()\n const newElements = useNewElements(selectedElement)\n const renderedElements = useRenderNewElements(newElements, hideLabels)\n const [hoveredNode, setHoveredNode] = useHoveredNode(renderedElements)\n\n return {\n hoveredNode, setHoveredNode, toggleSelectedElement,\n }\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport type { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape/index.ts'\nimport { useCytoscapeStyle } from './useCytoscapeStyle.tsx'\n\nexport const useCytoscapeOptions = (\n elements: CytoscapeOptions['elements'],\n style?: CytoscapeOptions['style'],\n layout?: CytoscapeOptions['layout'],\n) => {\n const defaultStyle = useCytoscapeStyle()\n\n const resolvedLayout = layout ?? ConcentricLayout\n const resolvedStyle = style ?? defaultStyle\n\n const options = useMemo<CytoscapeOptions | undefined>(() => {\n if (elements && isDefined(resolvedLayout) && isDefined(resolvedStyle)) {\n return {\n elements,\n layout: resolvedLayout,\n style: resolvedStyle,\n }\n }\n }, [elements, resolvedLayout, resolvedStyle])\n\n return options\n}\n","import { useTheme } from '@mui/material'\nimport { useIsDark } from '@xylabs/react-theme'\nimport type { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport {\n EdgeStyled, Node, NodeAsRoot, NodeWithName,\n} from '../../Cytoscape/index.ts'\nimport { useIcons } from './useIcons.tsx'\n\nexport const useCytoscapeStyle = (hideLabels = false) => {\n const theme = useTheme()\n const dark = useIsDark()\n const icons = useIcons()\n\n const style: CytoscapeOptions['style'] = useMemo(\n // eslint-disable-next-line complexity\n () => [\n Node(icons, dark ? theme.colorSchemes.dark?.palette.primary.main : theme.colorSchemes.light?.palette.primary.main, hideLabels),\n NodeWithName(\n dark ? theme.colorSchemes.dark?.palette.primary.contrastText : theme.colorSchemes.light?.palette.primary.contrastText,\n dark ? theme.colorSchemes.dark?.palette.text.primary : theme.colorSchemes.light?.palette.text.primary,\n ),\n NodeAsRoot(dark ? theme.colorSchemes.dark?.palette.secondary.main : theme.colorSchemes.light?.palette.secondary.main),\n EdgeStyled(\n dark ? theme.colorSchemes.dark?.palette.divider : theme.colorSchemes.light?.palette.divider,\n dark ? theme.colorSchemes.dark?.palette.divider : theme.colorSchemes.light?.palette.divider,\n ),\n ],\n [icons, hideLabels, theme, dark],\n )\n\n return style\n}\n","import { useTheme } from '@mui/material'\nimport React, { useMemo } from 'react'\n\nimport type { CyNodeModuleTypes } from '../../Cytoscape/index.ts'\nimport {\n CyIconSet, encodeSvg, generateIconMap,\n} from '../../Cytoscape/index.ts'\n\nexport const useIcons = () => {\n const theme = useTheme()\n const icons = useMemo(() => {\n const iconMap = generateIconMap()\n // eslint-disable-next-line unicorn/no-array-reduce\n return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {\n const icon = <IconComponent fontSize=\"small\" />\n acc[name as CyNodeModuleTypes] = encodeSvg(icon, theme.vars.palette.primary.contrastText)\n return acc\n }, iconMap)\n }, [theme.vars.palette.primary.contrastText])\n\n return icons\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n isDefined, isDefinedNotNull, isTruthy,\n} from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport {\n useCallback, useEffect, useState,\n} from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts/index.ts'\n\nexport const useModuleDetails = (rootModule?: WeakRef<ModuleInstance> | null, onFoundModule?: () => void) => {\n const { cy } = useCytoscapeInstance()\n const [moduleAddress, setModuleAddress] = useState<string | null>()\n\n const [foundModule] = usePromise(async () => {\n if (moduleAddress === null) return null\n const rootModuleInstance = rootModule?.deref()\n if (isDefined(moduleAddress) && isDefined(rootModuleInstance)) {\n const foundModule = await rootModuleInstance.resolve(moduleAddress)\n return foundModule ?? null\n }\n }, [moduleAddress, rootModule])\n\n const createObserver = useCallback(() => {\n return new ResizeObserver(() => {\n if (moduleAddress === null) {\n // cytoscape tries to center prematurely without it :(\n setTimeout(() => {\n cy?.deref()?.center()\n }, 100)\n } else if (foundModule && cy) {\n const node = cy?.deref()?.nodes(`[id=\"${moduleAddress}\"]`)?.[0]\n // cy.pan(newPan)\n // cytoscape tries to center prematurely without it :(\n setTimeout(() => {\n cy?.deref()?.center(node)\n }, 100)\n }\n })\n }, [cy, moduleAddress, foundModule])\n\n useEffect(() => {\n const resizeObserver = createObserver()\n\n const container = cy?.deref()?.container()\n if (container) {\n resizeObserver.observe(container)\n }\n\n return () => {\n if (container) resizeObserver.unobserve(container)\n }\n }, [cy, moduleAddress, foundModule, rootModule, createObserver])\n\n useEffect(() => {\n if (foundModule) {\n onFoundModule?.()\n }\n }, [cy, moduleAddress, foundModule, onFoundModule, createObserver])\n\n // eslint-disable-next-line complexity\n const onModuleDetails = (address?: string | null) => {\n const moduleNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)\n const rootModuleNode = cy?.deref()?.nodes(`[id=\"${rootModule?.deref()?.address}\"]`)\n const foundModuleNode = cy?.deref()?.nodes(`[id=\"${foundModule?.address}\"]`)\n const notModuleNode = cy?.deref()?.nodes(`[id != \"${address}\"]`)\n\n if (isTruthy(address)) {\n // address was passed so we set the node to active styles\n moduleNode?.toggleClass('activeNode', true)\n notModuleNode?.toggleClass('activeNode', false)\n } else {\n // no address was passes so we reset the state\n notModuleNode?.toggleClass('activeNode', false)\n const activeNode = isDefinedNotNull(foundModuleNode) && foundModuleNode.length > 0 ? foundModuleNode : rootModuleNode\n activeNode?.toggleClass('activeNode', true)\n }\n setModuleAddress(address)\n }\n\n return { mod: foundModule, onModuleDetails }\n}\n","import type { ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape/index.ts'\nimport { useCytoscapeElements } from './elements/index.ts'\nimport { useCytoscapeOptions } from './useCytoscapeOptions.ts'\nimport { useCytoscapeStyle } from './useCytoscapeStyle.tsx'\n\nexport const useRelationalGraphOptions = (mod?: WeakRef<ModuleInstance>) => {\n const [hideLabels, setHideLabels] = useState(true)\n\n const handleToggleLabels = () => {\n setHideLabels(oldValue => !oldValue)\n }\n\n const elements = useCytoscapeElements(mod)\n const style = useCytoscapeStyle(hideLabels)\n const options = useCytoscapeOptions(elements, style, ConcentricLayout)\n\n return {\n handleToggleLabels, hideLabels, options,\n }\n}\n","import cytoscape from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkent from 'cytoscape-cose-bilkent'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\ncytoscape.use(cola)\ncytoscape.use(coseBilkent)\n\nexport const WithExtensions: React.FC<PropsWithChildren> = ({ children }) => {\n return <>{children}</>\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Box, Button, ButtonGroup, Card, CardHeader, Paper, useTheme,\n} from '@mui/material'\nimport {\n FlexCol, FlexGrowRow, FlexRow,\n} from '@xylabs/react-flexbox'\nimport { Identicon } from '@xylabs/react-identicon'\nimport type { Address } from '@xylabs/sdk-js'\nimport { asAddress, isDefined } from '@xylabs/sdk-js'\nimport { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport type {\n Core, EventHandler, NodeSingular,\n} from 'cytoscape'\nimport cytoscape from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkentLayout from 'cytoscape-cose-bilkent'\nimport dagre from 'cytoscape-dagre'\nimport euler from 'cytoscape-euler'\nimport React, {\n useEffect, useLayoutEffect, useRef, useState,\n} from 'react'\n\nimport type { NodeRelationalGraphProps } from '../../lib/index.ts'\n\nconst applyLayout = (cy?: cytoscape.Core, name = 'cola', options?: object) => {\n cy?.layout({ name, ...options }).run()\n}\n\nconst loadLayout = (layout = 'cola') => {\n switch (layout) {\n case 'cose-bilkent': {\n cytoscape.use(coseBilkentLayout)\n break\n }\n case 'cola': {\n cytoscape.use(cola)\n break\n }\n case 'euler': {\n cytoscape.use(euler)\n break\n }\n case 'dagre': {\n cytoscape.use(dagre)\n break\n }\n default: {\n cytoscape.use(euler)\n break\n }\n }\n}\n\ntype ModuleHoverDetailsProps = CardProps & {\n address: Address\n name: string\n}\n\nconst ModuleHoverDetails: React.FC<ModuleHoverDetailsProps> = ({\n name, address, ...props\n}) => {\n return (\n <Card elevation={3} {...props}>\n <CardHeader\n avatar={(\n <Paper\n elevation={6}\n sx={{ bgcolor: '#fff', p: 1 }}\n >\n <Identicon value={address} size={24} />\n </Paper>\n )}\n title={name}\n subheader={address}\n />\n </Card>\n )\n}\n\nexport const NodeRelationalGraphFlexBox: React.FC<NodeRelationalGraphProps> = ({\n actions, children, node, layout, layoutOptions, showDetails, detail, options, onHover, ...props\n}) => {\n const theme = useTheme()\n const [cy, setCy] = useState<Core>()\n const cytoscapeRef = useRef<HTMLDivElement>(null)\n const [hoverBoundingBox, setHoverBoundingBox] = useState<{ x1: number; x2: number; y1: number; y2: number }>()\n const [hoverAddress, setHoverAddress] = useState<Address>()\n\n const [moduleInstance] = useWeakModuleFromNode(hoverAddress, { node })\n\n useEffect(() => {\n const listener: EventHandler = ({ target }) => {\n const cyNode = target as NodeSingular\n const bb = cyNode?.renderedBoundingBox?.()\n setHoverBoundingBox(bb)\n const id = cyNode.id?.()\n if (isDefined(id)) {\n if (id.includes('/')) {\n setHoverAddress(undefined)\n onHover?.()\n } else {\n setHoverAddress(asAddress(id))\n onHover?.(asAddress(id))\n }\n }\n }\n cy?.on('mouseover tap', listener)\n\n return () => {\n cy?.off('mouseover tap', listener)\n }\n }, [onHover, cy])\n\n const handleReset = () => {\n cy?.reset()\n applyLayout(cy, layout ?? 'euler', layoutOptions)\n }\n\n useLayoutEffect(() => {\n let newCy: Core | undefined\n const container = cytoscapeRef.current\n if (container) {\n newCy = cytoscape({\n container,\n ...options,\n })\n\n setCy(newCy)\n } else {\n newCy?.destroy()\n\n setCy(undefined)\n }\n return () => {\n newCy?.destroy()\n setCy(undefined)\n }\n }, [options, cytoscapeRef, layoutOptions])\n\n useEffect(() => {\n if (cy) {\n loadLayout(layout)\n applyLayout(cy, layout ?? 'cola', layoutOptions)\n }\n }, [cy, layoutOptions, layout])\n\n return (\n <FlexCol id=\"relational-graph-wrapper\" {...props}>\n {hoverAddress && hoverBoundingBox\n ? (\n <Box position=\"absolute\" top={hoverBoundingBox.y1} left={hoverBoundingBox.x1} zIndex={100}>\n <ModuleHoverDetails address={hoverAddress} name={moduleInstance?.deref()?.id ?? 'Unknown'} />\n </Box>\n )\n : null}\n <FlexRow justifyContent=\"start\" width=\"100%\">\n {actions === null\n ? null\n : isDefined(actions)\n ? (\n <ButtonGroup>\n {actions}\n <Button size=\"small\" variant=\"contained\" onClick={handleReset}>\n Reset View\n </Button>\n </ButtonGroup>\n )\n : (\n <Button size=\"small\" variant=\"contained\" onClick={handleReset}>\n Reset\n </Button>\n )}\n </FlexRow>\n <FlexGrowRow width=\"100%\" alignItems=\"start\">\n {showDetails\n ? (\n <FlexCol height=\"100%\" width=\"85%\">\n {detail}\n </FlexCol>\n )\n : null}\n <FlexCol\n justifyContent=\"start\"\n classes=\"cytoscape-wrap\"\n width={showDetails ? '15%' : '100%'}\n height={showDetails ? '50%' : '100%'}\n border={showDetails ? `1px solid ${theme.vars.palette.divider}` : undefined}\n >\n {/* Cytoscape Element */}\n <FlexCol alignItems=\"stretch\" position=\"absolute\" width=\"100%\" height=\"100%\" ref={cytoscapeRef} />\n {children}\n </FlexCol>\n </FlexGrowRow>\n </FlexCol>\n )\n}\n\nNodeRelationalGraphFlexBox.displayName = 'NodeRelationalGraph'\n\n/** @deprecated */\nexport const NodeRelationalGraph = NodeRelationalGraphFlexBox\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { useWeakProvidedNode } from '@xyo-network/react-node'\nimport React from 'react'\n\nimport { useCytoscapeElements, useCytoscapeOptions } from '../../../hooks/index.ts'\nimport type { NodeRelationalGraphProps } from '../../lib/index.ts'\nimport { NodeRelationalGraphFlexBox } from './Graph.tsx'\n\nexport interface ProvidedNodeRendererProps extends NodeRelationalGraphProps {\n account?: AccountInstance\n layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n layoutOptions?: object\n node?: WeakRef<NodeInstance>\n}\n\nexport const ProvidedNodeRenderer: React.FC<ProvidedNodeRendererProps> = ({ node, ...props }) => {\n const [providedNode] = useWeakProvidedNode()\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 { CancelRounded } from '@mui/icons-material'\nimport { IconButton } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface DetailsFlexboxProps extends FlexBoxProps {\n onClose?: () => void\n}\n\nexport const DetailsFlexbox: React.FC<DetailsFlexboxProps> = ({ children, onClose }) => {\n return (\n <FlexGrowCol alignItems=\"end\" justifyContent=\"start\" id=\"module-detail\" width=\"100%\" p={2} gap={2}>\n <FlexRow justifyContent=\"end\">\n <IconButton onClick={onClose} size=\"small\">\n <CancelRounded />\n </IconButton>\n </FlexRow>\n {children}\n </FlexGrowCol>\n )\n}\n","import type { PopperProps } from '@mui/material'\nimport { styled } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { NodeSingular } from 'cytoscape'\nimport type { ReactElement } from 'react'\nimport React from 'react'\n\nimport { useNodeElement } from './hooks/index.ts'\n\nexport interface ModuleHoverProps {\n children?: (anchorElement?: PopperProps['anchorEl'], container?: PopperProps['container']) => ReactElement\n node?: NodeSingular\n}\n\nexport const ModuleGraphNodeHover: React.FC<ModuleHoverProps> = ({ children, node }) => {\n const {\n boundingBox, ref, currentElement,\n } = useNodeElement(node)\n\n return (\n <>\n <StyledNodeGhostElementFlexCol ref={ref} left={boundingBox?.x1} height={boundingBox?.h} top={boundingBox?.y1} width={boundingBox?.w} />\n {node\n ? <>{children?.(currentElement)}</>\n : null}\n </>\n )\n}\n\nconst StyledNodeGhostElementFlexCol = styled(FlexCol, { name: 'StyledNodeGhostElementFlexCol' })(() => ({\n // For easier debugging of the 'ghost' element that matches the hovered cytoscape node\n // backgroundColor: '#fff',\n // opacity: 0.25,\n\n cursor: 'pointer',\n pointerEvents: 'none',\n position: 'absolute',\n}))\n","import type { PopperProps } from '@mui/material'\nimport type { NodeSingular } from 'cytoscape'\nimport type { RefObject } from 'react'\nimport {\n useEffect, useLayoutEffect, useRef, useState,\n} from 'react'\n\nexport interface UseNodeElementResult {\n boundingBox: ReturnType<NodeSingular['renderedBoundingBox']> | undefined\n currentElement: PopperProps['anchorEl'] | null\n ref: RefObject<HTMLDivElement | null>\n}\n\nexport const useNodeElement = (node?: NodeSingular): UseNodeElementResult => {\n const ref = useRef<HTMLDivElement>(null)\n const [currentElement, setCurrentElement] = useState<PopperProps['anchorEl'] | null>(null)\n const [boundingBox, setBoundingBox] = useState(node?.renderedBoundingBox())\n\n // Ensure first render clears the previous element when node changes to avoid flicker\n useLayoutEffect(() => {\n // eslint-disable-next-line react-x/set-state-in-effect, react-hooks/set-state-in-effect\n setCurrentElement(null)\n // eslint-disable-next-line react-x/set-state-in-effect\n setBoundingBox(node?.renderedBoundingBox())\n }, [node])\n\n useEffect(() => {\n const listener = () => {\n setBoundingBox(node?.renderedBoundingBox())\n }\n\n node?.on('position', listener)\n\n return () => {\n node?.off('position', undefined, listener)\n }\n }, [node])\n\n // Once boundingBox state is set and applied to the layout, update the ref\n useLayoutEffect(() => {\n setCurrentElement(ref.current)\n }, [boundingBox])\n\n return {\n boundingBox, currentElement, ref,\n }\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport type { PopperProps } from '@mui/material'\nimport {\n Button, Card, CardActions, CardHeader, IconButton, Paper, Popper, styled,\n} from '@mui/material'\nimport { Identicon } from '@xylabs/react-identicon'\nimport type { NodeSingular } from 'cytoscape'\nimport React from 'react'\n\nexport interface ModuleHoverPopperProps extends PopperProps {\n node?: NodeSingular\n onClose?: () => void\n onModuleDetails?: (address?: string) => void\n onModuleExplore?: (address?: string) => void\n}\n\nexport const ModuleHoverPopper: React.FC<ModuleHoverPopperProps> = ({\n anchorEl, onClose, onModuleDetails, onModuleExplore, node, ...props\n}) => {\n const { address, name } = node?.data() ?? {}\n return (\n <>\n {anchorEl\n ? (\n <Popper anchorEl={anchorEl} {...props}>\n <Card elevation={3}>\n <CardHeader\n action={\n onClose\n ? (\n <IconButton size=\"small\" onClick={onClose}>\n <CancelRounded />\n </IconButton>\n )\n : null\n }\n avatar={(\n <Paper\n elevation={6}\n sx={{ bgcolor: '#fff', p: 1 }}\n >\n <Identicon value={address} size={24} />\n </Paper>\n )}\n title={name}\n subheader={address}\n />\n <StyledCardActions>\n {onModuleDetails\n ? (\n <Button onClick={() => onModuleDetails?.(address)} size=\"small\" variant=\"contained\">\n Details\n </Button>\n )\n : null}\n {onModuleExplore\n ? (\n <Button onClick={() => onModuleExplore?.(address)} size=\"small\" variant=\"contained\">\n Explore\n </Button>\n )\n : null}\n </StyledCardActions>\n </Card>\n </Popper>\n )\n : null}\n </>\n )\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const StyledModuleHoverPopper: React.FC<ModuleHoverPopperProps> = styled(ModuleHoverPopper, { name: 'StyledComponents' })(() => ({ zIndex: 2 }))\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const StyledCardActions: React.FC<React.ComponentProps<typeof CardActions>> = styled(CardActions, { name: 'StyledCardActions' })(() => ({\n display: 'flex',\n justifyContent: 'center',\n}))\n"],"mappings":"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","names":["Button","useRef","jsx","isNodeInstance","useState","isArchivistInstance","isDivinerInstance","useState","isNodeInstance","useEffect","useState","useState","useEffect","useMemo","useMemo","selectedAddress","useMemo","useMemo","useState","useState","isDefined","useMemo","useTheme","useMemo","useMemo","jsx","useMemo","useTheme","useMemo","useMemo","isDefined","isDefined","useCallback","useEffect","useState","useState","isDefined","foundModule","useCallback","useEffect","useState","useState","jsx","useTheme","isDefined","useWeakModuleFromNode","cytoscape","cola","useEffect","useState","jsx","jsx","FlexRow","jsx","jsxs","FlexCol","useEffect","useLayoutEffect","useRef","useState","Fragment","jsx","jsxs","FlexCol","CancelRounded","Button","Card","CardHeader","IconButton","Paper","styled","Identicon","Fragment","jsx","jsxs","jsx","useRef","Button"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/module/CardParser.tsx","../../src/components/module/graph/GraphFlexBox.tsx","../../src/contexts/CytoscapeInstance/Context.ts","../../src/contexts/CytoscapeInstance/Provider.tsx","../../src/contexts/CytoscapeInstance/use.ts","../../src/hooks/cytoscape/elements/useCytoscapeElements.ts","../../src/Cytoscape/CytoscapeElements.ts","../../src/Cytoscape/lib/encodeSvg.ts","../../src/Cytoscape/lib/iconMap.ts","../../src/Cytoscape/lib/layout/ColaLayout.ts","../../src/Cytoscape/lib/layout/ConcentricLayout.ts","../../src/Cytoscape/lib/parseModuleType.ts","../../src/Cytoscape/CytoscapeIcons.tsx","../../src/Cytoscape/CytoscapeStyles.ts","../../src/hooks/cytoscape/elements/useHoveredNode.tsx","../../src/hooks/cytoscape/elements/useNewElements.tsx","../../src/hooks/cytoscape/elements/useRenderNewElements.tsx","../../src/hooks/cytoscape/elements/useSelectedElement.tsx","../../src/hooks/cytoscape/elements/useElements.tsx","../../src/hooks/cytoscape/useCytoscapeOptions.ts","../../src/hooks/cytoscape/useCytoscapeStyle.tsx","../../src/hooks/cytoscape/useIcons.tsx","../../src/hooks/cytoscape/useModuleDetails.tsx","../../src/hooks/cytoscape/useRelationalGraphOptions.tsx","../../src/components/cytoscape-extensions/WithExtensions.tsx","../../src/components/relational/graph/Graph.tsx","../../src/components/relational/graph/ProvidedNodeRenderer.tsx","../../src/components/module/graph/DetailsFlexbox.tsx","../../src/components/module/graph/node/Hover.tsx","../../src/components/module/graph/node/hooks/useNodeElement.tsx","../../src/components/module/graph/Popper.tsx"],"sourcesContent":["import { asArchivistInstance, isArchivistInstance } from '@xyo-network/archivist-model'\nimport { asDivinerInstance, isDivinerInstance } from '@xyo-network/diviner-model'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { ArchivistCard } from '@xyo-network/react-archivist'\nimport { DivinerCard, ModuleCard } from '@xyo-network/react-module'\nimport React from 'react'\n\nexport interface ModuleCardParserProps {\n mod?: ModuleInstance\n}\n\nexport const ModuleCardParser: React.FC<ModuleCardParserProps> = ({ mod }) => {\n switch (true) {\n case isArchivistInstance(mod): {\n return <ArchivistCard mod={asArchivistInstance(mod)} />\n }\n case isDivinerInstance(mod): {\n return <DivinerCard mod={asDivinerInstance(mod)} />\n }\n default: {\n return <ModuleCard mod={mod} />\n }\n }\n}\n","import { Button } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport React, { useRef } from 'react'\n\nimport { CytoscapeInstanceProvider } from '../../../contexts/index.ts'\nimport {\n useElements, useModuleDetails, useRelationalGraphOptions,\n} from '../../../hooks/index.ts'\nimport { WithExtensions } from '../../cytoscape-extensions/index.ts'\nimport { NodeRelationalGraphFlexBox } from '../../relational/index.ts'\nimport { DetailsFlexbox } from './DetailsFlexbox.tsx'\nimport { ModuleGraphNodeHover } from './node/index.ts'\nimport { StyledModuleHoverPopper } from './Popper.tsx'\n\nexport interface ModuleGraphFlexBoxProps extends FlexBoxProps {\n disableModuleDetails?: boolean\n hideActions?: boolean\n layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n layoutOptions?: object\n rootModule?: WeakRef<ModuleInstance> | null\n}\n\nexport const ModuleGraphFlexBox: React.FC<ModuleGraphFlexBoxProps> = ({\n hideActions, rootModule, disableModuleDetails, ...props\n}) => {\n const cytoscapeRef = useRef<HTMLDivElement>(null)\n const {\n handleToggleLabels, hideLabels, options,\n } = useRelationalGraphOptions(rootModule ?? undefined)\n const {\n hoveredNode, setHoveredNode, toggleSelectedElement,\n } = useElements(hideLabels)\n\n const { mod, onModuleDetails } = useModuleDetails(rootModule, () => setHoveredNode(undefined))\n\n return (\n <WithExtensions>\n <NodeRelationalGraphFlexBox\n actions={\n mod\n ? null\n : hideActions\n ? null\n : (\n <Button size=\"small\" onClick={handleToggleLabels} variant=\"contained\">\n Toggle Labels\n </Button>\n )\n\n }\n showDetails={!!mod}\n detail={<DetailsFlexbox onClose={() => onModuleDetails(null)} />}\n options={options}\n ref={cytoscapeRef}\n {...props}\n sx={[{ width: '100%' }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\n <ModuleGraphNodeHover node={hoveredNode}>\n {element => (\n <StyledModuleHoverPopper\n anchorEl={element}\n container={cytoscapeRef.current}\n node={hoveredNode}\n onClose={() => setHoveredNode(undefined)}\n onModuleExplore={toggleSelectedElement}\n onModuleDetails={disableModuleDetails ? undefined : onModuleDetails}\n placement=\"top\"\n open\n />\n )}\n </ModuleGraphNodeHover>\n </NodeRelationalGraphFlexBox>\n </WithExtensions>\n )\n}\n\nexport const ModuleGraphFlexBoxWithProvider: React.FC<ModuleGraphFlexBoxProps> = (props) => {\n return (\n <CytoscapeInstanceProvider>\n <ModuleGraphFlexBox {...props} />\n </CytoscapeInstanceProvider>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { CytoscapeInstanceState } from './State.ts'\n\nexport const CytoscapeInstanceContext = createContextEx<CytoscapeInstanceState>()\n","import type { Core } from 'cytoscape'\nimport type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { CytoscapeInstanceContext } from './Context.ts'\nimport type { CytoscapeInstanceState } from './State.ts'\n\nexport interface CytoscapeInstanceProviderProps extends PropsWithChildren {\n defaultInstance?: WeakRef<Core>\n}\n\nexport const CytoscapeInstanceProvider: React.FC<CytoscapeInstanceProviderProps> = ({ children, defaultInstance }) => {\n const [cy, setCy] = useState<WeakRef<Core> | undefined>(() => defaultInstance)\n\n const value: CytoscapeInstanceState = useMemo(() => ({\n cy, provided: true, setCy,\n }), [cy, setCy])\n\n return (\n <CytoscapeInstanceContext value={value}>\n {children}\n </CytoscapeInstanceContext>\n )\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { CytoscapeInstanceContext } from './Context.ts'\n\nexport const useCytoscapeInstance = (required = false) => useContextEx(CytoscapeInstanceContext, 'CytoscapeInstance', required)\n","import { useAsyncEffect } from '@xylabs/react-async-effect'\nimport type { EventUnsubscribeFunction } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport type { ElementDefinition } from 'cytoscape'\nimport { useEffect, useState } from 'react'\n\nimport { CytoscapeElements } from '../../../Cytoscape/index.ts'\n\nexport const useCytoscapeElements = (mod?: WeakRef<ModuleInstance> | null) => {\n const [elements, setElements] = useState<ElementDefinition[]>([])\n\n useAsyncEffect(\n\n async () => {\n const moduleInstance = mod?.deref()\n if (moduleInstance) {\n const newElements = (await CytoscapeElements.buildElements(moduleInstance)) ?? []\n setElements(newElements)\n }\n },\n [mod],\n )\n\n useEffect(() => {\n let attachedListener: EventUnsubscribeFunction | undefined\n let detachedListener: EventUnsubscribeFunction | undefined\n\n if (mod && isNodeInstance(mod)) {\n attachedListener = mod.on('moduleAttached', async () => {\n const newElements = (await CytoscapeElements.buildElements(mod)) ?? []\n setElements(newElements)\n })\n detachedListener = mod.on('moduleDetached', async () => {\n const newElements = (await CytoscapeElements.buildElements(mod)) ?? []\n setElements(newElements)\n })\n }\n\n return () => {\n attachedListener?.()\n detachedListener?.()\n }\n }, [mod])\n\n return elements\n}\n","import { exists, isFalsy } from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport type { ElementDefinition } from 'cytoscape'\n\nimport { parseModuleType } from './lib/index.ts'\n\ninterface ModuleInfo {\n children: ModuleInfo[]\n depth: number\n mod: ModuleInstance\n}\n\nexport const CytoscapeElements = {\n MaxNameLength: 20,\n\n buildEdge(rootNode: ElementDefinition, newNode: ElementDefinition, properties?: Record<string, unknown>) {\n return {\n data: {\n id: `${rootNode.data.id}/${newNode.data.id}`,\n source: rootNode.data.id,\n target: newNode.data.id,\n ...properties,\n },\n }\n },\n\n async buildElements(mod: ModuleInstance): Promise<ElementDefinition[]> {\n const info = await CytoscapeElements.recurseNodes(mod)\n const newElements: ElementDefinition[] = await this.buildElementsFromInfo(info, undefined, ['activeNode'])\n\n return newElements\n },\n\n async buildElementsFromInfo(info: ModuleInfo, root?: ElementDefinition, classes: string[] = []): Promise<ElementDefinition[]> {\n const newNode = CytoscapeElements.buildNode(info.mod, { childCount: info.children.length, depth: info.depth }, classes)\n const newEdge = root\n ? CytoscapeElements.buildEdge(root, newNode, { depth: info.depth, siblingCount: info.children.length })\n : undefined\n const newElements: ElementDefinition[] = [newNode]\n if (newEdge) {\n newElements.push(newEdge)\n }\n\n for (const childInfo of info.children) {\n newElements.push(...(await this.buildElementsFromInfo(childInfo, newNode)))\n }\n\n return newElements\n },\n\n buildNode(mod: ModuleInstance, properties?: Record<string, unknown>, classes?: string[]): ElementDefinition {\n const { address, id } = mod\n return {\n classes,\n data: {\n address,\n id: address,\n name: id,\n type: parseModuleType(mod),\n ...properties,\n },\n }\n },\n\n buildRootNode: (mod: ModuleInstance): ElementDefinition => {\n return CytoscapeElements.buildNode(mod, {}, ['activeNode'])\n },\n\n normalizeName(name?: string) {\n if (isFalsy(name)) return\n if (name.length > this.MaxNameLength) return `${name.slice(0, 20)}...`\n return name\n },\n\n async recurseNodes(root: ModuleInstance, maxDepth = 10, depth = 1): Promise<ModuleInfo> {\n const info: ModuleInfo = {\n children: [], depth, mod: root,\n }\n\n if (maxDepth > 0) {\n const children = await root.resolve('*', { direction: 'down', maxDepth: 1 })\n info.children = (\n await Promise.all(\n children.map(async (child) => {\n // don't re add the root module that was passed in\n if (child.address !== root.address) {\n return await this.recurseNodes(child, maxDepth - 1, depth + 1)\n }\n }),\n )\n ).filter(exists)\n }\n\n return info\n },\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport type { ReactElement } from 'react'\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.querySelectorAll('svg')[0]\n if (isDefined(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}${globalThis.encodeURIComponent(svgElement.outerHTML)}`\n}\n","import type { CyNodeModuleTypes } from './CyNodeModuleTypes.ts'\n\nexport const generateIconMap: () => Record<CyNodeModuleTypes, string> = () => ({\n archivist: '',\n bridge: '',\n diviner: '',\n\n module: '',\n node: '',\n sentinel: '',\n witness: '',\n})\n","export const ColaLayout = {\n centerGraph: false,\n convergenceThreshold: 0.01,\n name: 'cola',\n}\n","import type { LayoutOptions } from 'cytoscape'\n\nexport const ConcentricLayout: LayoutOptions = {\n concentric: function (node) {\n return node.degree(false)\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 type { ModuleInstance } from '@xyo-network/module-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessModule } from '@xyo-network/witness-model'\n\nimport type { CyNodeModuleTypes } from './CyNodeModuleTypes.ts'\n\nexport const parseModuleType = (mod?: ModuleInstance): CyNodeModuleTypes => {\n let type: CyNodeModuleTypes = 'module'\n if (mod) {\n if (isArchivistInstance(mod)) {\n type = 'archivist'\n } else if (isBridgeInstance(mod)) {\n type = 'bridge'\n } else if (isDivinerInstance(mod)) {\n type = 'diviner'\n } else if (isNodeInstance(mod)) {\n type = 'node'\n } else if (isSentinelInstance(mod)) {\n type = 'sentinel'\n } else if (isWitnessModule(mod)) {\n type = 'witness'\n }\n }\n return type\n}\n","import type { SvgIconComponent } from '@mui/icons-material'\nimport {\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'\n\nimport type { CyNodeModuleTypes } from './lib/index.ts'\n\nexport const CyIconSet: Record<CyNodeModuleTypes, SvgIconComponent> = {\n archivist: Inventory2RoundedIcon,\n bridge: InsertLinkRoundedIcon,\n diviner: BubbleChartRoundedIcon,\n\n module: QuestionMarkRoundedIcon,\n node: HubIcon,\n sentinel: TimerRoundedIcon,\n witness: VisibilityRoundedIcon,\n}\n","import type { StylesheetCSS } from 'cytoscape'\n\nimport type { CyNodeModuleTypes } from './lib/index.ts'\n\nexport const NodeWithName = (color?: string, outlineColor?: string): StylesheetCSS => ({\n selector: 'node[name]',\n css: {\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 Node = (icons: Record<CyNodeModuleTypes, string>, bgColor?: string, hideLabels = false): StylesheetCSS => ({\n selector: 'node',\n css: {\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 NodeAsRoot = (bgColor?: string): StylesheetCSS => ({\n selector: '.activeNode',\n css: { 'background-color': bgColor },\n})\n\nexport const EdgeStyled = (lineColor?: string, targetArrowColor?: string): StylesheetCSS => ({\n selector: 'edge',\n css: {\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 type { NodeCollection, NodeSingular } from 'cytoscape'\nimport type { Dispatch, SetStateAction } from 'react'\nimport {\n useCallback, useEffect, useState,\n} from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts/index.ts'\n\nexport const useHoveredNode = (renderedElements?: NodeCollection): [NodeSingular | undefined, Dispatch<SetStateAction<NodeSingular | undefined>>] => {\n const { cy } = useCytoscapeInstance(true)\n const [hoveredNode, setHoveredNode] = useState<NodeSingular>()\n\n const nodeListener = useCallback((node: NodeSingular) => {\n node.on('mouseover tap', () => {\n setHoveredNode(node)\n })\n }, [])\n\n useEffect(() => {\n if (renderedElements) {\n // eslint-disable-next-line unicorn/no-array-for-each\n renderedElements.nodes().forEach(nodeListener)\n }\n }, [nodeListener, renderedElements])\n\n useEffect(() => {\n cy?.deref()?.ready(() => {\n // eslint-disable-next-line unicorn/no-array-for-each\n cy?.deref()?.nodes().forEach(nodeListener)\n })\n }, [cy, nodeListener])\n\n return [hoveredNode, setHoveredNode]\n}\n","import { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport type { NodeSingular } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { useCytoscapeElements } from './useCytoscapeElements.ts'\n\nexport const useNewElements = (selectedElement?: NodeSingular) => {\n const selectedAddress = useMemo(() => {\n const { address: selectedAddress } = selectedElement?.data() ?? {}\n return selectedAddress\n }, [selectedElement])\n\n const [mod] = useWeakModuleFromNode(selectedAddress)\n const newElements = useCytoscapeElements(mod)\n\n return newElements\n}\n","import type { ElementDefinition } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts/index.ts'\nimport { ColaLayout } from '../../../Cytoscape/index.ts'\n\nexport const useRenderNewElements = (newElements: ElementDefinition[] = [], _hideLabels?: boolean) => {\n const { cy } = useCytoscapeInstance(true)\n\n return useMemo(() => {\n if (newElements.length > 1) {\n const renderedElements = cy?.deref()?.add(newElements)\n cy?.deref()?.layout(ColaLayout).run()\n return renderedElements\n }\n }, [cy, newElements])\n}\n","import type { NodeSingular } from 'cytoscape'\nimport { useState } from 'react'\n\nimport { useCytoscapeInstance } from '../../../contexts/index.ts'\n\nexport const useSelectedElement = () => {\n const [selectedElement, setSelectedElement] = useState<NodeSingular>()\n const { cy } = useCytoscapeInstance(true)\n\n const updateStyles = (element: NodeSingular) => {\n const nodes = cy?.deref()?.nodes()\n nodes?.toggleClass('activeNode', false)\n element.toggleClass('activeNode', true)\n }\n\n const toggleSelectedElement = (address?: string) => {\n const selectedNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)?.[0]\n if (selectedNode) {\n setSelectedElement(selectedNode)\n updateStyles(selectedNode)\n }\n }\n\n return { selectedElement, toggleSelectedElement }\n}\n","import { useHoveredNode } from './useHoveredNode.tsx'\nimport { useNewElements } from './useNewElements.tsx'\nimport { useRenderNewElements } from './useRenderNewElements.tsx'\nimport { useSelectedElement } from './useSelectedElement.tsx'\n\nexport const useElements = (hideLabels: boolean) => {\n const { selectedElement, toggleSelectedElement } = useSelectedElement()\n const newElements = useNewElements(selectedElement)\n const renderedElements = useRenderNewElements(newElements, hideLabels)\n const [hoveredNode, setHoveredNode] = useHoveredNode(renderedElements)\n\n return {\n hoveredNode, setHoveredNode, toggleSelectedElement,\n }\n}\n","import { isDefined } from '@xylabs/sdk-js'\nimport type { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape/index.ts'\nimport { useCytoscapeStyle } from './useCytoscapeStyle.tsx'\n\nexport const useCytoscapeOptions = (\n elements: CytoscapeOptions['elements'],\n style?: CytoscapeOptions['style'],\n layout?: CytoscapeOptions['layout'],\n) => {\n const defaultStyle = useCytoscapeStyle()\n\n const resolvedLayout = layout ?? ConcentricLayout\n const resolvedStyle = style ?? defaultStyle\n\n const options = useMemo<CytoscapeOptions | undefined>(() => {\n if (elements && isDefined(resolvedLayout) && isDefined(resolvedStyle)) {\n return {\n elements,\n layout: resolvedLayout,\n style: resolvedStyle,\n }\n }\n }, [elements, resolvedLayout, resolvedStyle])\n\n return options\n}\n","import { useTheme } from '@mui/material'\nimport { useIsDark } from '@xylabs/react-theme'\nimport type { CytoscapeOptions } from 'cytoscape'\nimport { useMemo } from 'react'\n\nimport {\n EdgeStyled, Node, NodeAsRoot, NodeWithName,\n} from '../../Cytoscape/index.ts'\nimport { useIcons } from './useIcons.tsx'\n\nexport const useCytoscapeStyle = (hideLabels = false) => {\n const theme = useTheme()\n const dark = useIsDark()\n const icons = useIcons()\n\n const style: CytoscapeOptions['style'] = useMemo(\n // eslint-disable-next-line complexity\n () => [\n Node(icons, dark ? theme.colorSchemes.dark?.palette.primary.main : theme.colorSchemes.light?.palette.primary.main, hideLabels),\n NodeWithName(\n dark ? theme.colorSchemes.dark?.palette.primary.contrastText : theme.colorSchemes.light?.palette.primary.contrastText,\n dark ? theme.colorSchemes.dark?.palette.text.primary : theme.colorSchemes.light?.palette.text.primary,\n ),\n NodeAsRoot(dark ? theme.colorSchemes.dark?.palette.secondary.main : theme.colorSchemes.light?.palette.secondary.main),\n EdgeStyled(\n dark ? theme.colorSchemes.dark?.palette.divider : theme.colorSchemes.light?.palette.divider,\n dark ? theme.colorSchemes.dark?.palette.divider : theme.colorSchemes.light?.palette.divider,\n ),\n ],\n [icons, hideLabels, theme, dark],\n )\n\n return style\n}\n","import { useTheme } from '@mui/material'\nimport React, { useMemo } from 'react'\n\nimport type { CyNodeModuleTypes } from '../../Cytoscape/index.ts'\nimport {\n CyIconSet, encodeSvg, generateIconMap,\n} from '../../Cytoscape/index.ts'\n\nexport const useIcons = () => {\n const theme = useTheme()\n const icons = useMemo(() => {\n const iconMap = generateIconMap()\n // eslint-disable-next-line unicorn/no-array-reduce\n return Object.entries(CyIconSet).reduce((acc, [name, IconComponent]) => {\n const icon = <IconComponent fontSize=\"small\" />\n acc[name as CyNodeModuleTypes] = encodeSvg(icon, theme.vars.palette.primary.contrastText)\n return acc\n }, iconMap)\n }, [theme.vars.palette.primary.contrastText])\n\n return icons\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n isDefined, isDefinedNotNull, isTruthy,\n} from '@xylabs/sdk-js'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport {\n useCallback, useEffect, useState,\n} from 'react'\n\nimport { useCytoscapeInstance } from '../../contexts/index.ts'\n\nexport const useModuleDetails = (rootModule?: WeakRef<ModuleInstance> | null, onFoundModule?: () => void) => {\n const { cy } = useCytoscapeInstance()\n const [moduleAddress, setModuleAddress] = useState<string | null>()\n\n const [foundModule] = usePromise(async () => {\n if (moduleAddress === null) return null\n const rootModuleInstance = rootModule?.deref()\n if (isDefined(moduleAddress) && isDefined(rootModuleInstance)) {\n const foundModule = await rootModuleInstance.resolve(moduleAddress)\n return foundModule ?? null\n }\n }, [moduleAddress, rootModule])\n\n const createObserver = useCallback(() => {\n return new ResizeObserver(() => {\n if (moduleAddress === null) {\n // cytoscape tries to center prematurely without it :(\n setTimeout(() => {\n cy?.deref()?.center()\n }, 100)\n } else if (foundModule && cy) {\n const node = cy?.deref()?.nodes(`[id=\"${moduleAddress}\"]`)?.[0]\n // cy.pan(newPan)\n // cytoscape tries to center prematurely without it :(\n setTimeout(() => {\n cy?.deref()?.center(node)\n }, 100)\n }\n })\n }, [cy, moduleAddress, foundModule])\n\n useEffect(() => {\n const resizeObserver = createObserver()\n\n const container = cy?.deref()?.container()\n if (container) {\n resizeObserver.observe(container)\n }\n\n return () => {\n if (container) resizeObserver.unobserve(container)\n }\n }, [cy, moduleAddress, foundModule, rootModule, createObserver])\n\n useEffect(() => {\n if (foundModule) {\n onFoundModule?.()\n }\n }, [cy, moduleAddress, foundModule, onFoundModule, createObserver])\n\n // eslint-disable-next-line complexity\n const onModuleDetails = (address?: string | null) => {\n const moduleNode = cy?.deref()?.nodes(`[id=\"${address}\"]`)\n const rootModuleNode = cy?.deref()?.nodes(`[id=\"${rootModule?.deref()?.address}\"]`)\n const foundModuleNode = cy?.deref()?.nodes(`[id=\"${foundModule?.address}\"]`)\n const notModuleNode = cy?.deref()?.nodes(`[id != \"${address}\"]`)\n\n if (isTruthy(address)) {\n // address was passed so we set the node to active styles\n moduleNode?.toggleClass('activeNode', true)\n notModuleNode?.toggleClass('activeNode', false)\n } else {\n // no address was passes so we reset the state\n notModuleNode?.toggleClass('activeNode', false)\n const activeNode = isDefinedNotNull(foundModuleNode) && foundModuleNode.length > 0 ? foundModuleNode : rootModuleNode\n activeNode?.toggleClass('activeNode', true)\n }\n setModuleAddress(address)\n }\n\n return { mod: foundModule, onModuleDetails }\n}\n","import type { ModuleInstance } from '@xyo-network/module-model'\nimport { useState } from 'react'\n\nimport { ConcentricLayout } from '../../Cytoscape/index.ts'\nimport { useCytoscapeElements } from './elements/index.ts'\nimport { useCytoscapeOptions } from './useCytoscapeOptions.ts'\nimport { useCytoscapeStyle } from './useCytoscapeStyle.tsx'\n\nexport const useRelationalGraphOptions = (mod?: WeakRef<ModuleInstance>) => {\n const [hideLabels, setHideLabels] = useState(true)\n\n const handleToggleLabels = () => {\n setHideLabels(oldValue => !oldValue)\n }\n\n const elements = useCytoscapeElements(mod)\n const style = useCytoscapeStyle(hideLabels)\n const options = useCytoscapeOptions(elements, style, ConcentricLayout)\n\n return {\n handleToggleLabels, hideLabels, options,\n }\n}\n","import cytoscape from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkent from 'cytoscape-cose-bilkent'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\ncytoscape.use(cola)\ncytoscape.use(coseBilkent)\n\nexport const WithExtensions: React.FC<PropsWithChildren> = ({ children }) => {\n return <>{children}</>\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Box, Button, ButtonGroup, Card, CardHeader, Paper, useTheme,\n} from '@mui/material'\nimport {\n FlexCol, FlexGrowRow, FlexRow,\n} from '@xylabs/react-flexbox'\nimport { Identicon } from '@xylabs/react-identicon'\nimport type { Address } from '@xylabs/sdk-js'\nimport { asAddress, isDefined } from '@xylabs/sdk-js'\nimport { useWeakModuleFromNode } from '@xyo-network/react-node'\nimport type {\n Core, EventHandler, NodeSingular,\n} from 'cytoscape'\nimport cytoscape from 'cytoscape'\nimport cola from 'cytoscape-cola'\nimport coseBilkentLayout from 'cytoscape-cose-bilkent'\nimport dagre from 'cytoscape-dagre'\nimport euler from 'cytoscape-euler'\nimport React, {\n useEffect, useLayoutEffect, useRef, useState,\n} from 'react'\n\nimport type { NodeRelationalGraphProps } from '../../lib/index.ts'\n\nconst applyLayout = (cy?: cytoscape.Core, name = 'cola', options?: object) => {\n cy?.layout({ name, ...options }).run()\n}\n\nconst loadLayout = (layout = 'cola') => {\n switch (layout) {\n case 'cose-bilkent': {\n cytoscape.use(coseBilkentLayout)\n break\n }\n case 'cola': {\n cytoscape.use(cola)\n break\n }\n case 'euler': {\n cytoscape.use(euler)\n break\n }\n case 'dagre': {\n cytoscape.use(dagre)\n break\n }\n default: {\n cytoscape.use(euler)\n break\n }\n }\n}\n\ntype ModuleHoverDetailsProps = CardProps & {\n address: Address\n name: string\n}\n\nconst ModuleHoverDetails: React.FC<ModuleHoverDetailsProps> = ({\n name, address, ...props\n}) => {\n return (\n <Card elevation={3} {...props}>\n <CardHeader\n avatar={(\n <Paper\n elevation={6}\n sx={{ bgcolor: '#fff', p: 1 }}\n >\n <Identicon value={address} size={24} />\n </Paper>\n )}\n title={name}\n subheader={address}\n />\n </Card>\n )\n}\n\nexport const NodeRelationalGraphFlexBox: React.FC<NodeRelationalGraphProps> = ({\n actions, children, node, layout, layoutOptions, showDetails, detail, options, onHover, ...props\n}) => {\n const theme = useTheme()\n const [cy, setCy] = useState<Core>()\n const cytoscapeRef = useRef<HTMLDivElement>(null)\n const [hoverBoundingBox, setHoverBoundingBox] = useState<{ x1: number; x2: number; y1: number; y2: number }>()\n const [hoverAddress, setHoverAddress] = useState<Address>()\n\n const [moduleInstance] = useWeakModuleFromNode(hoverAddress, { node })\n\n useEffect(() => {\n const listener: EventHandler = ({ target }) => {\n const cyNode = target as NodeSingular\n const bb = cyNode?.renderedBoundingBox?.()\n setHoverBoundingBox(bb)\n const id = cyNode.id?.()\n if (isDefined(id)) {\n if (id.includes('/')) {\n setHoverAddress(undefined)\n onHover?.()\n } else {\n setHoverAddress(asAddress(id))\n onHover?.(asAddress(id))\n }\n }\n }\n cy?.on('mouseover tap', listener)\n\n return () => {\n cy?.off('mouseover tap', listener)\n }\n }, [onHover, cy])\n\n const handleReset = () => {\n cy?.reset()\n applyLayout(cy, layout ?? 'euler', layoutOptions)\n }\n\n useLayoutEffect(() => {\n let newCy: Core | undefined\n const container = cytoscapeRef.current\n if (container) {\n newCy = cytoscape({\n container,\n ...options,\n })\n\n setCy(newCy)\n } else {\n newCy?.destroy()\n\n setCy(undefined)\n }\n return () => {\n newCy?.destroy()\n setCy(undefined)\n }\n }, [options, cytoscapeRef, layoutOptions])\n\n useEffect(() => {\n if (cy) {\n loadLayout(layout)\n applyLayout(cy, layout ?? 'cola', layoutOptions)\n }\n }, [cy, layoutOptions, layout])\n\n return (\n <FlexCol id=\"relational-graph-wrapper\" {...props}>\n {hoverAddress && hoverBoundingBox\n ? (\n <Box\n sx={{\n position: 'absolute',\n top: hoverBoundingBox.y1,\n left: hoverBoundingBox.x1,\n zIndex: 100,\n }}\n >\n <ModuleHoverDetails address={hoverAddress} name={moduleInstance?.deref()?.id ?? 'Unknown'} />\n </Box>\n )\n : null}\n <FlexRow\n sx={{\n justifyContent: 'start',\n width: '100%',\n }}\n >\n {actions === null\n ? null\n : isDefined(actions)\n ? (\n <ButtonGroup>\n {actions}\n <Button size=\"small\" variant=\"contained\" onClick={handleReset}>\n Reset View\n </Button>\n </ButtonGroup>\n )\n : (\n <Button size=\"small\" variant=\"contained\" onClick={handleReset}>\n Reset\n </Button>\n )}\n </FlexRow>\n <FlexGrowRow\n sx={{\n width: '100%',\n alignItems: 'start',\n }}\n >\n {showDetails\n ? (\n <FlexCol\n sx={{\n height: '100%',\n width: '85%',\n }}\n >\n {detail}\n </FlexCol>\n )\n : null}\n <FlexCol\n classes=\"cytoscape-wrap\"\n sx={{\n justifyContent: 'start',\n width: showDetails ? '15%' : '100%',\n height: showDetails ? '50%' : '100%',\n border: showDetails ? `1px solid ${theme.vars.palette.divider}` : undefined,\n }}\n >\n {/* Cytoscape Element */}\n <FlexCol\n ref={cytoscapeRef}\n sx={{\n alignItems: 'stretch',\n position: 'absolute',\n width: '100%',\n height: '100%',\n }}\n />\n {children}\n </FlexCol>\n </FlexGrowRow>\n </FlexCol>\n )\n}\n\nNodeRelationalGraphFlexBox.displayName = 'NodeRelationalGraph'\n\n/** @deprecated */\nexport const NodeRelationalGraph = NodeRelationalGraphFlexBox\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { useWeakProvidedNode } from '@xyo-network/react-node'\nimport React from 'react'\n\nimport { useCytoscapeElements, useCytoscapeOptions } from '../../../hooks/index.ts'\nimport type { NodeRelationalGraphProps } from '../../lib/index.ts'\nimport { NodeRelationalGraphFlexBox } from './Graph.tsx'\n\nexport interface ProvidedNodeRendererProps extends NodeRelationalGraphProps {\n account?: AccountInstance\n layout?: 'dagre' | 'euler' | 'cose-bilkent' | 'cola'\n layoutOptions?: object\n node?: WeakRef<NodeInstance>\n}\n\nexport const ProvidedNodeRenderer: React.FC<ProvidedNodeRendererProps> = ({ node, ...props }) => {\n const [providedNode] = useWeakProvidedNode()\n const elements = useCytoscapeElements(node ?? providedNode)\n const options = useCytoscapeOptions(elements)\n\n return (\n <NodeRelationalGraphFlexBox\n options={options}\n {...props}\n sx={[{\n alignItems: 'stretch',\n flexGrow: 1,\n height: '100%',\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n />\n )\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport { IconButton } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nexport interface DetailsFlexboxProps extends FlexBoxProps {\n onClose?: () => void\n}\n\nexport const DetailsFlexbox: React.FC<DetailsFlexboxProps> = ({ children, onClose }) => {\n return (\n <FlexGrowCol\n id=\"module-detail\"\n sx={{\n alignItems: 'end',\n justifyContent: 'start',\n width: '100%',\n p: 2,\n gap: 2,\n }}\n >\n <FlexRow sx={{ justifyContent: 'end' }}>\n <IconButton onClick={onClose} size=\"small\">\n <CancelRounded />\n </IconButton>\n </FlexRow>\n {children}\n </FlexGrowCol>\n )\n}\n","import type { PopperProps } from '@mui/material'\nimport { styled } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { NodeSingular } from 'cytoscape'\nimport type { ReactElement } from 'react'\nimport React from 'react'\n\nimport { useNodeElement } from './hooks/index.ts'\n\nexport interface ModuleHoverProps {\n children?: (anchorElement?: PopperProps['anchorEl'], container?: PopperProps['container']) => ReactElement\n node?: NodeSingular\n}\n\nexport const ModuleGraphNodeHover: React.FC<ModuleHoverProps> = ({ children, node }) => {\n const {\n boundingBox, ref, currentElement,\n } = useNodeElement(node)\n\n return (\n <>\n <StyledNodeGhostElementFlexCol\n ref={ref}\n sx={{\n left: boundingBox?.x1,\n height: boundingBox?.h,\n top: boundingBox?.y1,\n width: boundingBox?.w,\n }}\n />\n {node\n ? <>{children?.(currentElement)}</>\n : null}\n </>\n )\n}\n\nconst StyledNodeGhostElementFlexCol = styled(FlexCol, { name: 'StyledNodeGhostElementFlexCol' })(() => ({\n // For easier debugging of the 'ghost' element that matches the hovered cytoscape node\n // backgroundColor: '#fff',\n // opacity: 0.25,\n\n cursor: 'pointer',\n pointerEvents: 'none',\n position: 'absolute',\n}))\n","import type { PopperProps } from '@mui/material'\nimport type { NodeSingular } from 'cytoscape'\nimport type { RefObject } from 'react'\nimport {\n useEffect, useLayoutEffect, useRef, useState,\n} from 'react'\n\nexport interface UseNodeElementResult {\n boundingBox: ReturnType<NodeSingular['renderedBoundingBox']> | undefined\n currentElement: PopperProps['anchorEl'] | null\n ref: RefObject<HTMLDivElement | null>\n}\n\nexport const useNodeElement = (node?: NodeSingular): UseNodeElementResult => {\n const ref = useRef<HTMLDivElement>(null)\n const [currentElement, setCurrentElement] = useState<PopperProps['anchorEl'] | null>(null)\n const [boundingBox, setBoundingBox] = useState(node?.renderedBoundingBox())\n\n // Ensure first render clears the previous element when node changes to avoid flicker\n useLayoutEffect(() => {\n // eslint-disable-next-line react-x/set-state-in-effect, react-hooks/set-state-in-effect\n setCurrentElement(null)\n // eslint-disable-next-line react-x/set-state-in-effect\n setBoundingBox(node?.renderedBoundingBox())\n }, [node])\n\n useEffect(() => {\n const listener = () => {\n setBoundingBox(node?.renderedBoundingBox())\n }\n\n node?.on('position', listener)\n\n return () => {\n node?.off('position', undefined, listener)\n }\n }, [node])\n\n // Once boundingBox state is set and applied to the layout, update the ref\n useLayoutEffect(() => {\n setCurrentElement(ref.current)\n }, [boundingBox])\n\n return {\n boundingBox, currentElement, ref,\n }\n}\n","import { CancelRounded } from '@mui/icons-material'\nimport type { PopperProps } from '@mui/material'\nimport {\n Button, Card, CardActions, CardHeader, IconButton, Paper, Popper, styled,\n} from '@mui/material'\nimport { Identicon } from '@xylabs/react-identicon'\nimport type { NodeSingular } from 'cytoscape'\nimport React from 'react'\n\nexport interface ModuleHoverPopperProps extends PopperProps {\n node?: NodeSingular\n onClose?: () => void\n onModuleDetails?: (address?: string) => void\n onModuleExplore?: (address?: string) => void\n}\n\nexport const ModuleHoverPopper: React.FC<ModuleHoverPopperProps> = ({\n anchorEl, onClose, onModuleDetails, onModuleExplore, node, ...props\n}) => {\n const { address, name } = node?.data() ?? {}\n return (\n <>\n {anchorEl\n ? (\n <Popper anchorEl={anchorEl} {...props}>\n <Card elevation={3}>\n <CardHeader\n action={\n onClose\n ? (\n <IconButton size=\"small\" onClick={onClose}>\n <CancelRounded />\n </IconButton>\n )\n : null\n }\n avatar={(\n <Paper\n elevation={6}\n sx={{ bgcolor: '#fff', p: 1 }}\n >\n <Identicon value={address} size={24} />\n </Paper>\n )}\n title={name}\n subheader={address}\n />\n <StyledCardActions>\n {onModuleDetails\n ? (\n <Button onClick={() => onModuleDetails?.(address)} size=\"small\" variant=\"contained\">\n Details\n </Button>\n )\n : null}\n {onModuleExplore\n ? (\n <Button onClick={() => onModuleExplore?.(address)} size=\"small\" variant=\"contained\">\n Explore\n </Button>\n )\n : null}\n </StyledCardActions>\n </Card>\n </Popper>\n )\n : null}\n </>\n )\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const StyledModuleHoverPopper: React.FC<ModuleHoverPopperProps> = styled(ModuleHoverPopper, { name: 'StyledComponents' })(() => ({ zIndex: 2 }))\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const StyledCardActions: React.FC<React.ComponentProps<typeof CardActions>> = styled(CardActions, { name: 'StyledCardActions' })(() => ({\n display: 'flex',\n justifyContent: 'center',\n}))\n"],"mappings":"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","names":["Button","useRef","jsx","isNodeInstance","useState","isArchivistInstance","isDivinerInstance","useState","isNodeInstance","useEffect","useState","useState","useEffect","useMemo","useMemo","selectedAddress","useMemo","useMemo","useState","useState","isDefined","useMemo","useTheme","useMemo","useMemo","jsx","useMemo","useTheme","useMemo","useMemo","isDefined","isDefined","useCallback","useEffect","useState","useState","isDefined","foundModule","useCallback","useEffect","useState","useState","jsx","useTheme","isDefined","useWeakModuleFromNode","cytoscape","cola","useEffect","useState","jsx","jsx","FlexRow","jsx","jsxs","FlexCol","useEffect","useLayoutEffect","useRef","useState","Fragment","jsx","jsxs","FlexCol","CancelRounded","Button","Card","CardHeader","IconButton","Paper","styled","Identicon","Fragment","jsx","jsxs","jsx","useRef","Button"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/react-node-renderer",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.0.0",
|
|
4
4
|
"description": "Common React library for all XYO projects that use React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xyo",
|
|
@@ -41,17 +41,17 @@
|
|
|
41
41
|
"README.md"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@xyo-network/react-archivist": "~
|
|
45
|
-
"@xyo-network/react-
|
|
46
|
-
"@xyo-network/react-
|
|
44
|
+
"@xyo-network/react-archivist": "~8.0.0",
|
|
45
|
+
"@xyo-network/react-module": "~8.0.0",
|
|
46
|
+
"@xyo-network/react-node": "~8.0.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@bitauth/libauth": "~3.0.0",
|
|
50
50
|
"@metamask/providers": "^22.1.1",
|
|
51
|
-
"@mui/icons-material": "
|
|
52
|
-
"@mui/material": "
|
|
53
|
-
"@mui/system": "
|
|
54
|
-
"@mui/x-tree-view": "~
|
|
51
|
+
"@mui/icons-material": "~9.0",
|
|
52
|
+
"@mui/material": "~9.0",
|
|
53
|
+
"@mui/system": "~9.0",
|
|
54
|
+
"@mui/x-tree-view": "~9.1",
|
|
55
55
|
"@opentelemetry/api": "^1.9.1",
|
|
56
56
|
"@opentelemetry/sdk-trace-base": "^2.7.1",
|
|
57
57
|
"@react-spring/web": "~10.0.3",
|
|
@@ -61,63 +61,62 @@
|
|
|
61
61
|
"@types/cytoscape": "~3.31.0",
|
|
62
62
|
"@types/react": "^19.2.14",
|
|
63
63
|
"@types/react-dom": "~19.2.3",
|
|
64
|
-
"@xylabs/geo": "^5.1.
|
|
65
|
-
"@xylabs/pixel": "~5.1.
|
|
66
|
-
"@xylabs/react-async-effect": "~
|
|
67
|
-
"@xylabs/react-button": "~
|
|
68
|
-
"@xylabs/react-crypto": "~
|
|
69
|
-
"@xylabs/react-flexbox": "~
|
|
70
|
-
"@xylabs/react-hooks": "~
|
|
71
|
-
"@xylabs/react-identicon": "~
|
|
72
|
-
"@xylabs/react-link": "~
|
|
73
|
-
"@xylabs/react-number-status": "~
|
|
74
|
-
"@xylabs/react-promise": "~
|
|
75
|
-
"@xylabs/react-select": "~
|
|
76
|
-
"@xylabs/react-shared": "~
|
|
77
|
-
"@xylabs/react-theme": "~
|
|
78
|
-
"@xylabs/sdk-js": "^5.1.
|
|
79
|
-
"@xylabs/threads": "~5.1.
|
|
80
|
-
"@xylabs/toolchain": "~7.13.
|
|
81
|
-
"@xylabs/tsconfig": "^7.13.
|
|
82
|
-
"@xylabs/tsconfig-dom": "^7.13.
|
|
83
|
-
"@xylabs/tsconfig-react": "~7.13.
|
|
84
|
-
"@xyo-network/account": "~5.6.
|
|
85
|
-
"@xyo-network/account-model": "^5.6.
|
|
86
|
-
"@xyo-network/api": "~5.6.
|
|
87
|
-
"@xyo-network/api-models": "~5.6.
|
|
88
|
-
"@xyo-network/archivist-memory": "~5.6.
|
|
89
|
-
"@xyo-network/archivist-model": "^5.6.
|
|
90
|
-
"@xyo-network/boundwitness-builder": "^5.6.
|
|
91
|
-
"@xyo-network/boundwitness-model": "^5.6.
|
|
92
|
-
"@xyo-network/boundwitness-validator": "^5.6.
|
|
93
|
-
"@xyo-network/boundwitness-wrapper": "~5.6.
|
|
94
|
-
"@xyo-network/bridge-http": "~5.6.
|
|
95
|
-
"@xyo-network/bridge-model": "^5.6.
|
|
96
|
-
"@xyo-network/config-payload-plugin": "~5.6.
|
|
97
|
-
"@xyo-network/diviner-model": "^5.6.
|
|
98
|
-
"@xyo-network/huri": "^5.6.
|
|
99
|
-
"@xyo-network/id-plugin": "~5.5.
|
|
100
|
-
"@xyo-network/manifest-model": "~5.6.
|
|
101
|
-
"@xyo-network/module-
|
|
102
|
-
"@xyo-network/module-
|
|
103
|
-
"@xyo-network/
|
|
104
|
-
"@xyo-network/
|
|
105
|
-
"@xyo-network/node-
|
|
106
|
-
"@xyo-network/
|
|
107
|
-
"@xyo-network/payload-
|
|
108
|
-
"@xyo-network/payload-
|
|
109
|
-
"@xyo-network/payload-
|
|
110
|
-
"@xyo-network/payload-
|
|
111
|
-
"@xyo-network/
|
|
112
|
-
"@xyo-network/sdk-js": "
|
|
113
|
-
"@xyo-network/
|
|
114
|
-
"@xyo-network/sentinel": "
|
|
115
|
-
"@xyo-network/sentinel-
|
|
116
|
-
"@xyo-network/
|
|
117
|
-
"@xyo-network/wallet": "
|
|
118
|
-
"@xyo-network/
|
|
119
|
-
"@xyo-network/witness-
|
|
120
|
-
"@xyo-network/witness-model": "^5.6.3",
|
|
64
|
+
"@xylabs/geo": "^5.1.2",
|
|
65
|
+
"@xylabs/pixel": "~5.1.2",
|
|
66
|
+
"@xylabs/react-async-effect": "~8.0",
|
|
67
|
+
"@xylabs/react-button": "~8.0",
|
|
68
|
+
"@xylabs/react-crypto": "~8.0",
|
|
69
|
+
"@xylabs/react-flexbox": "~8.0",
|
|
70
|
+
"@xylabs/react-hooks": "~8.0",
|
|
71
|
+
"@xylabs/react-identicon": "~8.0",
|
|
72
|
+
"@xylabs/react-link": "~8.0",
|
|
73
|
+
"@xylabs/react-number-status": "~8.0",
|
|
74
|
+
"@xylabs/react-promise": "~8.0",
|
|
75
|
+
"@xylabs/react-select": "~8.0",
|
|
76
|
+
"@xylabs/react-shared": "~8.0",
|
|
77
|
+
"@xylabs/react-theme": "~8.0",
|
|
78
|
+
"@xylabs/sdk-js": "^5.1.2",
|
|
79
|
+
"@xylabs/threads": "~5.1.2",
|
|
80
|
+
"@xylabs/toolchain": "~7.13.22",
|
|
81
|
+
"@xylabs/tsconfig": "^7.13.22",
|
|
82
|
+
"@xylabs/tsconfig-dom": "^7.13.22",
|
|
83
|
+
"@xylabs/tsconfig-react": "~7.13.22",
|
|
84
|
+
"@xyo-network/account": "~5.6.2",
|
|
85
|
+
"@xyo-network/account-model": "^5.6.3",
|
|
86
|
+
"@xyo-network/api": "~5.6.2",
|
|
87
|
+
"@xyo-network/api-models": "~5.6.3",
|
|
88
|
+
"@xyo-network/archivist-memory": "~5.6.4",
|
|
89
|
+
"@xyo-network/archivist-model": "^5.6.4",
|
|
90
|
+
"@xyo-network/boundwitness-builder": "^5.6.2",
|
|
91
|
+
"@xyo-network/boundwitness-model": "^5.6.3",
|
|
92
|
+
"@xyo-network/boundwitness-validator": "^5.6.2",
|
|
93
|
+
"@xyo-network/boundwitness-wrapper": "~5.6.2",
|
|
94
|
+
"@xyo-network/bridge-http": "~5.6.4",
|
|
95
|
+
"@xyo-network/bridge-model": "^5.6.4",
|
|
96
|
+
"@xyo-network/config-payload-plugin": "~5.6.3",
|
|
97
|
+
"@xyo-network/diviner-model": "^5.6.4",
|
|
98
|
+
"@xyo-network/huri": "^5.6.2",
|
|
99
|
+
"@xyo-network/id-plugin": "~5.5.2",
|
|
100
|
+
"@xyo-network/manifest-model": "~5.6.3",
|
|
101
|
+
"@xyo-network/module-model": "^5.6.4",
|
|
102
|
+
"@xyo-network/module-wrapper": "~5.6.4",
|
|
103
|
+
"@xyo-network/network": "~5.6.3",
|
|
104
|
+
"@xyo-network/node-memory": "~5.6.4",
|
|
105
|
+
"@xyo-network/node-model": "^5.6.4",
|
|
106
|
+
"@xyo-network/payload-builder": "^5.6.2",
|
|
107
|
+
"@xyo-network/payload-model": "^5.6.3",
|
|
108
|
+
"@xyo-network/payload-plugin": "^5.6.3",
|
|
109
|
+
"@xyo-network/payload-wrapper": "~5.6.2",
|
|
110
|
+
"@xyo-network/query-payload-plugin": "~5.6.3",
|
|
111
|
+
"@xyo-network/sdk-js": "^5.6.4",
|
|
112
|
+
"@xyo-network/sdk-protocol-js": "~5.6.3",
|
|
113
|
+
"@xyo-network/sentinel": "~5.6.4",
|
|
114
|
+
"@xyo-network/sentinel-memory": "^5.6.4",
|
|
115
|
+
"@xyo-network/sentinel-model": "^5.6.4",
|
|
116
|
+
"@xyo-network/wallet": "~5.6.2",
|
|
117
|
+
"@xyo-network/wallet-model": "^5.6.3",
|
|
118
|
+
"@xyo-network/witness-abstract": "^5.6.4",
|
|
119
|
+
"@xyo-network/witness-model": "^5.6.4",
|
|
121
120
|
"ajv": "^8.20.0",
|
|
122
121
|
"async-mutex": "^0.5.0",
|
|
123
122
|
"bn.js": "^5.2.3",
|
|
@@ -144,107 +143,107 @@
|
|
|
144
143
|
"observable-fns": "~0.6.1",
|
|
145
144
|
"pako": "^2.1.0",
|
|
146
145
|
"query-string": "~9.3.1",
|
|
147
|
-
"react": "^19.2.
|
|
148
|
-
"react-dom": "^19.2.
|
|
146
|
+
"react": "^19.2.6",
|
|
147
|
+
"react-dom": "^19.2.6",
|
|
149
148
|
"react-icons": "~5.6.0",
|
|
150
|
-
"react-is": "^19.2.
|
|
149
|
+
"react-is": "^19.2.6",
|
|
151
150
|
"react-router-dom": "^7.15.0",
|
|
152
151
|
"recharts": "~3.8.1",
|
|
153
152
|
"spark-md5": "~3.0.2",
|
|
154
153
|
"store2": "~2.14.4",
|
|
155
154
|
"storybook": "^10.3.6",
|
|
156
155
|
"typescript": "^5.9.3",
|
|
157
|
-
"viem": "~2.48.
|
|
158
|
-
"vite": "^8.0.
|
|
156
|
+
"viem": "~2.48.11",
|
|
157
|
+
"vite": "^8.0.11",
|
|
159
158
|
"wasm-feature-detect": "~1.8.0",
|
|
160
159
|
"webextension-polyfill": "^0.12.0",
|
|
161
160
|
"zod": "^4.4.3",
|
|
162
|
-
"@xyo-network/react-
|
|
163
|
-
"@xyo-network/react-
|
|
161
|
+
"@xyo-network/react-storybook": "~8.0.0",
|
|
162
|
+
"@xyo-network/react-wallet": "~8.0.0"
|
|
164
163
|
},
|
|
165
164
|
"peerDependencies": {
|
|
166
|
-
"@bitauth/libauth": "
|
|
167
|
-
"@mui/icons-material": "
|
|
168
|
-
"@mui/material": "
|
|
169
|
-
"@mui/system": "
|
|
170
|
-
"@mui/x-tree-view": "
|
|
171
|
-
"@opentelemetry/api": "
|
|
172
|
-
"@opentelemetry/sdk-trace-base": "
|
|
173
|
-
"@react-spring/web": "
|
|
174
|
-
"@scure/base": "
|
|
175
|
-
"@scure/bip39": "
|
|
176
|
-
"@xylabs/pixel": "
|
|
177
|
-
"@xylabs/react-async-effect": "
|
|
178
|
-
"@xylabs/react-button": "
|
|
179
|
-
"@xylabs/react-crypto": "
|
|
180
|
-
"@xylabs/react-flexbox": "
|
|
181
|
-
"@xylabs/react-hooks": "
|
|
182
|
-
"@xylabs/react-identicon": "
|
|
183
|
-
"@xylabs/react-link": "
|
|
184
|
-
"@xylabs/react-number-status": "
|
|
185
|
-
"@xylabs/react-promise": "
|
|
186
|
-
"@xylabs/react-select": "
|
|
187
|
-
"@xylabs/react-shared": "
|
|
188
|
-
"@xylabs/react-theme": "
|
|
189
|
-
"@xylabs/sdk-js": "
|
|
190
|
-
"@xylabs/threads": "
|
|
191
|
-
"@xyo-network/account": "
|
|
192
|
-
"@xyo-network/account-model": "
|
|
193
|
-
"@xyo-network/archivist-memory": "
|
|
194
|
-
"@xyo-network/archivist-model": "
|
|
195
|
-
"@xyo-network/boundwitness-builder": "
|
|
196
|
-
"@xyo-network/boundwitness-model": "
|
|
197
|
-
"@xyo-network/boundwitness-validator": "
|
|
198
|
-
"@xyo-network/boundwitness-wrapper": "
|
|
199
|
-
"@xyo-network/bridge-model": "
|
|
200
|
-
"@xyo-network/config-payload-plugin": "
|
|
201
|
-
"@xyo-network/diviner-model": "
|
|
202
|
-
"@xyo-network/manifest-model": "
|
|
203
|
-
"@xyo-network/module-
|
|
204
|
-
"@xyo-network/module-
|
|
205
|
-
"@xyo-network/
|
|
206
|
-
"@xyo-network/
|
|
207
|
-
"@xyo-network/node-
|
|
208
|
-
"@xyo-network/
|
|
209
|
-
"@xyo-network/payload-
|
|
210
|
-
"@xyo-network/payload-
|
|
211
|
-
"@xyo-network/
|
|
212
|
-
"@xyo-network/
|
|
213
|
-
"@xyo-network/wallet": "
|
|
214
|
-
"@xyo-network/
|
|
215
|
-
"
|
|
216
|
-
"
|
|
217
|
-
"
|
|
218
|
-
"
|
|
219
|
-
"
|
|
220
|
-
"
|
|
221
|
-
"cytoscape": "
|
|
222
|
-
"cytoscape-
|
|
223
|
-
"cytoscape-
|
|
224
|
-
"cytoscape-
|
|
225
|
-
"
|
|
226
|
-
"
|
|
227
|
-
"
|
|
228
|
-
"
|
|
229
|
-
"
|
|
230
|
-
"
|
|
231
|
-
"
|
|
232
|
-
"
|
|
233
|
-
"
|
|
234
|
-
"
|
|
235
|
-
"
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"react": "
|
|
239
|
-
"react-
|
|
240
|
-
"react-
|
|
241
|
-
"react-
|
|
242
|
-
"
|
|
243
|
-
"
|
|
244
|
-
"
|
|
245
|
-
"viem": "
|
|
246
|
-
"wasm-feature-detect": "
|
|
247
|
-
"zod": "
|
|
165
|
+
"@bitauth/libauth": "~3.0",
|
|
166
|
+
"@mui/icons-material": "~9.0",
|
|
167
|
+
"@mui/material": "~9.0",
|
|
168
|
+
"@mui/system": "~9.0",
|
|
169
|
+
"@mui/x-tree-view": "~9.1",
|
|
170
|
+
"@opentelemetry/api": "^1.9",
|
|
171
|
+
"@opentelemetry/sdk-trace-base": "^2.7",
|
|
172
|
+
"@react-spring/web": "~10.0",
|
|
173
|
+
"@scure/base": "~2.2",
|
|
174
|
+
"@scure/bip39": "~2.2",
|
|
175
|
+
"@xylabs/pixel": "~5.1",
|
|
176
|
+
"@xylabs/react-async-effect": "~8.0",
|
|
177
|
+
"@xylabs/react-button": "~8.0",
|
|
178
|
+
"@xylabs/react-crypto": "~8.0",
|
|
179
|
+
"@xylabs/react-flexbox": "~8.0",
|
|
180
|
+
"@xylabs/react-hooks": "~8.0",
|
|
181
|
+
"@xylabs/react-identicon": "~8.0",
|
|
182
|
+
"@xylabs/react-link": "~8.0",
|
|
183
|
+
"@xylabs/react-number-status": "~8.0",
|
|
184
|
+
"@xylabs/react-promise": "~8.0",
|
|
185
|
+
"@xylabs/react-select": "~8.0",
|
|
186
|
+
"@xylabs/react-shared": "~8.0",
|
|
187
|
+
"@xylabs/react-theme": "~8.0",
|
|
188
|
+
"@xylabs/sdk-js": "^5.1",
|
|
189
|
+
"@xylabs/threads": "~5.1",
|
|
190
|
+
"@xyo-network/account": "~5.6",
|
|
191
|
+
"@xyo-network/account-model": "^5.6",
|
|
192
|
+
"@xyo-network/archivist-memory": "~5.6",
|
|
193
|
+
"@xyo-network/archivist-model": "^5.6",
|
|
194
|
+
"@xyo-network/boundwitness-builder": "^5.6",
|
|
195
|
+
"@xyo-network/boundwitness-model": "^5.6",
|
|
196
|
+
"@xyo-network/boundwitness-validator": "^5.6",
|
|
197
|
+
"@xyo-network/boundwitness-wrapper": "~5.6",
|
|
198
|
+
"@xyo-network/bridge-model": "^5.6",
|
|
199
|
+
"@xyo-network/config-payload-plugin": "~5.6",
|
|
200
|
+
"@xyo-network/diviner-model": "^5.6",
|
|
201
|
+
"@xyo-network/manifest-model": "~5.6",
|
|
202
|
+
"@xyo-network/module-model": "^5.6",
|
|
203
|
+
"@xyo-network/module-wrapper": "~5.6",
|
|
204
|
+
"@xyo-network/network": "~5.6",
|
|
205
|
+
"@xyo-network/node-memory": "~5.6",
|
|
206
|
+
"@xyo-network/node-model": "^5.6",
|
|
207
|
+
"@xyo-network/payload-builder": "^5.6",
|
|
208
|
+
"@xyo-network/payload-model": "^5.6",
|
|
209
|
+
"@xyo-network/query-payload-plugin": "~5.6",
|
|
210
|
+
"@xyo-network/sentinel-model": "^5.6",
|
|
211
|
+
"@xyo-network/wallet": "~5.6",
|
|
212
|
+
"@xyo-network/wallet-model": "^5.6",
|
|
213
|
+
"@xyo-network/witness-model": "^5.6",
|
|
214
|
+
"async-mutex": "^0.5",
|
|
215
|
+
"bn.js": "^5.2",
|
|
216
|
+
"bowser": "^2.14",
|
|
217
|
+
"buffer": "^6.0",
|
|
218
|
+
"chalk": "^5.6",
|
|
219
|
+
"cytoscape": "^3.33",
|
|
220
|
+
"cytoscape-cola": "~2.5",
|
|
221
|
+
"cytoscape-cose-bilkent": "~4.1",
|
|
222
|
+
"cytoscape-dagre": "~2.5",
|
|
223
|
+
"cytoscape-euler": "~1.2",
|
|
224
|
+
"debug": "~4.4",
|
|
225
|
+
"ethers": "^6.16",
|
|
226
|
+
"fast-deep-equal": "~3.1",
|
|
227
|
+
"hash-wasm": "~4.12",
|
|
228
|
+
"js-cookie": "~3.0",
|
|
229
|
+
"lru-cache": "^11.3",
|
|
230
|
+
"md5": "~2.3",
|
|
231
|
+
"mixpanel-browser": "~2.78",
|
|
232
|
+
"numeral": "~2.0",
|
|
233
|
+
"observable-fns": "~0.6",
|
|
234
|
+
"pako": "^2.1",
|
|
235
|
+
"query-string": "~9.3",
|
|
236
|
+
"react": "^19.2",
|
|
237
|
+
"react-dom": "^19.2",
|
|
238
|
+
"react-icons": "~5.6",
|
|
239
|
+
"react-is": "^19.2",
|
|
240
|
+
"react-router-dom": "^7.15",
|
|
241
|
+
"recharts": "~3.8",
|
|
242
|
+
"spark-md5": "~3.0",
|
|
243
|
+
"typescript": "^5.9",
|
|
244
|
+
"viem": "~2.48",
|
|
245
|
+
"wasm-feature-detect": "~1.8",
|
|
246
|
+
"zod": "^4.4"
|
|
248
247
|
},
|
|
249
248
|
"publishConfig": {
|
|
250
249
|
"access": "public"
|