@xyo-network/react-powered-by-xyo 7.3.10 → 7.4.1
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/components/NodeDetails.d.ts.map +1 -1
- package/dist/browser/components/stories/PoweredByXyo.stories.d.ts +4 -4
- package/dist/browser/components/stories/PoweredByXyoButton.stories.d.ts +2 -2
- package/dist/browser/components/stories/XyoBusy.stories.d.ts +2 -2
- package/dist/browser/index.mjs +3 -3
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +33 -33
- package/src/components/NodeDetails.tsx +6 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeDetails.d.ts","sourceRoot":"","sources":["../../../src/components/NodeDetails.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,MAAM,WAAW,eAAgB,SAAQ,kBAAkB,CAAC,YAAY,CAAC;CAAG;AAE5E,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"NodeDetails.d.ts","sourceRoot":"","sources":["../../../src/components/NodeDetails.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,MAAM,WAAW,eAAgB,SAAQ,kBAAkB,CAAC,YAAY,CAAC;CAAG;AAE5E,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmBjD,CAAA"}
|
|
@@ -2,10 +2,10 @@ import type { Meta } from '@storybook/react-vite';
|
|
|
2
2
|
import type { PoweredByXyoProps } from '../PoweredByXyo.tsx';
|
|
3
3
|
import { PoweredByXyo } from '../PoweredByXyo.tsx';
|
|
4
4
|
declare const StorybookEntry: Meta<typeof PoweredByXyo>;
|
|
5
|
-
declare const Default: import(".store/storybook-virtual-
|
|
6
|
-
declare const Busy: import(".store/storybook-virtual-
|
|
7
|
-
declare const WithNode: import(".store/storybook-virtual-
|
|
8
|
-
declare const WithNodeAndDebug: import(".store/storybook-virtual-
|
|
5
|
+
declare const Default: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PoweredByXyoProps>;
|
|
6
|
+
declare const Busy: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PoweredByXyoProps>;
|
|
7
|
+
declare const WithNode: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PoweredByXyoProps>;
|
|
8
|
+
declare const WithNodeAndDebug: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PoweredByXyoProps>;
|
|
9
9
|
export { Busy, Default, WithNode, WithNodeAndDebug, };
|
|
10
10
|
export default StorybookEntry;
|
|
11
11
|
//# sourceMappingURL=PoweredByXyo.stories.d.ts.map
|
|
@@ -2,8 +2,8 @@ import type { Meta } from '@storybook/react-vite';
|
|
|
2
2
|
import type { PoweredByXyoButtonProps } from '../PoweredByXyoButton.tsx';
|
|
3
3
|
import { PoweredByXyoButton } from '../PoweredByXyoButton.tsx';
|
|
4
4
|
declare const StorybookEntry: Meta<typeof PoweredByXyoButton>;
|
|
5
|
-
declare const Default: import(".store/storybook-virtual-
|
|
6
|
-
declare const Busy: import(".store/storybook-virtual-
|
|
5
|
+
declare const Default: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PoweredByXyoButtonProps>;
|
|
6
|
+
declare const Busy: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, PoweredByXyoButtonProps>;
|
|
7
7
|
export { Busy, Default };
|
|
8
8
|
export default StorybookEntry;
|
|
9
9
|
//# sourceMappingURL=PoweredByXyoButton.stories.d.ts.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Meta } from '@storybook/react-vite';
|
|
2
2
|
import { XyoBusy } from '../XyoBusy.tsx';
|
|
3
3
|
declare const StorybookEntry: Meta<typeof XyoBusy>;
|
|
4
|
-
declare const Default: import(".store/storybook-virtual-
|
|
4
|
+
declare const Default: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, Omit<import("@xylabs/react-flexbox").BusyBoxProps, "children"> & {
|
|
5
5
|
busy?: boolean;
|
|
6
6
|
spinsPerSecond?: number;
|
|
7
7
|
widthInPixels?: number;
|
|
8
8
|
}>;
|
|
9
|
-
declare const Busy: import(".store/storybook-virtual-
|
|
9
|
+
declare const Busy: import(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, Omit<import("@xylabs/react-flexbox").BusyBoxProps, "children"> & {
|
|
10
10
|
busy?: boolean;
|
|
11
11
|
spinsPerSecond?: number;
|
|
12
12
|
widthInPixels?: number;
|
package/dist/browser/index.mjs
CHANGED
|
@@ -220,14 +220,14 @@ var ModuleAccordion = ({ mod, ...props }) => {
|
|
|
220
220
|
};
|
|
221
221
|
|
|
222
222
|
// src/components/NodeDetails.tsx
|
|
223
|
-
import {
|
|
223
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
224
224
|
var NodeDetails = ({ mod, ...props }) => {
|
|
225
225
|
const [node = mod] = useProvidedNode();
|
|
226
226
|
const [children] = useWeakModulesFromNode3(void 0, { node: node ?? void 0 });
|
|
227
|
-
return /* @__PURE__ */ jsx12(FlexCol3, { alignItems: "stretch", ...props, children: children ? /* @__PURE__ */ jsx12(
|
|
227
|
+
return /* @__PURE__ */ jsx12(FlexCol3, { alignItems: "stretch", ...props, children: children ? /* @__PURE__ */ jsx12(FlexCol3, { alignItems: "stretch", marginY: 1, children: children?.map((child) => {
|
|
228
228
|
const instance = child.deref();
|
|
229
229
|
return instance ? /* @__PURE__ */ jsx12(ModuleAccordion, { mod: instance }, instance.address) : null;
|
|
230
|
-
}) })
|
|
230
|
+
}) }) : null });
|
|
231
231
|
};
|
|
232
232
|
|
|
233
233
|
// src/components/DebugDialog.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/ArchivistSummary.tsx","../../src/components/ModuleSummary.tsx","../../src/components/BridgeSummary.tsx","../../src/components/DebugDialog.tsx","../../src/components/NodeDetails.tsx","../../src/components/ModuleAccordion.tsx","../../src/components/ModuleDetails.tsx","../../src/components/JsonViewerButton.tsx","../../src/components/TypedModuleSummary.tsx","../../src/components/DivinerSummary.tsx","../../src/components/NodeSummary.tsx","../../src/components/SentinelSummary.tsx","../../src/components/WitnessSummary.tsx","../../src/components/PoweredByXyo.tsx","../../src/components/PoweredByXyoButton.tsx","../../src/img/xyo-color-logo.svg","../../src/img/xyo-color-logo-text-only.svg","../../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","<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class=\"cls-1\" d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"/><path class=\"cls-2\" d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"/><path class=\"cls-3\" d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"/><path class=\"cls-4\" d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"/></svg>","<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"250 0 451 238\"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class=\"cls-1\" d=\"M570,55.35a61.13,61.13,0,1,0,61.11,61.1A61.21,61.21,0,0,0,570,55.35Zm-266.4.1-8.2,8.14,53,52.91-53,52.91,8.2,8.2,52.91-53,44.77,44.77,8.14,8.2,114-114-8.14-8.14-52.91,52.91-53-52.91-8.14,8.14-44.77,44.77ZM570,66.84a49.61,49.61,0,1,1-49.61,49.61A49.54,49.54,0,0,1,570,66.84ZM409.45,71.73l44.77,44.77-44.77,44.77L364.68,116.5Z\"/></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":["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","FlexCol","useState","jsx","useState","FlexCol","jsx","jsxs","useState","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/xyo-color-logo.svg","../../src/img/xyo-color-logo-text-only.svg","../../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 <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 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","<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 256 238\"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class=\"cls-1\" d=\"M74.5,28.33,21.29,120.5,74.5,212.67H180.94l1.76-3,51.46-89.13L180.94,28.33ZM84.65,40.54h78.83L111.65,56.93a15.85,15.85,0,0,1,2,5l59.66-18.81L185.22,101a20.12,20.12,0,0,1,5.36-.78l-10-47.91,37.87,65.53h-7.62a24.21,24.21,0,0,1,.15,2.68,23.29,23.29,0,0,1-.15,2.68h7.62l-39.1,67.75,10.92-50.13A20.57,20.57,0,0,1,185,140l-12.88,59-58.37-19.53a17.61,17.61,0,0,1-1.7,5l47.5,15.92H84.65l4-6.85A20.17,20.17,0,0,1,83.93,191L80,197.78,42.67,133.13l37,32.66a20.52,20.52,0,0,1,3.6-4L36.69,120.66,85,77.79a17.45,17.45,0,0,1-3.19-4.32l-39.46,35L80,43.22l5.56,9.69A17.51,17.51,0,0,1,90.12,50Zm28.24,31.17a16.15,16.15,0,0,1-2.68,4.64l62,35.81a19.74,19.74,0,0,1,2.83-4.54Zm-20,10.51v75.33a18,18,0,0,1,2.47-.16,17.18,17.18,0,0,1,2.89.21v-75a11.21,11.21,0,0,1-1.29,0,17.57,17.57,0,0,1-4.07-.47Zm79.34,46.63-62.08,35.81a18.45,18.45,0,0,1,2.68,4.68l62.23-36a19.68,19.68,0,0,1-2.83-4.53Z\"/><path class=\"cls-2\" d=\"M97,48.58a17.06,17.06,0,1,0,17,17,17.08,17.08,0,0,0-17-17Zm0,5.36a11.7,11.7,0,1,1-11.7,11.69A11.65,11.65,0,0,1,97,53.94Z\"/><path class=\"cls-3\" d=\"M95.37,157.39a18.73,18.73,0,1,0,18.7,18.7,18.74,18.74,0,0,0-18.7-18.7Zm0,5.31A13.4,13.4,0,1,1,82,176.09a13.37,13.37,0,0,1,13.4-13.39Z\"/><path class=\"cls-4\" d=\"M190.73,100.2A20.3,20.3,0,1,0,211,120.5a20.34,20.34,0,0,0-20.3-20.3Zm0,5.36a14.94,14.94,0,1,1-14.94,14.94,14.88,14.88,0,0,1,14.94-14.94Z\"/></svg>","<svg id=\"Layer_1\" data-name=\"Layer 1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"250 0 451 238\"><defs><style>.cls-1{fill:#8d8fc6;}.cls-2{fill:#579fd6;}.cls-3{fill:#f27046;}.cls-4{fill:#eb407a;}</style></defs><path class=\"cls-1\" d=\"M570,55.35a61.13,61.13,0,1,0,61.11,61.1A61.21,61.21,0,0,0,570,55.35Zm-266.4.1-8.2,8.14,53,52.91-53,52.91,8.2,8.2,52.91-53,44.77,44.77,8.14,8.2,114-114-8.14-8.14-52.91,52.91-53-52.91-8.14,8.14-44.77,44.77ZM570,66.84a49.61,49.61,0,1,1-49.61,49.61A49.54,49.54,0,0,1,570,66.84ZM409.45,71.73l44.77,44.77-44.77,44.77L364.68,116.5Z\"/></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":["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","jsx","useWeakModulesFromNode","FlexCol","jsx","jsxs","Dialog","DialogTitle","DialogContent","DialogActions","delay","FlexCol","useProvidedNode","useState","ButtonEx","FlexCol","FlexRow","useState","FlexCol","useState","jsx","useState","FlexCol","jsx","jsxs","useState","ButtonEx","FlexCol","FlexRow","jsx","jsxs","useProvidedNode","useState","mod","busy","delay","FlexCol"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/react-powered-by-xyo",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.4.1",
|
|
4
4
|
"description": "Common React library for all XYO projects that use React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xyo",
|
|
@@ -43,50 +43,50 @@
|
|
|
43
43
|
"src"
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@xylabs/delay": "~5.0.
|
|
47
|
-
"@xylabs/forget": "~5.0.
|
|
46
|
+
"@xylabs/delay": "~5.0.50",
|
|
47
|
+
"@xylabs/forget": "~5.0.50",
|
|
48
48
|
"@xylabs/react-async-effect": "~7.1.8",
|
|
49
49
|
"@xylabs/react-button": "~7.1.8",
|
|
50
50
|
"@xylabs/react-flexbox": "~7.1.8",
|
|
51
51
|
"@xylabs/react-promise": "~7.1.8",
|
|
52
|
-
"@xyo-network/archivist-model": "~5.
|
|
53
|
-
"@xyo-network/bridge-model": "~5.
|
|
54
|
-
"@xyo-network/diviner-model": "~5.
|
|
55
|
-
"@xyo-network/module-model": "~5.
|
|
56
|
-
"@xyo-network/node-model": "~5.
|
|
57
|
-
"@xyo-network/payload-model": "~5.
|
|
58
|
-
"@xyo-network/react-node": "^7.
|
|
59
|
-
"@xyo-network/react-payload-raw-info": "^7.
|
|
60
|
-
"@xyo-network/react-property": "^7.
|
|
61
|
-
"@xyo-network/react-shared": "^7.
|
|
62
|
-
"@xyo-network/sentinel-model": "~5.
|
|
63
|
-
"@xyo-network/witness-model": "~5.
|
|
52
|
+
"@xyo-network/archivist-model": "~5.2.17",
|
|
53
|
+
"@xyo-network/bridge-model": "~5.2.17",
|
|
54
|
+
"@xyo-network/diviner-model": "~5.2.17",
|
|
55
|
+
"@xyo-network/module-model": "~5.2.17",
|
|
56
|
+
"@xyo-network/node-model": "~5.2.17",
|
|
57
|
+
"@xyo-network/payload-model": "~5.2.17",
|
|
58
|
+
"@xyo-network/react-node": "^7.4.1",
|
|
59
|
+
"@xyo-network/react-payload-raw-info": "^7.4.1",
|
|
60
|
+
"@xyo-network/react-property": "^7.4.1",
|
|
61
|
+
"@xyo-network/react-shared": "^7.4.1",
|
|
62
|
+
"@xyo-network/sentinel-model": "~5.2.17",
|
|
63
|
+
"@xyo-network/witness-model": "~5.2.17"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@emotion/react": "~11.14.0",
|
|
67
67
|
"@emotion/styled": "~11.14.1",
|
|
68
|
-
"@mui/icons-material": "~7.3.
|
|
69
|
-
"@mui/material": "~7.3.
|
|
70
|
-
"@storybook/react-vite": "~
|
|
71
|
-
"@types/react": "
|
|
72
|
-
"@xylabs/hex": "~5.0.
|
|
73
|
-
"@xylabs/ts-scripts-yarn3": "~7.
|
|
74
|
-
"@xyo-network/account": "~5.
|
|
75
|
-
"@xyo-network/manifest": "~5.
|
|
76
|
-
"@xyo-network/module-factory-locator": "~5.
|
|
77
|
-
"@xyo-network/wallet": "~5.
|
|
78
|
-
"react": "
|
|
79
|
-
"react-dom": "
|
|
80
|
-
"react-router-dom": "^7.
|
|
81
|
-
"storybook": "~
|
|
82
|
-
"typescript": "
|
|
83
|
-
"vite": "~7.
|
|
68
|
+
"@mui/icons-material": "~7.3.6",
|
|
69
|
+
"@mui/material": "~7.3.6",
|
|
70
|
+
"@storybook/react-vite": "~10.1.4",
|
|
71
|
+
"@types/react": "^19.2.7",
|
|
72
|
+
"@xylabs/hex": "~5.0.50",
|
|
73
|
+
"@xylabs/ts-scripts-yarn3": "~7.2.8",
|
|
74
|
+
"@xyo-network/account": "~5.2.17",
|
|
75
|
+
"@xyo-network/manifest": "~5.2.17",
|
|
76
|
+
"@xyo-network/module-factory-locator": "~5.2.17",
|
|
77
|
+
"@xyo-network/wallet": "~5.2.17",
|
|
78
|
+
"react": "^19.2.1",
|
|
79
|
+
"react-dom": "^19.2.1",
|
|
80
|
+
"react-router-dom": "^7.10.0",
|
|
81
|
+
"storybook": "~10.1.4",
|
|
82
|
+
"typescript": "^5.9.3",
|
|
83
|
+
"vite": "~7.2.6"
|
|
84
84
|
},
|
|
85
85
|
"peerDependencies": {
|
|
86
86
|
"@mui/icons-material": ">=6 <8",
|
|
87
87
|
"@mui/material": ">=6 <8",
|
|
88
|
-
"react": "
|
|
89
|
-
"react-dom": "
|
|
88
|
+
"react": "^19",
|
|
89
|
+
"react-dom": "^19"
|
|
90
90
|
},
|
|
91
91
|
"publishConfig": {
|
|
92
92
|
"access": "public"
|
|
@@ -17,14 +17,12 @@ export const NodeDetails: React.FC<NodeViewerProps> = ({ mod, ...props }) => {
|
|
|
17
17
|
<FlexCol alignItems="stretch" {...props}>
|
|
18
18
|
{children
|
|
19
19
|
? (
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
</FlexCol>
|
|
27
|
-
</>
|
|
20
|
+
<FlexCol alignItems="stretch" marginY={1}>
|
|
21
|
+
{children?.map((child) => {
|
|
22
|
+
const instance = child.deref()
|
|
23
|
+
return instance ? <ModuleAccordion key={instance.address} mod={instance} /> : null
|
|
24
|
+
})}
|
|
25
|
+
</FlexCol>
|
|
28
26
|
)
|
|
29
27
|
: null}
|
|
30
28
|
</FlexCol>
|