@xyo-network/react-powered-by-xyo 2.78.3 → 2.80.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.cjs +2 -2
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +2 -2
- package/dist/browser/index.js.map +1 -1
- package/dist/neutral/index.cjs +2 -2
- package/dist/neutral/index.cjs.map +1 -1
- package/dist/neutral/index.js +2 -2
- package/dist/neutral/index.js.map +1 -1
- package/dist/node/index.cjs +2 -2
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +2 -2
- package/dist/node/index.js.map +1 -1
- package/package.json +16 -16
- package/src/components/PoweredByXyo.tsx +2 -2
package/dist/browser/index.cjs
CHANGED
|
@@ -380,7 +380,7 @@ var PoweredByXyo = ({
|
|
|
380
380
|
} else if (activeNode) {
|
|
381
381
|
const mods = await activeNode?.resolve("*");
|
|
382
382
|
mods?.map((mod) => {
|
|
383
|
-
mod.on("moduleBusy", ({
|
|
383
|
+
mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
|
|
384
384
|
busyMap[mod2.address] = busy2;
|
|
385
385
|
if (autoStop) {
|
|
386
386
|
(0, import_forget.forget)(
|
|
@@ -392,7 +392,7 @@ var PoweredByXyo = ({
|
|
|
392
392
|
}
|
|
393
393
|
});
|
|
394
394
|
});
|
|
395
|
-
activeNode?.on("moduleBusy", ({
|
|
395
|
+
activeNode?.on("moduleBusy", ({ mod, busy: busy2 }) => {
|
|
396
396
|
busyMap[mod.address] = busy2;
|
|
397
397
|
if (autoStop) {
|
|
398
398
|
(0, import_forget.forget)(
|
|
@@ -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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","busy","ExtensionIcon","import_jsx_runtime","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_jsx_runtime","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","HubRoundedIcon","import_icons_material","import_jsx_runtime","TimerRoundedIcon","import_icons_material","import_jsx_runtime","VisibilityRoundedIcon","import_jsx_runtime","import_jsx_runtime","ExpandMoreIcon","import_jsx_runtime","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","mod","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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","busy","ExtensionIcon","import_jsx_runtime","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_jsx_runtime","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","HubRoundedIcon","import_icons_material","import_jsx_runtime","TimerRoundedIcon","import_icons_material","import_jsx_runtime","VisibilityRoundedIcon","import_jsx_runtime","import_jsx_runtime","ExpandMoreIcon","import_jsx_runtime","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","mod","busy"]}
|
package/dist/browser/index.js
CHANGED
|
@@ -331,7 +331,7 @@ var PoweredByXyo = ({
|
|
|
331
331
|
} else if (activeNode) {
|
|
332
332
|
const mods = await activeNode?.resolve("*");
|
|
333
333
|
mods?.map((mod) => {
|
|
334
|
-
mod.on("moduleBusy", ({
|
|
334
|
+
mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
|
|
335
335
|
busyMap[mod2.address] = busy2;
|
|
336
336
|
if (autoStop) {
|
|
337
337
|
forget(
|
|
@@ -343,7 +343,7 @@ var PoweredByXyo = ({
|
|
|
343
343
|
}
|
|
344
344
|
});
|
|
345
345
|
});
|
|
346
|
-
activeNode?.on("moduleBusy", ({
|
|
346
|
+
activeNode?.on("moduleBusy", ({ mod, busy: busy2 }) => {
|
|
347
347
|
busyMap[mod.address] = busy2;
|
|
348
348
|
if (autoStop) {
|
|
349
349
|
forget(
|
|
@@ -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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","useWeakModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useWeakModulesFromNode","jsx","usePromise","useWeakModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useWeakModulesFromNode","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","mod","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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","useWeakModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useWeakModulesFromNode","jsx","usePromise","useWeakModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useWeakModulesFromNode","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","mod","busy","delay","FlexCol"]}
|
package/dist/neutral/index.cjs
CHANGED
|
@@ -380,7 +380,7 @@ var PoweredByXyo = ({
|
|
|
380
380
|
} else if (activeNode) {
|
|
381
381
|
const mods = await activeNode?.resolve("*");
|
|
382
382
|
mods?.map((mod) => {
|
|
383
|
-
mod.on("moduleBusy", ({
|
|
383
|
+
mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
|
|
384
384
|
busyMap[mod2.address] = busy2;
|
|
385
385
|
if (autoStop) {
|
|
386
386
|
(0, import_forget.forget)(
|
|
@@ -392,7 +392,7 @@ var PoweredByXyo = ({
|
|
|
392
392
|
}
|
|
393
393
|
});
|
|
394
394
|
});
|
|
395
|
-
activeNode?.on("moduleBusy", ({
|
|
395
|
+
activeNode?.on("moduleBusy", ({ mod, busy: busy2 }) => {
|
|
396
396
|
busyMap[mod.address] = busy2;
|
|
397
397
|
if (autoStop) {
|
|
398
398
|
(0, import_forget.forget)(
|
|
@@ -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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","busy","ExtensionIcon","import_jsx_runtime","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_jsx_runtime","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","HubRoundedIcon","import_icons_material","import_jsx_runtime","TimerRoundedIcon","import_icons_material","import_jsx_runtime","VisibilityRoundedIcon","import_jsx_runtime","import_jsx_runtime","ExpandMoreIcon","import_jsx_runtime","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","mod","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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","busy","ExtensionIcon","import_jsx_runtime","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_jsx_runtime","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","HubRoundedIcon","import_icons_material","import_jsx_runtime","TimerRoundedIcon","import_icons_material","import_jsx_runtime","VisibilityRoundedIcon","import_jsx_runtime","import_jsx_runtime","ExpandMoreIcon","import_jsx_runtime","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","mod","busy"]}
|
package/dist/neutral/index.js
CHANGED
|
@@ -331,7 +331,7 @@ var PoweredByXyo = ({
|
|
|
331
331
|
} else if (activeNode) {
|
|
332
332
|
const mods = await activeNode?.resolve("*");
|
|
333
333
|
mods?.map((mod) => {
|
|
334
|
-
mod.on("moduleBusy", ({
|
|
334
|
+
mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
|
|
335
335
|
busyMap[mod2.address] = busy2;
|
|
336
336
|
if (autoStop) {
|
|
337
337
|
forget(
|
|
@@ -343,7 +343,7 @@ var PoweredByXyo = ({
|
|
|
343
343
|
}
|
|
344
344
|
});
|
|
345
345
|
});
|
|
346
|
-
activeNode?.on("moduleBusy", ({
|
|
346
|
+
activeNode?.on("moduleBusy", ({ mod, busy: busy2 }) => {
|
|
347
347
|
busyMap[mod.address] = busy2;
|
|
348
348
|
if (autoStop) {
|
|
349
349
|
forget(
|
|
@@ -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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","useWeakModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useWeakModulesFromNode","jsx","usePromise","useWeakModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useWeakModulesFromNode","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","mod","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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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,SAAS,qBAAqB,6BAA6B;;;ACA3D,SAAS,aAAa,qBAAqB;AAC3C,SAAS,aAAa;AACtB,SAAuB,SAAS,eAAe;AAE/C,SAAS,8BAA8B;AACvC,SAAS,oBAAoB;AAC7B,SAAoB,gBAAgB;AAwB5B,SAC2D,KAD3D;AAjBD,IAAM,gBAA8C,CAAC,EAAE,UAAU,MAAM,KAAK,GAAG,MAAM,MAAM;AAChG,QAAM,CAAC,WAAW,IAAI,uBAAuB,QAAW,EAAE,WAAW,OAAO,CAAC;AAC7E,QAAM,CAAC,SAAS,IAAI,uBAAuB,QAAW,EAAE,WAAW,KAAK,CAAC;AACzE,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC,QAAM,yBAAyB,aAAa;AAC5C,QAAM,uBAAuB,WAAW;AAExC,OAAK,GAAG,cAAc,OAAO,EAAE,MAAAA,MAAK,MAAM;AACxC,YAAQA,KAAI;AACZ,UAAM,MAAM,GAAI;AAChB,YAAQ,KAAK;AAAA,EACf,CAAC;AAED,SACE,oBAAC,WAAQ,YAAW,WAAU,OAAM,QAAQ,GAAG,OAC7C,+BAAC,WAAQ,gBAAe,cACtB;AAAA,yBAAC,WACC;AAAA,0BAAC,gBAAa,OAAO,OAAO,SAAS,QAAY,kBAAQ,oBAAC,iBAAc,GAAG;AAAA,MAC3E,oBAAC,gBAAa,SAAS,GAAI,eAAK,QAAQ,QAAQ,aAAY;AAAA,OAC9D;AAAA,IACC,aAAa,2BAA2B,UAAa,yBAAyB,UAC7E,IAAI,sBAAsB,UAAK,oBAAoB,YACnD;AAAA,KACJ,GACF;AAEJ;;;ADlCwC,gBAAAC,YAAA;AADjC,IAAM,mBAAoE,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AACtG,SAAO,gBAAAA,KAAC,iBAAc,KAAU,MAAM,gBAAAA,KAAC,yBAAsB,GAAK,GAAG,OAAO;AAC9E;;;AEPA,SAAS,qBAAqB,6BAA6B;AAMnB,gBAAAC,YAAA;AADjC,IAAM,gBAA8D,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AAChG,SAAO,gBAAAA,KAAC,iBAAc,KAAU,MAAM,gBAAAA,KAAC,yBAAsB,GAAK,GAAG,OAAO;AAC9E;;;ACPA,SAAS,QAAQ,UAAAC,SAAQ,iBAAAC,gBAAe,iBAAAC,gBAA4B,eAAAC,oBAAmB;;;ACAvF,SAAS,WAAAC,gBAAe;AAExB,SAAS,iBAAiB,0BAAAC,+BAA8B;;;ACFxD,SAAS,cAAc,sBAAsB;AAO7C,SAAS,WAAW,kBAAkC,wBAAwB;;;ACP9E,SAAS,mBAAmB;AAC5B,SAAS,YAAAC,iBAAgB;AACzB,SAAuB,WAAAC,UAAS,WAAAC,gBAAe;AAC/C,SAAS,kBAAkB;AAC3B,SAAmC,+BAA+C;AAClF,SAAS,6BAA6B;AACtC,SAAS,gBAAgB;;;ACNzB,SAAS,QAAQ,eAAe,eAAe,mBAAmB;AAClE,SAAS,gBAA+B;AACxC,SAAS,oBAAuC;AAChD,SAAS,YAAAC,iBAAgB;AAUrB,mBACE,OAAAC,MAGA,QAAAC,aAJF;AAHG,IAAM,mBAAoD,CAAC,EAAE,UAAU,eAAe,KAAK,OAAO,GAAG,MAAM,MAAM;AACtH,QAAM,CAAC,MAAM,OAAO,IAAIF,UAAS,KAAK;AACtC,SACE,gBAAAE,MAAA,YACE;AAAA,oBAAAD,KAAC,YAAS,SAAS,MAAM,QAAQ,CAAC,IAAI,GAAI,GAAG,OAC1C,sBAAY,QACf;AAAA,IACA,gBAAAC,MAAC,UAAO,MAAY,SAAS,MAAM,QAAQ,KAAK,GAC7C;AAAA,cACC,gBAAAD,KAAC,eAAa,iBAAM,IACpB;AAAA,MACF,gBAAAA,KAAC,iBACC,0BAAAA,KAAC,gBAAa,OAAO,KAAM,GAAG,eAAe,GAC/C;AAAA,MACA,gBAAAA,KAAC,iBACC,0BAAAA,KAAC,YAAS,SAAS,MAAM,QAAQ,KAAK,GAAG,mBAAK,GAChD;AAAA,OACF;AAAA,KACF;AAEJ;;;ADIM,gBAAAE,MAGE,QAAAC,aAHF;AApBC,IAAM,gBAA8C,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AAChF,QAAM,CAAC,QAAQ,IAAI,WAAW,YAAY;AACxC,WAAO,MAAM,KAAK,SAAS;AAAA,EAC7B,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,CAAC,QAAQ,IAAI,WAAW,YAAY;AACxC,WAAO,MAAM,KAAK,MAAM;AAAA,EAC1B,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,CAAC,QAAQ,IAAI,WAAW,YAAY;AACxC,UAAM,QAAQ,MAAM,KAAK,MAAM;AAC/B,WAAO,OAAO,KAA+B,sBAAsB,uBAAuB,CAAC;AAAA,EAC7F,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,UAAU,KAAK;AAErB,QAAM,SAAS,KAAK;AAEpB,SACE,gBAAAA,MAACC,UAAA,EAAQ,YAAW,WAAW,GAAG,OAChC;AAAA,oBAAAF,KAAC,YAAS,OAAM,WAAU,OAAO,KAAK,SAAS;AAAA,IAE/C,gBAAAC,MAACE,UAAA,EAAQ,KAAK,GAAG,gBAAe,iBAC9B;AAAA,sBAAAF,MAAC,eACE;AAAA,mBACC,gBAAAD,KAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACA;AAAA,QACD,SACC,gBAAAA,KAAC,oBAAiB,SAAQ,aAAY,KAAK,QAAQ,oBAEnD,IACA;AAAA,QACD,WACC,gBAAAA,KAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACA;AAAA,QACD,WACC,gBAAAA,KAAC,oBAAiB,SAAQ,aAAY,KAAK,UAAU,sBAErD,IACA;AAAA,QACD,UACC,gBAAAA,KAAC,oBAAiB,SAAQ,aAAY,KAAK,SAAS,qBAEpD,IACA;AAAA,SACJ;AAAA,MACA,gBAAAC,MAAC,eACC;AAAA,wBAAAD,KAACI,WAAA,EAAS,QAAO,UAAS,MAAM,0DAA0D,KAAK,OAAO,IAAI,SAAQ,YAAW,kBAE7H;AAAA,QACA,gBAAAJ,KAACI,WAAA,EAAS,QAAO,UAAS,MAAM,mEAAmE,KAAK,OAAO,IAAI,SAAQ,YAAW,sBAEtI;AAAA,QACA,gBAAAJ,KAACI,WAAA,EAAS,QAAO,UAAS,MAAM,gEAAgE,KAAK,OAAO,IAAI,SAAQ,YAAW,mBAEnI;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAEJ;;;AE9EA,SAAS,2BAA2B;AACpC,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAClC,SAAS,sBAAsB;AAC/B,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;;;ACLlC,SAAS,sBAAsB,8BAA8B;AAMrB,gBAAAC,YAAA;AADjC,IAAM,iBAAgE,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AAClG,SAAO,gBAAAA,KAAC,iBAAc,KAAU,MAAM,gBAAAA,KAAC,0BAAuB,GAAK,GAAG,OAAO;AAC/E;;;ACPA,SAAS,cAAc,sBAAsB;AAC7C,SAAS,cAAAC,mBAAkB;AAG3B,SAAS,0BAAAC,+BAA8B;AAkBJ,gBAAAC,YAAA;AAd5B,IAAM,cAA0D,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AAC5F,QAAM,CAAC,QAAQ,IAAIC,YAAW,YAAY;AACxC,WAAQ,MAAM,KAAK,SAAS;AAAA,EAC9B,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,CAAC,WAAW,IAAIC,wBAAuB,QAAW,EAAE,WAAW,OAAO,CAAC;AAC7E,QAAM,CAAC,SAAS,IAAIA,wBAAuB,QAAW,EAAE,WAAW,KAAK,CAAC;AAEzE,QAAM,yBAAyB,aAAa;AAC5C,QAAM,uBAAuB,WAAW;AAExC,QAAM,wBAAwB,UAAU,SAAS,QAAQ;AAEzD,SACE,gBAAAF,KAAC,iBAAc,KAAU,MAAM,gBAAAA,KAAC,kBAAe,GAAK,GAAG,OACpD,oCAA0B,UAAa,2BAA2B,UAAa,yBAAyB,SACvG,IAAI,qBAAqB,KAAK,sBAAsB,UAAK,oBAAoB,YAC7E,MACJ;AAEJ;;;AC5BA,SAAS,gBAAgB,wBAAwB;AAMT,gBAAAG,YAAA;AADjC,IAAM,kBAAkE,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AACpG,SAAO,gBAAAA,KAAC,iBAAc,KAAU,MAAM,gBAAAA,KAAC,oBAAiB,GAAK,GAAG,OAAO;AACzE;;;ACPA,SAAS,qBAAqB,6BAA6B;AAMnB,gBAAAC,YAAA;AADjC,IAAM,iBAAgE,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AAClG,SAAO,gBAAAA,KAAC,iBAAc,KAAU,MAAM,gBAAAA,KAAC,yBAAsB,GAAK,GAAG,OAAO;AAC9E;;;AJUW,gBAAAC,aAAA;AAFJ,IAAM,qBAAmD,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AACrF,MAAI,oBAAoB,GAAG,GAAG;AAC5B,WAAO,gBAAAA,MAAC,oBAAiB,KAAW,GAAG,OAAO;AAAA,EAChD;AACA,MAAI,kBAAkB,GAAG,GAAG;AAC1B,WAAO,gBAAAA,MAAC,kBAAe,KAAW,GAAG,OAAO;AAAA,EAC9C;AACA,MAAI,eAAe,GAAG,GAAG;AACvB,WAAO,gBAAAA,MAAC,eAAY,KAAW,GAAG,OAAO;AAAA,EAC3C;AACA,MAAI,kBAAkB,GAAG,GAAG;AAC1B,WAAO,gBAAAA,MAAC,kBAAe,KAAW,GAAG,OAAO;AAAA,EAC9C;AACA,MAAI,iBAAiB,GAAG,GAAG;AACzB,WAAO,gBAAAA,MAAC,iBAAc,KAAW,GAAG,OAAO;AAAA,EAC7C;AACA,MAAI,mBAAmB,GAAG,GAAG;AAC3B,WAAO,gBAAAA,MAAC,mBAAgB,KAAW,GAAG,OAAO;AAAA,EAC/C;AACA,SAAO,gBAAAA,MAAC,iBAAc,KAAW,GAAG,OAAO;AAC7C;;;AHrBI,SACgC,OAAAC,OADhC,QAAAC,aAAA;AAFG,IAAM,kBAAkD,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AACpF,SACE,gBAAAA,MAAC,aAAW,GAAG,OACb;AAAA,oBAAAD,MAAC,oBAAiB,YAAY,gBAAAA,MAAC,kBAAe,GAC5C,0BAAAA,MAAC,sBAAmB,KAAU,GAChC;AAAA,IACA,gBAAAA,MAAC,oBACC,0BAAAA,MAAC,iBAAc,KAAU,GAC3B;AAAA,KACF;AAEJ;;;ADNQ,qBAAAE,WAIwB,OAAAC,aAJxB;AARD,IAAM,cAAyC,CAAC,EAAE,KAAK,GAAG,MAAM,MAAM;AAC3E,QAAM,CAAC,OAAO,GAAG,IAAI,gBAAgB;AAErC,QAAM,CAAC,QAAQ,IAAIC,wBAAuB,QAAW,EAAE,MAAM,QAAQ,OAAU,CAAC;AAEhF,SACE,gBAAAD,MAACE,UAAA,EAAQ,YAAW,WAAW,GAAG,OAC/B,qBACC,gBAAAF,MAAAD,WAAA,EACE,0BAAAC,MAACE,UAAA,EAAQ,YAAW,WAAU,SAAS,GACpC,oBAAU,IAAI,CAAC,UAAU;AACxB,UAAM,WAAW,MAAM,MAAM;AAC7B,WAAO,WAAW,gBAAAF,MAAC,mBAAuC,KAAK,YAAvB,SAAS,OAAwB,IAAK;AAAA,EAChF,CAAC,GACH,GACF,IACA,MACJ;AAEJ;;;ADpBI,SACE,OAAAG,OADF,QAAAC,aAAA;AAFG,IAAM,cAA0C,CAAC,EAAE,SAAS,GAAG,MAAM,MAAM;AAChF,SACE,gBAAAA,MAACC,SAAA,EAAQ,GAAG,OACV;AAAA,oBAAAF,MAACG,cAAA,EAAY,+BAAiB;AAAA,IAC9B,gBAAAH,MAACI,gBAAA,EACC,0BAAAJ,MAAC,eAAY,OAAM,QAAO,GAC5B;AAAA,IACA,gBAAAA,MAACK,gBAAA,EACC,0BAAAL,MAAC,UAAO,SAAS,CAAC,UAAU,UAAU,OAAO,eAAe,GAAG,mBAAK,GACtE;AAAA,KACF;AAEJ;;;AUlBA,SAAS,aAAa;AACtB,SAAS,SAAAM,cAAa;AACtB,SAAS,cAAc;AACvB,SAAS,sBAAsB;AAE/B,SAAuB,WAAAC,gBAAe;AAGtC,SAAS,mBAAAC,wBAAuB;AAChC,SAAwB,SAAS,YAAAC,iBAAgB;;;ACTjD,SAAS,kBAAkB;AAC3B,SAAS,YAAAC,iBAA+B;AACxC,SAAS,WAAAC,UAAS,WAAAC,gBAAe;AACjC,SAAS,YAAAC,iBAAgB;;;ACHzB,SAAoB,WAAXC,gBAA+B;AACxC,SAAoB,WAAXA,gBAAmC;;;ACD5C,SAAuB,WAAAC,gBAAe;AACtC,SAAS,YAAAC,iBAAgB;AAkCjB,gBAAAC,aAAA;AAxBD,IAAM,UAAkC,CAAC,EAAE,eAAe,MAAM,iBAAiB,KAAK,GAAG,MAAM,MAAM;AAE1G,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAS,KAAK;AACpD,MAAI,CAAC,aAAa;AAChB,UAAM,MAAM,IAAI,MAAM;AACtB,QAAI,iBAAiB,QAAQ,MAAM,eAAe,IAAI,CAAC;AACvD,QAAI,MAAMC;AAAA,EACZ;AACA,SAAO,cACH,gBAAAF;AAAA,IAACG;AAAA,IAAA;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,0BAAAH,MAAC,SAAI,KAAKE,UAAc,QAAQ,iBAAiB,IAAI;AAAA;AAAA,EACvD,IACA;AACN;;;AFNU,gBAAAE,OAGA,QAAAC,aAHA;AAlBH,IAAM,qBAAwD,CAAC;AAAA,EACpE,OAAO;AAAA,EACP;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT,UAAU;AAAA,EACV,GAAG;AACL,MAAM;AAEJ,QAAM,CAAC,aAAa,cAAc,IAAIC,UAAS,KAAK;AACpD,QAAM,MAAM,IAAI,MAAM;AACtB,MAAI,iBAAiB,QAAQ,MAAM,eAAe,IAAI,CAAC;AACvD,MAAI,MAAMC;AACV,SAAO,cACH,gBAAAH,MAACI,WAAA,EAAS,MAAY,QAAgB,SAAkB,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,GAAG,GAAG,GAAI,GAAG,OACtG,0BAAAH,MAACI,UAAA,EAAQ,SAAS,KAChB;AAAA,oBAAAL,MAAC,cAAW,OAAO,EAAE,UAAU,gBAAgB,GAAG,GAAG,UAAS,SAAQ,wBAEtE;AAAA,IACA,gBAAAC,MAACK,UAAA,EACC;AAAA,sBAAAN,MAAC,WAAQ,MAAY;AAAA,MACrB,gBAAAA,MAAC,SAAI,KAAKG,UAAkB,QAAQ,cAAc,IAAI,OAAO,IAAI;AAAA,OACnE;AAAA,KACF,GACF,IACA;AACN;;;AD+DI,SAEI,OAAAI,OAFJ,QAAAC,aAAA;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,IAAIC,iBAAgB;AAC/B,QAAM,CAAC,iBAAiB,kBAAkB,IAAIC,UAAS,KAAK;AAG5D,QAAM,UAAmC,QAAQ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;AAEnE,QAAM,aAAa,QAAQ,OAAO,OAAO,OAAO,EAAE,SAAS,IAAI;AAE/D,QAAM,uBACH,cACC,CAAC,UAAU;AACT,QAAI,MAAM,YAAY,MAAM,QAAQ;AAClC,yBAAmB,IAAI;AAAA,IACzB,WAAW,MAAM;AACf,aAAO,KAAK,IAAI;AAAA,IAClB;AAAA,EACF,IACA,WAAc;AAElB,QAAM,aAAa,sBAAsB,SAAY;AAErD,QAAM,uBAAuB,CAAC,UAAyC;AACrE,QAAI,MAAM,QAAQ,YAAY,iBAAiB;AAC7C,yBAAmB,KAAK;AAAA,IAC1B;AAAA,EACF;AAEA;AAAA;AAAA,IAEE,YAAY;AACV,YAAM,aAAa,YAAY;AAC/B,UAAI,kBAAkB;AACpB;AAAA,MACF,WAAW,YAAY;AACrB,cAAM,OAAO,MAAM,YAAY,QAAQ,GAAG;AAC1C,cAAM,IAAI,CAAC,QAAQ;AACjB,cAAI,GAAG,cAAc,CAAC,EAAE,KAAAC,MAAK,MAAAC,MAAK,MAAM;AACtC,oBAASD,KAAe,OAAO,IAAIC;AACnC,gBAAI,UAAU;AACZ;AAAA,iBACG,YAAY;AACX,wBAAMC,OAAM,GAAI;AAChB,0BAASF,KAAe,OAAO,IAAI;AAAA,gBACrC,GAAG;AAAA,cACL;AAAA,YACF;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AACD,oBAAY,GAAG,cAAc,CAAC,EAAE,KAAK,MAAAC,MAAK,MAAM;AAC9C,kBAAS,IAAe,OAAO,IAAIA;AACnC,cAAI,UAAU;AACZ;AAAA,eACG,YAAY;AACX,sBAAMC,OAAM,GAAI;AAChB,wBAAS,IAAe,OAAO,IAAI;AAAA,cACrC,GAAG;AAAA,YACL;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IACA,CAAC,kBAAkB,UAAU,MAAM,SAAS,QAAQ;AAAA,EACtD;AAEA,SACE,gBAAAL,MAACM,UAAA,EAAQ,YAAW,WAAU,UAAS,YAAW,QAAO,KAAI,MAAK,KAAK,GAAG,OACxE;AAAA,oBAAAP,MAAC,SAAM,IAAI,EAAE,cAAc,EAAE,GAC3B,0BAAAA;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,eAAe,kBACd,gBAAAA,MAAC,eAAY,YAAU,MAAC,MAAM,iBAAiB,SAAS,MAAM,mBAAmB,KAAK,GAAG,WAAW,sBAAsB,IAC1H;AAAA,KACJ;AAEJ;","names":["busy","jsx","jsx","Dialog","DialogActions","DialogContent","DialogTitle","FlexCol","useWeakModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useWeakModulesFromNode","jsx","usePromise","useWeakModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useWeakModulesFromNode","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","mod","busy","delay","FlexCol"]}
|
package/dist/node/index.cjs
CHANGED
|
@@ -382,7 +382,7 @@ var PoweredByXyo = ({
|
|
|
382
382
|
} else if (activeNode) {
|
|
383
383
|
const mods = await (activeNode == null ? void 0 : activeNode.resolve("*"));
|
|
384
384
|
mods == null ? void 0 : mods.map((mod) => {
|
|
385
|
-
mod.on("moduleBusy", ({
|
|
385
|
+
mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
|
|
386
386
|
busyMap[mod2.address] = busy2;
|
|
387
387
|
if (autoStop) {
|
|
388
388
|
(0, import_forget.forget)(
|
|
@@ -394,7 +394,7 @@ var PoweredByXyo = ({
|
|
|
394
394
|
}
|
|
395
395
|
});
|
|
396
396
|
});
|
|
397
|
-
activeNode == null ? void 0 : activeNode.on("moduleBusy", ({
|
|
397
|
+
activeNode == null ? void 0 : activeNode.on("moduleBusy", ({ mod, busy: busy2 }) => {
|
|
398
398
|
busyMap[mod.address] = busy2;
|
|
399
399
|
if (autoStop) {
|
|
400
400
|
(0, import_forget.forget)(
|
package/dist/node/index.cjs.map
CHANGED
|
@@ -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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","busy","ExtensionIcon","import_jsx_runtime","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_jsx_runtime","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","HubRoundedIcon","import_icons_material","import_jsx_runtime","TimerRoundedIcon","import_icons_material","import_jsx_runtime","VisibilityRoundedIcon","import_jsx_runtime","import_jsx_runtime","ExpandMoreIcon","import_jsx_runtime","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","mod","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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","busy","ExtensionIcon","import_jsx_runtime","Inventory2RoundedIcon","import_icons_material","import_jsx_runtime","InsertLinkRoundedIcon","import_material","import_react_flexbox","import_react_node","import_icons_material","import_material","import_material","import_react_button","import_react_flexbox","import_react","import_jsx_runtime","import_jsx_runtime","import_icons_material","import_jsx_runtime","BubbleChartRoundedIcon","import_icons_material","import_react_promise","import_react_node","import_jsx_runtime","HubRoundedIcon","import_icons_material","import_jsx_runtime","TimerRoundedIcon","import_icons_material","import_jsx_runtime","VisibilityRoundedIcon","import_jsx_runtime","import_jsx_runtime","ExpandMoreIcon","import_jsx_runtime","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","mod","busy"]}
|
package/dist/node/index.js
CHANGED
|
@@ -333,7 +333,7 @@ var PoweredByXyo = ({
|
|
|
333
333
|
} else if (activeNode) {
|
|
334
334
|
const mods = await (activeNode == null ? void 0 : activeNode.resolve("*"));
|
|
335
335
|
mods == null ? void 0 : mods.map((mod) => {
|
|
336
|
-
mod.on("moduleBusy", ({
|
|
336
|
+
mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
|
|
337
337
|
busyMap[mod2.address] = busy2;
|
|
338
338
|
if (autoStop) {
|
|
339
339
|
forget(
|
|
@@ -345,7 +345,7 @@ var PoweredByXyo = ({
|
|
|
345
345
|
}
|
|
346
346
|
});
|
|
347
347
|
});
|
|
348
|
-
activeNode == null ? void 0 : activeNode.on("moduleBusy", ({
|
|
348
|
+
activeNode == null ? void 0 : activeNode.on("moduleBusy", ({ mod, busy: busy2 }) => {
|
|
349
349
|
busyMap[mod.address] = busy2;
|
|
350
350
|
if (autoStop) {
|
|
351
351
|
forget(
|
package/dist/node/index.js.map
CHANGED
|
@@ -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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ module: mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","useWeakModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useWeakModulesFromNode","jsx","usePromise","useWeakModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useWeakModulesFromNode","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","mod","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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } 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 mod?: T\n}\n\nexport const ModuleSummary: React.FC<ModuleSummaryProps> = ({ children, icon, mod, ...props }) => {\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(undefined, { direction: 'up' })\n const [busy, setBusy] = useState(false)\n\n const downModulesFromResolve = downModules?.length\n const upModulesFromResolve = upModules?.length\n\n mod?.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}>{mod?.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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useProvidedNode, useWeakModulesFromNode } 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> = ({ mod, ...props }) => {\n const [node = mod] = useProvidedNode()\n\n const [children] = useWeakModulesFromNode(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) => {\n const instance = child.deref()\n return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null\n })}\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 mod?: 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> = ({ mod, ...props }) => {\n return (\n <Accordion {...props}>\n <AccordionSummary expandIcon={<ExpandMoreIcon />}>\n <TypedModuleSummary mod={mod} />\n </AccordionSummary>\n <AccordionDetails>\n <ModuleDetails mod={mod} />\n </AccordionDetails>\n </Accordion>\n )\n}\n","import { ButtonGroup } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { ModuleDescriptionPayload, ModuleDescriptionSchema, ModuleInstance } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\n\nimport { JsonViewerButton } from './JsonViewerButton'\n\nexport interface ModuleDetailsProps<T extends ModuleInstance = ModuleInstance> extends FlexBoxProps {\n mod?: T\n}\n\nexport const ModuleDetails: React.FC<ModuleDetailsProps> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return await mod?.manifest()\n }, [mod])\n\n const [discover] = usePromise(async () => {\n return await mod?.state()\n }, [mod])\n\n const [describe] = usePromise(async () => {\n const state = await mod?.state()\n return state?.find<ModuleDescriptionPayload>(isPayloadOfSchemaType(ModuleDescriptionSchema))\n }, [mod])\n\n const queries = mod?.queries\n\n const config = mod?.config\n\n return (\n <FlexCol alignItems=\"stretch\" {...props}>\n <Property title=\"Address\" value={mod?.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=${mod?.address}`} variant=\"outlined\">\n Main\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`} variant=\"outlined\">\n Kerplunk\n </ButtonEx>\n <ButtonEx target=\"_blank\" href={`https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`} variant=\"outlined\">\n Local\n </ButtonEx>\n </ButtonGroup>\n </FlexRow>\n </FlexCol>\n )\n}\n","import { Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material'\nimport { ButtonEx, ButtonExProps } from '@xylabs/react-button'\nimport { JsonViewerEx, JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { useState } from 'react'\n\nexport interface JsonViewerButtonProps extends ButtonExProps {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({ children, jsonViewProps, src, title, ...props }) => {\n const [open, setOpen] = useState(false)\n return (\n <>\n <ButtonEx onClick={() => setOpen(!open)} {...props}>\n {children ?? 'JSON'}\n </ButtonEx>\n <Dialog open={open} onClose={() => setOpen(false)}>\n {title ?\n <DialogTitle>{title}</DialogTitle>\n : null}\n <DialogContent>\n <JsonViewerEx value={src} {...jsonViewProps} />\n </DialogContent>\n <DialogActions>\n <ButtonEx onClick={() => setOpen(false)}>Close</ButtonEx>\n </DialogActions>\n </Dialog>\n </>\n )\n}\n","import { isArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBridgeInstance } from '@xyo-network/bridge-model'\nimport { isDivinerInstance } from '@xyo-network/diviner-model'\nimport { isNodeInstance } from '@xyo-network/node-model'\nimport { isSentinelInstance } from '@xyo-network/sentinel-model'\nimport { isWitnessInstance } from '@xyo-network/witness-model'\n\nimport { ArchivistSummary } from './ArchivistSummary'\nimport { BridgeSummary } from './BridgeSummary'\nimport { DivinerSummary } from './DivinerSummary'\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\nimport { NodeSummary } from './NodeSummary'\nimport { SentinelSummary } from './SentinelSummary'\nimport { WitnessSummary } from './WitnessSummary'\n\nexport const TypedModuleSummary: React.FC<ModuleSummaryProps> = ({ mod, ...props }) => {\n if (isArchivistInstance(mod)) {\n return <ArchivistSummary mod={mod} {...props} />\n }\n if (isDivinerInstance(mod)) {\n return <DivinerSummary mod={mod} {...props} />\n }\n if (isNodeInstance(mod)) {\n return <NodeSummary mod={mod} {...props} />\n }\n if (isWitnessInstance(mod)) {\n return <WitnessSummary mod={mod} {...props} />\n }\n if (isBridgeInstance(mod)) {\n return <BridgeSummary mod={mod} {...props} />\n }\n if (isSentinelInstance(mod)) {\n return <SentinelSummary mod={mod} {...props} />\n }\n return <ModuleSummary mod={mod} {...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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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 { useWeakModulesFromNode } from '@xyo-network/react-node'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const NodeSummary: React.FC<ModuleSummaryProps<NodeInstance>> = ({ mod, ...props }) => {\n const [manifest] = usePromise(async () => {\n return (await mod?.manifest()) as NodeManifest\n }, [mod])\n\n const [downModules] = useWeakModulesFromNode(undefined, { direction: 'down' })\n const [upModules] = useWeakModulesFromNode(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 mod={mod} icon={<HubRoundedIcon />} {...props}>\n {manifestPublicModules !== undefined && downModulesFromResolve !== undefined && upModulesFromResolve !== undefined ?\n `[${manifestPublicModules}m/${downModulesFromResolve}↓/${upModulesFromResolve}↑]`\n : null}\n </ModuleSummary>\n )\n}\n","import { TimerRounded as TimerRoundedIcon } from '@mui/icons-material'\nimport { SentinelInstance } from '@xyo-network/sentinel-model'\n\nimport { ModuleSummary, ModuleSummaryProps } from './ModuleSummary'\n\nexport const SentinelSummary: React.FC<ModuleSummaryProps<SentinelInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} 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', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod as Module).address] = false\n })(),\n )\n }\n })\n })\n activeNode?.on('moduleBusy', ({ mod, busy }) => {\n busyMap[(mod as Module).address] = busy\n if (autoStop) {\n forget(\n (async () => {\n await delay(1000)\n busyMap[(mod 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 && debugDialogOpen ?\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","useWeakModulesFromNode","ButtonEx","FlexCol","FlexRow","useState","jsx","jsxs","jsx","jsxs","FlexCol","FlexRow","ButtonEx","jsx","usePromise","useWeakModulesFromNode","jsx","usePromise","useWeakModulesFromNode","jsx","jsx","jsx","jsx","jsxs","Fragment","jsx","useWeakModulesFromNode","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","mod","busy","delay","FlexCol"]}
|
package/package.json
CHANGED
|
@@ -16,19 +16,19 @@
|
|
|
16
16
|
"@xylabs/react-button": "^3.1.7",
|
|
17
17
|
"@xylabs/react-flexbox": "^3.1.7",
|
|
18
18
|
"@xylabs/react-promise": "^3.1.7",
|
|
19
|
-
"@xyo-network/archivist-model": "^2.
|
|
20
|
-
"@xyo-network/bridge-model": "^2.
|
|
21
|
-
"@xyo-network/diviner-model": "^2.
|
|
22
|
-
"@xyo-network/manifest": "^2.
|
|
23
|
-
"@xyo-network/module-model": "^2.
|
|
24
|
-
"@xyo-network/node-model": "^2.
|
|
25
|
-
"@xyo-network/payload-model": "^2.
|
|
26
|
-
"@xyo-network/react-node": "^2.
|
|
27
|
-
"@xyo-network/react-payload-raw-info": "^2.
|
|
28
|
-
"@xyo-network/react-property": "^2.
|
|
29
|
-
"@xyo-network/react-shared": "^2.
|
|
30
|
-
"@xyo-network/sentinel-model": "^2.
|
|
31
|
-
"@xyo-network/witness-model": "^2.
|
|
19
|
+
"@xyo-network/archivist-model": "^2.109.0",
|
|
20
|
+
"@xyo-network/bridge-model": "^2.109.0",
|
|
21
|
+
"@xyo-network/diviner-model": "^2.109.0",
|
|
22
|
+
"@xyo-network/manifest": "^2.109.0",
|
|
23
|
+
"@xyo-network/module-model": "^2.109.0",
|
|
24
|
+
"@xyo-network/node-model": "^2.109.0",
|
|
25
|
+
"@xyo-network/payload-model": "^2.109.0",
|
|
26
|
+
"@xyo-network/react-node": "^2.80.0",
|
|
27
|
+
"@xyo-network/react-payload-raw-info": "^2.80.0",
|
|
28
|
+
"@xyo-network/react-property": "^2.80.0",
|
|
29
|
+
"@xyo-network/react-shared": "^2.80.0",
|
|
30
|
+
"@xyo-network/sentinel-model": "^2.109.0",
|
|
31
|
+
"@xyo-network/witness-model": "^2.109.0"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
34
|
"@emotion/react": "^11",
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@storybook/react": "^7.6.20",
|
|
44
44
|
"@xylabs/ts-scripts-yarn3": "^3.11.12",
|
|
45
|
-
"@xyo-network/account": "^2.
|
|
46
|
-
"typescript": "^5.5.
|
|
45
|
+
"@xyo-network/account": "^2.109.0",
|
|
46
|
+
"typescript": "^5.5.3"
|
|
47
47
|
},
|
|
48
48
|
"description": "Common React library for all XYO projects that use React",
|
|
49
49
|
"docs": "dist/docs.json",
|
|
@@ -96,6 +96,6 @@
|
|
|
96
96
|
},
|
|
97
97
|
"sideEffects": false,
|
|
98
98
|
"types": "dist/browser/index.d.ts",
|
|
99
|
-
"version": "2.
|
|
99
|
+
"version": "2.80.0",
|
|
100
100
|
"type": "module"
|
|
101
101
|
}
|
|
@@ -74,7 +74,7 @@ export const PoweredByXyo: React.FC<PoweredByXyoProps> = ({
|
|
|
74
74
|
} else if (activeNode) {
|
|
75
75
|
const mods = await activeNode?.resolve('*')
|
|
76
76
|
mods?.map((mod) => {
|
|
77
|
-
mod.on('moduleBusy', ({
|
|
77
|
+
mod.on('moduleBusy', ({ mod, busy }) => {
|
|
78
78
|
busyMap[(mod as Module).address] = busy
|
|
79
79
|
if (autoStop) {
|
|
80
80
|
forget(
|
|
@@ -86,7 +86,7 @@ export const PoweredByXyo: React.FC<PoweredByXyoProps> = ({
|
|
|
86
86
|
}
|
|
87
87
|
})
|
|
88
88
|
})
|
|
89
|
-
activeNode?.on('moduleBusy', ({
|
|
89
|
+
activeNode?.on('moduleBusy', ({ mod, busy }) => {
|
|
90
90
|
busyMap[(mod as Module).address] = busy
|
|
91
91
|
if (autoStop) {
|
|
92
92
|
forget(
|