@xyo-network/react-node 2.40.21 → 2.40.23
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/cjs/components/Node.js +1 -1
- package/dist/cjs/components/Node.js.map +1 -1
- package/dist/cjs/components/NodeDrawer.d.ts +7 -0
- package/dist/cjs/components/NodeDrawer.d.ts.map +1 -0
- package/dist/cjs/components/NodeDrawer.js +29 -0
- package/dist/cjs/components/NodeDrawer.js.map +1 -0
- package/dist/cjs/components/index.d.ts +2 -0
- package/dist/cjs/components/index.d.ts.map +1 -1
- package/dist/cjs/components/index.js +4 -0
- package/dist/cjs/components/index.js.map +1 -1
- package/dist/cjs/components/render/ModuleDescriptionBox.d.ts +8 -0
- package/dist/cjs/components/render/ModuleDescriptionBox.d.ts.map +1 -0
- package/dist/cjs/components/render/ModuleDescriptionBox.js +22 -0
- package/dist/cjs/components/render/ModuleDescriptionBox.js.map +1 -0
- package/dist/cjs/components/render/RenderModule.d.ts +12 -0
- package/dist/cjs/components/render/RenderModule.d.ts.map +1 -0
- package/dist/cjs/components/render/RenderModule.js +24 -0
- package/dist/cjs/components/render/RenderModule.js.map +1 -0
- package/dist/cjs/components/render/index.d.ts +3 -0
- package/dist/cjs/components/render/index.d.ts.map +1 -0
- package/dist/cjs/components/render/index.js +6 -0
- package/dist/cjs/components/render/index.js.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/Context.d.ts +4 -0
- package/dist/cjs/contexts/NodeDrawerContext/Context.d.ts.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/Context.js +6 -0
- package/dist/cjs/contexts/NodeDrawerContext/Context.js.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/Provider.d.ts +7 -0
- package/dist/cjs/contexts/NodeDrawerContext/Provider.d.ts.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/Provider.js +15 -0
- package/dist/cjs/contexts/NodeDrawerContext/Provider.js.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/State.d.ts +7 -0
- package/dist/cjs/contexts/NodeDrawerContext/State.d.ts.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/State.js +3 -0
- package/dist/cjs/contexts/NodeDrawerContext/State.js.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/index.d.ts +5 -0
- package/dist/cjs/contexts/NodeDrawerContext/index.d.ts.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/index.js +8 -0
- package/dist/cjs/contexts/NodeDrawerContext/index.js.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/use.d.ts +2 -0
- package/dist/cjs/contexts/NodeDrawerContext/use.d.ts.map +1 -0
- package/dist/cjs/contexts/NodeDrawerContext/use.js +8 -0
- package/dist/cjs/contexts/NodeDrawerContext/use.js.map +1 -0
- package/dist/cjs/contexts/index.d.ts +1 -0
- package/dist/cjs/contexts/index.d.ts.map +1 -1
- package/dist/cjs/contexts/index.js +1 -0
- package/dist/cjs/contexts/index.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +687 -138
- package/dist/esm/components/Node.js +1 -1
- package/dist/esm/components/Node.js.map +1 -1
- package/dist/esm/components/NodeDrawer.d.ts +7 -0
- package/dist/esm/components/NodeDrawer.d.ts.map +1 -0
- package/dist/esm/components/NodeDrawer.js +23 -0
- package/dist/esm/components/NodeDrawer.js.map +1 -0
- package/dist/esm/components/index.d.ts +2 -0
- package/dist/esm/components/index.d.ts.map +1 -1
- package/dist/esm/components/index.js +2 -1
- package/dist/esm/components/index.js.map +1 -1
- package/dist/esm/components/render/ModuleDescriptionBox.d.ts +8 -0
- package/dist/esm/components/render/ModuleDescriptionBox.d.ts.map +1 -0
- package/dist/esm/components/render/ModuleDescriptionBox.js +17 -0
- package/dist/esm/components/render/ModuleDescriptionBox.js.map +1 -0
- package/dist/esm/components/render/RenderModule.d.ts +12 -0
- package/dist/esm/components/render/RenderModule.d.ts.map +1 -0
- package/dist/esm/components/render/RenderModule.js +20 -0
- package/dist/esm/components/render/RenderModule.js.map +1 -0
- package/dist/esm/components/render/index.d.ts +3 -0
- package/dist/esm/components/render/index.d.ts.map +1 -0
- package/dist/esm/components/render/index.js +3 -0
- package/dist/esm/components/render/index.js.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/Context.d.ts +4 -0
- package/dist/esm/contexts/NodeDrawerContext/Context.d.ts.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/Context.js +3 -0
- package/dist/esm/contexts/NodeDrawerContext/Context.js.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/Provider.d.ts +7 -0
- package/dist/esm/contexts/NodeDrawerContext/Provider.d.ts.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/Provider.js +11 -0
- package/dist/esm/contexts/NodeDrawerContext/Provider.js.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/State.d.ts +7 -0
- package/dist/esm/contexts/NodeDrawerContext/State.d.ts.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/State.js +2 -0
- package/dist/esm/contexts/NodeDrawerContext/State.js.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/index.d.ts +5 -0
- package/dist/esm/contexts/NodeDrawerContext/index.d.ts.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/index.js +5 -0
- package/dist/esm/contexts/NodeDrawerContext/index.js.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/use.d.ts +2 -0
- package/dist/esm/contexts/NodeDrawerContext/use.d.ts.map +1 -0
- package/dist/esm/contexts/NodeDrawerContext/use.js +4 -0
- package/dist/esm/contexts/NodeDrawerContext/use.js.map +1 -0
- package/dist/esm/contexts/index.d.ts +1 -0
- package/dist/esm/contexts/index.d.ts.map +1 -1
- package/dist/esm/contexts/index.js +1 -0
- package/dist/esm/contexts/index.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/package.json +4 -2
- package/src/components/Node.tsx +1 -1
- package/src/components/NodeDrawer.stories.tsx +41 -0
- package/src/components/NodeDrawer.tsx +44 -0
- package/src/components/index.ts +2 -0
- package/src/components/render/ModuleDescriptionBox.tsx +42 -0
- package/src/components/render/RenderModule.tsx +43 -0
- package/src/components/render/index.ts +2 -0
- package/src/contexts/NodeDrawerContext/Context.ts +5 -0
- package/src/contexts/NodeDrawerContext/Provider.tsx +18 -0
- package/src/contexts/NodeDrawerContext/State.ts +7 -0
- package/src/contexts/NodeDrawerContext/index.ts +4 -0
- package/src/contexts/NodeDrawerContext/use.tsx +5 -0
- package/src/contexts/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/components/Node.stories.tsx +0 -36
|
@@ -4,6 +4,6 @@ import { FlexCol } from '@xylabs/react-flexbox';
|
|
|
4
4
|
import { useNode } from '../contexts';
|
|
5
5
|
export const NodeBox = (props) => {
|
|
6
6
|
const [node] = useNode();
|
|
7
|
-
return (_jsx(FlexCol, { ...props, children: _jsx(Typography, { children: JSON.stringify(node?.
|
|
7
|
+
return (_jsx(FlexCol, { ...props, children: _jsx(Typography, { children: JSON.stringify(node?.description(), null, 2) }) }));
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=Node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Node.js","sourceRoot":"","sources":["../../../src/components/Node.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAgB,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,KAAK,EAAE,EAAE;IACvD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAA;IACxB,OAAO,CACL,KAAC,OAAO,OAAK,KAAK,YAChB,KAAC,UAAU,cAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"Node.js","sourceRoot":"","sources":["../../../src/components/Node.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAgB,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,KAAK,EAAE,EAAE;IACvD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAA;IACxB,OAAO,CACL,KAAC,OAAO,OAAK,KAAK,YAChB,KAAC,UAAU,cAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAc,GAC/D,CACX,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { DrawerProps } from '@mui/material';
|
|
3
|
+
import { WithChildren } from '@xylabs/react-shared';
|
|
4
|
+
export interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {
|
|
5
|
+
}
|
|
6
|
+
export declare const NodeDrawer: React.FC<NodeDrawerProps>;
|
|
7
|
+
//# sourceMappingURL=NodeDrawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/NodeDrawer.tsx"],"names":[],"mappings":";AACA,OAAO,EAA6B,WAAW,EAAc,MAAM,eAAe,CAAA;AAElF,OAAO,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAOnE,MAAM,WAAW,eAAgB,SAAQ,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;CAAG;AAEnF,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA+BhD,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import CloseIcon from '@mui/icons-material/Close';
|
|
3
|
+
import { ClickAwayListener, Drawer, IconButton } from '@mui/material';
|
|
4
|
+
import { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox';
|
|
5
|
+
import { useAsyncEffect } from '@xylabs/react-shared';
|
|
6
|
+
import { useState } from 'react';
|
|
7
|
+
import { useNode, useNodeDrawer } from '../contexts';
|
|
8
|
+
import { ModuleDescriptionBox } from './render';
|
|
9
|
+
export const NodeDrawer = ({ children, ...props }) => {
|
|
10
|
+
const { open, setOpen } = useNodeDrawer();
|
|
11
|
+
const [node] = useNode();
|
|
12
|
+
const [moduleDescription, setModuleDescription] = useState();
|
|
13
|
+
useAsyncEffect(
|
|
14
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
15
|
+
async () => {
|
|
16
|
+
if (node) {
|
|
17
|
+
const nodeDescription = await node.description();
|
|
18
|
+
setModuleDescription(nodeDescription);
|
|
19
|
+
}
|
|
20
|
+
}, [node]);
|
|
21
|
+
return (_jsx(Drawer, { open: open ?? false, anchor: "right", ...props, children: _jsx(ClickAwayListener, { onClickAway: () => setOpen?.(false), children: _jsxs(FlexGrowCol, { role: "presentation", justifyContent: "start", p: 2, rowGap: 2, minWidth: "33vw", children: [_jsx(FlexRow, { alignContent: "start", justifyContent: "start", width: "100%", children: _jsx(IconButton, { onClick: () => setOpen?.(false), children: _jsx(CloseIcon, {}) }) }), _jsx(ModuleDescriptionBox, { moduleDescription: moduleDescription }), children] }) }) }));
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=NodeDrawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeDrawer.js","sourceRoot":"","sources":["../../../src/components/NodeDrawer.tsx"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,2BAA2B,CAAA;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAe,UAAU,EAAE,MAAM,eAAe,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAgB,MAAM,sBAAsB,CAAA;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAI/C,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC9E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,EAAE,CAAA;IACzC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAA;IACxB,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,EAAqB,CAAA;IAE/E,cAAc;IACZ,uDAAuD;IACvD,KAAK,IAAI,EAAE;QACT,IAAI,IAAI,EAAE;YACR,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;YAChD,oBAAoB,CAAC,eAAe,CAAC,CAAA;SACtC;IACH,CAAC,EACD,CAAC,IAAI,CAAC,CACP,CAAA;IAED,OAAO,CACL,KAAC,MAAM,IAAC,IAAI,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,EAAC,OAAO,KAAK,KAAK,YACnD,KAAC,iBAAiB,IAAC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,YACpD,MAAC,WAAW,IAAC,IAAI,EAAC,cAAc,EAAC,cAAc,EAAC,OAAO,EAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAC,MAAM,aACtF,KAAC,OAAO,IAAC,YAAY,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO,EAAC,KAAK,EAAC,MAAM,YAC/D,KAAC,UAAU,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,YACzC,KAAC,SAAS,KAAG,GACF,GACL,EACV,KAAC,oBAAoB,IAAC,iBAAiB,EAAE,iBAAiB,GAAI,EAC7D,QAAQ,IACG,GACI,GACb,CACV,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { FlexBoxProps } from '@xylabs/react-flexbox';
|
|
3
|
+
import { ModuleDescription } from '@xyo-network/module';
|
|
4
|
+
export interface ModuleDescriptionProps extends FlexBoxProps {
|
|
5
|
+
moduleDescription?: ModuleDescription;
|
|
6
|
+
}
|
|
7
|
+
export declare const ModuleDescriptionBox: React.FC<ModuleDescriptionProps>;
|
|
8
|
+
//# sourceMappingURL=ModuleDescriptionBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleDescriptionBox.d.ts","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAMvD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CACtC;AACD,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsBjE,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import ChevronRightIcon from '@mui/icons-material/ChevronRight';
|
|
3
|
+
import ExpandMoreIcon from '@mui/icons-material/ExpandMore';
|
|
4
|
+
import { TreeView } from '@mui/lab';
|
|
5
|
+
import { styled, Typography } from '@mui/material';
|
|
6
|
+
import isEmpty from 'lodash/isEmpty';
|
|
7
|
+
import { useRef } from 'react';
|
|
8
|
+
import { RenderModule } from './RenderModule';
|
|
9
|
+
export const ModuleDescriptionBox = ({ moduleDescription }) => {
|
|
10
|
+
const idRef = useRef({ idIncrementor: 0, ids: [] });
|
|
11
|
+
return (_jsxs(_Fragment, { children: [moduleDescription === undefined ? _jsx(Typography, { variant: "h4", children: "Node not found" }) : null, isEmpty(moduleDescription) ? _jsx(Typography, { children: "Node has no modules" }) : null, !isEmpty(moduleDescription) ? (_jsxs(_Fragment, { children: [_jsx(Typography, { variant: "h4", children: "Node Configuration" }), _jsx(StyledTreeView, { "aria-label": "file system navigator", defaultCollapseIcon: _jsx(ExpandMoreIcon, {}), defaultExpandIcon: _jsx(ChevronRightIcon, {}), sx: { flexGrow: 1 }, children: _jsx(RenderModule, { module: moduleDescription, idRef: idRef }) })] })) : null] }));
|
|
12
|
+
};
|
|
13
|
+
const StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({
|
|
14
|
+
height: 'auto',
|
|
15
|
+
maxWidth: 'auto',
|
|
16
|
+
}));
|
|
17
|
+
//# sourceMappingURL=ModuleDescriptionBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleDescriptionBox.js","sourceRoot":"","sources":["../../../../src/components/render/ModuleDescriptionBox.tsx"],"names":[],"mappings":";AAAA,OAAO,gBAAgB,MAAM,kCAAkC,CAAA;AAC/D,OAAO,cAAc,MAAM,gCAAgC,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAGlD,OAAO,OAAO,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAK7C,MAAM,CAAC,MAAM,oBAAoB,GAAqC,CAAC,EAAE,iBAAiB,EAAE,EAAE,EAAE;IAC9F,MAAM,KAAK,GAAG,MAAM,CAA2C,EAAE,aAAa,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;IAE7F,OAAO,CACL,8BACG,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,KAAC,UAAU,IAAC,OAAO,EAAC,IAAI,+BAA4B,CAAC,CAAC,CAAC,IAAI,EAC7F,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAC,UAAU,sCAAiC,CAAC,CAAC,CAAC,IAAI,EAChF,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAC7B,8BACE,KAAC,UAAU,IAAC,OAAO,EAAC,IAAI,mCAAgC,EACxD,KAAC,cAAc,kBACF,uBAAuB,EAClC,mBAAmB,EAAE,KAAC,cAAc,KAAG,EACvC,iBAAiB,EAAE,KAAC,gBAAgB,KAAG,EACvC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,YAEnB,KAAC,YAAY,IAAC,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,GAAI,GAC1C,IAChB,CACJ,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACzE,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,MAAM;CACjB,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ModuleDescription } from '@xyo-network/module';
|
|
2
|
+
import { MutableRefObject } from 'react';
|
|
3
|
+
interface RenderModuleProps {
|
|
4
|
+
module: ModuleDescription;
|
|
5
|
+
idRef: MutableRefObject<{
|
|
6
|
+
idIncrementor: number;
|
|
7
|
+
ids: string[];
|
|
8
|
+
}>;
|
|
9
|
+
}
|
|
10
|
+
export declare const RenderModule: React.FC<RenderModuleProps>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=RenderModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderModule.d.ts","sourceRoot":"","sources":["../../../../src/components/render/RenderModule.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAExC,UAAU,iBAAiB;IACzB,MAAM,EAAE,iBAAiB,CAAA;IACzB,KAAK,EAAE,gBAAgB,CAAC;QACtB,aAAa,EAAE,MAAM,CAAA;QACrB,GAAG,EAAE,MAAM,EAAE,CAAA;KACd,CAAC,CAAA;CACH;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuBpD,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { TreeItem } from '@mui/lab';
|
|
3
|
+
import { styled } from '@mui/material';
|
|
4
|
+
export const RenderModule = ({ module, idRef }) => {
|
|
5
|
+
const { address, queries, children: moduleChildren } = module;
|
|
6
|
+
const increment = () => {
|
|
7
|
+
const newId = (idRef.current.idIncrementor++).toString();
|
|
8
|
+
idRef.current.ids.push(newId);
|
|
9
|
+
return newId;
|
|
10
|
+
};
|
|
11
|
+
return (_jsxs(StyledAddressTreeItem, { nodeId: increment(), label: `address: ${address}`, children: [queries.map((query, index) => {
|
|
12
|
+
return _jsx(TreeItem, { nodeId: increment(), label: `query : ${query}`, sx: { mb: index === queries.length - 1 ? 1.5 : 0.5 } }, query);
|
|
13
|
+
}), moduleChildren && moduleChildren.length > 0 ? (_jsx(TreeItem, { nodeId: increment(), label: 'children', sx: { mb: 0.5 }, children: moduleChildren.map((module) => (_jsx(RenderModule, { module: module, idRef: idRef }, module.address))) })) : null] }));
|
|
14
|
+
};
|
|
15
|
+
const StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({
|
|
16
|
+
'& .MuiTreeItem-content': {
|
|
17
|
+
marginBottom: theme.spacing(0.25),
|
|
18
|
+
},
|
|
19
|
+
}));
|
|
20
|
+
//# sourceMappingURL=RenderModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderModule.js","sourceRoot":"","sources":["../../../../src/components/render/RenderModule.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAYtC,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IAC7E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CAAA;IAE7D,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAA;QACxD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC7B,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,OAAO,CACL,MAAC,qBAAqB,IAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,YAAY,OAAO,EAAE,aACrE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBAC5B,OAAO,KAAC,QAAQ,IAAa,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,WAAW,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,IAA3G,KAAK,CAA0G,CAAA;YACvI,CAAC,CAAC,EACD,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC7C,KAAC,QAAQ,IAAC,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,YAC9D,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC9B,KAAC,YAAY,IAAsB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,IAA5C,MAAM,CAAC,OAAO,CAAkC,CACpE,CAAC,GACO,CACZ,CAAC,CAAC,CAAC,IAAI,IACc,CACzB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,qBAAqB,GAAG,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAChG,wBAAwB,EAAE;QACxB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;KAClC;CACF,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/render/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/render/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.d.ts","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/Context.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,iBAAiB,+FAAqC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/Context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAI3D,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,EAAmB,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { WithChildren } from '@xylabs/react-shared';
|
|
3
|
+
export interface NodeDrawerProviderProps extends WithChildren {
|
|
4
|
+
defaultOpen?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const NodeDrawerProvider: React.FC<NodeDrawerProviderProps>;
|
|
7
|
+
//# sourceMappingURL=Provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/Provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAKnD,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAQhE,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { NodeDrawerContext } from './Context';
|
|
4
|
+
export const NodeDrawerProvider = ({ children, defaultOpen = false }) => {
|
|
5
|
+
const [open, setOpen] = useState(defaultOpen);
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
setOpen(defaultOpen);
|
|
8
|
+
}, [defaultOpen]);
|
|
9
|
+
return _jsx(NodeDrawerContext.Provider, { value: { open, provided: true, setOpen }, children: children });
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=Provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Provider.js","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/Provider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAM7C,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EAAE,QAAQ,EAAE,WAAW,GAAG,KAAK,EAAE,EAAE,EAAE;IACzG,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAE7C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,WAAW,CAAC,CAAA;IACtB,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,KAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,YAAG,QAAQ,GAA8B,CAAA;AACtH,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ContextExState } from '@xyo-network/react-shared';
|
|
2
|
+
import { Dispatch, SetStateAction } from 'react';
|
|
3
|
+
export interface NodeDrawerState extends ContextExState {
|
|
4
|
+
open?: boolean;
|
|
5
|
+
setOpen?: Dispatch<SetStateAction<boolean>>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=State.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/State.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEhD,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CAC5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"State.js","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/State.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/use.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,aAAa,kIAA+E,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/use.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAE7C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,GAAG,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA"}
|
package/package.json
CHANGED
|
@@ -10,9 +10,11 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
+
"@mui/lab": "^5.0.0-alpha.108",
|
|
13
14
|
"@xylabs/react-flexbox": "^2.15.1",
|
|
14
15
|
"@xylabs/react-shared": "^2.15.1",
|
|
15
|
-
"@xyo-network/react-shared": "^2.40.
|
|
16
|
+
"@xyo-network/react-shared": "^2.40.23",
|
|
17
|
+
"lodash": "^4.17.21",
|
|
16
18
|
"tslib": "^2.4.1"
|
|
17
19
|
},
|
|
18
20
|
"peerDependencies": {
|
|
@@ -72,5 +74,5 @@
|
|
|
72
74
|
},
|
|
73
75
|
"sideEffects": false,
|
|
74
76
|
"types": "dist/esm/index.d.ts",
|
|
75
|
-
"version": "2.40.
|
|
77
|
+
"version": "2.40.23"
|
|
76
78
|
}
|
package/src/components/Node.tsx
CHANGED
|
@@ -7,7 +7,7 @@ export const NodeBox: React.FC<FlexBoxProps> = (props) => {
|
|
|
7
7
|
const [node] = useNode()
|
|
8
8
|
return (
|
|
9
9
|
<FlexCol {...props}>
|
|
10
|
-
<Typography>{JSON.stringify(node?.
|
|
10
|
+
<Typography>{JSON.stringify(node?.description(), null, 2)}</Typography>
|
|
11
11
|
</FlexCol>
|
|
12
12
|
)
|
|
13
13
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Button } from '@mui/material'
|
|
2
|
+
import { ComponentMeta, ComponentStory, DecoratorFn } from '@storybook/react'
|
|
3
|
+
import { FlexCol } from '@xylabs/react-flexbox'
|
|
4
|
+
import { NodeConfigSchema } from '@xyo-network/node'
|
|
5
|
+
|
|
6
|
+
import { MemoryNodeProvider, NodeDrawerProvider, useNodeDrawer } from '../contexts'
|
|
7
|
+
import { NodeDrawer } from './NodeDrawer'
|
|
8
|
+
|
|
9
|
+
const ProviderDecorator: DecoratorFn = (Story, args) => (
|
|
10
|
+
<MemoryNodeProvider config={{ schema: NodeConfigSchema }}>
|
|
11
|
+
<NodeDrawerProvider defaultOpen>
|
|
12
|
+
<Story {...args} />
|
|
13
|
+
</NodeDrawerProvider>
|
|
14
|
+
</MemoryNodeProvider>
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
const StorybookEntry = {
|
|
18
|
+
component: NodeDrawer,
|
|
19
|
+
decorators: [ProviderDecorator],
|
|
20
|
+
title: 'node/NodeDrawer',
|
|
21
|
+
} as ComponentMeta<typeof NodeDrawer>
|
|
22
|
+
|
|
23
|
+
const Template: ComponentStory<typeof NodeDrawer> = (args) => {
|
|
24
|
+
const { setOpen } = useNodeDrawer()
|
|
25
|
+
return (
|
|
26
|
+
<FlexCol>
|
|
27
|
+
<Button onClick={() => setOpen?.((previous) => !previous)} variant="contained">
|
|
28
|
+
Toggle Drawer
|
|
29
|
+
</Button>
|
|
30
|
+
<NodeDrawer {...args}></NodeDrawer>
|
|
31
|
+
</FlexCol>
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const Default = Template.bind({})
|
|
36
|
+
Default.args = {}
|
|
37
|
+
|
|
38
|
+
export { Default }
|
|
39
|
+
|
|
40
|
+
// eslint-disable-next-line import/no-default-export
|
|
41
|
+
export default StorybookEntry
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import CloseIcon from '@mui/icons-material/Close'
|
|
2
|
+
import { ClickAwayListener, Drawer, DrawerProps, IconButton } from '@mui/material'
|
|
3
|
+
import { FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'
|
|
4
|
+
import { useAsyncEffect, WithChildren } from '@xylabs/react-shared'
|
|
5
|
+
import { ModuleDescription } from '@xyo-network/module'
|
|
6
|
+
import { useState } from 'react'
|
|
7
|
+
|
|
8
|
+
import { useNode, useNodeDrawer } from '../contexts'
|
|
9
|
+
import { ModuleDescriptionBox } from './render'
|
|
10
|
+
|
|
11
|
+
export interface NodeDrawerProps extends WithChildren, Omit<DrawerProps, 'open'> {}
|
|
12
|
+
|
|
13
|
+
export const NodeDrawer: React.FC<NodeDrawerProps> = ({ children, ...props }) => {
|
|
14
|
+
const { open, setOpen } = useNodeDrawer()
|
|
15
|
+
const [node] = useNode()
|
|
16
|
+
const [moduleDescription, setModuleDescription] = useState<ModuleDescription>()
|
|
17
|
+
|
|
18
|
+
useAsyncEffect(
|
|
19
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
20
|
+
async () => {
|
|
21
|
+
if (node) {
|
|
22
|
+
const nodeDescription = await node.description()
|
|
23
|
+
setModuleDescription(nodeDescription)
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
[node],
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
return (
|
|
30
|
+
<Drawer open={open ?? false} anchor="right" {...props}>
|
|
31
|
+
<ClickAwayListener onClickAway={() => setOpen?.(false)}>
|
|
32
|
+
<FlexGrowCol role="presentation" justifyContent="start" p={2} rowGap={2} minWidth="33vw">
|
|
33
|
+
<FlexRow alignContent="start" justifyContent="start" width="100%">
|
|
34
|
+
<IconButton onClick={() => setOpen?.(false)}>
|
|
35
|
+
<CloseIcon />
|
|
36
|
+
</IconButton>
|
|
37
|
+
</FlexRow>
|
|
38
|
+
<ModuleDescriptionBox moduleDescription={moduleDescription} />
|
|
39
|
+
{children}
|
|
40
|
+
</FlexGrowCol>
|
|
41
|
+
</ClickAwayListener>
|
|
42
|
+
</Drawer>
|
|
43
|
+
)
|
|
44
|
+
}
|
package/src/components/index.ts
CHANGED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import ChevronRightIcon from '@mui/icons-material/ChevronRight'
|
|
2
|
+
import ExpandMoreIcon from '@mui/icons-material/ExpandMore'
|
|
3
|
+
import { TreeView } from '@mui/lab'
|
|
4
|
+
import { styled, Typography } from '@mui/material'
|
|
5
|
+
import { FlexBoxProps } from '@xylabs/react-flexbox'
|
|
6
|
+
import { ModuleDescription } from '@xyo-network/module'
|
|
7
|
+
import isEmpty from 'lodash/isEmpty'
|
|
8
|
+
import { useRef } from 'react'
|
|
9
|
+
|
|
10
|
+
import { RenderModule } from './RenderModule'
|
|
11
|
+
|
|
12
|
+
export interface ModuleDescriptionProps extends FlexBoxProps {
|
|
13
|
+
moduleDescription?: ModuleDescription
|
|
14
|
+
}
|
|
15
|
+
export const ModuleDescriptionBox: React.FC<ModuleDescriptionProps> = ({ moduleDescription }) => {
|
|
16
|
+
const idRef = useRef<{ ids: string[]; idIncrementor: number }>({ idIncrementor: 0, ids: [] })
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<>
|
|
20
|
+
{moduleDescription === undefined ? <Typography variant="h4">Node not found</Typography> : null}
|
|
21
|
+
{isEmpty(moduleDescription) ? <Typography>Node has no modules</Typography> : null}
|
|
22
|
+
{!isEmpty(moduleDescription) ? (
|
|
23
|
+
<>
|
|
24
|
+
<Typography variant="h4">Node Configuration</Typography>
|
|
25
|
+
<StyledTreeView
|
|
26
|
+
aria-label="file system navigator"
|
|
27
|
+
defaultCollapseIcon={<ExpandMoreIcon />}
|
|
28
|
+
defaultExpandIcon={<ChevronRightIcon />}
|
|
29
|
+
sx={{ flexGrow: 1 }}
|
|
30
|
+
>
|
|
31
|
+
<RenderModule module={moduleDescription} idRef={idRef} />
|
|
32
|
+
</StyledTreeView>
|
|
33
|
+
</>
|
|
34
|
+
) : null}
|
|
35
|
+
</>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const StyledTreeView = styled(TreeView, { name: 'StyledTreeView' })(() => ({
|
|
40
|
+
height: 'auto',
|
|
41
|
+
maxWidth: 'auto',
|
|
42
|
+
}))
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { TreeItem } from '@mui/lab'
|
|
2
|
+
import { styled } from '@mui/material'
|
|
3
|
+
import { ModuleDescription } from '@xyo-network/module'
|
|
4
|
+
import { MutableRefObject } from 'react'
|
|
5
|
+
|
|
6
|
+
interface RenderModuleProps {
|
|
7
|
+
module: ModuleDescription
|
|
8
|
+
idRef: MutableRefObject<{
|
|
9
|
+
idIncrementor: number
|
|
10
|
+
ids: string[]
|
|
11
|
+
}>
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const RenderModule: React.FC<RenderModuleProps> = ({ module, idRef }) => {
|
|
15
|
+
const { address, queries, children: moduleChildren } = module
|
|
16
|
+
|
|
17
|
+
const increment = () => {
|
|
18
|
+
const newId = (idRef.current.idIncrementor++).toString()
|
|
19
|
+
idRef.current.ids.push(newId)
|
|
20
|
+
return newId
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<StyledAddressTreeItem nodeId={increment()} label={`address: ${address}`}>
|
|
25
|
+
{queries.map((query, index) => {
|
|
26
|
+
return <TreeItem key={query} nodeId={increment()} label={`query : ${query}`} sx={{ mb: index === queries.length - 1 ? 1.5 : 0.5 }} />
|
|
27
|
+
})}
|
|
28
|
+
{moduleChildren && moduleChildren.length > 0 ? (
|
|
29
|
+
<TreeItem nodeId={increment()} label={'children'} sx={{ mb: 0.5 }}>
|
|
30
|
+
{moduleChildren.map((module) => (
|
|
31
|
+
<RenderModule key={module.address} module={module} idRef={idRef} />
|
|
32
|
+
))}
|
|
33
|
+
</TreeItem>
|
|
34
|
+
) : null}
|
|
35
|
+
</StyledAddressTreeItem>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const StyledAddressTreeItem = styled(TreeItem, { name: 'StyledAddressTreeItem' })(({ theme }) => ({
|
|
40
|
+
'& .MuiTreeItem-content': {
|
|
41
|
+
marginBottom: theme.spacing(0.25),
|
|
42
|
+
},
|
|
43
|
+
}))
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { WithChildren } from '@xylabs/react-shared'
|
|
2
|
+
import { useEffect, useState } from 'react'
|
|
3
|
+
|
|
4
|
+
import { NodeDrawerContext } from './Context'
|
|
5
|
+
|
|
6
|
+
export interface NodeDrawerProviderProps extends WithChildren {
|
|
7
|
+
defaultOpen?: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const NodeDrawerProvider: React.FC<NodeDrawerProviderProps> = ({ children, defaultOpen = false }) => {
|
|
11
|
+
const [open, setOpen] = useState(defaultOpen)
|
|
12
|
+
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
setOpen(defaultOpen)
|
|
15
|
+
}, [defaultOpen])
|
|
16
|
+
|
|
17
|
+
return <NodeDrawerContext.Provider value={{ open, provided: true, setOpen }}>{children}</NodeDrawerContext.Provider>
|
|
18
|
+
}
|