@xyo-network/react-powered-by-xyo 2.71.2 → 2.71.4

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 (30) hide show
  1. package/dist/browser/components/ModuleDetails.d.cts.map +1 -1
  2. package/dist/browser/components/ModuleDetails.d.mts.map +1 -1
  3. package/dist/browser/components/ModuleDetails.d.ts.map +1 -1
  4. package/dist/browser/components/SentinelSummary.d.cts +1 -1
  5. package/dist/browser/components/SentinelSummary.d.cts.map +1 -1
  6. package/dist/browser/components/SentinelSummary.d.mts +1 -1
  7. package/dist/browser/components/SentinelSummary.d.mts.map +1 -1
  8. package/dist/browser/components/SentinelSummary.d.ts +1 -1
  9. package/dist/browser/components/SentinelSummary.d.ts.map +1 -1
  10. package/dist/browser/index.cjs +7 -4
  11. package/dist/browser/index.cjs.map +1 -1
  12. package/dist/browser/index.js +6 -3
  13. package/dist/browser/index.js.map +1 -1
  14. package/dist/node/components/ModuleDetails.d.cts.map +1 -1
  15. package/dist/node/components/ModuleDetails.d.mts.map +1 -1
  16. package/dist/node/components/ModuleDetails.d.ts.map +1 -1
  17. package/dist/node/components/SentinelSummary.d.cts +1 -1
  18. package/dist/node/components/SentinelSummary.d.cts.map +1 -1
  19. package/dist/node/components/SentinelSummary.d.mts +1 -1
  20. package/dist/node/components/SentinelSummary.d.mts.map +1 -1
  21. package/dist/node/components/SentinelSummary.d.ts +1 -1
  22. package/dist/node/components/SentinelSummary.d.ts.map +1 -1
  23. package/dist/node/index.cjs +7 -4
  24. package/dist/node/index.cjs.map +1 -1
  25. package/dist/node/index.js +6 -3
  26. package/dist/node/index.js.map +1 -1
  27. package/package.json +18 -17
  28. package/src/components/ModuleDetails.tsx +5 -3
  29. package/src/components/SentinelSummary.tsx +1 -1
  30. package/src/components/TypedModuleSummary.tsx +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+DtD,CAAA"}
1
+ {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAqD,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM7G,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgEtD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+DtD,CAAA"}
1
+ {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAqD,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM7G,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgEtD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+DtD,CAAA"}
1
+ {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAqD,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM7G,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgEtD,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { SentinelInstance } from '@xyo-network/sentinel';
2
+ import { SentinelInstance } from '@xyo-network/sentinel-model';
3
3
  import { ModuleSummaryProps } from './ModuleSummary';
4
4
  export declare const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>>;
5
5
  //# sourceMappingURL=SentinelSummary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
1
+ {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { SentinelInstance } from '@xyo-network/sentinel';
2
+ import { SentinelInstance } from '@xyo-network/sentinel-model';
3
3
  import { ModuleSummaryProps } from './ModuleSummary';
4
4
  export declare const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>>;
5
5
  //# sourceMappingURL=SentinelSummary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
1
+ {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { SentinelInstance } from '@xyo-network/sentinel';
2
+ import { SentinelInstance } from '@xyo-network/sentinel-model';
3
3
  import { ModuleSummaryProps } from './ModuleSummary';
4
4
  export declare const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>>;
5
5
  //# sourceMappingURL=SentinelSummary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
1
+ {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
@@ -107,6 +107,8 @@ var import_material2 = require("@mui/material");
107
107
  var import_react_button2 = require("@xylabs/react-button");
108
108
  var import_react_flexbox2 = require("@xylabs/react-flexbox");
109
109
  var import_react_promise = require("@xylabs/react-promise");
110
+ var import_module_model = require("@xyo-network/module-model");
111
+ var import_payload_model = require("@xyo-network/payload-model");
110
112
  var import_react_property = require("@xyo-network/react-property");
111
113
 
112
114
  // src/components/JsonViewerButton.tsx
@@ -134,10 +136,11 @@ var ModuleDetails = ({ module: module2, ...props }) => {
134
136
  return await module2?.manifest();
135
137
  }, [module2]);
136
138
  const [discover] = (0, import_react_promise.usePromise)(async () => {
137
- return await module2?.discover();
139
+ return await module2?.state();
138
140
  }, [module2]);
139
141
  const [describe] = (0, import_react_promise.usePromise)(async () => {
140
- return await module2?.describe();
142
+ const state = await module2?.state();
143
+ return state?.find((0, import_payload_model.isPayloadOfSchemaType)(import_module_model.ModuleDescriptionSchema));
141
144
  }, [module2]);
142
145
  const queries = module2?.queries;
143
146
  const config = module2?.config;
@@ -165,7 +168,7 @@ var import_archivist_model = require("@xyo-network/archivist-model");
165
168
  var import_bridge_model = require("@xyo-network/bridge-model");
166
169
  var import_diviner_model = require("@xyo-network/diviner-model");
167
170
  var import_node_model = require("@xyo-network/node-model");
168
- var import_sentinel = require("@xyo-network/sentinel");
171
+ var import_sentinel_model = require("@xyo-network/sentinel-model");
169
172
  var import_witness_model = require("@xyo-network/witness-model");
170
173
 
171
174
  // src/components/DivinerSummary.tsx
@@ -224,7 +227,7 @@ var TypedModuleSummary = ({ module: module2, ...props }) => {
224
227
  if ((0, import_bridge_model.isBridgeInstance)(module2)) {
225
228
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(BridgeSummary, { module: module2, ...props });
226
229
  }
227
- if ((0, import_sentinel.isSentinelInstance)(module2)) {
230
+ if ((0, import_sentinel_model.isSentinelInstance)(module2)) {
228
231
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SentinelSummary, { module: module2, ...props });
229
232
  }
230
233
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ModuleSummary, { module: module2, ...props });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/components/ArchivistSummary.tsx","../../src/components/ModuleSummary.tsx","../../src/components/BridgeSummary.tsx","../../src/components/DebugDialog.tsx","../../src/components/NodeDetails.tsx","../../src/components/ModuleAccordion.tsx","../../src/components/ModuleDetails.tsx","../../src/components/JsonViewerButton.tsx","../../src/components/TypedModuleSummary.tsx","../../src/components/DivinerSummary.tsx","../../src/components/NodeSummary.tsx","../../src/components/SentinelSummary.tsx","../../src/components/WitnessSummary.tsx","../../src/components/PoweredByXyo.tsx","../../src/components/PoweredByXyoButton.tsx","../../src/img/index.ts","../../src/components/XyoBusy.tsx"],"sourcesContent":["export * from './components'\n","import { Inventory2Rounded as Inventory2RoundedIcon } from '@mui/icons-material'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const ArchivistSummary: React.FC<ModuleSummaryProps<ArchivistInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<Inventory2RoundedIcon />} {...props} />\n}\n","import { Extension as ExtensionIcon } from '@mui/icons-material'\nimport { delay } from '@xylabs/delay'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport { ReactNode, useState } from 'react'\n\nexport interface ModuleSummaryProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n icon?: ReactNode\n module?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, module, ...props }) => {\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n module?.on('moduleBusy', async ({ busy }) => {\n setBusy(busy)\n await delay(2000)\n setBusy(false)\n })\n\n return (\n <FlexCol alignItems=\"stretch\" width=\"100%\" {...props}>\n <FlexRow justifyContent=\"flex-start\">\n <FlexRow>\n <TypographyEx color={busy ? 'gray' : undefined}>{icon ?? <ExtensionIcon />}</TypographyEx>\n <TypographyEx marginX={1}>{module?.config?.name ?? '<Unknown>'}</TypographyEx>\n </FlexRow>\n {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined) ?\n `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </FlexRow>\n </FlexCol>\n )\n}\n","import { InsertLinkRounded as InsertLinkRoundedIcon } from '@mui/icons-material'\nimport { BridgeInstance } from '@xyo-network/bridge-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { NodeDetails } from './NodeDetails'\n\nexport interface DebugDialogProps extends DialogProps {}\n\nexport const DebugDialog: React.FC<DebugDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Xyo Module Viewer</DialogTitle>\n <DialogContent>\n <NodeDetails width=\"100%\" />\n </DialogContent>\n <DialogActions>\n <Button onClick={(event) => onClose?.(event, 'backdropClick')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode, useProvidedNode } from '@xyo-network/react-node'\n\nimport { ModuleAccordion } from './ModuleAccordion'\nimport { ModuleDetailsProps } from './ModuleDetails'\n\nexport interface NodeViewerProps extends ModuleDetailsProps<NodeInstance> {}\n\nexport const NodeDetails: React.FC<NodeViewerProps> = ({ module, ...props }) => {\n const [node = module] = useProvidedNode()\n\n const [children] = useModulesFromNode(undefined, { node: node ?? undefined })\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {children ?\n <>\n <FlexCol alignItems=\"stretch\" marginY={1}>\n {children?.map((child) => <ModuleAccordion key={child.address} module={child} />)}\n </FlexCol>\n </>\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n module?: T\n}\n\nimport { Accordion, AccordionDetails, AccordionProps, AccordionSummary } from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails'\nimport { TypedModuleSummary } from './TypedModuleSummary'\n\nexport const ModuleAccordion: React.FC<ModuleAccordionProps> = ({ module, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary module={module} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails module={module} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n module?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await module?.manifest()\n }, [module])\n\n const [discover] = usePromise(async () => {\n return await module?.discover()\n }, [module])\n\n const [describe] = usePromise(async () => {\n return await module?.describe()\n }, [module])\n\n const queries = module?.queries\n\n const config = module?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={module?.address} />\n\n <FlexRow gap={1} justifyContent=\"space-between\">\n <ButtonGroup>\n {manifest ?\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n : null}\n {config ?\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n : null}\n {discover ?\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n : null}\n {describe ?\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n : null}\n {queries ?\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n : null}\n </ButtonGroup>\n <ButtonGroup>\n <ButtonEx target=\"_blank\" href={`https://explore.xyo.network/block?network=main&address=${module?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${module?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${module?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ module, ...props }) => {\n if (isArchivistInstance(module)) {\n return <ArchivistSummary module={module} {...props} />\n }\n if (isDivinerInstance(module)) {\n return <DivinerSummary module={module} {...props} />\n }\n if (isNodeInstance(module)) {\n return <NodeSummary module={module} {...props} />\n }\n if (isWitnessInstance(module)) {\n return <WitnessSummary module={module} {...props} />\n }\n if (isBridgeInstance(module)) {\n return <BridgeSummary module={module} {...props} />\n }\n if (isSentinelInstance(module)) {\n return <SentinelSummary module={module} {...props} />\n }\n return <ModuleSummary module={module} {...props} />\n}\n","import { BubbleChartRounded as BubbleChartRoundedIcon } from '@mui/icons-material'\nimport { DivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const DivinerSummary: React.FC<ModuleSummaryProps<DivinerInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<BubbleChartRoundedIcon />} {...props} />\n}\n","import { HubRounded as HubRoundedIcon } from '@mui/icons-material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { NodeManifest } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await module?.manifest()) as NodeManifest\n }, [module])\n\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n const manifestPublicModules = manifest?.modules?.public?.length\n\n return (\n <ModuleSummary module={module} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<TimerRoundedIcon />} {...props} />\n}\n","import { VisibilityRounded as VisibilityRoundedIcon } from '@mui/icons-material'\nimport { WitnessInstance } from '@xyo-network/witness-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const WitnessSummary: React.FC<ModuleSummaryProps<WitnessInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<VisibilityRoundedIcon />} {...props} />\n}\n","import { Paper } from '@mui/material'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ButtonExProps } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { Module } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport { KeyboardEvent, useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog'\nimport { PoweredByXyoButton, PoweredByXyoButtonProps } from './PoweredByXyoButton'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: PoweredByXyoButtonProps\n debugDialog?: boolean\n disableAnimation?: boolean\n href?: ButtonExProps['href']\n logoHeight?: number\n logoTextSize?: number\n node?: NodeInstance\n onButtonClick?: ButtonExProps['onClick']\n}\n\nexport const PoweredByXyo: React.FC<PoweredByXyoProps> = ({\n autoStop,\n busy,\n buttonProps = {},\n debugDialog = false,\n disableAnimation = false,\n href = 'https://xyo.network',\n logoHeight,\n logoTextSize,\n onButtonClick,\n node: propNode,\n ...props\n}) => {\n const [node] = useProvidedNode()\n const [debugDialogOpen, setDebugDialogOpen] = useState(false)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const busyMap: Record<string, boolean> = useMemo(() => ({}), [node])\n\n const activeBusy = busy ?? Object.values(busyMap).includes(true)\n\n const activeOnButtonClick: PoweredByXyoProps['onButtonClick'] =\n (debugDialog ?\n (event) => {\n if (event.shiftKey && event.altKey) {\n setDebugDialogOpen(true)\n } else if (href) {\n window.open(href)\n }\n }\n : undefined) ?? onButtonClick\n\n const activeHref = activeOnButtonClick ? undefined : href\n\n const onKeyDownEscListener = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && debugDialogOpen) {\n setDebugDialogOpen(false)\n }\n }\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const activeNode = propNode ?? node\n if (disableAnimation) {\n return\n } else if (activeNode) {\n const mods = await activeNode?.resolve('*')\n mods?.map((mod) => {\n mod.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n }\n },\n [disableAnimation, propNode, node, busyMap, autoStop],\n )\n\n return (\n <FlexCol alignItems=\"stretch\" position=\"absolute\" bottom=\"0\" left=\"0\" {...props}>\n <Paper sx={{ borderRadius: 0 }}>\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n </Paper>\n {debugDialog ?\n <DebugDialog fullScreen open={debugDialogOpen} onClose={() => setDebugDialogOpen(false)} onKeyDown={onKeyDownEscListener} />\n : null}\n </FlexCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogoText } from '../img'\nimport { XyoBusy } from './XyoBusy'\n\nexport interface PoweredByXyoButtonProps extends ButtonExProps {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n href,\n logoHeight,\n logoTextSize,\n sx,\n target = '_blank',\n variant = 'text',\n ...props\n}) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogoText\n return imageLoaded ?\n <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>\n <FlexCol padding={0.5}>\n <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize=\"small\">\n Powered by\n </Typography>\n <FlexRow>\n <XyoBusy busy={busy} />\n <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />\n </FlexRow>\n </FlexCol>\n </ButtonEx>\n : null\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\nexport { default as xyoColorLogoText } from './xyo-color-logo-text-only.svg'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogo } from '../img'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({ widthInPixels, busy, spinsPerSecond = 0.5, ...props }) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n if (!imageLoaded) {\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogo\n }\n return imageLoaded ?\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': {\n transform: 'rotate(360deg)',\n },\n '100%': {\n transform: 'rotate(0deg)',\n },\n },\n animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,\n animationDirection: 'reverse',\n }}\n {...props}\n >\n <img src={xyoColorLogo} height={widthInPixels ?? 22} />\n </FlexCol>\n : null\n}\n"],"mappings":"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","names":["import_icons_material","module","busy","ExtensionIcon","import_jsx_runtime","module","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","module","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","module","import_icons_material","import_jsx_runtime","module","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","module","HubRoundedIcon","import_icons_material","import_jsx_runtime","module","TimerRoundedIcon","import_icons_material","import_jsx_runtime","module","VisibilityRoundedIcon","import_jsx_runtime","module","import_jsx_runtime","module","ExpandMoreIcon","import_jsx_runtime","module","import_jsx_runtime","import_material","import_delay","import_react_flexbox","import_react_node","import_react","import_material","import_react_button","import_react_flexbox","import_react","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","module","busy"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/components/ArchivistSummary.tsx","../../src/components/ModuleSummary.tsx","../../src/components/BridgeSummary.tsx","../../src/components/DebugDialog.tsx","../../src/components/NodeDetails.tsx","../../src/components/ModuleAccordion.tsx","../../src/components/ModuleDetails.tsx","../../src/components/JsonViewerButton.tsx","../../src/components/TypedModuleSummary.tsx","../../src/components/DivinerSummary.tsx","../../src/components/NodeSummary.tsx","../../src/components/SentinelSummary.tsx","../../src/components/WitnessSummary.tsx","../../src/components/PoweredByXyo.tsx","../../src/components/PoweredByXyoButton.tsx","../../src/img/index.ts","../../src/components/XyoBusy.tsx"],"sourcesContent":["export * from './components'\n","import { Inventory2Rounded as Inventory2RoundedIcon } from '@mui/icons-material'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const ArchivistSummary: React.FC<ModuleSummaryProps<ArchivistInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<Inventory2RoundedIcon />} {...props} />\n}\n","import { Extension as ExtensionIcon } from '@mui/icons-material'\nimport { delay } from '@xylabs/delay'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport { ReactNode, useState } from 'react'\n\nexport interface ModuleSummaryProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n icon?: ReactNode\n module?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, module, ...props }) => {\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n module?.on('moduleBusy', async ({ busy }) => {\n setBusy(busy)\n await delay(2000)\n setBusy(false)\n })\n\n return (\n <FlexCol alignItems=\"stretch\" width=\"100%\" {...props}>\n <FlexRow justifyContent=\"flex-start\">\n <FlexRow>\n <TypographyEx color={busy ? 'gray' : undefined}>{icon ?? <ExtensionIcon />}</TypographyEx>\n <TypographyEx marginX={1}>{module?.config?.name ?? '<Unknown>'}</TypographyEx>\n </FlexRow>\n {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined) ?\n `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </FlexRow>\n </FlexCol>\n )\n}\n","import { InsertLinkRounded as InsertLinkRoundedIcon } from '@mui/icons-material'\nimport { BridgeInstance } from '@xyo-network/bridge-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { NodeDetails } from './NodeDetails'\n\nexport interface DebugDialogProps extends DialogProps {}\n\nexport const DebugDialog: React.FC<DebugDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Xyo Module Viewer</DialogTitle>\n <DialogContent>\n <NodeDetails width=\"100%\" />\n </DialogContent>\n <DialogActions>\n <Button onClick={(event) => onClose?.(event, 'backdropClick')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode, useProvidedNode } from '@xyo-network/react-node'\n\nimport { ModuleAccordion } from './ModuleAccordion'\nimport { ModuleDetailsProps } from './ModuleDetails'\n\nexport interface NodeViewerProps extends ModuleDetailsProps<NodeInstance> {}\n\nexport const NodeDetails: React.FC<NodeViewerProps> = ({ module, ...props }) => {\n const [node = module] = useProvidedNode()\n\n const [children] = useModulesFromNode(undefined, { node: node ?? undefined })\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {children ?\n <>\n <FlexCol alignItems=\"stretch\" marginY={1}>\n {children?.map((child) => <ModuleAccordion key={child.address} module={child} />)}\n </FlexCol>\n </>\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n module?: T\n}\n\nimport { Accordion, AccordionDetails, AccordionProps, AccordionSummary } from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails'\nimport { TypedModuleSummary } from './TypedModuleSummary'\n\nexport const ModuleAccordion: React.FC<ModuleAccordionProps> = ({ module, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary module={module} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails module={module} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n module?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await module?.manifest()\n }, [module])\n\n const [discover] = usePromise(async () => {\n return await module?.state()\n }, [module])\n\n const [describe] = usePromise(async () => {\n const state = await module?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [module])\n\n const queries = module?.queries\n\n const config = module?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={module?.address} />\n\n <FlexRow gap={1} justifyContent=\"space-between\">\n <ButtonGroup>\n {manifest ?\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n : null}\n {config ?\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n : null}\n {discover ?\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n : null}\n {describe ?\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n : null}\n {queries ?\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n : null}\n </ButtonGroup>\n <ButtonGroup>\n <ButtonEx target=\"_blank\" href={`https://explore.xyo.network/block?network=main&address=${module?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${module?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${module?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ module, ...props }) => {\n if (isArchivistInstance(module)) {\n return <ArchivistSummary module={module} {...props} />\n }\n if (isDivinerInstance(module)) {\n return <DivinerSummary module={module} {...props} />\n }\n if (isNodeInstance(module)) {\n return <NodeSummary module={module} {...props} />\n }\n if (isWitnessInstance(module)) {\n return <WitnessSummary module={module} {...props} />\n }\n if (isBridgeInstance(module)) {\n return <BridgeSummary module={module} {...props} />\n }\n if (isSentinelInstance(module)) {\n return <SentinelSummary module={module} {...props} />\n }\n return <ModuleSummary module={module} {...props} />\n}\n","import { BubbleChartRounded as BubbleChartRoundedIcon } from '@mui/icons-material'\nimport { DivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const DivinerSummary: React.FC<ModuleSummaryProps<DivinerInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<BubbleChartRoundedIcon />} {...props} />\n}\n","import { HubRounded as HubRoundedIcon } from '@mui/icons-material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { NodeManifest } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await module?.manifest()) as NodeManifest\n }, [module])\n\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n const manifestPublicModules = manifest?.modules?.public?.length\n\n return (\n <ModuleSummary module={module} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<TimerRoundedIcon />} {...props} />\n}\n","import { VisibilityRounded as VisibilityRoundedIcon } from '@mui/icons-material'\nimport { WitnessInstance } from '@xyo-network/witness-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const WitnessSummary: React.FC<ModuleSummaryProps<WitnessInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<VisibilityRoundedIcon />} {...props} />\n}\n","import { Paper } from '@mui/material'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ButtonExProps } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { Module } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport { KeyboardEvent, useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog'\nimport { PoweredByXyoButton, PoweredByXyoButtonProps } from './PoweredByXyoButton'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: PoweredByXyoButtonProps\n debugDialog?: boolean\n disableAnimation?: boolean\n href?: ButtonExProps['href']\n logoHeight?: number\n logoTextSize?: number\n node?: NodeInstance\n onButtonClick?: ButtonExProps['onClick']\n}\n\nexport const PoweredByXyo: React.FC<PoweredByXyoProps> = ({\n autoStop,\n busy,\n buttonProps = {},\n debugDialog = false,\n disableAnimation = false,\n href = 'https://xyo.network',\n logoHeight,\n logoTextSize,\n onButtonClick,\n node: propNode,\n ...props\n}) => {\n const [node] = useProvidedNode()\n const [debugDialogOpen, setDebugDialogOpen] = useState(false)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const busyMap: Record<string, boolean> = useMemo(() => ({}), [node])\n\n const activeBusy = busy ?? Object.values(busyMap).includes(true)\n\n const activeOnButtonClick: PoweredByXyoProps['onButtonClick'] =\n (debugDialog ?\n (event) => {\n if (event.shiftKey && event.altKey) {\n setDebugDialogOpen(true)\n } else if (href) {\n window.open(href)\n }\n }\n : undefined) ?? onButtonClick\n\n const activeHref = activeOnButtonClick ? undefined : href\n\n const onKeyDownEscListener = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && debugDialogOpen) {\n setDebugDialogOpen(false)\n }\n }\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const activeNode = propNode ?? node\n if (disableAnimation) {\n return\n } else if (activeNode) {\n const mods = await activeNode?.resolve('*')\n mods?.map((mod) => {\n mod.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n }\n },\n [disableAnimation, propNode, node, busyMap, autoStop],\n )\n\n return (\n <FlexCol alignItems=\"stretch\" position=\"absolute\" bottom=\"0\" left=\"0\" {...props}>\n <Paper sx={{ borderRadius: 0 }}>\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n </Paper>\n {debugDialog ?\n <DebugDialog fullScreen open={debugDialogOpen} onClose={() => setDebugDialogOpen(false)} onKeyDown={onKeyDownEscListener} />\n : null}\n </FlexCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogoText } from '../img'\nimport { XyoBusy } from './XyoBusy'\n\nexport interface PoweredByXyoButtonProps extends ButtonExProps {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n href,\n logoHeight,\n logoTextSize,\n sx,\n target = '_blank',\n variant = 'text',\n ...props\n}) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogoText\n return imageLoaded ?\n <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>\n <FlexCol padding={0.5}>\n <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize=\"small\">\n Powered by\n </Typography>\n <FlexRow>\n <XyoBusy busy={busy} />\n <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />\n </FlexRow>\n </FlexCol>\n </ButtonEx>\n : null\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\nexport { default as xyoColorLogoText } from './xyo-color-logo-text-only.svg'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogo } from '../img'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({ widthInPixels, busy, spinsPerSecond = 0.5, ...props }) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n if (!imageLoaded) {\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogo\n }\n return imageLoaded ?\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': {\n transform: 'rotate(360deg)',\n },\n '100%': {\n transform: 'rotate(0deg)',\n },\n },\n animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,\n animationDirection: 'reverse',\n }}\n {...props}\n >\n <img src={xyoColorLogo} height={widthInPixels ?? 22} />\n </FlexCol>\n : null\n}\n"],"mappings":"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","names":["import_icons_material","module","busy","ExtensionIcon","import_jsx_runtime","module","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","module","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","module","import_icons_material","import_jsx_runtime","module","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","module","HubRoundedIcon","import_icons_material","import_jsx_runtime","module","TimerRoundedIcon","import_icons_material","import_jsx_runtime","module","VisibilityRoundedIcon","import_jsx_runtime","module","import_jsx_runtime","module","ExpandMoreIcon","import_jsx_runtime","module","import_jsx_runtime","import_material","import_delay","import_react_flexbox","import_react_node","import_react","import_material","import_react_button","import_react_flexbox","import_react","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","module","busy"]}
@@ -58,6 +58,8 @@ import { ButtonGroup } from "@mui/material";
58
58
  import { ButtonEx as ButtonEx2 } from "@xylabs/react-button";
59
59
  import { FlexCol as FlexCol2, FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
60
60
  import { usePromise } from "@xylabs/react-promise";
61
+ import { ModuleDescriptionSchema } from "@xyo-network/module-model";
62
+ import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
61
63
  import { Property } from "@xyo-network/react-property";
62
64
 
63
65
  // src/components/JsonViewerButton.tsx
@@ -85,10 +87,11 @@ var ModuleDetails = ({ module, ...props }) => {
85
87
  return await module?.manifest();
86
88
  }, [module]);
87
89
  const [discover] = usePromise(async () => {
88
- return await module?.discover();
90
+ return await module?.state();
89
91
  }, [module]);
90
92
  const [describe] = usePromise(async () => {
91
- return await module?.describe();
93
+ const state = await module?.state();
94
+ return state?.find(isPayloadOfSchemaType(ModuleDescriptionSchema));
92
95
  }, [module]);
93
96
  const queries = module?.queries;
94
97
  const config = module?.config;
@@ -116,7 +119,7 @@ import { isArchivistInstance } from "@xyo-network/archivist-model";
116
119
  import { isBridgeInstance } from "@xyo-network/bridge-model";
117
120
  import { isDivinerInstance } from "@xyo-network/diviner-model";
118
121
  import { isNodeInstance } from "@xyo-network/node-model";
119
- import { isSentinelInstance } from "@xyo-network/sentinel";
122
+ import { isSentinelInstance } from "@xyo-network/sentinel-model";
120
123
  import { isWitnessInstance } from "@xyo-network/witness-model";
121
124
 
122
125
  // src/components/DivinerSummary.tsx
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/ArchivistSummary.tsx","../../src/components/ModuleSummary.tsx","../../src/components/BridgeSummary.tsx","../../src/components/DebugDialog.tsx","../../src/components/NodeDetails.tsx","../../src/components/ModuleAccordion.tsx","../../src/components/ModuleDetails.tsx","../../src/components/JsonViewerButton.tsx","../../src/components/TypedModuleSummary.tsx","../../src/components/DivinerSummary.tsx","../../src/components/NodeSummary.tsx","../../src/components/SentinelSummary.tsx","../../src/components/WitnessSummary.tsx","../../src/components/PoweredByXyo.tsx","../../src/components/PoweredByXyoButton.tsx","../../src/img/index.ts","../../src/components/XyoBusy.tsx"],"sourcesContent":["import { Inventory2Rounded as Inventory2RoundedIcon } from '@mui/icons-material'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const ArchivistSummary: React.FC<ModuleSummaryProps<ArchivistInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<Inventory2RoundedIcon />} {...props} />\n}\n","import { Extension as ExtensionIcon } from '@mui/icons-material'\nimport { delay } from '@xylabs/delay'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport { ReactNode, useState } from 'react'\n\nexport interface ModuleSummaryProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n icon?: ReactNode\n module?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, module, ...props }) => {\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n module?.on('moduleBusy', async ({ busy }) => {\n setBusy(busy)\n await delay(2000)\n setBusy(false)\n })\n\n return (\n <FlexCol alignItems=\"stretch\" width=\"100%\" {...props}>\n <FlexRow justifyContent=\"flex-start\">\n <FlexRow>\n <TypographyEx color={busy ? 'gray' : undefined}>{icon ?? <ExtensionIcon />}</TypographyEx>\n <TypographyEx marginX={1}>{module?.config?.name ?? '<Unknown>'}</TypographyEx>\n </FlexRow>\n {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined) ?\n `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </FlexRow>\n </FlexCol>\n )\n}\n","import { InsertLinkRounded as InsertLinkRoundedIcon } from '@mui/icons-material'\nimport { BridgeInstance } from '@xyo-network/bridge-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { NodeDetails } from './NodeDetails'\n\nexport interface DebugDialogProps extends DialogProps {}\n\nexport const DebugDialog: React.FC<DebugDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Xyo Module Viewer</DialogTitle>\n <DialogContent>\n <NodeDetails width=\"100%\" />\n </DialogContent>\n <DialogActions>\n <Button onClick={(event) => onClose?.(event, 'backdropClick')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode, useProvidedNode } from '@xyo-network/react-node'\n\nimport { ModuleAccordion } from './ModuleAccordion'\nimport { ModuleDetailsProps } from './ModuleDetails'\n\nexport interface NodeViewerProps extends ModuleDetailsProps<NodeInstance> {}\n\nexport const NodeDetails: React.FC<NodeViewerProps> = ({ module, ...props }) => {\n const [node = module] = useProvidedNode()\n\n const [children] = useModulesFromNode(undefined, { node: node ?? undefined })\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {children ?\n <>\n <FlexCol alignItems=\"stretch\" marginY={1}>\n {children?.map((child) => <ModuleAccordion key={child.address} module={child} />)}\n </FlexCol>\n </>\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n module?: T\n}\n\nimport { Accordion, AccordionDetails, AccordionProps, AccordionSummary } from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails'\nimport { TypedModuleSummary } from './TypedModuleSummary'\n\nexport const ModuleAccordion: React.FC<ModuleAccordionProps> = ({ module, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary module={module} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails module={module} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n module?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await module?.manifest()\n }, [module])\n\n const [discover] = usePromise(async () => {\n return await module?.discover()\n }, [module])\n\n const [describe] = usePromise(async () => {\n return await module?.describe()\n }, [module])\n\n const queries = module?.queries\n\n const config = module?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={module?.address} />\n\n <FlexRow gap={1} justifyContent=\"space-between\">\n <ButtonGroup>\n {manifest ?\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n : null}\n {config ?\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n : null}\n {discover ?\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n : null}\n {describe ?\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n : null}\n {queries ?\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n : null}\n </ButtonGroup>\n <ButtonGroup>\n <ButtonEx target=\"_blank\" href={`https://explore.xyo.network/block?network=main&address=${module?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${module?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${module?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ module, ...props }) => {\n if (isArchivistInstance(module)) {\n return <ArchivistSummary module={module} {...props} />\n }\n if (isDivinerInstance(module)) {\n return <DivinerSummary module={module} {...props} />\n }\n if (isNodeInstance(module)) {\n return <NodeSummary module={module} {...props} />\n }\n if (isWitnessInstance(module)) {\n return <WitnessSummary module={module} {...props} />\n }\n if (isBridgeInstance(module)) {\n return <BridgeSummary module={module} {...props} />\n }\n if (isSentinelInstance(module)) {\n return <SentinelSummary module={module} {...props} />\n }\n return <ModuleSummary module={module} {...props} />\n}\n","import { BubbleChartRounded as BubbleChartRoundedIcon } from '@mui/icons-material'\nimport { DivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const DivinerSummary: React.FC<ModuleSummaryProps<DivinerInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<BubbleChartRoundedIcon />} {...props} />\n}\n","import { HubRounded as HubRoundedIcon } from '@mui/icons-material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { NodeManifest } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await module?.manifest()) as NodeManifest\n }, [module])\n\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n const manifestPublicModules = manifest?.modules?.public?.length\n\n return (\n <ModuleSummary module={module} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<TimerRoundedIcon />} {...props} />\n}\n","import { VisibilityRounded as VisibilityRoundedIcon } from '@mui/icons-material'\nimport { WitnessInstance } from '@xyo-network/witness-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const WitnessSummary: React.FC<ModuleSummaryProps<WitnessInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<VisibilityRoundedIcon />} {...props} />\n}\n","import { Paper } from '@mui/material'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ButtonExProps } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { Module } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport { KeyboardEvent, useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog'\nimport { PoweredByXyoButton, PoweredByXyoButtonProps } from './PoweredByXyoButton'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: PoweredByXyoButtonProps\n debugDialog?: boolean\n disableAnimation?: boolean\n href?: ButtonExProps['href']\n logoHeight?: number\n logoTextSize?: number\n node?: NodeInstance\n onButtonClick?: ButtonExProps['onClick']\n}\n\nexport const PoweredByXyo: React.FC<PoweredByXyoProps> = ({\n autoStop,\n busy,\n buttonProps = {},\n debugDialog = false,\n disableAnimation = false,\n href = 'https://xyo.network',\n logoHeight,\n logoTextSize,\n onButtonClick,\n node: propNode,\n ...props\n}) => {\n const [node] = useProvidedNode()\n const [debugDialogOpen, setDebugDialogOpen] = useState(false)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const busyMap: Record<string, boolean> = useMemo(() => ({}), [node])\n\n const activeBusy = busy ?? Object.values(busyMap).includes(true)\n\n const activeOnButtonClick: PoweredByXyoProps['onButtonClick'] =\n (debugDialog ?\n (event) => {\n if (event.shiftKey && event.altKey) {\n setDebugDialogOpen(true)\n } else if (href) {\n window.open(href)\n }\n }\n : undefined) ?? onButtonClick\n\n const activeHref = activeOnButtonClick ? undefined : href\n\n const onKeyDownEscListener = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && debugDialogOpen) {\n setDebugDialogOpen(false)\n }\n }\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const activeNode = propNode ?? node\n if (disableAnimation) {\n return\n } else if (activeNode) {\n const mods = await activeNode?.resolve('*')\n mods?.map((mod) => {\n mod.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n }\n },\n [disableAnimation, propNode, node, busyMap, autoStop],\n )\n\n return (\n <FlexCol alignItems=\"stretch\" position=\"absolute\" bottom=\"0\" left=\"0\" {...props}>\n <Paper sx={{ borderRadius: 0 }}>\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n </Paper>\n {debugDialog ?\n <DebugDialog fullScreen open={debugDialogOpen} onClose={() => setDebugDialogOpen(false)} onKeyDown={onKeyDownEscListener} />\n : null}\n </FlexCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogoText } from '../img'\nimport { XyoBusy } from './XyoBusy'\n\nexport interface PoweredByXyoButtonProps extends ButtonExProps {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n href,\n logoHeight,\n logoTextSize,\n sx,\n target = '_blank',\n variant = 'text',\n ...props\n}) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogoText\n return imageLoaded ?\n <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>\n <FlexCol padding={0.5}>\n <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize=\"small\">\n Powered by\n </Typography>\n <FlexRow>\n <XyoBusy busy={busy} />\n <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />\n </FlexRow>\n </FlexCol>\n </ButtonEx>\n : null\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\nexport { default as xyoColorLogoText } from './xyo-color-logo-text-only.svg'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogo } from '../img'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({ widthInPixels, busy, spinsPerSecond = 0.5, ...props }) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n if (!imageLoaded) {\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogo\n }\n return imageLoaded ?\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': {\n transform: 'rotate(360deg)',\n },\n '100%': {\n transform: 'rotate(0deg)',\n },\n },\n animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,\n animationDirection: 'reverse',\n }}\n {...props}\n >\n <img src={xyoColorLogo} height={widthInPixels ?? 22} />\n </FlexCol>\n : null\n}\n"],"mappings":"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","names":["busy","jsx","jsx","Dialog","DialogActions","DialogContent","DialogTitle","FlexCol","useModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useModulesFromNode","jsx","usePromise","useModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useModulesFromNode","FlexCol","jsx","jsxs","Dialog","DialogTitle","DialogContent","DialogActions","delay","FlexCol","useProvidedNode","useState","ButtonEx","FlexCol","FlexRow","useState","default","FlexCol","useState","jsx","useState","default","FlexCol","jsx","jsxs","useState","default","ButtonEx","FlexCol","FlexRow","jsx","jsxs","useProvidedNode","useState","busy","delay","FlexCol"]}
1
+ {"version":3,"sources":["../../src/components/ArchivistSummary.tsx","../../src/components/ModuleSummary.tsx","../../src/components/BridgeSummary.tsx","../../src/components/DebugDialog.tsx","../../src/components/NodeDetails.tsx","../../src/components/ModuleAccordion.tsx","../../src/components/ModuleDetails.tsx","../../src/components/JsonViewerButton.tsx","../../src/components/TypedModuleSummary.tsx","../../src/components/DivinerSummary.tsx","../../src/components/NodeSummary.tsx","../../src/components/SentinelSummary.tsx","../../src/components/WitnessSummary.tsx","../../src/components/PoweredByXyo.tsx","../../src/components/PoweredByXyoButton.tsx","../../src/img/index.ts","../../src/components/XyoBusy.tsx"],"sourcesContent":["import { Inventory2Rounded as Inventory2RoundedIcon } from '@mui/icons-material'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const ArchivistSummary: React.FC<ModuleSummaryProps<ArchivistInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<Inventory2RoundedIcon />} {...props} />\n}\n","import { Extension as ExtensionIcon } from '@mui/icons-material'\nimport { delay } from '@xylabs/delay'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport { ReactNode, useState } from 'react'\n\nexport interface ModuleSummaryProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n icon?: ReactNode\n module?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, module, ...props }) => {\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n module?.on('moduleBusy', async ({ busy }) => {\n setBusy(busy)\n await delay(2000)\n setBusy(false)\n })\n\n return (\n <FlexCol alignItems=\"stretch\" width=\"100%\" {...props}>\n <FlexRow justifyContent=\"flex-start\">\n <FlexRow>\n <TypographyEx color={busy ? 'gray' : undefined}>{icon ?? <ExtensionIcon />}</TypographyEx>\n <TypographyEx marginX={1}>{module?.config?.name ?? '<Unknown>'}</TypographyEx>\n </FlexRow>\n {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined) ?\n `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </FlexRow>\n </FlexCol>\n )\n}\n","import { InsertLinkRounded as InsertLinkRoundedIcon } from '@mui/icons-material'\nimport { BridgeInstance } from '@xyo-network/bridge-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { NodeDetails } from './NodeDetails'\n\nexport interface DebugDialogProps extends DialogProps {}\n\nexport const DebugDialog: React.FC<DebugDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Xyo Module Viewer</DialogTitle>\n <DialogContent>\n <NodeDetails width=\"100%\" />\n </DialogContent>\n <DialogActions>\n <Button onClick={(event) => onClose?.(event, 'backdropClick')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode, useProvidedNode } from '@xyo-network/react-node'\n\nimport { ModuleAccordion } from './ModuleAccordion'\nimport { ModuleDetailsProps } from './ModuleDetails'\n\nexport interface NodeViewerProps extends ModuleDetailsProps<NodeInstance> {}\n\nexport const NodeDetails: React.FC<NodeViewerProps> = ({ module, ...props }) => {\n const [node = module] = useProvidedNode()\n\n const [children] = useModulesFromNode(undefined, { node: node ?? undefined })\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {children ?\n <>\n <FlexCol alignItems=\"stretch\" marginY={1}>\n {children?.map((child) => <ModuleAccordion key={child.address} module={child} />)}\n </FlexCol>\n </>\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n module?: T\n}\n\nimport { Accordion, AccordionDetails, AccordionProps, AccordionSummary } from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails'\nimport { TypedModuleSummary } from './TypedModuleSummary'\n\nexport const ModuleAccordion: React.FC<ModuleAccordionProps> = ({ module, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary module={module} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails module={module} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n module?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await module?.manifest()\n }, [module])\n\n const [discover] = usePromise(async () => {\n return await module?.state()\n }, [module])\n\n const [describe] = usePromise(async () => {\n const state = await module?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [module])\n\n const queries = module?.queries\n\n const config = module?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={module?.address} />\n\n <FlexRow gap={1} justifyContent=\"space-between\">\n <ButtonGroup>\n {manifest ?\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n : null}\n {config ?\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n : null}\n {discover ?\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n : null}\n {describe ?\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n : null}\n {queries ?\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n : null}\n </ButtonGroup>\n <ButtonGroup>\n <ButtonEx target=\"_blank\" href={`https://explore.xyo.network/block?network=main&address=${module?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${module?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${module?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ module, ...props }) => {\n if (isArchivistInstance(module)) {\n return <ArchivistSummary module={module} {...props} />\n }\n if (isDivinerInstance(module)) {\n return <DivinerSummary module={module} {...props} />\n }\n if (isNodeInstance(module)) {\n return <NodeSummary module={module} {...props} />\n }\n if (isWitnessInstance(module)) {\n return <WitnessSummary module={module} {...props} />\n }\n if (isBridgeInstance(module)) {\n return <BridgeSummary module={module} {...props} />\n }\n if (isSentinelInstance(module)) {\n return <SentinelSummary module={module} {...props} />\n }\n return <ModuleSummary module={module} {...props} />\n}\n","import { BubbleChartRounded as BubbleChartRoundedIcon } from '@mui/icons-material'\nimport { DivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const DivinerSummary: React.FC<ModuleSummaryProps<DivinerInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<BubbleChartRoundedIcon />} {...props} />\n}\n","import { HubRounded as HubRoundedIcon } from '@mui/icons-material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { NodeManifest } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await module?.manifest()) as NodeManifest\n }, [module])\n\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n const manifestPublicModules = manifest?.modules?.public?.length\n\n return (\n <ModuleSummary module={module} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<TimerRoundedIcon />} {...props} />\n}\n","import { VisibilityRounded as VisibilityRoundedIcon } from '@mui/icons-material'\nimport { WitnessInstance } from '@xyo-network/witness-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const WitnessSummary: React.FC<ModuleSummaryProps<WitnessInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<VisibilityRoundedIcon />} {...props} />\n}\n","import { Paper } from '@mui/material'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ButtonExProps } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { Module } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport { KeyboardEvent, useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog'\nimport { PoweredByXyoButton, PoweredByXyoButtonProps } from './PoweredByXyoButton'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: PoweredByXyoButtonProps\n debugDialog?: boolean\n disableAnimation?: boolean\n href?: ButtonExProps['href']\n logoHeight?: number\n logoTextSize?: number\n node?: NodeInstance\n onButtonClick?: ButtonExProps['onClick']\n}\n\nexport const PoweredByXyo: React.FC<PoweredByXyoProps> = ({\n autoStop,\n busy,\n buttonProps = {},\n debugDialog = false,\n disableAnimation = false,\n href = 'https://xyo.network',\n logoHeight,\n logoTextSize,\n onButtonClick,\n node: propNode,\n ...props\n}) => {\n const [node] = useProvidedNode()\n const [debugDialogOpen, setDebugDialogOpen] = useState(false)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const busyMap: Record<string, boolean> = useMemo(() => ({}), [node])\n\n const activeBusy = busy ?? Object.values(busyMap).includes(true)\n\n const activeOnButtonClick: PoweredByXyoProps['onButtonClick'] =\n (debugDialog ?\n (event) => {\n if (event.shiftKey && event.altKey) {\n setDebugDialogOpen(true)\n } else if (href) {\n window.open(href)\n }\n }\n : undefined) ?? onButtonClick\n\n const activeHref = activeOnButtonClick ? undefined : href\n\n const onKeyDownEscListener = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && debugDialogOpen) {\n setDebugDialogOpen(false)\n }\n }\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const activeNode = propNode ?? node\n if (disableAnimation) {\n return\n } else if (activeNode) {\n const mods = await activeNode?.resolve('*')\n mods?.map((mod) => {\n mod.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n }\n },\n [disableAnimation, propNode, node, busyMap, autoStop],\n )\n\n return (\n <FlexCol alignItems=\"stretch\" position=\"absolute\" bottom=\"0\" left=\"0\" {...props}>\n <Paper sx={{ borderRadius: 0 }}>\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n </Paper>\n {debugDialog ?\n <DebugDialog fullScreen open={debugDialogOpen} onClose={() => setDebugDialogOpen(false)} onKeyDown={onKeyDownEscListener} />\n : null}\n </FlexCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogoText } from '../img'\nimport { XyoBusy } from './XyoBusy'\n\nexport interface PoweredByXyoButtonProps extends ButtonExProps {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n href,\n logoHeight,\n logoTextSize,\n sx,\n target = '_blank',\n variant = 'text',\n ...props\n}) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogoText\n return imageLoaded ?\n <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>\n <FlexCol padding={0.5}>\n <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize=\"small\">\n Powered by\n </Typography>\n <FlexRow>\n <XyoBusy busy={busy} />\n <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />\n </FlexRow>\n </FlexCol>\n </ButtonEx>\n : null\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\nexport { default as xyoColorLogoText } from './xyo-color-logo-text-only.svg'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogo } from '../img'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({ widthInPixels, busy, spinsPerSecond = 0.5, ...props }) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n if (!imageLoaded) {\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogo\n }\n return imageLoaded ?\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': {\n transform: 'rotate(360deg)',\n },\n '100%': {\n transform: 'rotate(0deg)',\n },\n },\n animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,\n animationDirection: 'reverse',\n }}\n {...props}\n >\n <img src={xyoColorLogo} height={widthInPixels ?? 22} />\n </FlexCol>\n : null\n}\n"],"mappings":"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","names":["busy","jsx","jsx","Dialog","DialogActions","DialogContent","DialogTitle","FlexCol","useModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useModulesFromNode","jsx","usePromise","useModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useModulesFromNode","FlexCol","jsx","jsxs","Dialog","DialogTitle","DialogContent","DialogActions","delay","FlexCol","useProvidedNode","useState","ButtonEx","FlexCol","FlexRow","useState","default","FlexCol","useState","jsx","useState","default","FlexCol","jsx","jsxs","useState","default","ButtonEx","FlexCol","FlexRow","jsx","jsxs","useProvidedNode","useState","busy","delay","FlexCol"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+DtD,CAAA"}
1
+ {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAqD,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM7G,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgEtD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+DtD,CAAA"}
1
+ {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAqD,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM7G,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgEtD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAK1D,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA+DtD,CAAA"}
1
+ {"version":3,"file":"ModuleDetails.d.ts","sourceRoot":"","sources":["../../../src/components/ModuleDetails.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAoB,MAAM,uBAAuB,CAAA;AAEtE,OAAO,EAAqD,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM7G,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,YAAY;IACjG,MAAM,CAAC,EAAE,CAAC,CAAA;CACX;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgEtD,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { SentinelInstance } from '@xyo-network/sentinel';
2
+ import { SentinelInstance } from '@xyo-network/sentinel-model';
3
3
  import { ModuleSummaryProps } from './ModuleSummary';
4
4
  export declare const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>>;
5
5
  //# sourceMappingURL=SentinelSummary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
1
+ {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { SentinelInstance } from '@xyo-network/sentinel';
2
+ import { SentinelInstance } from '@xyo-network/sentinel-model';
3
3
  import { ModuleSummaryProps } from './ModuleSummary';
4
4
  export declare const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>>;
5
5
  //# sourceMappingURL=SentinelSummary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
1
+ {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { SentinelInstance } from '@xyo-network/sentinel';
2
+ import { SentinelInstance } from '@xyo-network/sentinel-model';
3
3
  import { ModuleSummaryProps } from './ModuleSummary';
4
4
  export declare const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>>;
5
5
  //# sourceMappingURL=SentinelSummary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
1
+ {"version":3,"file":"SentinelSummary.d.ts","sourceRoot":"","sources":["../../../src/components/SentinelSummary.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAE9D,OAAO,EAAiB,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEnE,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAE1E,CAAA"}
@@ -108,6 +108,8 @@ var import_material2 = require("@mui/material");
108
108
  var import_react_button2 = require("@xylabs/react-button");
109
109
  var import_react_flexbox2 = require("@xylabs/react-flexbox");
110
110
  var import_react_promise = require("@xylabs/react-promise");
111
+ var import_module_model = require("@xyo-network/module-model");
112
+ var import_payload_model = require("@xyo-network/payload-model");
111
113
  var import_react_property = require("@xyo-network/react-property");
112
114
 
113
115
  // src/components/JsonViewerButton.tsx
@@ -135,10 +137,11 @@ var ModuleDetails = ({ module: module2, ...props }) => {
135
137
  return await (module2 == null ? void 0 : module2.manifest());
136
138
  }, [module2]);
137
139
  const [discover] = (0, import_react_promise.usePromise)(async () => {
138
- return await (module2 == null ? void 0 : module2.discover());
140
+ return await (module2 == null ? void 0 : module2.state());
139
141
  }, [module2]);
140
142
  const [describe] = (0, import_react_promise.usePromise)(async () => {
141
- return await (module2 == null ? void 0 : module2.describe());
143
+ const state = await (module2 == null ? void 0 : module2.state());
144
+ return state == null ? void 0 : state.find((0, import_payload_model.isPayloadOfSchemaType)(import_module_model.ModuleDescriptionSchema));
142
145
  }, [module2]);
143
146
  const queries = module2 == null ? void 0 : module2.queries;
144
147
  const config = module2 == null ? void 0 : module2.config;
@@ -166,7 +169,7 @@ var import_archivist_model = require("@xyo-network/archivist-model");
166
169
  var import_bridge_model = require("@xyo-network/bridge-model");
167
170
  var import_diviner_model = require("@xyo-network/diviner-model");
168
171
  var import_node_model = require("@xyo-network/node-model");
169
- var import_sentinel = require("@xyo-network/sentinel");
172
+ var import_sentinel_model = require("@xyo-network/sentinel-model");
170
173
  var import_witness_model = require("@xyo-network/witness-model");
171
174
 
172
175
  // src/components/DivinerSummary.tsx
@@ -226,7 +229,7 @@ var TypedModuleSummary = ({ module: module2, ...props }) => {
226
229
  if ((0, import_bridge_model.isBridgeInstance)(module2)) {
227
230
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(BridgeSummary, { module: module2, ...props });
228
231
  }
229
- if ((0, import_sentinel.isSentinelInstance)(module2)) {
232
+ if ((0, import_sentinel_model.isSentinelInstance)(module2)) {
230
233
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SentinelSummary, { module: module2, ...props });
231
234
  }
232
235
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(ModuleSummary, { module: module2, ...props });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/components/ArchivistSummary.tsx","../../src/components/ModuleSummary.tsx","../../src/components/BridgeSummary.tsx","../../src/components/DebugDialog.tsx","../../src/components/NodeDetails.tsx","../../src/components/ModuleAccordion.tsx","../../src/components/ModuleDetails.tsx","../../src/components/JsonViewerButton.tsx","../../src/components/TypedModuleSummary.tsx","../../src/components/DivinerSummary.tsx","../../src/components/NodeSummary.tsx","../../src/components/SentinelSummary.tsx","../../src/components/WitnessSummary.tsx","../../src/components/PoweredByXyo.tsx","../../src/components/PoweredByXyoButton.tsx","../../src/img/index.ts","../../src/components/XyoBusy.tsx"],"sourcesContent":["export * from './components'\n","import { Inventory2Rounded as Inventory2RoundedIcon } from '@mui/icons-material'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const ArchivistSummary: React.FC<ModuleSummaryProps<ArchivistInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<Inventory2RoundedIcon />} {...props} />\n}\n","import { Extension as ExtensionIcon } from '@mui/icons-material'\nimport { delay } from '@xylabs/delay'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport { ReactNode, useState } from 'react'\n\nexport interface ModuleSummaryProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n icon?: ReactNode\n module?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, module, ...props }) => {\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n module?.on('moduleBusy', async ({ busy }) => {\n setBusy(busy)\n await delay(2000)\n setBusy(false)\n })\n\n return (\n <FlexCol alignItems=\"stretch\" width=\"100%\" {...props}>\n <FlexRow justifyContent=\"flex-start\">\n <FlexRow>\n <TypographyEx color={busy ? 'gray' : undefined}>{icon ?? <ExtensionIcon />}</TypographyEx>\n <TypographyEx marginX={1}>{module?.config?.name ?? '<Unknown>'}</TypographyEx>\n </FlexRow>\n {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined) ?\n `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </FlexRow>\n </FlexCol>\n )\n}\n","import { InsertLinkRounded as InsertLinkRoundedIcon } from '@mui/icons-material'\nimport { BridgeInstance } from '@xyo-network/bridge-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { NodeDetails } from './NodeDetails'\n\nexport interface DebugDialogProps extends DialogProps {}\n\nexport const DebugDialog: React.FC<DebugDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Xyo Module Viewer</DialogTitle>\n <DialogContent>\n <NodeDetails width=\"100%\" />\n </DialogContent>\n <DialogActions>\n <Button onClick={(event) => onClose?.(event, 'backdropClick')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode, useProvidedNode } from '@xyo-network/react-node'\n\nimport { ModuleAccordion } from './ModuleAccordion'\nimport { ModuleDetailsProps } from './ModuleDetails'\n\nexport interface NodeViewerProps extends ModuleDetailsProps<NodeInstance> {}\n\nexport const NodeDetails: React.FC<NodeViewerProps> = ({ module, ...props }) => {\n const [node = module] = useProvidedNode()\n\n const [children] = useModulesFromNode(undefined, { node: node ?? undefined })\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {children ?\n <>\n <FlexCol alignItems=\"stretch\" marginY={1}>\n {children?.map((child) => <ModuleAccordion key={child.address} module={child} />)}\n </FlexCol>\n </>\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n module?: T\n}\n\nimport { Accordion, AccordionDetails, AccordionProps, AccordionSummary } from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails'\nimport { TypedModuleSummary } from './TypedModuleSummary'\n\nexport const ModuleAccordion: React.FC<ModuleAccordionProps> = ({ module, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary module={module} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails module={module} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n module?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await module?.manifest()\n }, [module])\n\n const [discover] = usePromise(async () => {\n return await module?.discover()\n }, [module])\n\n const [describe] = usePromise(async () => {\n return await module?.describe()\n }, [module])\n\n const queries = module?.queries\n\n const config = module?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={module?.address} />\n\n <FlexRow gap={1} justifyContent=\"space-between\">\n <ButtonGroup>\n {manifest ?\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n : null}\n {config ?\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n : null}\n {discover ?\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n : null}\n {describe ?\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n : null}\n {queries ?\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n : null}\n </ButtonGroup>\n <ButtonGroup>\n <ButtonEx target=\"_blank\" href={`https://explore.xyo.network/block?network=main&address=${module?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${module?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${module?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ module, ...props }) => {\n if (isArchivistInstance(module)) {\n return <ArchivistSummary module={module} {...props} />\n }\n if (isDivinerInstance(module)) {\n return <DivinerSummary module={module} {...props} />\n }\n if (isNodeInstance(module)) {\n return <NodeSummary module={module} {...props} />\n }\n if (isWitnessInstance(module)) {\n return <WitnessSummary module={module} {...props} />\n }\n if (isBridgeInstance(module)) {\n return <BridgeSummary module={module} {...props} />\n }\n if (isSentinelInstance(module)) {\n return <SentinelSummary module={module} {...props} />\n }\n return <ModuleSummary module={module} {...props} />\n}\n","import { BubbleChartRounded as BubbleChartRoundedIcon } from '@mui/icons-material'\nimport { DivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const DivinerSummary: React.FC<ModuleSummaryProps<DivinerInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<BubbleChartRoundedIcon />} {...props} />\n}\n","import { HubRounded as HubRoundedIcon } from '@mui/icons-material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { NodeManifest } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await module?.manifest()) as NodeManifest\n }, [module])\n\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n const manifestPublicModules = manifest?.modules?.public?.length\n\n return (\n <ModuleSummary module={module} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<TimerRoundedIcon />} {...props} />\n}\n","import { VisibilityRounded as VisibilityRoundedIcon } from '@mui/icons-material'\nimport { WitnessInstance } from '@xyo-network/witness-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const WitnessSummary: React.FC<ModuleSummaryProps<WitnessInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<VisibilityRoundedIcon />} {...props} />\n}\n","import { Paper } from '@mui/material'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ButtonExProps } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { Module } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport { KeyboardEvent, useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog'\nimport { PoweredByXyoButton, PoweredByXyoButtonProps } from './PoweredByXyoButton'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: PoweredByXyoButtonProps\n debugDialog?: boolean\n disableAnimation?: boolean\n href?: ButtonExProps['href']\n logoHeight?: number\n logoTextSize?: number\n node?: NodeInstance\n onButtonClick?: ButtonExProps['onClick']\n}\n\nexport const PoweredByXyo: React.FC<PoweredByXyoProps> = ({\n autoStop,\n busy,\n buttonProps = {},\n debugDialog = false,\n disableAnimation = false,\n href = 'https://xyo.network',\n logoHeight,\n logoTextSize,\n onButtonClick,\n node: propNode,\n ...props\n}) => {\n const [node] = useProvidedNode()\n const [debugDialogOpen, setDebugDialogOpen] = useState(false)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const busyMap: Record<string, boolean> = useMemo(() => ({}), [node])\n\n const activeBusy = busy ?? Object.values(busyMap).includes(true)\n\n const activeOnButtonClick: PoweredByXyoProps['onButtonClick'] =\n (debugDialog ?\n (event) => {\n if (event.shiftKey && event.altKey) {\n setDebugDialogOpen(true)\n } else if (href) {\n window.open(href)\n }\n }\n : undefined) ?? onButtonClick\n\n const activeHref = activeOnButtonClick ? undefined : href\n\n const onKeyDownEscListener = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && debugDialogOpen) {\n setDebugDialogOpen(false)\n }\n }\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const activeNode = propNode ?? node\n if (disableAnimation) {\n return\n } else if (activeNode) {\n const mods = await activeNode?.resolve('*')\n mods?.map((mod) => {\n mod.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n }\n },\n [disableAnimation, propNode, node, busyMap, autoStop],\n )\n\n return (\n <FlexCol alignItems=\"stretch\" position=\"absolute\" bottom=\"0\" left=\"0\" {...props}>\n <Paper sx={{ borderRadius: 0 }}>\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n </Paper>\n {debugDialog ?\n <DebugDialog fullScreen open={debugDialogOpen} onClose={() => setDebugDialogOpen(false)} onKeyDown={onKeyDownEscListener} />\n : null}\n </FlexCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogoText } from '../img'\nimport { XyoBusy } from './XyoBusy'\n\nexport interface PoweredByXyoButtonProps extends ButtonExProps {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n href,\n logoHeight,\n logoTextSize,\n sx,\n target = '_blank',\n variant = 'text',\n ...props\n}) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogoText\n return imageLoaded ?\n <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>\n <FlexCol padding={0.5}>\n <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize=\"small\">\n Powered by\n </Typography>\n <FlexRow>\n <XyoBusy busy={busy} />\n <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />\n </FlexRow>\n </FlexCol>\n </ButtonEx>\n : null\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\nexport { default as xyoColorLogoText } from './xyo-color-logo-text-only.svg'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogo } from '../img'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({ widthInPixels, busy, spinsPerSecond = 0.5, ...props }) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n if (!imageLoaded) {\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogo\n }\n return imageLoaded ?\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': {\n transform: 'rotate(360deg)',\n },\n '100%': {\n transform: 'rotate(0deg)',\n },\n },\n animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,\n animationDirection: 'reverse',\n }}\n {...props}\n >\n <img src={xyoColorLogo} height={widthInPixels ?? 22} />\n </FlexCol>\n : null\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,yBAA2D;;;ACA3D,4BAA2C;AAC3C,mBAAsB;AACtB,2BAA+C;AAE/C,wBAAmC;AACnC,0BAA6B;AAC7B,mBAAoC;AAwB5B;AAjBD,IAAM,gBAA8C,CAAC,EAAE,UAAU,MAAM,QAAAC,SAAQ,GAAG,MAAM,MAAM;AAbrG;AAcE,QAAM,CAAC,WAAW,QAAI,sCAAmB,QAAW,EAAE,WAAW,OAAO,CAAC;AACzE,QAAM,CAAC,SAAS,QAAI,sCAAmB,QAAW,EAAE,WAAW,KAAK,CAAC;AACrE,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAS,KAAK;AAEtC,QAAM,yBAAyB,2CAAa;AAC5C,QAAM,uBAAuB,uCAAW;AAExC,EAAAA,WAAA,gBAAAA,QAAQ,GAAG,cAAc,OAAO,EAAE,MAAAC,MAAK,MAAM;AAC3C,YAAQA,KAAI;AACZ,cAAM,oBAAM,GAAI;AAChB,YAAQ,KAAK;AAAA,EACf;AAEA,SACE,4CAAC,gCAAQ,YAAW,WAAU,OAAM,QAAQ,GAAG,OAC7C,uDAAC,gCAAQ,gBAAe,cACtB;AAAA,iDAAC,gCACC;AAAA,kDAAC,oCAAa,OAAO,OAAO,SAAS,QAAY,kBAAQ,4CAAC,sBAAAC,WAAA,EAAc,GAAG;AAAA,MAC3E,4CAAC,oCAAa,SAAS,GAAI,iBAAAF,WAAA,gBAAAA,QAAQ,WAAR,mBAAgB,SAAQ,aAAY;AAAA,OACjE;AAAA,IACC,aAAa,2BAA2B,UAAa,yBAAyB,UAC7E,IAAI,sBAAsB,UAAK,oBAAoB,YACnD;AAAA,KACJ,GACF;AAEJ;;;ADlC8C,IAAAG,sBAAA;AADvC,IAAM,mBAAoE,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACzG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,mBAAA,EAAsB,GAAK,GAAG,OAAO;AACpF;;;AEPA,IAAAC,yBAA2D;AAMb,IAAAC,sBAAA;AADvC,IAAM,gBAA8D,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACnG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,mBAAA,EAAsB,GAAK,GAAG,OAAO;AACpF;;;ACPA,IAAAC,mBAAuF;;;ACAvF,IAAAC,wBAAwB;AAExB,IAAAC,qBAAoD;;;ACFpD,IAAAC,yBAA6C;AAO7C,IAAAC,mBAA8E;;;ACP9E,IAAAC,mBAA4B;AAC5B,IAAAC,uBAAyB;AACzB,IAAAC,wBAA+C;AAC/C,2BAA2B;AAE3B,4BAAyB;;;ACLzB,sBAAkE;AAClE,0BAAwC;AACxC,oCAAgD;AAChD,IAAAC,gBAAyB;AAUrB,IAAAC,sBAAA;AAHG,IAAM,mBAAoD,CAAC,EAAE,UAAU,eAAe,KAAK,OAAO,GAAG,MAAM,MAAM;AACtH,QAAM,CAAC,MAAM,OAAO,QAAI,wBAAS,KAAK;AACtC,SACE,8EACE;AAAA,iDAAC,gCAAS,SAAS,MAAM,QAAQ,CAAC,IAAI,GAAI,GAAG,OAC1C,sBAAY,QACf;AAAA,IACA,8CAAC,0BAAO,MAAY,SAAS,MAAM,QAAQ,KAAK,GAC7C;AAAA,cACC,6CAAC,+BAAa,iBAAM,IACpB;AAAA,MACF,6CAAC,iCACC,uDAAC,8CAAa,OAAO,KAAM,GAAG,eAAe,GAC/C;AAAA,MACA,6CAAC,iCACC,uDAAC,gCAAS,SAAS,MAAM,QAAQ,KAAK,GAAG,mBAAK,GAChD;AAAA,OACF;AAAA,KACF;AAEJ;;;ADEM,IAAAC,sBAAA;AAnBC,IAAM,gBAA8C,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACnF,QAAM,CAAC,QAAQ,QAAI,iCAAW,YAAY;AACxC,WAAO,OAAMA,WAAA,gBAAAA,QAAQ;AAAA,EACvB,GAAG,CAACA,OAAM,CAAC;AAEX,QAAM,CAAC,QAAQ,QAAI,iCAAW,YAAY;AACxC,WAAO,OAAMA,WAAA,gBAAAA,QAAQ;AAAA,EACvB,GAAG,CAACA,OAAM,CAAC;AAEX,QAAM,CAAC,QAAQ,QAAI,iCAAW,YAAY;AACxC,WAAO,OAAMA,WAAA,gBAAAA,QAAQ;AAAA,EACvB,GAAG,CAACA,OAAM,CAAC;AAEX,QAAM,UAAUA,WAAA,gBAAAA,QAAQ;AAExB,QAAM,SAASA,WAAA,gBAAAA,QAAQ;AAEvB,SACE,8CAAC,iCAAQ,YAAW,WAAW,GAAG,OAChC;AAAA,iDAAC,kCAAS,OAAM,WAAU,OAAOA,WAAA,gBAAAA,QAAQ,SAAS;AAAA,IAElD,8CAAC,iCAAQ,KAAK,GAAG,gBAAe,iBAC9B;AAAA,oDAAC,gCACE;AAAA,mBACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACA;AAAA,QACD,SACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,QAAQ,oBAEnD,IACA;AAAA,QACD,WACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACA;AAAA,QACD,WACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACA;AAAA,QACD,UACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,SAAS,qBAEpD,IACA;AAAA,SACJ;AAAA,MACA,8CAAC,gCACC;AAAA,qDAAC,iCAAS,QAAO,UAAS,MAAM,0DAA0DA,WAAA,gBAAAA,QAAQ,OAAO,IAAI,SAAQ,YAAW,kBAEhI;AAAA,QACA,6CAAC,iCAAS,QAAO,UAAS,MAAM,mEAAmEA,WAAA,gBAAAA,QAAQ,OAAO,IAAI,SAAQ,YAAW,sBAEzI;AAAA,QACA,6CAAC,iCAAS,QAAO,UAAS,MAAM,gEAAgEA,WAAA,gBAAAA,QAAQ,OAAO,IAAI,SAAQ,YAAW,mBAEtI;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;;;AE5EA,6BAAoC;AACpC,0BAAiC;AACjC,2BAAkC;AAClC,wBAA+B;AAC/B,sBAAmC;AACnC,2BAAkC;;;ACLlC,IAAAC,yBAA6D;AAMf,IAAAC,sBAAA;AADvC,IAAM,iBAAgE,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACrG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,oBAAA,EAAuB,GAAK,GAAG,OAAO;AACrF;;;ACPA,IAAAC,yBAA6C;AAC7C,IAAAC,wBAA2B;AAG3B,IAAAC,qBAAmC;AAkBM,IAAAC,sBAAA;AAdlC,IAAM,cAA0D,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AARjG;AASE,QAAM,CAAC,QAAQ,QAAI,kCAAW,YAAY;AACxC,WAAQ,OAAMA,WAAA,gBAAAA,QAAQ;AAAA,EACxB,GAAG,CAACA,OAAM,CAAC;AAEX,QAAM,CAAC,WAAW,QAAI,uCAAmB,QAAW,EAAE,WAAW,OAAO,CAAC;AACzE,QAAM,CAAC,SAAS,QAAI,uCAAmB,QAAW,EAAE,WAAW,KAAK,CAAC;AAErE,QAAM,yBAAyB,2CAAa;AAC5C,QAAM,uBAAuB,uCAAW;AAExC,QAAM,yBAAwB,gDAAU,YAAV,mBAAmB,WAAnB,mBAA2B;AAEzD,SACE,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,YAAA,EAAe,GAAK,GAAG,OAC1D,oCAA0B,UAAa,2BAA2B,UAAa,yBAAyB,SACvG,IAAI,qBAAqB,KAAK,sBAAsB,UAAK,oBAAoB,YAC7E,MACJ;AAEJ;;;AC5BA,IAAAC,yBAAiD;AAMH,IAAAC,sBAAA;AADvC,IAAM,kBAAkE,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACvG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,cAAA,EAAiB,GAAK,GAAG,OAAO;AAC/E;;;ACPA,IAAAC,yBAA2D;AAMb,IAAAC,sBAAA;AADvC,IAAM,iBAAgE,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACrG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,mBAAA,EAAsB,GAAK,GAAG,OAAO;AACpF;;;AJUW,IAAAC,uBAAA;AAFJ,IAAM,qBAAmD,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACxF,UAAI,4CAAoBA,OAAM,GAAG;AAC/B,WAAO,8CAAC,oBAAiB,QAAQA,SAAS,GAAG,OAAO;AAAA,EACtD;AACA,UAAI,wCAAkBA,OAAM,GAAG;AAC7B,WAAO,8CAAC,kBAAe,QAAQA,SAAS,GAAG,OAAO;AAAA,EACpD;AACA,UAAI,kCAAeA,OAAM,GAAG;AAC1B,WAAO,8CAAC,eAAY,QAAQA,SAAS,GAAG,OAAO;AAAA,EACjD;AACA,UAAI,wCAAkBA,OAAM,GAAG;AAC7B,WAAO,8CAAC,kBAAe,QAAQA,SAAS,GAAG,OAAO;AAAA,EACpD;AACA,UAAI,sCAAiBA,OAAM,GAAG;AAC5B,WAAO,8CAAC,iBAAc,QAAQA,SAAS,GAAG,OAAO;AAAA,EACnD;AACA,UAAI,oCAAmBA,OAAM,GAAG;AAC9B,WAAO,8CAAC,mBAAgB,QAAQA,SAAS,GAAG,OAAO;AAAA,EACrD;AACA,SAAO,8CAAC,iBAAc,QAAQA,SAAS,GAAG,OAAO;AACnD;;;AHrBI,IAAAC,uBAAA;AAFG,IAAM,kBAAkD,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACvF,SACE,+CAAC,8BAAW,GAAG,OACb;AAAA,kDAAC,qCAAiB,YAAY,8CAAC,uBAAAC,YAAA,EAAe,GAC5C,wDAAC,sBAAmB,QAAQD,SAAQ,GACtC;AAAA,IACA,8CAAC,qCACC,wDAAC,iBAAc,QAAQA,SAAQ,GACjC;AAAA,KACF;AAEJ;;;ADNQ,IAAAE,uBAAA;AARD,IAAM,cAAyC,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AAC9E,QAAM,CAAC,OAAOA,OAAM,QAAI,oCAAgB;AAExC,QAAM,CAAC,QAAQ,QAAI,uCAAmB,QAAW,EAAE,MAAM,QAAQ,OAAU,CAAC;AAE5E,SACE,8CAAC,iCAAQ,YAAW,WAAW,GAAG,OAC/B,qBACC,+EACE,wDAAC,iCAAQ,YAAW,WAAU,SAAS,GACpC,+CAAU,IAAI,CAAC,UAAU,8CAAC,mBAAoC,QAAQ,SAAvB,MAAM,OAAwB,IAChF,GACF,IACA,MACJ;AAEJ;;;ADjBI,IAAAC,uBAAA;AAFG,IAAM,cAA0C,CAAC,EAAE,SAAS,GAAG,MAAM,MAAM;AAChF,SACE,+CAAC,2BAAQ,GAAG,OACV;AAAA,kDAAC,gCAAY,+BAAiB;AAAA,IAC9B,8CAAC,kCACC,wDAAC,eAAY,OAAM,QAAO,GAC5B;AAAA,IACA,8CAAC,kCACC,wDAAC,2BAAO,SAAS,CAAC,UAAU,mCAAU,OAAO,kBAAkB,mBAAK,GACtE;AAAA,KACF;AAEJ;;;AUlBA,IAAAC,mBAAsB;AACtB,IAAAC,gBAAsB;AACtB,oBAAuB;AACvB,gCAA+B;AAE/B,IAAAC,wBAAsC;AAGtC,IAAAC,qBAAgC;AAChC,IAAAC,gBAAiD;;;ACTjD,IAAAC,mBAA2B;AAC3B,IAAAC,uBAAwC;AACxC,IAAAC,wBAAiC;AACjC,IAAAC,gBAAyB;;;ACHzB,4BAAwC;AACxC,sCAA4C;;;ACD5C,IAAAC,wBAAsC;AACtC,IAAAC,gBAAyB;AAkCjB,IAAAC,uBAAA;AAxBD,IAAM,UAAkC,CAAC,EAAE,eAAe,MAAM,iBAAiB,KAAK,GAAG,MAAM,MAAM;AAE1G,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAS,KAAK;AACpD,MAAI,CAAC,aAAa;AAChB,UAAM,MAAM,IAAI,MAAM;AACtB,QAAI,iBAAiB,QAAQ,MAAM,eAAe,IAAI,CAAC;AACvD,QAAI,MAAM;AAAA,EACZ;AACA,SAAO,cACH;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,QACF,mBAAmB;AAAA,UACjB,MAAM;AAAA,YACJ,WAAW;AAAA,UACb;AAAA,UACA,QAAQ;AAAA,YACN,WAAW;AAAA,UACb;AAAA,QACF;AAAA,QACA,WAAW,OAAO,QAAQ,IAAI,cAAc,sBAAsB;AAAA,QAClE,oBAAoB;AAAA,MACtB;AAAA,MACC,GAAG;AAAA,MAEJ,wDAAC,SAAI,KAAK,+BAAc,QAAQ,iBAAiB,IAAI;AAAA;AAAA,EACvD,IACA;AACN;;;AFNU,IAAAC,uBAAA;AAlBH,IAAM,qBAAwD,CAAC;AAAA,EACpE,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,GAAG;AACL,MAAM;AAEJ,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAS,KAAK;AACpD,QAAM,MAAM,IAAI,MAAM;AACtB,MAAI,iBAAiB,QAAQ,MAAM,eAAe,IAAI,CAAC;AACvD,MAAI,MAAM;AACV,SAAO,cACH,8CAAC,iCAAS,MAAY,QAAgB,SAAkB,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,GAAG,GAAG,GAAI,GAAG,OACtG,yDAAC,iCAAQ,SAAS,KAChB;AAAA,kDAAC,+BAAW,OAAO,EAAE,UAAU,gBAAgB,GAAG,GAAG,UAAS,SAAQ,wBAEtE;AAAA,IACA,+CAAC,iCACC;AAAA,oDAAC,WAAQ,MAAY;AAAA,MACrB,8CAAC,SAAI,KAAK,yCAAkB,QAAQ,cAAc,IAAI,OAAO,IAAI;AAAA,OACnE;AAAA,KACF,GACF,IACA;AACN;;;AD+DI,IAAAC,uBAAA;AA9EG,IAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,cAAc,CAAC;AAAA,EACf,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,IAAI,QAAI,oCAAgB;AAC/B,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,wBAAS,KAAK;AAG5D,QAAM,cAAmC,uBAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAEnE,QAAM,aAAa,QAAQ,OAAO,OAAO,OAAO,EAAE,SAAS,IAAI;AAE/D,QAAM,uBACH,cACC,CAAC,UAAU;AACT,QAAI,MAAM,YAAY,MAAM,QAAQ;AAClC,yBAAmB,IAAI;AAAA,IACzB,WAAW,MAAM;AACf,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA,EACF,IACA,WAAc;AAElB,QAAM,aAAa,sBAAsB,SAAY;AAErD,QAAM,uBAAuB,CAAC,UAAyC;AACrE,QAAI,MAAM,QAAQ,YAAY,iBAAiB;AAC7C,yBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAEA;AAAA;AAAA,IAEE,YAAY;AACV,YAAM,aAAa,YAAY;AAC/B,UAAI,kBAAkB;AACpB;AAAA,MACF,WAAW,YAAY;AACrB,cAAM,OAAO,OAAM,yCAAY,QAAQ;AACvC,qCAAM,IAAI,CAAC,QAAQ;AACjB,cAAI,GAAG,cAAc,CAAC,EAAE,QAAAC,SAAQ,MAAAC,MAAK,MAAM;AACzC,oBAASD,QAAkB,OAAO,IAAIC;AACtC,gBAAI,UAAU;AACZ;AAAA,iBACG,YAAY;AACX,4BAAM,qBAAM,GAAI;AAChB,0BAASD,QAAkB,OAAO,IAAI;AAAA,gBACxC,GAAG;AAAA,cACL;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AACA,iDAAY,GAAG,cAAc,CAAC,EAAE,QAAAA,SAAQ,MAAAC,MAAK,MAAM;AACjD,kBAASD,QAAkB,OAAO,IAAIC;AACtC,cAAI,UAAU;AACZ;AAAA,eACG,YAAY;AACX,0BAAM,qBAAM,GAAI;AAChB,wBAASD,QAAkB,OAAO,IAAI;AAAA,cACxC,GAAG;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,UAAU,MAAM,SAAS,QAAQ;AAAA,EACtD;AAEA,SACE,+CAAC,iCAAQ,YAAW,WAAU,UAAS,YAAW,QAAO,KAAI,MAAK,KAAK,GAAG,OACxE;AAAA,kDAAC,0BAAM,IAAI,EAAE,cAAc,EAAE,GAC3B;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,WAAS;AAAA,QACR,GAAG;AAAA;AAAA,IACN,GACF;AAAA,IACC,cACC,8CAAC,eAAY,YAAU,MAAC,MAAM,iBAAiB,SAAS,MAAM,mBAAmB,KAAK,GAAG,WAAW,sBAAsB,IAC1H;AAAA,KACJ;AAEJ;","names":["import_icons_material","module","busy","ExtensionIcon","import_jsx_runtime","module","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","module","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","module","import_icons_material","import_jsx_runtime","module","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","module","HubRoundedIcon","import_icons_material","import_jsx_runtime","module","TimerRoundedIcon","import_icons_material","import_jsx_runtime","module","VisibilityRoundedIcon","import_jsx_runtime","module","import_jsx_runtime","module","ExpandMoreIcon","import_jsx_runtime","module","import_jsx_runtime","import_material","import_delay","import_react_flexbox","import_react_node","import_react","import_material","import_react_button","import_react_flexbox","import_react","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","module","busy"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/components/ArchivistSummary.tsx","../../src/components/ModuleSummary.tsx","../../src/components/BridgeSummary.tsx","../../src/components/DebugDialog.tsx","../../src/components/NodeDetails.tsx","../../src/components/ModuleAccordion.tsx","../../src/components/ModuleDetails.tsx","../../src/components/JsonViewerButton.tsx","../../src/components/TypedModuleSummary.tsx","../../src/components/DivinerSummary.tsx","../../src/components/NodeSummary.tsx","../../src/components/SentinelSummary.tsx","../../src/components/WitnessSummary.tsx","../../src/components/PoweredByXyo.tsx","../../src/components/PoweredByXyoButton.tsx","../../src/img/index.ts","../../src/components/XyoBusy.tsx"],"sourcesContent":["export * from './components'\n","import { Inventory2Rounded as Inventory2RoundedIcon } from '@mui/icons-material'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const ArchivistSummary: React.FC<ModuleSummaryProps<ArchivistInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<Inventory2RoundedIcon />} {...props} />\n}\n","import { Extension as ExtensionIcon } from '@mui/icons-material'\nimport { delay } from '@xylabs/delay'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport { ReactNode, useState } from 'react'\n\nexport interface ModuleSummaryProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n icon?: ReactNode\n module?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, module, ...props }) => {\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n module?.on('moduleBusy', async ({ busy }) => {\n setBusy(busy)\n await delay(2000)\n setBusy(false)\n })\n\n return (\n <FlexCol alignItems=\"stretch\" width=\"100%\" {...props}>\n <FlexRow justifyContent=\"flex-start\">\n <FlexRow>\n <TypographyEx color={busy ? 'gray' : undefined}>{icon ?? <ExtensionIcon />}</TypographyEx>\n <TypographyEx marginX={1}>{module?.config?.name ?? '<Unknown>'}</TypographyEx>\n </FlexRow>\n {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined) ?\n `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </FlexRow>\n </FlexCol>\n )\n}\n","import { InsertLinkRounded as InsertLinkRoundedIcon } from '@mui/icons-material'\nimport { BridgeInstance } from '@xyo-network/bridge-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { NodeDetails } from './NodeDetails'\n\nexport interface DebugDialogProps extends DialogProps {}\n\nexport const DebugDialog: React.FC<DebugDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Xyo Module Viewer</DialogTitle>\n <DialogContent>\n <NodeDetails width=\"100%\" />\n </DialogContent>\n <DialogActions>\n <Button onClick={(event) => onClose?.(event, 'backdropClick')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode, useProvidedNode } from '@xyo-network/react-node'\n\nimport { ModuleAccordion } from './ModuleAccordion'\nimport { ModuleDetailsProps } from './ModuleDetails'\n\nexport interface NodeViewerProps extends ModuleDetailsProps<NodeInstance> {}\n\nexport const NodeDetails: React.FC<NodeViewerProps> = ({ module, ...props }) => {\n const [node = module] = useProvidedNode()\n\n const [children] = useModulesFromNode(undefined, { node: node ?? undefined })\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {children ?\n <>\n <FlexCol alignItems=\"stretch\" marginY={1}>\n {children?.map((child) => <ModuleAccordion key={child.address} module={child} />)}\n </FlexCol>\n </>\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n module?: T\n}\n\nimport { Accordion, AccordionDetails, AccordionProps, AccordionSummary } from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails'\nimport { TypedModuleSummary } from './TypedModuleSummary'\n\nexport const ModuleAccordion: React.FC<ModuleAccordionProps> = ({ module, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary module={module} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails module={module} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n module?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await module?.manifest()\n }, [module])\n\n const [discover] = usePromise(async () => {\n return await module?.state()\n }, [module])\n\n const [describe] = usePromise(async () => {\n const state = await module?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [module])\n\n const queries = module?.queries\n\n const config = module?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={module?.address} />\n\n <FlexRow gap={1} justifyContent=\"space-between\">\n <ButtonGroup>\n {manifest ?\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n : null}\n {config ?\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n : null}\n {discover ?\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n : null}\n {describe ?\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n : null}\n {queries ?\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n : null}\n </ButtonGroup>\n <ButtonGroup>\n <ButtonEx target=\"_blank\" href={`https://explore.xyo.network/block?network=main&address=${module?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${module?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${module?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ module, ...props }) => {\n if (isArchivistInstance(module)) {\n return <ArchivistSummary module={module} {...props} />\n }\n if (isDivinerInstance(module)) {\n return <DivinerSummary module={module} {...props} />\n }\n if (isNodeInstance(module)) {\n return <NodeSummary module={module} {...props} />\n }\n if (isWitnessInstance(module)) {\n return <WitnessSummary module={module} {...props} />\n }\n if (isBridgeInstance(module)) {\n return <BridgeSummary module={module} {...props} />\n }\n if (isSentinelInstance(module)) {\n return <SentinelSummary module={module} {...props} />\n }\n return <ModuleSummary module={module} {...props} />\n}\n","import { BubbleChartRounded as BubbleChartRoundedIcon } from '@mui/icons-material'\nimport { DivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const DivinerSummary: React.FC<ModuleSummaryProps<DivinerInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<BubbleChartRoundedIcon />} {...props} />\n}\n","import { HubRounded as HubRoundedIcon } from '@mui/icons-material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { NodeManifest } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await module?.manifest()) as NodeManifest\n }, [module])\n\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n const manifestPublicModules = manifest?.modules?.public?.length\n\n return (\n <ModuleSummary module={module} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<TimerRoundedIcon />} {...props} />\n}\n","import { VisibilityRounded as VisibilityRoundedIcon } from '@mui/icons-material'\nimport { WitnessInstance } from '@xyo-network/witness-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const WitnessSummary: React.FC<ModuleSummaryProps<WitnessInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<VisibilityRoundedIcon />} {...props} />\n}\n","import { Paper } from '@mui/material'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ButtonExProps } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { Module } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport { KeyboardEvent, useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog'\nimport { PoweredByXyoButton, PoweredByXyoButtonProps } from './PoweredByXyoButton'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: PoweredByXyoButtonProps\n debugDialog?: boolean\n disableAnimation?: boolean\n href?: ButtonExProps['href']\n logoHeight?: number\n logoTextSize?: number\n node?: NodeInstance\n onButtonClick?: ButtonExProps['onClick']\n}\n\nexport const PoweredByXyo: React.FC<PoweredByXyoProps> = ({\n autoStop,\n busy,\n buttonProps = {},\n debugDialog = false,\n disableAnimation = false,\n href = 'https://xyo.network',\n logoHeight,\n logoTextSize,\n onButtonClick,\n node: propNode,\n ...props\n}) => {\n const [node] = useProvidedNode()\n const [debugDialogOpen, setDebugDialogOpen] = useState(false)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const busyMap: Record<string, boolean> = useMemo(() => ({}), [node])\n\n const activeBusy = busy ?? Object.values(busyMap).includes(true)\n\n const activeOnButtonClick: PoweredByXyoProps['onButtonClick'] =\n (debugDialog ?\n (event) => {\n if (event.shiftKey && event.altKey) {\n setDebugDialogOpen(true)\n } else if (href) {\n window.open(href)\n }\n }\n : undefined) ?? onButtonClick\n\n const activeHref = activeOnButtonClick ? undefined : href\n\n const onKeyDownEscListener = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && debugDialogOpen) {\n setDebugDialogOpen(false)\n }\n }\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const activeNode = propNode ?? node\n if (disableAnimation) {\n return\n } else if (activeNode) {\n const mods = await activeNode?.resolve('*')\n mods?.map((mod) => {\n mod.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n }\n },\n [disableAnimation, propNode, node, busyMap, autoStop],\n )\n\n return (\n <FlexCol alignItems=\"stretch\" position=\"absolute\" bottom=\"0\" left=\"0\" {...props}>\n <Paper sx={{ borderRadius: 0 }}>\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n </Paper>\n {debugDialog ?\n <DebugDialog fullScreen open={debugDialogOpen} onClose={() => setDebugDialogOpen(false)} onKeyDown={onKeyDownEscListener} />\n : null}\n </FlexCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogoText } from '../img'\nimport { XyoBusy } from './XyoBusy'\n\nexport interface PoweredByXyoButtonProps extends ButtonExProps {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n href,\n logoHeight,\n logoTextSize,\n sx,\n target = '_blank',\n variant = 'text',\n ...props\n}) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogoText\n return imageLoaded ?\n <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>\n <FlexCol padding={0.5}>\n <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize=\"small\">\n Powered by\n </Typography>\n <FlexRow>\n <XyoBusy busy={busy} />\n <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />\n </FlexRow>\n </FlexCol>\n </ButtonEx>\n : null\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\nexport { default as xyoColorLogoText } from './xyo-color-logo-text-only.svg'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogo } from '../img'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({ widthInPixels, busy, spinsPerSecond = 0.5, ...props }) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n if (!imageLoaded) {\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogo\n }\n return imageLoaded ?\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': {\n transform: 'rotate(360deg)',\n },\n '100%': {\n transform: 'rotate(0deg)',\n },\n },\n animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,\n animationDirection: 'reverse',\n }}\n {...props}\n >\n <img src={xyoColorLogo} height={widthInPixels ?? 22} />\n </FlexCol>\n : null\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,IAAAA,yBAA2D;;;ACA3D,4BAA2C;AAC3C,mBAAsB;AACtB,2BAA+C;AAE/C,wBAAmC;AACnC,0BAA6B;AAC7B,mBAAoC;AAwB5B;AAjBD,IAAM,gBAA8C,CAAC,EAAE,UAAU,MAAM,QAAAC,SAAQ,GAAG,MAAM,MAAM;AAbrG;AAcE,QAAM,CAAC,WAAW,QAAI,sCAAmB,QAAW,EAAE,WAAW,OAAO,CAAC;AACzE,QAAM,CAAC,SAAS,QAAI,sCAAmB,QAAW,EAAE,WAAW,KAAK,CAAC;AACrE,QAAM,CAAC,MAAM,OAAO,QAAI,uBAAS,KAAK;AAEtC,QAAM,yBAAyB,2CAAa;AAC5C,QAAM,uBAAuB,uCAAW;AAExC,EAAAA,WAAA,gBAAAA,QAAQ,GAAG,cAAc,OAAO,EAAE,MAAAC,MAAK,MAAM;AAC3C,YAAQA,KAAI;AACZ,cAAM,oBAAM,GAAI;AAChB,YAAQ,KAAK;AAAA,EACf;AAEA,SACE,4CAAC,gCAAQ,YAAW,WAAU,OAAM,QAAQ,GAAG,OAC7C,uDAAC,gCAAQ,gBAAe,cACtB;AAAA,iDAAC,gCACC;AAAA,kDAAC,oCAAa,OAAO,OAAO,SAAS,QAAY,kBAAQ,4CAAC,sBAAAC,WAAA,EAAc,GAAG;AAAA,MAC3E,4CAAC,oCAAa,SAAS,GAAI,iBAAAF,WAAA,gBAAAA,QAAQ,WAAR,mBAAgB,SAAQ,aAAY;AAAA,OACjE;AAAA,IACC,aAAa,2BAA2B,UAAa,yBAAyB,UAC7E,IAAI,sBAAsB,UAAK,oBAAoB,YACnD;AAAA,KACJ,GACF;AAEJ;;;ADlC8C,IAAAG,sBAAA;AADvC,IAAM,mBAAoE,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACzG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,mBAAA,EAAsB,GAAK,GAAG,OAAO;AACpF;;;AEPA,IAAAC,yBAA2D;AAMb,IAAAC,sBAAA;AADvC,IAAM,gBAA8D,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACnG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,mBAAA,EAAsB,GAAK,GAAG,OAAO;AACpF;;;ACPA,IAAAC,mBAAuF;;;ACAvF,IAAAC,wBAAwB;AAExB,IAAAC,qBAAoD;;;ACFpD,IAAAC,yBAA6C;AAO7C,IAAAC,mBAA8E;;;ACP9E,IAAAC,mBAA4B;AAC5B,IAAAC,uBAAyB;AACzB,IAAAC,wBAA+C;AAC/C,2BAA2B;AAC3B,0BAAkF;AAClF,2BAAsC;AACtC,4BAAyB;;;ACNzB,sBAAkE;AAClE,0BAAwC;AACxC,oCAAgD;AAChD,IAAAC,gBAAyB;AAUrB,IAAAC,sBAAA;AAHG,IAAM,mBAAoD,CAAC,EAAE,UAAU,eAAe,KAAK,OAAO,GAAG,MAAM,MAAM;AACtH,QAAM,CAAC,MAAM,OAAO,QAAI,wBAAS,KAAK;AACtC,SACE,8EACE;AAAA,iDAAC,gCAAS,SAAS,MAAM,QAAQ,CAAC,IAAI,GAAI,GAAG,OAC1C,sBAAY,QACf;AAAA,IACA,8CAAC,0BAAO,MAAY,SAAS,MAAM,QAAQ,KAAK,GAC7C;AAAA,cACC,6CAAC,+BAAa,iBAAM,IACpB;AAAA,MACF,6CAAC,iCACC,uDAAC,8CAAa,OAAO,KAAM,GAAG,eAAe,GAC/C;AAAA,MACA,6CAAC,iCACC,uDAAC,gCAAS,SAAS,MAAM,QAAQ,KAAK,GAAG,mBAAK,GAChD;AAAA,OACF;AAAA,KACF;AAEJ;;;ADIM,IAAAC,sBAAA;AApBC,IAAM,gBAA8C,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACnF,QAAM,CAAC,QAAQ,QAAI,iCAAW,YAAY;AACxC,WAAO,OAAMA,WAAA,gBAAAA,QAAQ;AAAA,EACvB,GAAG,CAACA,OAAM,CAAC;AAEX,QAAM,CAAC,QAAQ,QAAI,iCAAW,YAAY;AACxC,WAAO,OAAMA,WAAA,gBAAAA,QAAQ;AAAA,EACvB,GAAG,CAACA,OAAM,CAAC;AAEX,QAAM,CAAC,QAAQ,QAAI,iCAAW,YAAY;AACxC,UAAM,QAAQ,OAAMA,WAAA,gBAAAA,QAAQ;AAC5B,WAAO,+BAAO,SAA+B,4CAAsB,2CAAuB;AAAA,EAC5F,GAAG,CAACA,OAAM,CAAC;AAEX,QAAM,UAAUA,WAAA,gBAAAA,QAAQ;AAExB,QAAM,SAASA,WAAA,gBAAAA,QAAQ;AAEvB,SACE,8CAAC,iCAAQ,YAAW,WAAW,GAAG,OAChC;AAAA,iDAAC,kCAAS,OAAM,WAAU,OAAOA,WAAA,gBAAAA,QAAQ,SAAS;AAAA,IAElD,8CAAC,iCAAQ,KAAK,GAAG,gBAAe,iBAC9B;AAAA,oDAAC,gCACE;AAAA,mBACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACA;AAAA,QACD,SACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,QAAQ,oBAEnD,IACA;AAAA,QACD,WACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACA;AAAA,QACD,WACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACA;AAAA,QACD,UACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,SAAS,qBAEpD,IACA;AAAA,SACJ;AAAA,MACA,8CAAC,gCACC;AAAA,qDAAC,iCAAS,QAAO,UAAS,MAAM,0DAA0DA,WAAA,gBAAAA,QAAQ,OAAO,IAAI,SAAQ,YAAW,kBAEhI;AAAA,QACA,6CAAC,iCAAS,QAAO,UAAS,MAAM,mEAAmEA,WAAA,gBAAAA,QAAQ,OAAO,IAAI,SAAQ,YAAW,sBAEzI;AAAA,QACA,6CAAC,iCAAS,QAAO,UAAS,MAAM,gEAAgEA,WAAA,gBAAAA,QAAQ,OAAO,IAAI,SAAQ,YAAW,mBAEtI;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;;;AE9EA,6BAAoC;AACpC,0BAAiC;AACjC,2BAAkC;AAClC,wBAA+B;AAC/B,4BAAmC;AACnC,2BAAkC;;;ACLlC,IAAAC,yBAA6D;AAMf,IAAAC,sBAAA;AADvC,IAAM,iBAAgE,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACrG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,oBAAA,EAAuB,GAAK,GAAG,OAAO;AACrF;;;ACPA,IAAAC,yBAA6C;AAC7C,IAAAC,wBAA2B;AAG3B,IAAAC,qBAAmC;AAkBM,IAAAC,sBAAA;AAdlC,IAAM,cAA0D,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AARjG;AASE,QAAM,CAAC,QAAQ,QAAI,kCAAW,YAAY;AACxC,WAAQ,OAAMA,WAAA,gBAAAA,QAAQ;AAAA,EACxB,GAAG,CAACA,OAAM,CAAC;AAEX,QAAM,CAAC,WAAW,QAAI,uCAAmB,QAAW,EAAE,WAAW,OAAO,CAAC;AACzE,QAAM,CAAC,SAAS,QAAI,uCAAmB,QAAW,EAAE,WAAW,KAAK,CAAC;AAErE,QAAM,yBAAyB,2CAAa;AAC5C,QAAM,uBAAuB,uCAAW;AAExC,QAAM,yBAAwB,gDAAU,YAAV,mBAAmB,WAAnB,mBAA2B;AAEzD,SACE,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,YAAA,EAAe,GAAK,GAAG,OAC1D,oCAA0B,UAAa,2BAA2B,UAAa,yBAAyB,SACvG,IAAI,qBAAqB,KAAK,sBAAsB,UAAK,oBAAoB,YAC7E,MACJ;AAEJ;;;AC5BA,IAAAC,yBAAiD;AAMH,IAAAC,sBAAA;AADvC,IAAM,kBAAkE,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACvG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,cAAA,EAAiB,GAAK,GAAG,OAAO;AAC/E;;;ACPA,IAAAC,yBAA2D;AAMb,IAAAC,sBAAA;AADvC,IAAM,iBAAgE,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACrG,SAAO,6CAAC,iBAAc,QAAQA,SAAQ,MAAM,6CAAC,uBAAAC,mBAAA,EAAsB,GAAK,GAAG,OAAO;AACpF;;;AJUW,IAAAC,uBAAA;AAFJ,IAAM,qBAAmD,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACxF,UAAI,4CAAoBA,OAAM,GAAG;AAC/B,WAAO,8CAAC,oBAAiB,QAAQA,SAAS,GAAG,OAAO;AAAA,EACtD;AACA,UAAI,wCAAkBA,OAAM,GAAG;AAC7B,WAAO,8CAAC,kBAAe,QAAQA,SAAS,GAAG,OAAO;AAAA,EACpD;AACA,UAAI,kCAAeA,OAAM,GAAG;AAC1B,WAAO,8CAAC,eAAY,QAAQA,SAAS,GAAG,OAAO;AAAA,EACjD;AACA,UAAI,wCAAkBA,OAAM,GAAG;AAC7B,WAAO,8CAAC,kBAAe,QAAQA,SAAS,GAAG,OAAO;AAAA,EACpD;AACA,UAAI,sCAAiBA,OAAM,GAAG;AAC5B,WAAO,8CAAC,iBAAc,QAAQA,SAAS,GAAG,OAAO;AAAA,EACnD;AACA,UAAI,0CAAmBA,OAAM,GAAG;AAC9B,WAAO,8CAAC,mBAAgB,QAAQA,SAAS,GAAG,OAAO;AAAA,EACrD;AACA,SAAO,8CAAC,iBAAc,QAAQA,SAAS,GAAG,OAAO;AACnD;;;AHrBI,IAAAC,uBAAA;AAFG,IAAM,kBAAkD,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AACvF,SACE,+CAAC,8BAAW,GAAG,OACb;AAAA,kDAAC,qCAAiB,YAAY,8CAAC,uBAAAC,YAAA,EAAe,GAC5C,wDAAC,sBAAmB,QAAQD,SAAQ,GACtC;AAAA,IACA,8CAAC,qCACC,wDAAC,iBAAc,QAAQA,SAAQ,GACjC;AAAA,KACF;AAEJ;;;ADNQ,IAAAE,uBAAA;AARD,IAAM,cAAyC,CAAC,EAAE,QAAAC,SAAQ,GAAG,MAAM,MAAM;AAC9E,QAAM,CAAC,OAAOA,OAAM,QAAI,oCAAgB;AAExC,QAAM,CAAC,QAAQ,QAAI,uCAAmB,QAAW,EAAE,MAAM,QAAQ,OAAU,CAAC;AAE5E,SACE,8CAAC,iCAAQ,YAAW,WAAW,GAAG,OAC/B,qBACC,+EACE,wDAAC,iCAAQ,YAAW,WAAU,SAAS,GACpC,+CAAU,IAAI,CAAC,UAAU,8CAAC,mBAAoC,QAAQ,SAAvB,MAAM,OAAwB,IAChF,GACF,IACA,MACJ;AAEJ;;;ADjBI,IAAAC,uBAAA;AAFG,IAAM,cAA0C,CAAC,EAAE,SAAS,GAAG,MAAM,MAAM;AAChF,SACE,+CAAC,2BAAQ,GAAG,OACV;AAAA,kDAAC,gCAAY,+BAAiB;AAAA,IAC9B,8CAAC,kCACC,wDAAC,eAAY,OAAM,QAAO,GAC5B;AAAA,IACA,8CAAC,kCACC,wDAAC,2BAAO,SAAS,CAAC,UAAU,mCAAU,OAAO,kBAAkB,mBAAK,GACtE;AAAA,KACF;AAEJ;;;AUlBA,IAAAC,mBAAsB;AACtB,IAAAC,gBAAsB;AACtB,oBAAuB;AACvB,gCAA+B;AAE/B,IAAAC,wBAAsC;AAGtC,IAAAC,qBAAgC;AAChC,IAAAC,gBAAiD;;;ACTjD,IAAAC,mBAA2B;AAC3B,IAAAC,uBAAwC;AACxC,IAAAC,wBAAiC;AACjC,IAAAC,gBAAyB;;;ACHzB,4BAAwC;AACxC,sCAA4C;;;ACD5C,IAAAC,wBAAsC;AACtC,IAAAC,gBAAyB;AAkCjB,IAAAC,uBAAA;AAxBD,IAAM,UAAkC,CAAC,EAAE,eAAe,MAAM,iBAAiB,KAAK,GAAG,MAAM,MAAM;AAE1G,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAS,KAAK;AACpD,MAAI,CAAC,aAAa;AAChB,UAAM,MAAM,IAAI,MAAM;AACtB,QAAI,iBAAiB,QAAQ,MAAM,eAAe,IAAI,CAAC;AACvD,QAAI,MAAM;AAAA,EACZ;AACA,SAAO,cACH;AAAA,IAAC;AAAA;AAAA,MACC,IAAI;AAAA,QACF,mBAAmB;AAAA,UACjB,MAAM;AAAA,YACJ,WAAW;AAAA,UACb;AAAA,UACA,QAAQ;AAAA,YACN,WAAW;AAAA,UACb;AAAA,QACF;AAAA,QACA,WAAW,OAAO,QAAQ,IAAI,cAAc,sBAAsB;AAAA,QAClE,oBAAoB;AAAA,MACtB;AAAA,MACC,GAAG;AAAA,MAEJ,wDAAC,SAAI,KAAK,+BAAc,QAAQ,iBAAiB,IAAI;AAAA;AAAA,EACvD,IACA;AACN;;;AFNU,IAAAC,uBAAA;AAlBH,IAAM,qBAAwD,CAAC;AAAA,EACpE,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,GAAG;AACL,MAAM;AAEJ,QAAM,CAAC,aAAa,cAAc,QAAI,wBAAS,KAAK;AACpD,QAAM,MAAM,IAAI,MAAM;AACtB,MAAI,iBAAiB,QAAQ,MAAM,eAAe,IAAI,CAAC;AACvD,MAAI,MAAM;AACV,SAAO,cACH,8CAAC,iCAAS,MAAY,QAAgB,SAAkB,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,GAAG,GAAG,GAAI,GAAG,OACtG,yDAAC,iCAAQ,SAAS,KAChB;AAAA,kDAAC,+BAAW,OAAO,EAAE,UAAU,gBAAgB,GAAG,GAAG,UAAS,SAAQ,wBAEtE;AAAA,IACA,+CAAC,iCACC;AAAA,oDAAC,WAAQ,MAAY;AAAA,MACrB,8CAAC,SAAI,KAAK,yCAAkB,QAAQ,cAAc,IAAI,OAAO,IAAI;AAAA,OACnE;AAAA,KACF,GACF,IACA;AACN;;;AD+DI,IAAAC,uBAAA;AA9EG,IAAM,eAA4C,CAAC;AAAA,EACxD;AAAA,EACA;AAAA,EACA,cAAc,CAAC;AAAA,EACf,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,GAAG;AACL,MAAM;AACJ,QAAM,CAAC,IAAI,QAAI,oCAAgB;AAC/B,QAAM,CAAC,iBAAiB,kBAAkB,QAAI,wBAAS,KAAK;AAG5D,QAAM,cAAmC,uBAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAEnE,QAAM,aAAa,QAAQ,OAAO,OAAO,OAAO,EAAE,SAAS,IAAI;AAE/D,QAAM,uBACH,cACC,CAAC,UAAU;AACT,QAAI,MAAM,YAAY,MAAM,QAAQ;AAClC,yBAAmB,IAAI;AAAA,IACzB,WAAW,MAAM;AACf,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA,EACF,IACA,WAAc;AAElB,QAAM,aAAa,sBAAsB,SAAY;AAErD,QAAM,uBAAuB,CAAC,UAAyC;AACrE,QAAI,MAAM,QAAQ,YAAY,iBAAiB;AAC7C,yBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAEA;AAAA;AAAA,IAEE,YAAY;AACV,YAAM,aAAa,YAAY;AAC/B,UAAI,kBAAkB;AACpB;AAAA,MACF,WAAW,YAAY;AACrB,cAAM,OAAO,OAAM,yCAAY,QAAQ;AACvC,qCAAM,IAAI,CAAC,QAAQ;AACjB,cAAI,GAAG,cAAc,CAAC,EAAE,QAAAC,SAAQ,MAAAC,MAAK,MAAM;AACzC,oBAASD,QAAkB,OAAO,IAAIC;AACtC,gBAAI,UAAU;AACZ;AAAA,iBACG,YAAY;AACX,4BAAM,qBAAM,GAAI;AAChB,0BAASD,QAAkB,OAAO,IAAI;AAAA,gBACxC,GAAG;AAAA,cACL;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH;AACA,iDAAY,GAAG,cAAc,CAAC,EAAE,QAAAA,SAAQ,MAAAC,MAAK,MAAM;AACjD,kBAASD,QAAkB,OAAO,IAAIC;AACtC,cAAI,UAAU;AACZ;AAAA,eACG,YAAY;AACX,0BAAM,qBAAM,GAAI;AAChB,wBAASD,QAAkB,OAAO,IAAI;AAAA,cACxC,GAAG;AAAA,YACL;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,UAAU,MAAM,SAAS,QAAQ;AAAA,EACtD;AAEA,SACE,+CAAC,iCAAQ,YAAW,WAAU,UAAS,YAAW,QAAO,KAAI,MAAK,KAAK,GAAG,OACxE;AAAA,kDAAC,0BAAM,IAAI,EAAE,cAAc,EAAE,GAC3B;AAAA,MAAC;AAAA;AAAA,QACC,SAAS;AAAA,QACT,MAAM;AAAA,QACN,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,WAAS;AAAA,QACR,GAAG;AAAA;AAAA,IACN,GACF;AAAA,IACC,cACC,8CAAC,eAAY,YAAU,MAAC,MAAM,iBAAiB,SAAS,MAAM,mBAAmB,KAAK,GAAG,WAAW,sBAAsB,IAC1H;AAAA,KACJ;AAEJ;","names":["import_icons_material","module","busy","ExtensionIcon","import_jsx_runtime","module","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","module","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","module","import_icons_material","import_jsx_runtime","module","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","module","HubRoundedIcon","import_icons_material","import_jsx_runtime","module","TimerRoundedIcon","import_icons_material","import_jsx_runtime","module","VisibilityRoundedIcon","import_jsx_runtime","module","import_jsx_runtime","module","ExpandMoreIcon","import_jsx_runtime","module","import_jsx_runtime","import_material","import_delay","import_react_flexbox","import_react_node","import_react","import_material","import_react_button","import_react_flexbox","import_react","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","module","busy"]}
@@ -59,6 +59,8 @@ import { ButtonGroup } from "@mui/material";
59
59
  import { ButtonEx as ButtonEx2 } from "@xylabs/react-button";
60
60
  import { FlexCol as FlexCol2, FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
61
61
  import { usePromise } from "@xylabs/react-promise";
62
+ import { ModuleDescriptionSchema } from "@xyo-network/module-model";
63
+ import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
62
64
  import { Property } from "@xyo-network/react-property";
63
65
 
64
66
  // src/components/JsonViewerButton.tsx
@@ -86,10 +88,11 @@ var ModuleDetails = ({ module, ...props }) => {
86
88
  return await (module == null ? void 0 : module.manifest());
87
89
  }, [module]);
88
90
  const [discover] = usePromise(async () => {
89
- return await (module == null ? void 0 : module.discover());
91
+ return await (module == null ? void 0 : module.state());
90
92
  }, [module]);
91
93
  const [describe] = usePromise(async () => {
92
- return await (module == null ? void 0 : module.describe());
94
+ const state = await (module == null ? void 0 : module.state());
95
+ return state == null ? void 0 : state.find(isPayloadOfSchemaType(ModuleDescriptionSchema));
93
96
  }, [module]);
94
97
  const queries = module == null ? void 0 : module.queries;
95
98
  const config = module == null ? void 0 : module.config;
@@ -117,7 +120,7 @@ import { isArchivistInstance } from "@xyo-network/archivist-model";
117
120
  import { isBridgeInstance } from "@xyo-network/bridge-model";
118
121
  import { isDivinerInstance } from "@xyo-network/diviner-model";
119
122
  import { isNodeInstance } from "@xyo-network/node-model";
120
- import { isSentinelInstance } from "@xyo-network/sentinel";
123
+ import { isSentinelInstance } from "@xyo-network/sentinel-model";
121
124
  import { isWitnessInstance } from "@xyo-network/witness-model";
122
125
 
123
126
  // src/components/DivinerSummary.tsx
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/ArchivistSummary.tsx","../../src/components/ModuleSummary.tsx","../../src/components/BridgeSummary.tsx","../../src/components/DebugDialog.tsx","../../src/components/NodeDetails.tsx","../../src/components/ModuleAccordion.tsx","../../src/components/ModuleDetails.tsx","../../src/components/JsonViewerButton.tsx","../../src/components/TypedModuleSummary.tsx","../../src/components/DivinerSummary.tsx","../../src/components/NodeSummary.tsx","../../src/components/SentinelSummary.tsx","../../src/components/WitnessSummary.tsx","../../src/components/PoweredByXyo.tsx","../../src/components/PoweredByXyoButton.tsx","../../src/img/index.ts","../../src/components/XyoBusy.tsx"],"sourcesContent":["import { Inventory2Rounded as Inventory2RoundedIcon } from '@mui/icons-material'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const ArchivistSummary: React.FC<ModuleSummaryProps<ArchivistInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<Inventory2RoundedIcon />} {...props} />\n}\n","import { Extension as ExtensionIcon } from '@mui/icons-material'\nimport { delay } from '@xylabs/delay'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport { ReactNode, useState } from 'react'\n\nexport interface ModuleSummaryProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n icon?: ReactNode\n module?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, module, ...props }) => {\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n module?.on('moduleBusy', async ({ busy }) => {\n setBusy(busy)\n await delay(2000)\n setBusy(false)\n })\n\n return (\n <FlexCol alignItems=\"stretch\" width=\"100%\" {...props}>\n <FlexRow justifyContent=\"flex-start\">\n <FlexRow>\n <TypographyEx color={busy ? 'gray' : undefined}>{icon ?? <ExtensionIcon />}</TypographyEx>\n <TypographyEx marginX={1}>{module?.config?.name ?? '<Unknown>'}</TypographyEx>\n </FlexRow>\n {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined) ?\n `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </FlexRow>\n </FlexCol>\n )\n}\n","import { InsertLinkRounded as InsertLinkRoundedIcon } from '@mui/icons-material'\nimport { BridgeInstance } from '@xyo-network/bridge-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { NodeDetails } from './NodeDetails'\n\nexport interface DebugDialogProps extends DialogProps {}\n\nexport const DebugDialog: React.FC<DebugDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Xyo Module Viewer</DialogTitle>\n <DialogContent>\n <NodeDetails width=\"100%\" />\n </DialogContent>\n <DialogActions>\n <Button onClick={(event) => onClose?.(event, 'backdropClick')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode, useProvidedNode } from '@xyo-network/react-node'\n\nimport { ModuleAccordion } from './ModuleAccordion'\nimport { ModuleDetailsProps } from './ModuleDetails'\n\nexport interface NodeViewerProps extends ModuleDetailsProps<NodeInstance> {}\n\nexport const NodeDetails: React.FC<NodeViewerProps> = ({ module, ...props }) => {\n const [node = module] = useProvidedNode()\n\n const [children] = useModulesFromNode(undefined, { node: node ?? undefined })\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {children ?\n <>\n <FlexCol alignItems=\"stretch\" marginY={1}>\n {children?.map((child) => <ModuleAccordion key={child.address} module={child} />)}\n </FlexCol>\n </>\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n module?: T\n}\n\nimport { Accordion, AccordionDetails, AccordionProps, AccordionSummary } from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails'\nimport { TypedModuleSummary } from './TypedModuleSummary'\n\nexport const ModuleAccordion: React.FC<ModuleAccordionProps> = ({ module, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary module={module} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails module={module} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n module?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await module?.manifest()\n }, [module])\n\n const [discover] = usePromise(async () => {\n return await module?.discover()\n }, [module])\n\n const [describe] = usePromise(async () => {\n return await module?.describe()\n }, [module])\n\n const queries = module?.queries\n\n const config = module?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={module?.address} />\n\n <FlexRow gap={1} justifyContent=\"space-between\">\n <ButtonGroup>\n {manifest ?\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n : null}\n {config ?\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n : null}\n {discover ?\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n : null}\n {describe ?\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n : null}\n {queries ?\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n : null}\n </ButtonGroup>\n <ButtonGroup>\n <ButtonEx target=\"_blank\" href={`https://explore.xyo.network/block?network=main&address=${module?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${module?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${module?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ module, ...props }) => {\n if (isArchivistInstance(module)) {\n return <ArchivistSummary module={module} {...props} />\n }\n if (isDivinerInstance(module)) {\n return <DivinerSummary module={module} {...props} />\n }\n if (isNodeInstance(module)) {\n return <NodeSummary module={module} {...props} />\n }\n if (isWitnessInstance(module)) {\n return <WitnessSummary module={module} {...props} />\n }\n if (isBridgeInstance(module)) {\n return <BridgeSummary module={module} {...props} />\n }\n if (isSentinelInstance(module)) {\n return <SentinelSummary module={module} {...props} />\n }\n return <ModuleSummary module={module} {...props} />\n}\n","import { BubbleChartRounded as BubbleChartRoundedIcon } from '@mui/icons-material'\nimport { DivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const DivinerSummary: React.FC<ModuleSummaryProps<DivinerInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<BubbleChartRoundedIcon />} {...props} />\n}\n","import { HubRounded as HubRoundedIcon } from '@mui/icons-material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { NodeManifest } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await module?.manifest()) as NodeManifest\n }, [module])\n\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n const manifestPublicModules = manifest?.modules?.public?.length\n\n return (\n <ModuleSummary module={module} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<TimerRoundedIcon />} {...props} />\n}\n","import { VisibilityRounded as VisibilityRoundedIcon } from '@mui/icons-material'\nimport { WitnessInstance } from '@xyo-network/witness-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const WitnessSummary: React.FC<ModuleSummaryProps<WitnessInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<VisibilityRoundedIcon />} {...props} />\n}\n","import { Paper } from '@mui/material'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ButtonExProps } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { Module } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport { KeyboardEvent, useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog'\nimport { PoweredByXyoButton, PoweredByXyoButtonProps } from './PoweredByXyoButton'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: PoweredByXyoButtonProps\n debugDialog?: boolean\n disableAnimation?: boolean\n href?: ButtonExProps['href']\n logoHeight?: number\n logoTextSize?: number\n node?: NodeInstance\n onButtonClick?: ButtonExProps['onClick']\n}\n\nexport const PoweredByXyo: React.FC<PoweredByXyoProps> = ({\n autoStop,\n busy,\n buttonProps = {},\n debugDialog = false,\n disableAnimation = false,\n href = 'https://xyo.network',\n logoHeight,\n logoTextSize,\n onButtonClick,\n node: propNode,\n ...props\n}) => {\n const [node] = useProvidedNode()\n const [debugDialogOpen, setDebugDialogOpen] = useState(false)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const busyMap: Record<string, boolean> = useMemo(() => ({}), [node])\n\n const activeBusy = busy ?? Object.values(busyMap).includes(true)\n\n const activeOnButtonClick: PoweredByXyoProps['onButtonClick'] =\n (debugDialog ?\n (event) => {\n if (event.shiftKey && event.altKey) {\n setDebugDialogOpen(true)\n } else if (href) {\n window.open(href)\n }\n }\n : undefined) ?? onButtonClick\n\n const activeHref = activeOnButtonClick ? undefined : href\n\n const onKeyDownEscListener = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && debugDialogOpen) {\n setDebugDialogOpen(false)\n }\n }\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const activeNode = propNode ?? node\n if (disableAnimation) {\n return\n } else if (activeNode) {\n const mods = await activeNode?.resolve('*')\n mods?.map((mod) => {\n mod.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n }\n },\n [disableAnimation, propNode, node, busyMap, autoStop],\n )\n\n return (\n <FlexCol alignItems=\"stretch\" position=\"absolute\" bottom=\"0\" left=\"0\" {...props}>\n <Paper sx={{ borderRadius: 0 }}>\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n </Paper>\n {debugDialog ?\n <DebugDialog fullScreen open={debugDialogOpen} onClose={() => setDebugDialogOpen(false)} onKeyDown={onKeyDownEscListener} />\n : null}\n </FlexCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogoText } from '../img'\nimport { XyoBusy } from './XyoBusy'\n\nexport interface PoweredByXyoButtonProps extends ButtonExProps {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n href,\n logoHeight,\n logoTextSize,\n sx,\n target = '_blank',\n variant = 'text',\n ...props\n}) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogoText\n return imageLoaded ?\n <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>\n <FlexCol padding={0.5}>\n <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize=\"small\">\n Powered by\n </Typography>\n <FlexRow>\n <XyoBusy busy={busy} />\n <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />\n </FlexRow>\n </FlexCol>\n </ButtonEx>\n : null\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\nexport { default as xyoColorLogoText } from './xyo-color-logo-text-only.svg'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogo } from '../img'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({ widthInPixels, busy, spinsPerSecond = 0.5, ...props }) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n if (!imageLoaded) {\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogo\n }\n return imageLoaded ?\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': {\n transform: 'rotate(360deg)',\n },\n '100%': {\n transform: 'rotate(0deg)',\n },\n },\n animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,\n animationDirection: 'reverse',\n }}\n {...props}\n >\n <img src={xyoColorLogo} height={widthInPixels ?? 22} />\n </FlexCol>\n : null\n}\n"],"mappings":"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","names":["busy","jsx","jsx","Dialog","DialogActions","DialogContent","DialogTitle","FlexCol","useModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useModulesFromNode","jsx","usePromise","useModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useModulesFromNode","FlexCol","jsx","jsxs","Dialog","DialogTitle","DialogContent","DialogActions","delay","FlexCol","useProvidedNode","useState","ButtonEx","FlexCol","FlexRow","useState","default","FlexCol","useState","jsx","useState","default","FlexCol","jsx","jsxs","useState","default","ButtonEx","FlexCol","FlexRow","jsx","jsxs","useProvidedNode","useState","busy","delay","FlexCol"]}
1
+ {"version":3,"sources":["../../src/components/ArchivistSummary.tsx","../../src/components/ModuleSummary.tsx","../../src/components/BridgeSummary.tsx","../../src/components/DebugDialog.tsx","../../src/components/NodeDetails.tsx","../../src/components/ModuleAccordion.tsx","../../src/components/ModuleDetails.tsx","../../src/components/JsonViewerButton.tsx","../../src/components/TypedModuleSummary.tsx","../../src/components/DivinerSummary.tsx","../../src/components/NodeSummary.tsx","../../src/components/SentinelSummary.tsx","../../src/components/WitnessSummary.tsx","../../src/components/PoweredByXyo.tsx","../../src/components/PoweredByXyoButton.tsx","../../src/img/index.ts","../../src/components/XyoBusy.tsx"],"sourcesContent":["import { Inventory2Rounded as Inventory2RoundedIcon } from '@mui/icons-material'\nimport { ArchivistInstance } from '@xyo-network/archivist-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const ArchivistSummary: React.FC<ModuleSummaryProps<ArchivistInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<Inventory2RoundedIcon />} {...props} />\n}\n","import { Extension as ExtensionIcon } from '@mui/icons-material'\nimport { delay } from '@xylabs/delay'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { ModuleInstance } from '@xyo-network/module-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport { ReactNode, useState } from 'react'\n\nexport interface ModuleSummaryProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n icon?: ReactNode\n module?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, module, ...props }) => {\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n module?.on('moduleBusy', async ({ busy }) => {\n setBusy(busy)\n await delay(2000)\n setBusy(false)\n })\n\n return (\n <FlexCol alignItems=\"stretch\" width=\"100%\" {...props}>\n <FlexRow justifyContent=\"flex-start\">\n <FlexRow>\n <TypographyEx color={busy ? 'gray' : undefined}>{icon ?? <ExtensionIcon />}</TypographyEx>\n <TypographyEx marginX={1}>{module?.config?.name ?? '<Unknown>'}</TypographyEx>\n </FlexRow>\n {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined) ?\n `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </FlexRow>\n </FlexCol>\n )\n}\n","import { InsertLinkRounded as InsertLinkRoundedIcon } from '@mui/icons-material'\nimport { BridgeInstance } from '@xyo-network/bridge-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import { Button, Dialog, DialogActions, DialogContent, DialogProps, DialogTitle } from '@mui/material'\n\nimport { NodeDetails } from './NodeDetails'\n\nexport interface DebugDialogProps extends DialogProps {}\n\nexport const DebugDialog: React.FC<DebugDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Xyo Module Viewer</DialogTitle>\n <DialogContent>\n <NodeDetails width=\"100%\" />\n </DialogContent>\n <DialogActions>\n <Button onClick={(event) => onClose?.(event, 'backdropClick')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode, useProvidedNode } from '@xyo-network/react-node'\n\nimport { ModuleAccordion } from './ModuleAccordion'\nimport { ModuleDetailsProps } from './ModuleDetails'\n\nexport interface NodeViewerProps extends ModuleDetailsProps<NodeInstance> {}\n\nexport const NodeDetails: React.FC<NodeViewerProps> = ({ module, ...props }) => {\n const [node = module] = useProvidedNode()\n\n const [children] = useModulesFromNode(undefined, { node: node ?? undefined })\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n {children ?\n <>\n <FlexCol alignItems=\"stretch\" marginY={1}>\n {children?.map((child) => <ModuleAccordion key={child.address} module={child} />)}\n </FlexCol>\n </>\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport { ModuleInstance } from '@xyo-network/module-model'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n module?: T\n}\n\nimport { Accordion, AccordionDetails, AccordionProps, AccordionSummary } from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails'\nimport { TypedModuleSummary } from './TypedModuleSummary'\n\nexport const ModuleAccordion: React.FC<ModuleAccordionProps> = ({ module, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary module={module} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails module={module} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n module?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await module?.manifest()\n }, [module])\n\n const [discover] = usePromise(async () => {\n return await module?.state()\n }, [module])\n\n const [describe] = usePromise(async () => {\n const state = await module?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [module])\n\n const queries = module?.queries\n\n const config = module?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={module?.address} />\n\n <FlexRow gap={1} justifyContent=\"space-between\">\n <ButtonGroup>\n {manifest ?\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n : null}\n {config ?\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n : null}\n {discover ?\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n : null}\n {describe ?\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n : null}\n {queries ?\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n : null}\n </ButtonGroup>\n <ButtonGroup>\n <ButtonEx target=\"_blank\" href={`https://explore.xyo.network/block?network=main&address=${module?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${module?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${module?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ module, ...props }) => {\n if (isArchivistInstance(module)) {\n return <ArchivistSummary module={module} {...props} />\n }\n if (isDivinerInstance(module)) {\n return <DivinerSummary module={module} {...props} />\n }\n if (isNodeInstance(module)) {\n return <NodeSummary module={module} {...props} />\n }\n if (isWitnessInstance(module)) {\n return <WitnessSummary module={module} {...props} />\n }\n if (isBridgeInstance(module)) {\n return <BridgeSummary module={module} {...props} />\n }\n if (isSentinelInstance(module)) {\n return <SentinelSummary module={module} {...props} />\n }\n return <ModuleSummary module={module} {...props} />\n}\n","import { BubbleChartRounded as BubbleChartRoundedIcon } from '@mui/icons-material'\nimport { DivinerInstance } from '@xyo-network/diviner-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const DivinerSummary: React.FC<ModuleSummaryProps<DivinerInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<BubbleChartRoundedIcon />} {...props} />\n}\n","import { HubRounded as HubRoundedIcon } from '@mui/icons-material'\nimport { usePromise } from '@xylabs/react-promise'\nimport { NodeManifest } from '@xyo-network/manifest'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ module, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await module?.manifest()) as NodeManifest\n }, [module])\n\n const [downModules] = useModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useModulesFromNode(undefined, { direction: 'up' })\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n const manifestPublicModules = manifest?.modules?.public?.length\n\n return (\n <ModuleSummary module={module} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<TimerRoundedIcon />} {...props} />\n}\n","import { VisibilityRounded as VisibilityRoundedIcon } from '@mui/icons-material'\nimport { WitnessInstance } from '@xyo-network/witness-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const WitnessSummary: React.FC<ModuleSummaryProps<WitnessInstance>> = ({ module, ...props }) => {\n return <ModuleSummary module={module} icon={<VisibilityRoundedIcon />} {...props} />\n}\n","import { Paper } from '@mui/material'\nimport { delay } from '@xylabs/delay'\nimport { forget } from '@xylabs/forget'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { ButtonExProps } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { Module } from '@xyo-network/module-model'\nimport { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport { KeyboardEvent, useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog'\nimport { PoweredByXyoButton, PoweredByXyoButtonProps } from './PoweredByXyoButton'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: PoweredByXyoButtonProps\n debugDialog?: boolean\n disableAnimation?: boolean\n href?: ButtonExProps['href']\n logoHeight?: number\n logoTextSize?: number\n node?: NodeInstance\n onButtonClick?: ButtonExProps['onClick']\n}\n\nexport const PoweredByXyo: React.FC<PoweredByXyoProps> = ({\n autoStop,\n busy,\n buttonProps = {},\n debugDialog = false,\n disableAnimation = false,\n href = 'https://xyo.network',\n logoHeight,\n logoTextSize,\n onButtonClick,\n node: propNode,\n ...props\n}) => {\n const [node] = useProvidedNode()\n const [debugDialogOpen, setDebugDialogOpen] = useState(false)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const busyMap: Record<string, boolean> = useMemo(() => ({}), [node])\n\n const activeBusy = busy ?? Object.values(busyMap).includes(true)\n\n const activeOnButtonClick: PoweredByXyoProps['onButtonClick'] =\n (debugDialog ?\n (event) => {\n if (event.shiftKey && event.altKey) {\n setDebugDialogOpen(true)\n } else if (href) {\n window.open(href)\n }\n }\n : undefined) ?? onButtonClick\n\n const activeHref = activeOnButtonClick ? undefined : href\n\n const onKeyDownEscListener = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && debugDialogOpen) {\n setDebugDialogOpen(false)\n }\n }\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n const activeNode = propNode ?? node\n if (disableAnimation) {\n return\n } else if (activeNode) {\n const mods = await activeNode?.resolve('*')\n mods?.map((mod) => {\n mod.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module, busy }) => {\n busyMap[(module as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(module as Module).address] = false\n })(),\n )\n }\n })\n }\n },\n [disableAnimation, propNode, node, busyMap, autoStop],\n )\n\n return (\n <FlexCol alignItems=\"stretch\" position=\"absolute\" bottom=\"0\" left=\"0\" {...props}>\n <Paper sx={{ borderRadius: 0 }}>\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n </Paper>\n {debugDialog ?\n <DebugDialog fullScreen open={debugDialogOpen} onClose={() => setDebugDialogOpen(false)} onKeyDown={onKeyDownEscListener} />\n : null}\n </FlexCol>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogoText } from '../img'\nimport { XyoBusy } from './XyoBusy'\n\nexport interface PoweredByXyoButtonProps extends ButtonExProps {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n href,\n logoHeight,\n logoTextSize,\n sx,\n target = '_blank',\n variant = 'text',\n ...props\n}) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogoText\n return imageLoaded ?\n <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>\n <FlexCol padding={0.5}>\n <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize=\"small\">\n Powered by\n </Typography>\n <FlexRow>\n <XyoBusy busy={busy} />\n <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />\n </FlexRow>\n </FlexCol>\n </ButtonEx>\n : null\n}\n","export { default as xyoColorLogo } from './xyo-color-logo.svg'\nexport { default as xyoColorLogoText } from './xyo-color-logo-text-only.svg'\n","import { FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { useState } from 'react'\n\nimport { xyoColorLogo } from '../img'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({ widthInPixels, busy, spinsPerSecond = 0.5, ...props }) => {\n //preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n if (!imageLoaded) {\n const img = new Image()\n img.addEventListener('load', () => setImageLoaded(true))\n img.src = xyoColorLogo\n }\n return imageLoaded ?\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': {\n transform: 'rotate(360deg)',\n },\n '100%': {\n transform: 'rotate(0deg)',\n },\n },\n animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,\n animationDirection: 'reverse',\n }}\n {...props}\n >\n <img src={xyoColorLogo} height={widthInPixels ?? 22} />\n </FlexCol>\n : null\n}\n"],"mappings":"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","names":["busy","jsx","jsx","Dialog","DialogActions","DialogContent","DialogTitle","FlexCol","useModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useModulesFromNode","jsx","usePromise","useModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useModulesFromNode","FlexCol","jsx","jsxs","Dialog","DialogTitle","DialogContent","DialogActions","delay","FlexCol","useProvidedNode","useState","ButtonEx","FlexCol","FlexRow","useState","default","FlexCol","useState","jsx","useState","default","FlexCol","jsx","jsxs","useState","default","ButtonEx","FlexCol","FlexRow","jsx","jsxs","useProvidedNode","useState","busy","delay","FlexCol"]}
package/package.json CHANGED
@@ -10,24 +10,25 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/delay": "^3.0.24",
14
- "@xylabs/forget": "^3.0.24",
13
+ "@xylabs/delay": "^3.0.25",
14
+ "@xylabs/forget": "^3.0.25",
15
15
  "@xylabs/react-async-effect": "^3.1.6",
16
16
  "@xylabs/react-button": "^3.1.6",
17
17
  "@xylabs/react-flexbox": "^3.1.6",
18
18
  "@xylabs/react-promise": "^3.1.6",
19
- "@xyo-network/archivist-model": "^2.93.8",
20
- "@xyo-network/bridge-model": "^2.93.8",
21
- "@xyo-network/diviner-model": "^2.93.8",
22
- "@xyo-network/manifest": "^2.93.8",
23
- "@xyo-network/module-model": "^2.93.8",
24
- "@xyo-network/node-model": "^2.93.8",
25
- "@xyo-network/react-node": "~2.71.2",
26
- "@xyo-network/react-payload-raw-info": "~2.71.2",
27
- "@xyo-network/react-property": "~2.71.2",
28
- "@xyo-network/react-shared": "~2.71.2",
29
- "@xyo-network/sentinel": "^2.93.8",
30
- "@xyo-network/witness-model": "^2.93.8"
19
+ "@xyo-network/archivist-model": "^2.94.9",
20
+ "@xyo-network/bridge-model": "^2.94.9",
21
+ "@xyo-network/diviner-model": "^2.94.9",
22
+ "@xyo-network/manifest": "^2.94.9",
23
+ "@xyo-network/module-model": "^2.94.9",
24
+ "@xyo-network/node-model": "^2.94.9",
25
+ "@xyo-network/payload-model": "^2.94.9",
26
+ "@xyo-network/react-node": "~2.71.4",
27
+ "@xyo-network/react-payload-raw-info": "~2.71.4",
28
+ "@xyo-network/react-property": "~2.71.4",
29
+ "@xyo-network/react-shared": "~2.71.4",
30
+ "@xyo-network/sentinel-model": "^2.94.9",
31
+ "@xyo-network/witness-model": "^2.94.9"
31
32
  },
32
33
  "peerDependencies": {
33
34
  "@emotion/react": "^11",
@@ -40,8 +41,8 @@
40
41
  },
41
42
  "devDependencies": {
42
43
  "@storybook/react": "^7.6.17",
43
- "@xylabs/ts-scripts-yarn3": "^3.5.2",
44
- "@xyo-network/account": "^2.93.8",
44
+ "@xylabs/ts-scripts-yarn3": "^3.9.0",
45
+ "@xyo-network/account": "^2.94.9",
45
46
  "typescript": "^5.4.3"
46
47
  },
47
48
  "description": "Common React library for all XYO projects that use React",
@@ -95,6 +96,6 @@
95
96
  },
96
97
  "sideEffects": false,
97
98
  "types": "dist/browser/index.d.ts",
98
- "version": "2.71.2",
99
+ "version": "2.71.4",
99
100
  "type": "module"
100
101
  }
@@ -2,7 +2,8 @@ import { ButtonGroup } from '@mui/material'
2
2
  import { ButtonEx } from '@xylabs/react-button'
3
3
  import { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'
4
4
  import { usePromise } from '@xylabs/react-promise'
5
- import { ModuleInstance } from '@xyo-network/module-model'
5
+ import { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'
6
+ import { isPayloadOfSchemaType } from '@xyo-network/payload-model'
6
7
  import { Property } from '@xyo-network/react-property'
7
8
 
8
9
  import { JsonViewerButton } from './JsonViewerButton'
@@ -17,11 +18,12 @@ export const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }
17
18
  }, [module])
18
19
 
19
20
  const [discover] = usePromise(async () => {
20
- return await module?.discover()
21
+ return await module?.state()
21
22
  }, [module])
22
23
 
23
24
  const [describe] = usePromise(async () => {
24
- return await module?.describe()
25
+ const state = await module?.state()
26
+ return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))
25
27
  }, [module])
26
28
 
27
29
  const queries = module?.queries
@@ -1,5 +1,5 @@
1
1
  import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'
2
- import { SentinelInstance } from '@xyo-network/sentinel'
2
+ import { SentinelInstance } from '@xyo-network/sentinel-model'
3
3
 
4
4
  import { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'
5
5
 
@@ -2,7 +2,7 @@ import { isArchivistInstance } from '@xyo-network/archivist-model'
2
2
  import { isBridgeInstance } from '@xyo-network/bridge-model'
3
3
  import { isDivinerInstance } from '@xyo-network/diviner-model'
4
4
  import { isNodeInstance } from '@xyo-network/node-model'
5
- import { isSentinelInstance } from '@xyo-network/sentinel'
5
+ import { isSentinelInstance } from '@xyo-network/sentinel-model'
6
6
  import { isWitnessInstance } from '@xyo-network/witness-model'
7
7
 
8
8
  import { ArchivistSummary } from './ArchivistSummary'