@xyo-network/react-powered-by-xyo 2.68.2 → 2.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAkB5D,CAAA"}
1
+ {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoB5D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAkB5D,CAAA"}
1
+ {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoB5D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAkB5D,CAAA"}
1
+ {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoB5D,CAAA"}
@@ -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 { useState } from 'react'\nimport JsonView, { ReactJsonViewProps } from 'react-json-view'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<ReactJsonViewProps>\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 ? <DialogTitle>{title}</DialogTitle> : null}\n <DialogContent>\n <JsonView src={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","JsonView","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 { 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 { useState } from 'react'\nimport JsonView, { ReactJsonViewProps } from 'react-json-view'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<ReactJsonViewProps>\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 <JsonView src={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","JsonView","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 +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 { useState } from 'react'\nimport JsonView, { ReactJsonViewProps } from 'react-json-view'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<ReactJsonViewProps>\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 ? <DialogTitle>{title}</DialogTitle> : null}\n <DialogContent>\n <JsonView src={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 { 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 { useState } from 'react'\nimport JsonView, { ReactJsonViewProps } from 'react-json-view'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<ReactJsonViewProps>\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 <JsonView src={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 +1 @@
1
- {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAkB5D,CAAA"}
1
+ {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoB5D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAkB5D,CAAA"}
1
+ {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoB5D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAkB5D,CAAA"}
1
+ {"version":3,"file":"JsonViewerButton.d.ts","sourceRoot":"","sources":["../../../src/components/JsonViewerButton.tsx"],"names":[],"mappings":";AACA,OAAO,EAAY,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE9D,OAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAE9D,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,aAAa,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAoB5D,CAAA"}
@@ -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 { useState } from 'react'\nimport JsonView, { ReactJsonViewProps } from 'react-json-view'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<ReactJsonViewProps>\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 ? <DialogTitle>{title}</DialogTitle> : null}\n <DialogContent>\n <JsonView src={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,UAC3E,IAAI,sBAAsB,UAAK,oBAAoB,YACnD;AAAA,KACN,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,IAAAC,gBAAyB;AACzB,6BAA6C;AAUzC,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,cAAQ,6CAAC,+BAAa,iBAAM,IAAiB;AAAA,MAC9C,6CAAC,iCACC,uDAAC,uBAAAC,SAAA,EAAS,KAAW,GAAG,eAAe,GACzC;AAAA,MACA,6CAAC,iCACC,uDAAC,gCAAS,SAAS,MAAM,QAAQ,KAAK,GAAG,mBAAK,GAChD;AAAA,OACF;AAAA,KACF;AAEJ;;;ADIM,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,IACE;AAAA,QACH,SACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,QAAQ,oBAEnD,IACE;AAAA,QACH,WACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACE;AAAA,QACH,WACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACE;AAAA,QACH,UACC,6CAAC,oBAAiB,SAAQ,aAAY,KAAK,SAAS,qBAEpD,IACE;AAAA,SACN;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,SACrG,IAAI,qBAAqB,KAAK,sBAAsB,UAAK,oBAAoB,YAC7E,MACN;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,IACE,MACN;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;AAkCnB,IAAAC,uBAAA;AAxBC,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,cACL;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,IACE;AACN;;;AFNQ,IAAAC,uBAAA;AAlBD,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,cACL,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,IACE;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,cACG,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;AAEpB,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;AAC/B,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,IACxH;AAAA,KACN;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","JsonView","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 { 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 { useState } from 'react'\nimport JsonView, { ReactJsonViewProps } from 'react-json-view'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<ReactJsonViewProps>\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 <JsonView src={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","JsonView","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 +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 { useState } from 'react'\nimport JsonView, { ReactJsonViewProps } from 'react-json-view'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<ReactJsonViewProps>\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 ? <DialogTitle>{title}</DialogTitle> : null}\n <DialogContent>\n <JsonView src={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 { 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 { useState } from 'react'\nimport JsonView, { ReactJsonViewProps } from 'react-json-view'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<ReactJsonViewProps>\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 <JsonView src={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"]}
package/package.json CHANGED
@@ -10,23 +10,23 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xylabs/delay": "^2.14.2",
14
- "@xylabs/forget": "^2.14.2",
15
- "@xylabs/react-async-effect": "^3.0.39",
16
- "@xylabs/react-button": "^3.0.39",
17
- "@xylabs/react-flexbox": "^3.0.39",
18
- "@xylabs/react-promise": "^3.0.39",
19
- "@xyo-network/archivist-model": "^2.90.18",
20
- "@xyo-network/bridge-model": "^2.90.18",
21
- "@xyo-network/diviner-model": "^2.90.18",
22
- "@xyo-network/manifest": "^2.90.18",
23
- "@xyo-network/module-model": "^2.90.18",
24
- "@xyo-network/node-model": "^2.90.18",
25
- "@xyo-network/react-node": "~2.68.2",
26
- "@xyo-network/react-property": "~2.68.2",
27
- "@xyo-network/react-shared": "~2.68.2",
28
- "@xyo-network/sentinel": "^2.90.18",
29
- "@xyo-network/witness-model": "^2.90.18",
13
+ "@xylabs/delay": "^3.0.1",
14
+ "@xylabs/forget": "^3.0.1",
15
+ "@xylabs/react-async-effect": "^3.1.0",
16
+ "@xylabs/react-button": "^3.1.0",
17
+ "@xylabs/react-flexbox": "^3.1.0",
18
+ "@xylabs/react-promise": "^3.1.0",
19
+ "@xyo-network/archivist-model": "^2.91.0",
20
+ "@xyo-network/bridge-model": "^2.91.0",
21
+ "@xyo-network/diviner-model": "^2.91.0",
22
+ "@xyo-network/manifest": "^2.91.0",
23
+ "@xyo-network/module-model": "^2.91.0",
24
+ "@xyo-network/node-model": "^2.91.0",
25
+ "@xyo-network/react-node": "~2.69.0",
26
+ "@xyo-network/react-property": "~2.69.0",
27
+ "@xyo-network/react-shared": "~2.69.0",
28
+ "@xyo-network/sentinel": "^2.91.0",
29
+ "@xyo-network/witness-model": "^2.91.0",
30
30
  "react-json-view": "^1.21.3"
31
31
  },
32
32
  "peerDependencies": {
@@ -38,8 +38,8 @@
38
38
  },
39
39
  "devDependencies": {
40
40
  "@storybook/react": "^7.6.16",
41
- "@xylabs/ts-scripts-yarn3": "^3.2.42",
42
- "@xyo-network/account": "^2.90.18",
41
+ "@xylabs/ts-scripts-yarn3": "^3.4.1",
42
+ "@xyo-network/account": "^2.91.0",
43
43
  "typescript": "^5.3.3"
44
44
  },
45
45
  "description": "Common React library for all XYO projects that use React",
@@ -93,6 +93,6 @@
93
93
  },
94
94
  "sideEffects": false,
95
95
  "types": "dist/browser/index.d.ts",
96
- "version": "2.68.2",
96
+ "version": "2.69.0",
97
97
  "type": "module"
98
98
  }
@@ -16,7 +16,9 @@ export const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, js
16
16
  {children ?? 'JSON'}
17
17
  </ButtonEx>
18
18
  <Dialog open={open} onClose={() => setOpen(false)}>
19
- {title ? <DialogTitle>{title}</DialogTitle> : null}
19
+ {title ?
20
+ <DialogTitle>{title}</DialogTitle>
21
+ : null}
20
22
  <DialogContent>
21
23
  <JsonView src={src} {...jsonViewProps} />
22
24
  </DialogContent>
@@ -34,31 +34,31 @@ export const ModuleDetails: React.FC<ModuleDetailsProps> = ({ module, ...props }
34
34
 
35
35
  <FlexRow gap={1} justifyContent="space-between">
36
36
  <ButtonGroup>
37
- {manifest ? (
37
+ {manifest ?
38
38
  <JsonViewerButton variant="contained" src={manifest}>
39
39
  Manifest
40
40
  </JsonViewerButton>
41
- ) : null}
42
- {config ? (
41
+ : null}
42
+ {config ?
43
43
  <JsonViewerButton variant="contained" src={config}>
44
44
  Config
45
45
  </JsonViewerButton>
46
- ) : null}
47
- {discover ? (
46
+ : null}
47
+ {discover ?
48
48
  <JsonViewerButton variant="contained" src={discover}>
49
49
  Discover
50
50
  </JsonViewerButton>
51
- ) : null}
52
- {describe ? (
51
+ : null}
52
+ {describe ?
53
53
  <JsonViewerButton variant="contained" src={describe}>
54
54
  Describe
55
55
  </JsonViewerButton>
56
- ) : null}
57
- {queries ? (
56
+ : null}
57
+ {queries ?
58
58
  <JsonViewerButton variant="contained" src={queries}>
59
59
  Queries
60
60
  </JsonViewerButton>
61
- ) : null}
61
+ : null}
62
62
  </ButtonGroup>
63
63
  <ButtonGroup>
64
64
  <ButtonEx target="_blank" href={`https://explore.xyo.network/block?network=main&address=${module?.address}`} variant="outlined">
@@ -32,9 +32,9 @@ export const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mo
32
32
  <TypographyEx color={busy ? 'gray' : undefined}>{icon ?? <ExtensionIcon />}</TypographyEx>
33
33
  <TypographyEx marginX={1}>{module?.config?.name ?? '<Unknown>'}</TypographyEx>
34
34
  </FlexRow>
35
- {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined)
36
- ? `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`
37
- : null}
35
+ {children ?? (downModulesFromResolve !== undefined && upModulesFromResolve !== undefined) ?
36
+ `[${downModulesFromResolve}↓/${upModulesFromResolve}↑]`
37
+ : null}
38
38
  </FlexRow>
39
39
  </FlexCol>
40
40
  )
@@ -14,13 +14,13 @@ export const NodeDetails: React.FC<NodeViewerProps> = ({ module, ...props }) =>
14
14
 
15
15
  return (
16
16
  <FlexCol alignItems="stretch" {...props}>
17
- {children ? (
17
+ {children ?
18
18
  <>
19
19
  <FlexCol alignItems="stretch" marginY={1}>
20
20
  {children?.map((child) => <ModuleAccordion key={child.address} module={child} />)}
21
21
  </FlexCol>
22
22
  </>
23
- ) : null}
23
+ : null}
24
24
  </FlexCol>
25
25
  )
26
26
  }
@@ -21,9 +21,9 @@ export const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ module
21
21
 
22
22
  return (
23
23
  <ModuleSummary module={module} icon={<HubRoundedIcon />} {...props}>
24
- {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined
25
- ? `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`
26
- : null}
24
+ {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?
25
+ `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`
26
+ : null}
27
27
  </ModuleSummary>
28
28
  )
29
29
  }
@@ -47,15 +47,15 @@ export const PoweredByXyo: React.FC<PoweredByXyoProps> = ({
47
47
  const activeBusy = busy ?? Object.values(busyMap).includes(true)
48
48
 
49
49
  const activeOnButtonClick: PoweredByXyoProps['onButtonClick'] =
50
- (debugDialog
51
- ? (event) => {
52
- if (event.shiftKey && event.altKey) {
53
- setDebugDialogOpen(true)
54
- } else if (href) {
55
- window.open(href)
56
- }
50
+ (debugDialog ?
51
+ (event) => {
52
+ if (event.shiftKey && event.altKey) {
53
+ setDebugDialogOpen(true)
54
+ } else if (href) {
55
+ window.open(href)
57
56
  }
58
- : undefined) ?? onButtonClick
57
+ }
58
+ : undefined) ?? onButtonClick
59
59
 
60
60
  const activeHref = activeOnButtonClick ? undefined : href
61
61
 
@@ -115,9 +115,9 @@ export const PoweredByXyo: React.FC<PoweredByXyoProps> = ({
115
115
  {...buttonProps}
116
116
  />
117
117
  </Paper>
118
- {debugDialog ? (
118
+ {debugDialog ?
119
119
  <DebugDialog fullScreen open={debugDialogOpen} onClose={() => setDebugDialogOpen(false)} onKeyDown={onKeyDownEscListener} />
120
- ) : null}
120
+ : null}
121
121
  </FlexCol>
122
122
  )
123
123
  }
@@ -27,17 +27,17 @@ export const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({
27
27
  const img = new Image()
28
28
  img.addEventListener('load', () => setImageLoaded(true))
29
29
  img.src = xyoColorLogoText
30
- return imageLoaded ? (
31
- <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>
32
- <FlexCol padding={0.5}>
33
- <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize="small">
34
- Powered by
35
- </Typography>
36
- <FlexRow>
37
- <XyoBusy busy={busy} />
38
- <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />
39
- </FlexRow>
40
- </FlexCol>
41
- </ButtonEx>
42
- ) : null
30
+ return imageLoaded ?
31
+ <ButtonEx href={href} target={target} variant={variant} sx={{ borderRadius: 0, padding: 0, ...sx }} {...props}>
32
+ <FlexCol padding={0.5}>
33
+ <Typography style={{ fontSize: logoTextSize ?? 10 }} fontSize="small">
34
+ Powered by
35
+ </Typography>
36
+ <FlexRow>
37
+ <XyoBusy busy={busy} />
38
+ <img src={xyoColorLogoText} height={logoHeight ?? 24} width={45} />
39
+ </FlexRow>
40
+ </FlexCol>
41
+ </ButtonEx>
42
+ : null
43
43
  }
@@ -17,23 +17,23 @@ export const XyoBusy: React.FC<XyoBusyProps> = ({ widthInPixels, busy, spinsPerS
17
17
  img.addEventListener('load', () => setImageLoaded(true))
18
18
  img.src = xyoColorLogo
19
19
  }
20
- return imageLoaded ? (
21
- <FlexCol
22
- sx={{
23
- '@keyframes spin': {
24
- '0%': {
25
- transform: 'rotate(360deg)',
20
+ return imageLoaded ?
21
+ <FlexCol
22
+ sx={{
23
+ '@keyframes spin': {
24
+ '0%': {
25
+ transform: 'rotate(360deg)',
26
+ },
27
+ '100%': {
28
+ transform: 'rotate(0deg)',
29
+ },
26
30
  },
27
- '100%': {
28
- transform: 'rotate(0deg)',
29
- },
30
- },
31
- animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,
32
- animationDirection: 'reverse',
33
- }}
34
- {...props}
35
- >
36
- <img src={xyoColorLogo} height={widthInPixels ?? 22} />
37
- </FlexCol>
38
- ) : null
31
+ animation: busy ? `spin ${1 / spinsPerSecond}s linear infinite` : undefined,
32
+ animationDirection: 'reverse',
33
+ }}
34
+ {...props}
35
+ >
36
+ <img src={xyoColorLogo} height={widthInPixels ?? 22} />
37
+ </FlexCol>
38
+ : null
39
39
  }