@xyo-network/react-powered-by-xyo 5.0.4 → 5.0.6

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.
@@ -417,7 +417,7 @@ var PoweredByXyo = /* @__PURE__ */ __name(({ autoStop, busy, buttonProps, debugD
417
417
  if (event.shiftKey && event.altKey) {
418
418
  setDebugDialogOpen(true);
419
419
  } else if (href) {
420
- window.open(href);
420
+ window.open(href, void 0, "noopener,noreferrer");
421
421
  }
422
422
  } : void 0) ?? onButtonClick;
423
423
  const activeHref = activeOnButtonClick ? void 0 : href;
@@ -433,7 +433,7 @@ var PoweredByXyo = /* @__PURE__ */ __name(({ autoStop, busy, buttonProps, debugD
433
433
  } else if (activeNode) {
434
434
  const mods = await activeNode?.resolve("*");
435
435
  mods?.map((mod) => {
436
- mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
436
+ return mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
437
437
  busyMap[mod2.address] = busy2;
438
438
  if (autoStop) {
439
439
  forget((async () => {
@@ -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 type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { useWeakModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport type { ReactNode } from 'react'\nimport React, { 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> = ({\n children, icon, mod, ...props\n}) => {\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 type { BridgeInstance } from '@xyo-network/bridge-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle,\n} from '@mui/material'\nimport React from 'react'\n\nimport { NodeDetails } from './NodeDetails.tsx'\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 type { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode, useWeakModulesFromNode } from '@xyo-network/react-node'\nimport React from 'react'\n\nimport { ModuleAccordion } from './ModuleAccordion.tsx'\nimport type { ModuleDetailsProps } from './ModuleDetails.tsx'\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 <>\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 )\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport React from 'react'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n mod?: T\n}\n\nimport type { AccordionProps } from '@mui/material'\nimport {\n Accordion, AccordionDetails, AccordionSummary,\n} from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails.tsx'\nimport { TypedModuleSummary } from './TypedModuleSummary.tsx'\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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ModuleDescriptionPayload, ModuleInstance } from '@xyo-network/module-model'\nimport { ModuleDescriptionSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\nimport React from 'react'\n\nimport { JsonViewerButton } from './JsonViewerButton.tsx'\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 ? (\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n )\n : null}\n {config\n ? (\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n )\n : null}\n {discover\n ? (\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n )\n : null}\n {describe\n ? (\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n )\n : null}\n {queries\n ? (\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n )\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 {\n Dialog, DialogActions, DialogContent, DialogTitle,\n} from '@mui/material'\nimport type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport React, { useState } from 'react'\n\nexport type JsonViewerButtonProps = ButtonExProps & {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({\n children, jsonViewProps, src, title, ...props\n}) => {\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'\nimport React from 'react'\n\nimport { ArchivistSummary } from './ArchivistSummary.tsx'\nimport { BridgeSummary } from './BridgeSummary.tsx'\nimport { DivinerSummary } from './DivinerSummary.tsx'\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\nimport { NodeSummary } from './NodeSummary.tsx'\nimport { SentinelSummary } from './SentinelSummary.tsx'\nimport { WitnessSummary } from './WitnessSummary.tsx'\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 type { DivinerInstance } from '@xyo-network/diviner-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { NodeManifest } from '@xyo-network/manifest'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { useWeakModulesFromNode } from '@xyo-network/react-node'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { WitnessInstance } from '@xyo-network/witness-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { ButtonExProps } from '@xylabs/react-button'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Module } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport type { KeyboardEvent } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog.tsx'\nimport type { PoweredByXyoButtonProps } from './PoweredByXyoButton.tsx'\nimport { PoweredByXyoButton } from './PoweredByXyoButton.tsx'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: Omit<PoweredByXyoButtonProps, 'href' | 'to' | 'toOptions'>\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 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 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 {activeHref\n ? (\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n )\n : (\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\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 type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport React, { useEffect, useState } from 'react'\n\nimport { xyoColorLogoText } from '../img/index.ts'\nimport { XyoBusy } from './XyoBusy.tsx'\n\nexport type PoweredByXyoButtonProps = ButtonExProps & {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n logoHeight,\n logoTextSize,\n ...props\n}) => {\n // preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n useEffect(() => {\n const img = new Image()\n const onImageLoaded = () => setImageLoaded(true)\n img.addEventListener('load', onImageLoaded)\n img.src = xyoColorLogoText\n return () => {\n img.removeEventListener('load', onImageLoaded)\n }\n }, [])\n return imageLoaded\n ? (\n <ButtonEx\n {...props}\n target={props.target ?? '_blank'}\n variant={props.variant ?? 'text'}\n sx={{\n textDecoration: 'none', borderRadius: 0, padding: 0, ...props.sx,\n }}\n >\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 )\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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport React, { useState } from 'react'\n\nimport { xyoColorLogo } from '../img/index.ts'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({\n widthInPixels, busy, spinsPerSecond = 0.5, ...props\n}) => {\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 ? (\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': { transform: 'rotate(360deg)' },\n '100%': { transform: 'rotate(0deg)' },\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 )\n : null\n}\n"],"mappings":"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","names":["Inventory2Rounded","Inventory2RoundedIcon","React","Extension","ExtensionIcon","delay","FlexCol","FlexRow","useWeakModulesFromNode","TypographyEx","React","useState","ModuleSummary","children","icon","mod","props","downModules","useWeakModulesFromNode","undefined","direction","upModules","busy","setBusy","useState","downModulesFromResolve","length","upModulesFromResolve","on","delay","FlexCol","alignItems","width","FlexRow","justifyContent","TypographyEx","color","ExtensionIcon","marginX","config","name","ArchivistSummary","mod","props","React","ModuleSummary","icon","Inventory2RoundedIcon","InsertLinkRounded","InsertLinkRoundedIcon","React","BridgeSummary","mod","props","React","ModuleSummary","icon","InsertLinkRoundedIcon","Button","Dialog","DialogActions","DialogContent","DialogTitle","React","FlexCol","useProvidedNode","useWeakModulesFromNode","React","ExpandMore","ExpandMoreIcon","React","Accordion","AccordionDetails","AccordionSummary","ButtonGroup","ButtonEx","FlexCol","FlexRow","usePromise","ModuleDescriptionSchema","isPayloadOfSchemaType","Property","React","Dialog","DialogActions","DialogContent","DialogTitle","ButtonEx","JsonViewerEx","React","useState","JsonViewerButton","children","jsonViewProps","src","title","props","open","setOpen","useState","React","ButtonEx","onClick","Dialog","onClose","DialogTitle","DialogContent","JsonViewerEx","value","DialogActions","ModuleDetails","mod","props","manifest","usePromise","discover","state","describe","find","isPayloadOfSchemaType","ModuleDescriptionSchema","queries","config","React","FlexCol","alignItems","Property","title","value","address","FlexRow","gap","justifyContent","ButtonGroup","JsonViewerButton","variant","src","ButtonEx","target","href","isArchivistInstance","isBridgeInstance","isDivinerInstance","isNodeInstance","isSentinelInstance","isWitnessInstance","React","BubbleChartRounded","BubbleChartRoundedIcon","React","DivinerSummary","mod","props","React","ModuleSummary","icon","BubbleChartRoundedIcon","HubRounded","HubRoundedIcon","usePromise","useWeakModulesFromNode","React","NodeSummary","mod","props","manifest","usePromise","downModules","useWeakModulesFromNode","undefined","direction","upModules","downModulesFromResolve","length","upModulesFromResolve","manifestPublicModules","modules","public","React","ModuleSummary","icon","HubRoundedIcon","TimerRounded","TimerRoundedIcon","React","SentinelSummary","mod","props","React","ModuleSummary","icon","TimerRoundedIcon","VisibilityRounded","VisibilityRoundedIcon","React","WitnessSummary","mod","props","React","ModuleSummary","icon","VisibilityRoundedIcon","TypedModuleSummary","mod","props","isArchivistInstance","React","ArchivistSummary","isDivinerInstance","DivinerSummary","isNodeInstance","NodeSummary","isWitnessInstance","WitnessSummary","isBridgeInstance","BridgeSummary","isSentinelInstance","SentinelSummary","ModuleSummary","ModuleAccordion","mod","props","React","Accordion","AccordionSummary","expandIcon","ExpandMoreIcon","TypedModuleSummary","AccordionDetails","ModuleDetails","NodeDetails","mod","props","node","useProvidedNode","children","useWeakModulesFromNode","undefined","React","FlexCol","alignItems","marginY","map","child","instance","deref","ModuleAccordion","key","address","DebugDialog","onClose","props","React","Dialog","DialogTitle","DialogContent","NodeDetails","width","DialogActions","Button","onClick","event","Paper","delay","forget","useAsyncEffect","FlexCol","useProvidedNode","React","useMemo","useState","Typography","ButtonEx","FlexCol","FlexRow","React","useEffect","useState","xyoColorLogo","default","xyoColorLogoText","FlexCol","React","useState","XyoBusy","widthInPixels","busy","spinsPerSecond","props","imageLoaded","setImageLoaded","useState","img","Image","addEventListener","src","xyoColorLogo","React","FlexCol","sx","transform","undefined","height","PoweredByXyoButton","busy","logoHeight","logoTextSize","props","imageLoaded","setImageLoaded","useState","useEffect","img","Image","onImageLoaded","addEventListener","src","xyoColorLogoText","removeEventListener","React","ButtonEx","target","variant","sx","textDecoration","borderRadius","padding","FlexCol","Typography","style","fontSize","FlexRow","XyoBusy","height","width","PoweredByXyo","autoStop","busy","buttonProps","debugDialog","disableAnimation","href","logoHeight","logoTextSize","onButtonClick","node","propNode","props","useProvidedNode","debugDialogOpen","setDebugDialogOpen","useState","busyMap","useMemo","activeBusy","Object","values","includes","activeOnButtonClick","event","shiftKey","altKey","window","open","undefined","activeHref","onKeyDownEscListener","key","useAsyncEffect","activeNode","mods","resolve","map","mod","on","address","forget","delay","React","FlexCol","alignItems","position","bottom","left","Paper","sx","borderRadius","PoweredByXyoButton","onClick","fullWidth","DebugDialog","fullScreen","onClose","onKeyDown"]}
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 type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport { useWeakModulesFromNode } from '@xyo-network/react-node'\nimport { TypographyEx } from '@xyo-network/react-shared'\nimport type { ReactNode } from 'react'\nimport React, { 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> = ({\n children, icon, mod, ...props\n}) => {\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 type { BridgeInstance } from '@xyo-network/bridge-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\n\nexport const BridgeSummary: React.FC<ModuleSummaryProps<BridgeInstance>> = ({ mod, ...props }) => {\n return <ModuleSummary mod={mod} icon={<InsertLinkRoundedIcon />} {...props}></ModuleSummary>\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle,\n} from '@mui/material'\nimport React from 'react'\n\nimport { NodeDetails } from './NodeDetails.tsx'\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 type { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode, useWeakModulesFromNode } from '@xyo-network/react-node'\nimport React from 'react'\n\nimport { ModuleAccordion } from './ModuleAccordion.tsx'\nimport type { ModuleDetailsProps } from './ModuleDetails.tsx'\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 <>\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 )\n : null}\n </FlexCol>\n )\n}\n","import { ExpandMore as ExpandMoreIcon } from '@mui/icons-material'\nimport type { ModuleInstance } from '@xyo-network/module-model'\nimport React from 'react'\n\nexport interface ModuleAccordionProps<T extends ModuleInstance = ModuleInstance> extends Omit<AccordionProps, 'children'> {\n mod?: T\n}\n\nimport type { AccordionProps } from '@mui/material'\nimport {\n Accordion, AccordionDetails, AccordionSummary,\n} from '@mui/material'\n\nimport { ModuleDetails } from './ModuleDetails.tsx'\nimport { TypedModuleSummary } from './TypedModuleSummary.tsx'\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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ModuleDescriptionPayload, ModuleInstance } from '@xyo-network/module-model'\nimport { ModuleDescriptionSchema } from '@xyo-network/module-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\nimport { Property } from '@xyo-network/react-property'\nimport React from 'react'\n\nimport { JsonViewerButton } from './JsonViewerButton.tsx'\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 ? (\n <JsonViewerButton variant=\"contained\" src={manifest}>\n Manifest\n </JsonViewerButton>\n )\n : null}\n {config\n ? (\n <JsonViewerButton variant=\"contained\" src={config}>\n Config\n </JsonViewerButton>\n )\n : null}\n {discover\n ? (\n <JsonViewerButton variant=\"contained\" src={discover}>\n Discover\n </JsonViewerButton>\n )\n : null}\n {describe\n ? (\n <JsonViewerButton variant=\"contained\" src={describe}>\n Describe\n </JsonViewerButton>\n )\n : null}\n {queries\n ? (\n <JsonViewerButton variant=\"contained\" src={queries}>\n Queries\n </JsonViewerButton>\n )\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 {\n Dialog, DialogActions, DialogContent, DialogTitle,\n} from '@mui/material'\nimport type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport type { JsonViewerExProps } from '@xyo-network/react-payload-raw-info'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport React, { useState } from 'react'\n\nexport type JsonViewerButtonProps = ButtonExProps & {\n jsonViewProps?: Partial<JsonViewerExProps>\n src: object\n}\n\nexport const JsonViewerButton: React.FC<JsonViewerButtonProps> = ({\n children, jsonViewProps, src, title, ...props\n}) => {\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'\nimport React from 'react'\n\nimport { ArchivistSummary } from './ArchivistSummary.tsx'\nimport { BridgeSummary } from './BridgeSummary.tsx'\nimport { DivinerSummary } from './DivinerSummary.tsx'\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\nimport { NodeSummary } from './NodeSummary.tsx'\nimport { SentinelSummary } from './SentinelSummary.tsx'\nimport { WitnessSummary } from './WitnessSummary.tsx'\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 type { DivinerInstance } from '@xyo-network/diviner-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { NodeManifest } from '@xyo-network/manifest'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { useWeakModulesFromNode } from '@xyo-network/react-node'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { SentinelInstance } from '@xyo-network/sentinel-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { WitnessInstance } from '@xyo-network/witness-model'\nimport React from 'react'\n\nimport type { ModuleSummaryProps } from './ModuleSummary.tsx'\nimport { ModuleSummary } from './ModuleSummary.tsx'\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 type { ButtonExProps } from '@xylabs/react-button'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Module } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { useProvidedNode } from '@xyo-network/react-node'\nimport type { KeyboardEvent } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { DebugDialog } from './DebugDialog.tsx'\nimport type { PoweredByXyoButtonProps } from './PoweredByXyoButton.tsx'\nimport { PoweredByXyoButton } from './PoweredByXyoButton.tsx'\n\nexport interface PoweredByXyoProps extends FlexBoxProps {\n autoStop?: boolean\n busy?: boolean\n buttonProps?: Omit<PoweredByXyoButtonProps, 'href' | 'to' | 'toOptions'>\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 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, undefined, 'noopener,noreferrer')\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 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 return 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 {activeHref\n ? (\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n href={activeHref}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\n )\n : (\n <PoweredByXyoButton\n onClick={activeOnButtonClick}\n busy={activeBusy}\n logoHeight={logoHeight}\n logoTextSize={logoTextSize}\n fullWidth\n {...buttonProps}\n />\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 type { ButtonExProps } from '@xylabs/react-button'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport React, { useEffect, useState } from 'react'\n\nimport { xyoColorLogoText } from '../img/index.ts'\nimport { XyoBusy } from './XyoBusy.tsx'\n\nexport type PoweredByXyoButtonProps = ButtonExProps & {\n busy?: boolean\n logoHeight?: number\n logoTextSize?: number\n}\n\nexport const PoweredByXyoButton: React.FC<PoweredByXyoButtonProps> = ({\n busy = false,\n logoHeight,\n logoTextSize,\n ...props\n}) => {\n // preloading image to prevent shifting\n const [imageLoaded, setImageLoaded] = useState(false)\n useEffect(() => {\n const img = new Image()\n const onImageLoaded = () => setImageLoaded(true)\n img.addEventListener('load', onImageLoaded)\n img.src = xyoColorLogoText\n return () => {\n img.removeEventListener('load', onImageLoaded)\n }\n }, [])\n return imageLoaded\n ? (\n <ButtonEx\n {...props}\n target={props.target ?? '_blank'}\n variant={props.variant ?? 'text'}\n sx={{\n textDecoration: 'none', borderRadius: 0, padding: 0, ...props.sx,\n }}\n >\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 )\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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport React, { useState } from 'react'\n\nimport { xyoColorLogo } from '../img/index.ts'\n\nexport type XyoBusyProps = Omit<FlexBoxProps, 'children'> & {\n busy?: boolean\n spinsPerSecond?: number\n widthInPixels?: number\n}\n\nexport const XyoBusy: React.FC<XyoBusyProps> = ({\n widthInPixels, busy, spinsPerSecond = 0.5, ...props\n}) => {\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 ? (\n <FlexCol\n sx={{\n '@keyframes spin': {\n '0%': { transform: 'rotate(360deg)' },\n '100%': { transform: 'rotate(0deg)' },\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 )\n : null\n}\n"],"mappings":"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","names":["Inventory2Rounded","Inventory2RoundedIcon","React","Extension","ExtensionIcon","delay","FlexCol","FlexRow","useWeakModulesFromNode","TypographyEx","React","useState","ModuleSummary","children","icon","mod","props","downModules","useWeakModulesFromNode","undefined","direction","upModules","busy","setBusy","useState","downModulesFromResolve","length","upModulesFromResolve","on","delay","FlexCol","alignItems","width","FlexRow","justifyContent","TypographyEx","color","ExtensionIcon","marginX","config","name","ArchivistSummary","mod","props","React","ModuleSummary","icon","Inventory2RoundedIcon","InsertLinkRounded","InsertLinkRoundedIcon","React","BridgeSummary","mod","props","React","ModuleSummary","icon","InsertLinkRoundedIcon","Button","Dialog","DialogActions","DialogContent","DialogTitle","React","FlexCol","useProvidedNode","useWeakModulesFromNode","React","ExpandMore","ExpandMoreIcon","React","Accordion","AccordionDetails","AccordionSummary","ButtonGroup","ButtonEx","FlexCol","FlexRow","usePromise","ModuleDescriptionSchema","isPayloadOfSchemaType","Property","React","Dialog","DialogActions","DialogContent","DialogTitle","ButtonEx","JsonViewerEx","React","useState","JsonViewerButton","children","jsonViewProps","src","title","props","open","setOpen","useState","React","ButtonEx","onClick","Dialog","onClose","DialogTitle","DialogContent","JsonViewerEx","value","DialogActions","ModuleDetails","mod","props","manifest","usePromise","discover","state","describe","find","isPayloadOfSchemaType","ModuleDescriptionSchema","queries","config","React","FlexCol","alignItems","Property","title","value","address","FlexRow","gap","justifyContent","ButtonGroup","JsonViewerButton","variant","src","ButtonEx","target","href","isArchivistInstance","isBridgeInstance","isDivinerInstance","isNodeInstance","isSentinelInstance","isWitnessInstance","React","BubbleChartRounded","BubbleChartRoundedIcon","React","DivinerSummary","mod","props","React","ModuleSummary","icon","BubbleChartRoundedIcon","HubRounded","HubRoundedIcon","usePromise","useWeakModulesFromNode","React","NodeSummary","mod","props","manifest","usePromise","downModules","useWeakModulesFromNode","undefined","direction","upModules","downModulesFromResolve","length","upModulesFromResolve","manifestPublicModules","modules","public","React","ModuleSummary","icon","HubRoundedIcon","TimerRounded","TimerRoundedIcon","React","SentinelSummary","mod","props","React","ModuleSummary","icon","TimerRoundedIcon","VisibilityRounded","VisibilityRoundedIcon","React","WitnessSummary","mod","props","React","ModuleSummary","icon","VisibilityRoundedIcon","TypedModuleSummary","mod","props","isArchivistInstance","React","ArchivistSummary","isDivinerInstance","DivinerSummary","isNodeInstance","NodeSummary","isWitnessInstance","WitnessSummary","isBridgeInstance","BridgeSummary","isSentinelInstance","SentinelSummary","ModuleSummary","ModuleAccordion","mod","props","React","Accordion","AccordionSummary","expandIcon","ExpandMoreIcon","TypedModuleSummary","AccordionDetails","ModuleDetails","NodeDetails","mod","props","node","useProvidedNode","children","useWeakModulesFromNode","undefined","React","FlexCol","alignItems","marginY","map","child","instance","deref","ModuleAccordion","key","address","DebugDialog","onClose","props","React","Dialog","DialogTitle","DialogContent","NodeDetails","width","DialogActions","Button","onClick","event","Paper","delay","forget","useAsyncEffect","FlexCol","useProvidedNode","React","useMemo","useState","Typography","ButtonEx","FlexCol","FlexRow","React","useEffect","useState","xyoColorLogo","default","xyoColorLogoText","FlexCol","React","useState","XyoBusy","widthInPixels","busy","spinsPerSecond","props","imageLoaded","setImageLoaded","useState","img","Image","addEventListener","src","xyoColorLogo","React","FlexCol","sx","transform","undefined","height","PoweredByXyoButton","busy","logoHeight","logoTextSize","props","imageLoaded","setImageLoaded","useState","useEffect","img","Image","onImageLoaded","addEventListener","src","xyoColorLogoText","removeEventListener","React","ButtonEx","target","variant","sx","textDecoration","borderRadius","padding","FlexCol","Typography","style","fontSize","FlexRow","XyoBusy","height","width","PoweredByXyo","autoStop","busy","buttonProps","debugDialog","disableAnimation","href","logoHeight","logoTextSize","onButtonClick","node","propNode","props","useProvidedNode","debugDialogOpen","setDebugDialogOpen","useState","busyMap","useMemo","activeBusy","Object","values","includes","activeOnButtonClick","event","shiftKey","altKey","window","open","undefined","activeHref","onKeyDownEscListener","key","useAsyncEffect","activeNode","mods","resolve","map","mod","on","address","forget","delay","React","FlexCol","alignItems","position","bottom","left","Paper","sx","borderRadius","PoweredByXyoButton","onClick","fullWidth","DebugDialog","fullScreen","onClose","onKeyDown"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/react-powered-by-xyo",
3
- "version": "5.0.4",
3
+ "version": "5.0.6",
4
4
  "description": "Common React library for all XYO projects that use React",
5
5
  "keywords": [
6
6
  "xyo",
@@ -38,44 +38,40 @@
38
38
  },
39
39
  "module": "dist/browser/index.mjs",
40
40
  "types": "dist/types/index.d.ts",
41
- "scripts": {
42
- "license": "yarn license-checker --exclude \"MIT, ISC, Apache-2.0, BSD, BSD-2-Clause, CC-BY-4.0, Unlicense, CC-BY-3.0, CC0-1.0\"",
43
- "lint-pkg": "npmPkgJsonLint ."
44
- },
45
41
  "dependencies": {
46
- "@xylabs/delay": "^4.6.0",
47
- "@xylabs/forget": "^4.6.0",
48
- "@xylabs/react-async-effect": "^6.0.5",
49
- "@xylabs/react-button": "^6.0.5",
50
- "@xylabs/react-flexbox": "^6.0.5",
51
- "@xylabs/react-promise": "^6.0.5",
52
- "@xyo-network/archivist-model": "^3.9.37",
53
- "@xyo-network/bridge-model": "^3.9.37",
54
- "@xyo-network/diviner-model": "^3.9.37",
55
- "@xyo-network/manifest": "^3.9.37",
56
- "@xyo-network/module-model": "^3.9.37",
57
- "@xyo-network/node-model": "^3.9.37",
58
- "@xyo-network/payload-model": "^3.9.37",
59
- "@xyo-network/react-node": "^5.0.4",
60
- "@xyo-network/react-payload-raw-info": "^5.0.4",
61
- "@xyo-network/react-property": "^5.0.4",
62
- "@xyo-network/react-shared": "^5.0.4",
63
- "@xyo-network/sentinel-model": "^3.9.37",
64
- "@xyo-network/witness-model": "^3.9.37"
42
+ "@xylabs/delay": "^4.6.4",
43
+ "@xylabs/forget": "^4.6.4",
44
+ "@xylabs/react-async-effect": "^6.0.6",
45
+ "@xylabs/react-button": "^6.0.6",
46
+ "@xylabs/react-flexbox": "^6.0.6",
47
+ "@xylabs/react-promise": "^6.0.6",
48
+ "@xyo-network/archivist-model": "^3.9.38",
49
+ "@xyo-network/bridge-model": "^3.9.38",
50
+ "@xyo-network/diviner-model": "^3.9.38",
51
+ "@xyo-network/manifest": "^3.9.38",
52
+ "@xyo-network/module-model": "^3.9.38",
53
+ "@xyo-network/node-model": "^3.9.38",
54
+ "@xyo-network/payload-model": "^3.9.38",
55
+ "@xyo-network/react-node": "^5.0.6",
56
+ "@xyo-network/react-payload-raw-info": "^5.0.6",
57
+ "@xyo-network/react-property": "^5.0.6",
58
+ "@xyo-network/react-shared": "^5.0.6",
59
+ "@xyo-network/sentinel-model": "^3.9.38",
60
+ "@xyo-network/witness-model": "^3.9.38"
65
61
  },
66
62
  "devDependencies": {
67
63
  "@emotion/react": "^11.14.0",
68
64
  "@emotion/styled": "^11.14.0",
69
- "@mui/icons-material": "^6.4.7",
70
- "@mui/material": "^6.4.7",
71
- "@mui/styles": "^6.4.7",
72
- "@storybook/react": "^8.6.4",
65
+ "@mui/icons-material": "^6.4.8",
66
+ "@mui/material": "^6.4.8",
67
+ "@mui/styles": "^6.4.8",
68
+ "@storybook/react": "^8.6.7",
73
69
  "@types/react": "^19.0.10",
74
- "@xylabs/ts-scripts-yarn3": "^6.0.9",
75
- "@xyo-network/account": "^3.9.37",
70
+ "@xylabs/ts-scripts-yarn3": "^6.1.4",
71
+ "@xyo-network/account": "^3.9.38",
76
72
  "react": "^19.0.0",
77
73
  "react-dom": "^19.0.0",
78
- "storybook": "^8.6.4",
74
+ "storybook": "^8.6.7",
79
75
  "typescript": "^5.8.2"
80
76
  },
81
77
  "peerDependencies": {
@@ -54,7 +54,7 @@ export const PoweredByXyo: React.FC<PoweredByXyoProps> = ({
54
54
  if (event.shiftKey && event.altKey) {
55
55
  setDebugDialogOpen(true)
56
56
  } else if (href) {
57
- window.open(href)
57
+ window.open(href, undefined, 'noopener,noreferrer')
58
58
  }
59
59
  }
60
60
  : undefined) ?? onButtonClick
@@ -75,7 +75,7 @@ export const PoweredByXyo: React.FC<PoweredByXyoProps> = ({
75
75
  } else if (activeNode) {
76
76
  const mods = await activeNode?.resolve('*')
77
77
  mods?.map((mod) => {
78
- mod.on('moduleBusy', ({ mod, busy }) => {
78
+ return mod.on('moduleBusy', ({ mod, busy }) => {
79
79
  busyMap[(mod as Module).address] = busy
80
80
  if (autoStop) {
81
81
  forget(