@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.
Files changed (117) hide show
  1. package/dist/cjs/components/Node.js +1 -1
  2. package/dist/cjs/components/Node.js.map +1 -1
  3. package/dist/cjs/components/NodeDrawer.d.ts +7 -0
  4. package/dist/cjs/components/NodeDrawer.d.ts.map +1 -0
  5. package/dist/cjs/components/NodeDrawer.js +29 -0
  6. package/dist/cjs/components/NodeDrawer.js.map +1 -0
  7. package/dist/cjs/components/index.d.ts +2 -0
  8. package/dist/cjs/components/index.d.ts.map +1 -1
  9. package/dist/cjs/components/index.js +4 -0
  10. package/dist/cjs/components/index.js.map +1 -1
  11. package/dist/cjs/components/render/ModuleDescriptionBox.d.ts +8 -0
  12. package/dist/cjs/components/render/ModuleDescriptionBox.d.ts.map +1 -0
  13. package/dist/cjs/components/render/ModuleDescriptionBox.js +22 -0
  14. package/dist/cjs/components/render/ModuleDescriptionBox.js.map +1 -0
  15. package/dist/cjs/components/render/RenderModule.d.ts +12 -0
  16. package/dist/cjs/components/render/RenderModule.d.ts.map +1 -0
  17. package/dist/cjs/components/render/RenderModule.js +24 -0
  18. package/dist/cjs/components/render/RenderModule.js.map +1 -0
  19. package/dist/cjs/components/render/index.d.ts +3 -0
  20. package/dist/cjs/components/render/index.d.ts.map +1 -0
  21. package/dist/cjs/components/render/index.js +6 -0
  22. package/dist/cjs/components/render/index.js.map +1 -0
  23. package/dist/cjs/contexts/NodeDrawerContext/Context.d.ts +4 -0
  24. package/dist/cjs/contexts/NodeDrawerContext/Context.d.ts.map +1 -0
  25. package/dist/cjs/contexts/NodeDrawerContext/Context.js +6 -0
  26. package/dist/cjs/contexts/NodeDrawerContext/Context.js.map +1 -0
  27. package/dist/cjs/contexts/NodeDrawerContext/Provider.d.ts +7 -0
  28. package/dist/cjs/contexts/NodeDrawerContext/Provider.d.ts.map +1 -0
  29. package/dist/cjs/contexts/NodeDrawerContext/Provider.js +15 -0
  30. package/dist/cjs/contexts/NodeDrawerContext/Provider.js.map +1 -0
  31. package/dist/cjs/contexts/NodeDrawerContext/State.d.ts +7 -0
  32. package/dist/cjs/contexts/NodeDrawerContext/State.d.ts.map +1 -0
  33. package/dist/cjs/contexts/NodeDrawerContext/State.js +3 -0
  34. package/dist/cjs/contexts/NodeDrawerContext/State.js.map +1 -0
  35. package/dist/cjs/contexts/NodeDrawerContext/index.d.ts +5 -0
  36. package/dist/cjs/contexts/NodeDrawerContext/index.d.ts.map +1 -0
  37. package/dist/cjs/contexts/NodeDrawerContext/index.js +8 -0
  38. package/dist/cjs/contexts/NodeDrawerContext/index.js.map +1 -0
  39. package/dist/cjs/contexts/NodeDrawerContext/use.d.ts +2 -0
  40. package/dist/cjs/contexts/NodeDrawerContext/use.d.ts.map +1 -0
  41. package/dist/cjs/contexts/NodeDrawerContext/use.js +8 -0
  42. package/dist/cjs/contexts/NodeDrawerContext/use.js.map +1 -0
  43. package/dist/cjs/contexts/index.d.ts +1 -0
  44. package/dist/cjs/contexts/index.d.ts.map +1 -1
  45. package/dist/cjs/contexts/index.js +1 -0
  46. package/dist/cjs/contexts/index.js.map +1 -1
  47. package/dist/cjs/index.d.ts +1 -0
  48. package/dist/cjs/index.d.ts.map +1 -1
  49. package/dist/cjs/index.js +1 -0
  50. package/dist/cjs/index.js.map +1 -1
  51. package/dist/docs.json +687 -138
  52. package/dist/esm/components/Node.js +1 -1
  53. package/dist/esm/components/Node.js.map +1 -1
  54. package/dist/esm/components/NodeDrawer.d.ts +7 -0
  55. package/dist/esm/components/NodeDrawer.d.ts.map +1 -0
  56. package/dist/esm/components/NodeDrawer.js +23 -0
  57. package/dist/esm/components/NodeDrawer.js.map +1 -0
  58. package/dist/esm/components/index.d.ts +2 -0
  59. package/dist/esm/components/index.d.ts.map +1 -1
  60. package/dist/esm/components/index.js +2 -1
  61. package/dist/esm/components/index.js.map +1 -1
  62. package/dist/esm/components/render/ModuleDescriptionBox.d.ts +8 -0
  63. package/dist/esm/components/render/ModuleDescriptionBox.d.ts.map +1 -0
  64. package/dist/esm/components/render/ModuleDescriptionBox.js +17 -0
  65. package/dist/esm/components/render/ModuleDescriptionBox.js.map +1 -0
  66. package/dist/esm/components/render/RenderModule.d.ts +12 -0
  67. package/dist/esm/components/render/RenderModule.d.ts.map +1 -0
  68. package/dist/esm/components/render/RenderModule.js +20 -0
  69. package/dist/esm/components/render/RenderModule.js.map +1 -0
  70. package/dist/esm/components/render/index.d.ts +3 -0
  71. package/dist/esm/components/render/index.d.ts.map +1 -0
  72. package/dist/esm/components/render/index.js +3 -0
  73. package/dist/esm/components/render/index.js.map +1 -0
  74. package/dist/esm/contexts/NodeDrawerContext/Context.d.ts +4 -0
  75. package/dist/esm/contexts/NodeDrawerContext/Context.d.ts.map +1 -0
  76. package/dist/esm/contexts/NodeDrawerContext/Context.js +3 -0
  77. package/dist/esm/contexts/NodeDrawerContext/Context.js.map +1 -0
  78. package/dist/esm/contexts/NodeDrawerContext/Provider.d.ts +7 -0
  79. package/dist/esm/contexts/NodeDrawerContext/Provider.d.ts.map +1 -0
  80. package/dist/esm/contexts/NodeDrawerContext/Provider.js +11 -0
  81. package/dist/esm/contexts/NodeDrawerContext/Provider.js.map +1 -0
  82. package/dist/esm/contexts/NodeDrawerContext/State.d.ts +7 -0
  83. package/dist/esm/contexts/NodeDrawerContext/State.d.ts.map +1 -0
  84. package/dist/esm/contexts/NodeDrawerContext/State.js +2 -0
  85. package/dist/esm/contexts/NodeDrawerContext/State.js.map +1 -0
  86. package/dist/esm/contexts/NodeDrawerContext/index.d.ts +5 -0
  87. package/dist/esm/contexts/NodeDrawerContext/index.d.ts.map +1 -0
  88. package/dist/esm/contexts/NodeDrawerContext/index.js +5 -0
  89. package/dist/esm/contexts/NodeDrawerContext/index.js.map +1 -0
  90. package/dist/esm/contexts/NodeDrawerContext/use.d.ts +2 -0
  91. package/dist/esm/contexts/NodeDrawerContext/use.d.ts.map +1 -0
  92. package/dist/esm/contexts/NodeDrawerContext/use.js +4 -0
  93. package/dist/esm/contexts/NodeDrawerContext/use.js.map +1 -0
  94. package/dist/esm/contexts/index.d.ts +1 -0
  95. package/dist/esm/contexts/index.d.ts.map +1 -1
  96. package/dist/esm/contexts/index.js +1 -0
  97. package/dist/esm/contexts/index.js.map +1 -1
  98. package/dist/esm/index.d.ts +1 -0
  99. package/dist/esm/index.d.ts.map +1 -1
  100. package/dist/esm/index.js +1 -0
  101. package/dist/esm/index.js.map +1 -1
  102. package/package.json +4 -2
  103. package/src/components/Node.tsx +1 -1
  104. package/src/components/NodeDrawer.stories.tsx +41 -0
  105. package/src/components/NodeDrawer.tsx +44 -0
  106. package/src/components/index.ts +2 -0
  107. package/src/components/render/ModuleDescriptionBox.tsx +42 -0
  108. package/src/components/render/RenderModule.tsx +43 -0
  109. package/src/components/render/index.ts +2 -0
  110. package/src/contexts/NodeDrawerContext/Context.ts +5 -0
  111. package/src/contexts/NodeDrawerContext/Provider.tsx +18 -0
  112. package/src/contexts/NodeDrawerContext/State.ts +7 -0
  113. package/src/contexts/NodeDrawerContext/index.ts +4 -0
  114. package/src/contexts/NodeDrawerContext/use.tsx +5 -0
  115. package/src/contexts/index.ts +1 -0
  116. package/src/index.ts +1 -0
  117. 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?.registered()) }) }));
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,UAAU,EAAE,CAAC,GAAc,GACrD,CACX,CAAA;AACH,CAAC,CAAA"}
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,3 @@
1
+ export * from './Node';
2
+ export * from './NodeDrawer';
1
3
  //# sourceMappingURL=index.d.ts.map
@@ -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,2 +1,3 @@
1
- "use strict";
1
+ export * from './Node';
2
+ export * from './NodeDrawer';
2
3
  //# sourceMappingURL=index.js.map
@@ -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,3 @@
1
+ export * from './ModuleDescriptionBox';
2
+ export * from './RenderModule';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export * from './ModuleDescriptionBox';
2
+ export * from './RenderModule';
3
+ //# sourceMappingURL=index.js.map
@@ -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,4 @@
1
+ /// <reference types="react" />
2
+ import { NodeDrawerState } from './State';
3
+ export declare const NodeDrawerContext: import("react").Context<NodeDrawerState & import("@xyo-network/react-shared").ContextExState>;
4
+ //# sourceMappingURL=Context.d.ts.map
@@ -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,3 @@
1
+ import { createContextEx } from '@xyo-network/react-shared';
2
+ export const NodeDrawerContext = createContextEx();
3
+ //# sourceMappingURL=Context.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=State.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.js","sourceRoot":"","sources":["../../../../src/contexts/NodeDrawerContext/State.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export * from './Context';
2
+ export * from './Provider';
3
+ export * from './State';
4
+ export * from './use';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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,5 @@
1
+ export * from './Context';
2
+ export * from './Provider';
3
+ export * from './State';
4
+ export * from './use';
5
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export declare const useNodeDrawer: (required?: boolean) => Omit<import("./State").NodeDrawerState & import("@xyo-network/react-shared").ContextExState, "provided">;
2
+ //# sourceMappingURL=use.d.ts.map
@@ -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,4 @@
1
+ import { useContextEx } from '@xyo-network/react-shared';
2
+ import { NodeDrawerContext } from './Context';
3
+ export const useNodeDrawer = (required = true) => useContextEx(NodeDrawerContext, 'NodeDrawer', required);
4
+ //# sourceMappingURL=use.js.map
@@ -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,5 +1,6 @@
1
1
  export * from './Context';
2
2
  export * from './MemoryProvider';
3
+ export * from './NodeDrawerContext';
3
4
  export * from './Provider';
4
5
  export * from './State';
5
6
  export * from './useArchivistModule';
@@ -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,5 +1,6 @@
1
1
  export * from './Context';
2
2
  export * from './MemoryProvider';
3
+ export * from './NodeDrawerContext';
3
4
  export * from './Provider';
4
5
  export * from './State';
5
6
  export * from './useArchivistModule';
@@ -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"}
@@ -1,2 +1,3 @@
1
+ export * from './components';
1
2
  export * from './contexts';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -1,2 +1,3 @@
1
+ export * from './components';
1
2
  export * from './contexts';
2
3
  //# sourceMappingURL=index.js.map
@@ -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.21",
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.21"
77
+ "version": "2.40.23"
76
78
  }
@@ -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?.registered())}</Typography>
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
+ }
@@ -0,0 +1,2 @@
1
+ export * from './Node'
2
+ export * from './NodeDrawer'
@@ -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,2 @@
1
+ export * from './ModuleDescriptionBox'
2
+ export * from './RenderModule'
@@ -0,0 +1,5 @@
1
+ import { createContextEx } from '@xyo-network/react-shared'
2
+
3
+ import { NodeDrawerState } from './State'
4
+
5
+ export const NodeDrawerContext = createContextEx<NodeDrawerState>()
@@ -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
+ }
@@ -0,0 +1,7 @@
1
+ import { ContextExState } from '@xyo-network/react-shared'
2
+ import { Dispatch, SetStateAction } from 'react'
3
+
4
+ export interface NodeDrawerState extends ContextExState {
5
+ open?: boolean
6
+ setOpen?: Dispatch<SetStateAction<boolean>>
7
+ }
@@ -0,0 +1,4 @@
1
+ export * from './Context'
2
+ export * from './Provider'
3
+ export * from './State'
4
+ export * from './use'
@@ -0,0 +1,5 @@
1
+ import { useContextEx } from '@xyo-network/react-shared'
2
+
3
+ import { NodeDrawerContext } from './Context'
4
+
5
+ export const useNodeDrawer = (required = true) => useContextEx(NodeDrawerContext, 'NodeDrawer', required)
@@ -1,5 +1,6 @@
1
1
  export * from './Context'
2
2
  export * from './MemoryProvider'
3
+ export * from './NodeDrawerContext'
3
4
  export * from './Provider'
4
5
  export * from './State'
5
6
  export * from './useArchivistModule'