@xyo-network/react-powered-by-xyo 7.4.1 → 7.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/components/stories/PoweredByXyo.stories.d.ts +4 -4
- package/dist/browser/components/stories/PoweredByXyo.stories.d.ts.map +1 -1
- package/dist/browser/components/stories/PoweredByXyoButton.stories.d.ts +2 -2
- package/dist/browser/components/stories/PoweredByXyoButton.stories.d.ts.map +1 -1
- package/dist/browser/components/stories/XyoBusy.stories.d.ts +2 -2
- package/dist/browser/index.mjs +330 -264
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +36 -35
- package/src/components/stories/PoweredByXyo.stories.tsx +2 -2
|
@@ -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("
|
|
6
|
-
declare const Busy: import("
|
|
7
|
-
declare const WithNode: import("
|
|
8
|
-
declare const WithNodeAndDebug: import("
|
|
5
|
+
declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, PoweredByXyoProps>;
|
|
6
|
+
declare const Busy: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, PoweredByXyoProps>;
|
|
7
|
+
declare const WithNode: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, PoweredByXyoProps>;
|
|
8
|
+
declare const WithNodeAndDebug: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, PoweredByXyoProps>;
|
|
9
9
|
export { Busy, Default, WithNode, WithNodeAndDebug, };
|
|
10
10
|
export default StorybookEntry;
|
|
11
11
|
//# sourceMappingURL=PoweredByXyo.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PoweredByXyo.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/stories/PoweredByXyo.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;AAe1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,QAAA,MAAM,cAAc,EAIf,IAAI,CAAC,OAAO,YAAY,CAAC,CAAA;AA2C9B,QAAA,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"PoweredByXyo.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/stories/PoweredByXyo.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;AAe1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGlD,QAAA,MAAM,cAAc,EAIf,IAAI,CAAC,OAAO,YAAY,CAAC,CAAA;AA2C9B,QAAA,MAAM,OAAO,gHAA6B,CAAA;AAE1C,QAAA,MAAM,IAAI,gHAA6B,CAAA;AAGvC,QAAA,MAAM,QAAQ,gHAAqC,CAAA;AAEnD,QAAA,MAAM,gBAAgB,gHAAqC,CAAA;AAG3D,OAAO,EACL,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAC1C,CAAA;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -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("
|
|
6
|
-
declare const Busy: import("
|
|
5
|
+
declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, PoweredByXyoButtonProps>;
|
|
6
|
+
declare const Busy: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").ReactRenderer, PoweredByXyoButtonProps>;
|
|
7
7
|
export { Busy, Default };
|
|
8
8
|
export default StorybookEntry;
|
|
9
9
|
//# sourceMappingURL=PoweredByXyoButton.stories.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PoweredByXyoButton.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/stories/PoweredByXyoButton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;AAG1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,QAAA,MAAM,cAAc,EAIf,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAIpC,QAAA,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"PoweredByXyoButton.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/stories/PoweredByXyoButton.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAW,MAAM,uBAAuB,CAAA;AAG1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE9D,QAAA,MAAM,cAAc,EAIf,IAAI,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAIpC,QAAA,MAAM,OAAO,sHAA6B,CAAA;AAC1C,QAAA,MAAM,IAAI,sHAA6B,CAAA;AAGvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAExB,eAAe,cAAc,CAAA"}
|
|
@@ -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("
|
|
4
|
+
declare const Default: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").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("
|
|
9
|
+
declare const Busy: import("storybook/internal/csf").AnnotatedStoryFn<import("@storybook/react").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
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
1
4
|
// src/components/ArchivistSummary.tsx
|
|
2
5
|
import { Inventory2Rounded as Inventory2RoundedIcon } from "@mui/icons-material";
|
|
6
|
+
import React2 from "react";
|
|
3
7
|
|
|
4
8
|
// src/components/ModuleSummary.tsx
|
|
5
9
|
import { Extension as ExtensionIcon } from "@mui/icons-material";
|
|
@@ -7,16 +11,14 @@ import { delay } from "@xylabs/delay";
|
|
|
7
11
|
import { FlexCol, FlexRow } from "@xylabs/react-flexbox";
|
|
8
12
|
import { useWeakModulesFromNode } from "@xyo-network/react-node";
|
|
9
13
|
import { TypographyEx } from "@xyo-network/react-shared";
|
|
10
|
-
import { useState } from "react";
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
})
|
|
18
|
-
const [downModules] = useWeakModulesFromNode(void 0, { direction: "down" });
|
|
19
|
-
const [upModules] = useWeakModulesFromNode(void 0, { direction: "up" });
|
|
14
|
+
import React, { useState } from "react";
|
|
15
|
+
var ModuleSummary = /* @__PURE__ */ __name(({ children, icon, mod, ...props }) => {
|
|
16
|
+
const [downModules] = useWeakModulesFromNode(void 0, {
|
|
17
|
+
direction: "down"
|
|
18
|
+
});
|
|
19
|
+
const [upModules] = useWeakModulesFromNode(void 0, {
|
|
20
|
+
direction: "up"
|
|
21
|
+
});
|
|
20
22
|
const [busy, setBusy] = useState(false);
|
|
21
23
|
const downModulesFromResolve = downModules?.length;
|
|
22
24
|
const upModulesFromResolve = upModules?.length;
|
|
@@ -25,48 +27,52 @@ var ModuleSummary = ({
|
|
|
25
27
|
await delay(2e3);
|
|
26
28
|
setBusy(false);
|
|
27
29
|
});
|
|
28
|
-
return /* @__PURE__ */
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
return /* @__PURE__ */ React.createElement(FlexCol, {
|
|
31
|
+
alignItems: "stretch",
|
|
32
|
+
width: "100%",
|
|
33
|
+
...props
|
|
34
|
+
}, /* @__PURE__ */ React.createElement(FlexRow, {
|
|
35
|
+
justifyContent: "flex-start"
|
|
36
|
+
}, /* @__PURE__ */ React.createElement(FlexRow, null, /* @__PURE__ */ React.createElement(TypographyEx, {
|
|
37
|
+
color: busy ? "gray" : void 0
|
|
38
|
+
}, icon ?? /* @__PURE__ */ React.createElement(ExtensionIcon, null)), /* @__PURE__ */ React.createElement(TypographyEx, {
|
|
39
|
+
marginX: 1
|
|
40
|
+
}, mod?.config?.name ?? "<Unknown>")), children ?? (downModulesFromResolve !== void 0 && upModulesFromResolve !== void 0) ? `[${downModulesFromResolve}\u2193/${upModulesFromResolve}\u2191]` : null));
|
|
41
|
+
}, "ModuleSummary");
|
|
36
42
|
|
|
37
43
|
// src/components/ArchivistSummary.tsx
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
var ArchivistSummary = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
45
|
+
return /* @__PURE__ */ React2.createElement(ModuleSummary, {
|
|
46
|
+
mod,
|
|
47
|
+
icon: /* @__PURE__ */ React2.createElement(Inventory2RoundedIcon, null),
|
|
48
|
+
...props
|
|
49
|
+
});
|
|
50
|
+
}, "ArchivistSummary");
|
|
42
51
|
|
|
43
52
|
// src/components/BridgeSummary.tsx
|
|
44
53
|
import { InsertLinkRounded as InsertLinkRoundedIcon } from "@mui/icons-material";
|
|
45
|
-
import
|
|
46
|
-
var BridgeSummary = ({ mod, ...props }) => {
|
|
47
|
-
return /* @__PURE__ */
|
|
48
|
-
|
|
54
|
+
import React3 from "react";
|
|
55
|
+
var BridgeSummary = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
56
|
+
return /* @__PURE__ */ React3.createElement(ModuleSummary, {
|
|
57
|
+
mod,
|
|
58
|
+
icon: /* @__PURE__ */ React3.createElement(InsertLinkRoundedIcon, null),
|
|
59
|
+
...props
|
|
60
|
+
});
|
|
61
|
+
}, "BridgeSummary");
|
|
49
62
|
|
|
50
63
|
// src/components/DebugDialog.tsx
|
|
51
|
-
import {
|
|
52
|
-
|
|
53
|
-
Dialog as Dialog2,
|
|
54
|
-
DialogActions as DialogActions2,
|
|
55
|
-
DialogContent as DialogContent2,
|
|
56
|
-
DialogTitle as DialogTitle2
|
|
57
|
-
} from "@mui/material";
|
|
64
|
+
import { Button, Dialog as Dialog2, DialogActions as DialogActions2, DialogContent as DialogContent2, DialogTitle as DialogTitle2 } from "@mui/material";
|
|
65
|
+
import React13 from "react";
|
|
58
66
|
|
|
59
67
|
// src/components/NodeDetails.tsx
|
|
60
68
|
import { FlexCol as FlexCol3 } from "@xylabs/react-flexbox";
|
|
61
69
|
import { useProvidedNode, useWeakModulesFromNode as useWeakModulesFromNode3 } from "@xyo-network/react-node";
|
|
70
|
+
import React12 from "react";
|
|
62
71
|
|
|
63
72
|
// src/components/ModuleAccordion.tsx
|
|
64
73
|
import { ExpandMore as ExpandMoreIcon } from "@mui/icons-material";
|
|
65
|
-
import
|
|
66
|
-
|
|
67
|
-
AccordionDetails,
|
|
68
|
-
AccordionSummary
|
|
69
|
-
} from "@mui/material";
|
|
74
|
+
import React11 from "react";
|
|
75
|
+
import { Accordion, AccordionDetails, AccordionSummary } from "@mui/material";
|
|
70
76
|
|
|
71
77
|
// src/components/ModuleDetails.tsx
|
|
72
78
|
import { ButtonGroup } from "@mui/material";
|
|
@@ -76,69 +82,87 @@ import { usePromise } from "@xylabs/react-promise";
|
|
|
76
82
|
import { ModuleDescriptionSchema } from "@xyo-network/module-model";
|
|
77
83
|
import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
|
|
78
84
|
import { Property } from "@xyo-network/react-property";
|
|
85
|
+
import React5 from "react";
|
|
79
86
|
|
|
80
87
|
// src/components/JsonViewerButton.tsx
|
|
81
|
-
import {
|
|
82
|
-
Dialog,
|
|
83
|
-
DialogActions,
|
|
84
|
-
DialogContent,
|
|
85
|
-
DialogTitle
|
|
86
|
-
} from "@mui/material";
|
|
88
|
+
import { Dialog, DialogActions, DialogContent, DialogTitle } from "@mui/material";
|
|
87
89
|
import { ButtonEx } from "@xylabs/react-button";
|
|
88
90
|
import { JsonViewerEx } from "@xyo-network/react-payload-raw-info";
|
|
89
|
-
import { useState as useState2 } from "react";
|
|
90
|
-
|
|
91
|
-
var JsonViewerButton = ({
|
|
92
|
-
children,
|
|
93
|
-
jsonViewProps,
|
|
94
|
-
src,
|
|
95
|
-
title,
|
|
96
|
-
...props
|
|
97
|
-
}) => {
|
|
91
|
+
import React4, { useState as useState2 } from "react";
|
|
92
|
+
var JsonViewerButton = /* @__PURE__ */ __name(({ children, jsonViewProps, src, title, ...props }) => {
|
|
98
93
|
const [open, setOpen] = useState2(false);
|
|
99
|
-
return /* @__PURE__ */
|
|
100
|
-
/* @__PURE__ */
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
94
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(ButtonEx, {
|
|
95
|
+
onClick: /* @__PURE__ */ __name(() => setOpen(!open), "onClick"),
|
|
96
|
+
...props
|
|
97
|
+
}, children ?? "JSON"), /* @__PURE__ */ React4.createElement(Dialog, {
|
|
98
|
+
open,
|
|
99
|
+
onClose: /* @__PURE__ */ __name(() => setOpen(false), "onClose")
|
|
100
|
+
}, title ? /* @__PURE__ */ React4.createElement(DialogTitle, null, title) : null, /* @__PURE__ */ React4.createElement(DialogContent, null, /* @__PURE__ */ React4.createElement(JsonViewerEx, {
|
|
101
|
+
value: src,
|
|
102
|
+
...jsonViewProps
|
|
103
|
+
})), /* @__PURE__ */ React4.createElement(DialogActions, null, /* @__PURE__ */ React4.createElement(ButtonEx, {
|
|
104
|
+
onClick: /* @__PURE__ */ __name(() => setOpen(false), "onClick")
|
|
105
|
+
}, "Close"))));
|
|
106
|
+
}, "JsonViewerButton");
|
|
108
107
|
|
|
109
108
|
// src/components/ModuleDetails.tsx
|
|
110
|
-
|
|
111
|
-
var ModuleDetails = ({ mod, ...props }) => {
|
|
109
|
+
var ModuleDetails = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
112
110
|
const [manifest] = usePromise(async () => {
|
|
113
111
|
return await mod?.manifest();
|
|
114
|
-
}, [
|
|
112
|
+
}, [
|
|
113
|
+
mod
|
|
114
|
+
]);
|
|
115
115
|
const [discover] = usePromise(async () => {
|
|
116
116
|
return await mod?.state();
|
|
117
|
-
}, [
|
|
117
|
+
}, [
|
|
118
|
+
mod
|
|
119
|
+
]);
|
|
118
120
|
const [describe] = usePromise(async () => {
|
|
119
121
|
const state = await mod?.state();
|
|
120
122
|
return state?.find(isPayloadOfSchemaType(ModuleDescriptionSchema));
|
|
121
|
-
}, [
|
|
123
|
+
}, [
|
|
124
|
+
mod
|
|
125
|
+
]);
|
|
122
126
|
const queries = mod?.queries;
|
|
123
127
|
const config = mod?.config;
|
|
124
|
-
return /* @__PURE__ */
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
128
|
+
return /* @__PURE__ */ React5.createElement(FlexCol2, {
|
|
129
|
+
alignItems: "stretch",
|
|
130
|
+
...props
|
|
131
|
+
}, /* @__PURE__ */ React5.createElement(Property, {
|
|
132
|
+
title: "Address",
|
|
133
|
+
value: mod?.address
|
|
134
|
+
}), /* @__PURE__ */ React5.createElement(FlexRow2, {
|
|
135
|
+
gap: 1,
|
|
136
|
+
justifyContent: "space-between"
|
|
137
|
+
}, /* @__PURE__ */ React5.createElement(ButtonGroup, null, manifest ? /* @__PURE__ */ React5.createElement(JsonViewerButton, {
|
|
138
|
+
variant: "contained",
|
|
139
|
+
src: manifest
|
|
140
|
+
}, "Manifest") : null, config ? /* @__PURE__ */ React5.createElement(JsonViewerButton, {
|
|
141
|
+
variant: "contained",
|
|
142
|
+
src: config
|
|
143
|
+
}, "Config") : null, discover ? /* @__PURE__ */ React5.createElement(JsonViewerButton, {
|
|
144
|
+
variant: "contained",
|
|
145
|
+
src: discover
|
|
146
|
+
}, "Discover") : null, describe ? /* @__PURE__ */ React5.createElement(JsonViewerButton, {
|
|
147
|
+
variant: "contained",
|
|
148
|
+
src: describe
|
|
149
|
+
}, "Describe") : null, queries ? /* @__PURE__ */ React5.createElement(JsonViewerButton, {
|
|
150
|
+
variant: "contained",
|
|
151
|
+
src: queries
|
|
152
|
+
}, "Queries") : null), /* @__PURE__ */ React5.createElement(ButtonGroup, null, /* @__PURE__ */ React5.createElement(ButtonEx2, {
|
|
153
|
+
target: "_blank",
|
|
154
|
+
href: `https://explore.xyo.network/block?network=main&address=${mod?.address}`,
|
|
155
|
+
variant: "outlined"
|
|
156
|
+
}, "Main"), /* @__PURE__ */ React5.createElement(ButtonEx2, {
|
|
157
|
+
target: "_blank",
|
|
158
|
+
href: `https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`,
|
|
159
|
+
variant: "outlined"
|
|
160
|
+
}, "Kerplunk"), /* @__PURE__ */ React5.createElement(ButtonEx2, {
|
|
161
|
+
target: "_blank",
|
|
162
|
+
href: `https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`,
|
|
163
|
+
variant: "outlined"
|
|
164
|
+
}, "Local"))));
|
|
165
|
+
}, "ModuleDetails");
|
|
142
166
|
|
|
143
167
|
// src/components/TypedModuleSummary.tsx
|
|
144
168
|
import { isArchivistInstance } from "@xyo-network/archivist-model";
|
|
@@ -147,98 +171,152 @@ import { isDivinerInstance } from "@xyo-network/diviner-model";
|
|
|
147
171
|
import { isNodeInstance } from "@xyo-network/node-model";
|
|
148
172
|
import { isSentinelInstance } from "@xyo-network/sentinel-model";
|
|
149
173
|
import { isWitnessInstance } from "@xyo-network/witness-model";
|
|
174
|
+
import React10 from "react";
|
|
150
175
|
|
|
151
176
|
// src/components/DivinerSummary.tsx
|
|
152
177
|
import { BubbleChartRounded as BubbleChartRoundedIcon } from "@mui/icons-material";
|
|
153
|
-
import
|
|
154
|
-
var DivinerSummary = ({ mod, ...props }) => {
|
|
155
|
-
return /* @__PURE__ */
|
|
156
|
-
|
|
178
|
+
import React6 from "react";
|
|
179
|
+
var DivinerSummary = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
180
|
+
return /* @__PURE__ */ React6.createElement(ModuleSummary, {
|
|
181
|
+
mod,
|
|
182
|
+
icon: /* @__PURE__ */ React6.createElement(BubbleChartRoundedIcon, null),
|
|
183
|
+
...props
|
|
184
|
+
});
|
|
185
|
+
}, "DivinerSummary");
|
|
157
186
|
|
|
158
187
|
// src/components/NodeSummary.tsx
|
|
159
188
|
import { HubRounded as HubRoundedIcon } from "@mui/icons-material";
|
|
160
189
|
import { usePromise as usePromise2 } from "@xylabs/react-promise";
|
|
161
190
|
import { useWeakModulesFromNode as useWeakModulesFromNode2 } from "@xyo-network/react-node";
|
|
162
|
-
import
|
|
163
|
-
var NodeSummary = ({ mod, ...props }) => {
|
|
191
|
+
import React7 from "react";
|
|
192
|
+
var NodeSummary = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
164
193
|
const [manifest] = usePromise2(async () => {
|
|
165
194
|
return await mod?.manifest();
|
|
166
|
-
}, [
|
|
167
|
-
|
|
168
|
-
|
|
195
|
+
}, [
|
|
196
|
+
mod
|
|
197
|
+
]);
|
|
198
|
+
const [downModules] = useWeakModulesFromNode2(void 0, {
|
|
199
|
+
direction: "down"
|
|
200
|
+
});
|
|
201
|
+
const [upModules] = useWeakModulesFromNode2(void 0, {
|
|
202
|
+
direction: "up"
|
|
203
|
+
});
|
|
169
204
|
const downModulesFromResolve = downModules?.length;
|
|
170
205
|
const upModulesFromResolve = upModules?.length;
|
|
171
206
|
const manifestPublicModules = manifest?.modules?.public?.length;
|
|
172
|
-
return /* @__PURE__ */
|
|
173
|
-
|
|
207
|
+
return /* @__PURE__ */ React7.createElement(ModuleSummary, {
|
|
208
|
+
mod,
|
|
209
|
+
icon: /* @__PURE__ */ React7.createElement(HubRoundedIcon, null),
|
|
210
|
+
...props
|
|
211
|
+
}, manifestPublicModules !== void 0 && downModulesFromResolve !== void 0 && upModulesFromResolve !== void 0 ? `[${manifestPublicModules}m/${downModulesFromResolve}\u2193/${upModulesFromResolve}\u2191]` : null);
|
|
212
|
+
}, "NodeSummary");
|
|
174
213
|
|
|
175
214
|
// src/components/SentinelSummary.tsx
|
|
176
215
|
import { TimerRounded as TimerRoundedIcon } from "@mui/icons-material";
|
|
177
|
-
import
|
|
178
|
-
var SentinelSummary = ({ mod, ...props }) => {
|
|
179
|
-
return /* @__PURE__ */
|
|
180
|
-
|
|
216
|
+
import React8 from "react";
|
|
217
|
+
var SentinelSummary = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
218
|
+
return /* @__PURE__ */ React8.createElement(ModuleSummary, {
|
|
219
|
+
mod,
|
|
220
|
+
icon: /* @__PURE__ */ React8.createElement(TimerRoundedIcon, null),
|
|
221
|
+
...props
|
|
222
|
+
});
|
|
223
|
+
}, "SentinelSummary");
|
|
181
224
|
|
|
182
225
|
// src/components/WitnessSummary.tsx
|
|
183
226
|
import { VisibilityRounded as VisibilityRoundedIcon } from "@mui/icons-material";
|
|
184
|
-
import
|
|
185
|
-
var WitnessSummary = ({ mod, ...props }) => {
|
|
186
|
-
return /* @__PURE__ */
|
|
187
|
-
|
|
227
|
+
import React9 from "react";
|
|
228
|
+
var WitnessSummary = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
229
|
+
return /* @__PURE__ */ React9.createElement(ModuleSummary, {
|
|
230
|
+
mod,
|
|
231
|
+
icon: /* @__PURE__ */ React9.createElement(VisibilityRoundedIcon, null),
|
|
232
|
+
...props
|
|
233
|
+
});
|
|
234
|
+
}, "WitnessSummary");
|
|
188
235
|
|
|
189
236
|
// src/components/TypedModuleSummary.tsx
|
|
190
|
-
|
|
191
|
-
var TypedModuleSummary = ({ mod, ...props }) => {
|
|
237
|
+
var TypedModuleSummary = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
192
238
|
if (isArchivistInstance(mod)) {
|
|
193
|
-
return /* @__PURE__ */
|
|
239
|
+
return /* @__PURE__ */ React10.createElement(ArchivistSummary, {
|
|
240
|
+
mod,
|
|
241
|
+
...props
|
|
242
|
+
});
|
|
194
243
|
}
|
|
195
244
|
if (isDivinerInstance(mod)) {
|
|
196
|
-
return /* @__PURE__ */
|
|
245
|
+
return /* @__PURE__ */ React10.createElement(DivinerSummary, {
|
|
246
|
+
mod,
|
|
247
|
+
...props
|
|
248
|
+
});
|
|
197
249
|
}
|
|
198
250
|
if (isNodeInstance(mod)) {
|
|
199
|
-
return /* @__PURE__ */
|
|
251
|
+
return /* @__PURE__ */ React10.createElement(NodeSummary, {
|
|
252
|
+
mod,
|
|
253
|
+
...props
|
|
254
|
+
});
|
|
200
255
|
}
|
|
201
256
|
if (isWitnessInstance(mod)) {
|
|
202
|
-
return /* @__PURE__ */
|
|
257
|
+
return /* @__PURE__ */ React10.createElement(WitnessSummary, {
|
|
258
|
+
mod,
|
|
259
|
+
...props
|
|
260
|
+
});
|
|
203
261
|
}
|
|
204
262
|
if (isBridgeInstance(mod)) {
|
|
205
|
-
return /* @__PURE__ */
|
|
263
|
+
return /* @__PURE__ */ React10.createElement(BridgeSummary, {
|
|
264
|
+
mod,
|
|
265
|
+
...props
|
|
266
|
+
});
|
|
206
267
|
}
|
|
207
268
|
if (isSentinelInstance(mod)) {
|
|
208
|
-
return /* @__PURE__ */
|
|
269
|
+
return /* @__PURE__ */ React10.createElement(SentinelSummary, {
|
|
270
|
+
mod,
|
|
271
|
+
...props
|
|
272
|
+
});
|
|
209
273
|
}
|
|
210
|
-
return /* @__PURE__ */
|
|
211
|
-
|
|
274
|
+
return /* @__PURE__ */ React10.createElement(ModuleSummary, {
|
|
275
|
+
mod,
|
|
276
|
+
...props
|
|
277
|
+
});
|
|
278
|
+
}, "TypedModuleSummary");
|
|
212
279
|
|
|
213
280
|
// src/components/ModuleAccordion.tsx
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
281
|
+
var ModuleAccordion = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
282
|
+
return /* @__PURE__ */ React11.createElement(Accordion, props, /* @__PURE__ */ React11.createElement(AccordionSummary, {
|
|
283
|
+
expandIcon: /* @__PURE__ */ React11.createElement(ExpandMoreIcon, null)
|
|
284
|
+
}, /* @__PURE__ */ React11.createElement(TypedModuleSummary, {
|
|
285
|
+
mod
|
|
286
|
+
})), /* @__PURE__ */ React11.createElement(AccordionDetails, null, /* @__PURE__ */ React11.createElement(ModuleDetails, {
|
|
287
|
+
mod
|
|
288
|
+
})));
|
|
289
|
+
}, "ModuleAccordion");
|
|
221
290
|
|
|
222
291
|
// src/components/NodeDetails.tsx
|
|
223
|
-
|
|
224
|
-
var NodeDetails = ({ mod, ...props }) => {
|
|
292
|
+
var NodeDetails = /* @__PURE__ */ __name(({ mod, ...props }) => {
|
|
225
293
|
const [node = mod] = useProvidedNode();
|
|
226
|
-
const [children] = useWeakModulesFromNode3(void 0, {
|
|
227
|
-
|
|
294
|
+
const [children] = useWeakModulesFromNode3(void 0, {
|
|
295
|
+
node: node ?? void 0
|
|
296
|
+
});
|
|
297
|
+
return /* @__PURE__ */ React12.createElement(FlexCol3, {
|
|
298
|
+
alignItems: "stretch",
|
|
299
|
+
...props
|
|
300
|
+
}, children ? /* @__PURE__ */ React12.createElement(FlexCol3, {
|
|
301
|
+
alignItems: "stretch",
|
|
302
|
+
marginY: 1
|
|
303
|
+
}, children?.map((child) => {
|
|
228
304
|
const instance = child.deref();
|
|
229
|
-
return instance ? /* @__PURE__ */
|
|
230
|
-
|
|
231
|
-
|
|
305
|
+
return instance ? /* @__PURE__ */ React12.createElement(ModuleAccordion, {
|
|
306
|
+
key: instance.address,
|
|
307
|
+
mod: instance
|
|
308
|
+
}) : null;
|
|
309
|
+
})) : null);
|
|
310
|
+
}, "NodeDetails");
|
|
232
311
|
|
|
233
312
|
// src/components/DebugDialog.tsx
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
/* @__PURE__ */
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
};
|
|
313
|
+
var DebugDialog = /* @__PURE__ */ __name(({ onClose, ...props }) => {
|
|
314
|
+
return /* @__PURE__ */ React13.createElement(Dialog2, props, /* @__PURE__ */ React13.createElement(DialogTitle2, null, "Xyo Module Viewer"), /* @__PURE__ */ React13.createElement(DialogContent2, null, /* @__PURE__ */ React13.createElement(NodeDetails, {
|
|
315
|
+
width: "100%"
|
|
316
|
+
})), /* @__PURE__ */ React13.createElement(DialogActions2, null, /* @__PURE__ */ React13.createElement(Button, {
|
|
317
|
+
onClick: /* @__PURE__ */ __name((event) => onClose?.(event, "backdropClick"), "onClick")
|
|
318
|
+
}, "Close")));
|
|
319
|
+
}, "DebugDialog");
|
|
242
320
|
|
|
243
321
|
// src/components/PoweredByXyo.tsx
|
|
244
322
|
import { Paper } from "@mui/material";
|
|
@@ -247,13 +325,13 @@ import { forget } from "@xylabs/forget";
|
|
|
247
325
|
import { useAsyncEffect } from "@xylabs/react-async-effect";
|
|
248
326
|
import { FlexCol as FlexCol6 } from "@xylabs/react-flexbox";
|
|
249
327
|
import { useProvidedNode as useProvidedNode2 } from "@xyo-network/react-node";
|
|
250
|
-
import { useMemo, useState as useState5 } from "react";
|
|
328
|
+
import React16, { useMemo, useState as useState5 } from "react";
|
|
251
329
|
|
|
252
330
|
// src/components/PoweredByXyoButton.tsx
|
|
253
331
|
import { Typography } from "@mui/material";
|
|
254
332
|
import { ButtonEx as ButtonEx3 } from "@xylabs/react-button";
|
|
255
333
|
import { FlexCol as FlexCol5, FlexRow as FlexRow3 } from "@xylabs/react-flexbox";
|
|
256
|
-
import { useEffect, useState as useState4 } from "react";
|
|
334
|
+
import React15, { useEffect, useState as useState4 } from "react";
|
|
257
335
|
|
|
258
336
|
// src/img/xyo-color-logo.svg
|
|
259
337
|
var xyo_color_logo_default = '<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>';
|
|
@@ -263,96 +341,79 @@ var xyo_color_logo_text_only_default = '<svg id="Layer_1" data-name="Layer 1" xm
|
|
|
263
341
|
|
|
264
342
|
// src/components/XyoBusy.tsx
|
|
265
343
|
import { FlexCol as FlexCol4 } from "@xylabs/react-flexbox";
|
|
266
|
-
import { useState as useState3 } from "react";
|
|
267
|
-
|
|
268
|
-
var XyoBusy = ({
|
|
269
|
-
widthInPixels,
|
|
270
|
-
busy,
|
|
271
|
-
spinsPerSecond = 0.5,
|
|
272
|
-
...props
|
|
273
|
-
}) => {
|
|
344
|
+
import React14, { useState as useState3 } from "react";
|
|
345
|
+
var XyoBusy = /* @__PURE__ */ __name(({ widthInPixels, busy, spinsPerSecond = 0.5, ...props }) => {
|
|
274
346
|
const [imageLoaded, setImageLoaded] = useState3(false);
|
|
275
347
|
if (!imageLoaded) {
|
|
276
348
|
const img = new Image();
|
|
277
349
|
img.addEventListener("load", () => setImageLoaded(true));
|
|
278
350
|
img.src = xyo_color_logo_default;
|
|
279
351
|
}
|
|
280
|
-
return imageLoaded ? /* @__PURE__ */
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
"0%": { transform: "rotate(360deg)" },
|
|
286
|
-
"100%": { transform: "rotate(0deg)" }
|
|
352
|
+
return imageLoaded ? /* @__PURE__ */ React14.createElement(FlexCol4, {
|
|
353
|
+
sx: {
|
|
354
|
+
"@keyframes spin": {
|
|
355
|
+
"0%": {
|
|
356
|
+
transform: "rotate(360deg)"
|
|
287
357
|
},
|
|
288
|
-
"
|
|
289
|
-
|
|
358
|
+
"100%": {
|
|
359
|
+
transform: "rotate(0deg)"
|
|
360
|
+
}
|
|
290
361
|
},
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
}
|
|
362
|
+
"animation": busy ? `spin ${1 / spinsPerSecond}s linear infinite` : void 0,
|
|
363
|
+
"animationDirection": "reverse"
|
|
364
|
+
},
|
|
365
|
+
...props
|
|
366
|
+
}, /* @__PURE__ */ React14.createElement("img", {
|
|
367
|
+
src: xyo_color_logo_default,
|
|
368
|
+
height: widthInPixels ?? 22
|
|
369
|
+
})) : null;
|
|
370
|
+
}, "XyoBusy");
|
|
296
371
|
|
|
297
372
|
// src/components/PoweredByXyoButton.tsx
|
|
298
|
-
|
|
299
|
-
var PoweredByXyoButton = ({
|
|
300
|
-
busy = false,
|
|
301
|
-
logoHeight,
|
|
302
|
-
logoTextSize,
|
|
303
|
-
...props
|
|
304
|
-
}) => {
|
|
373
|
+
var PoweredByXyoButton = /* @__PURE__ */ __name(({ busy = false, logoHeight, logoTextSize, ...props }) => {
|
|
305
374
|
const [imageLoaded, setImageLoaded] = useState4(false);
|
|
306
375
|
useEffect(() => {
|
|
307
376
|
const img = new Image();
|
|
308
|
-
const onImageLoaded = () => setImageLoaded(true);
|
|
377
|
+
const onImageLoaded = /* @__PURE__ */ __name(() => setImageLoaded(true), "onImageLoaded");
|
|
309
378
|
img.addEventListener("load", onImageLoaded);
|
|
310
379
|
img.src = xyo_color_logo_text_only_default;
|
|
311
380
|
return () => {
|
|
312
381
|
img.removeEventListener("load", onImageLoaded);
|
|
313
382
|
};
|
|
314
383
|
}, []);
|
|
315
|
-
return imageLoaded ? /* @__PURE__ */
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
padding: 0,
|
|
325
|
-
...props.sx
|
|
326
|
-
},
|
|
327
|
-
children: /* @__PURE__ */ jsxs6(FlexCol5, { padding: 0.5, children: [
|
|
328
|
-
/* @__PURE__ */ jsx15(Typography, { style: { fontSize: logoTextSize ?? 10 }, fontSize: "small", children: "Powered by" }),
|
|
329
|
-
/* @__PURE__ */ jsxs6(FlexRow3, { children: [
|
|
330
|
-
/* @__PURE__ */ jsx15(XyoBusy, { busy }),
|
|
331
|
-
/* @__PURE__ */ jsx15("img", { src: xyo_color_logo_text_only_default, height: logoHeight ?? 24, width: 45 })
|
|
332
|
-
] })
|
|
333
|
-
] })
|
|
384
|
+
return imageLoaded ? /* @__PURE__ */ React15.createElement(ButtonEx3, {
|
|
385
|
+
...props,
|
|
386
|
+
target: props.target ?? "_blank",
|
|
387
|
+
variant: props.variant ?? "text",
|
|
388
|
+
sx: {
|
|
389
|
+
textDecoration: "none",
|
|
390
|
+
borderRadius: 0,
|
|
391
|
+
padding: 0,
|
|
392
|
+
...props.sx
|
|
334
393
|
}
|
|
335
|
-
|
|
336
|
-
|
|
394
|
+
}, /* @__PURE__ */ React15.createElement(FlexCol5, {
|
|
395
|
+
padding: 0.5
|
|
396
|
+
}, /* @__PURE__ */ React15.createElement(Typography, {
|
|
397
|
+
style: {
|
|
398
|
+
fontSize: logoTextSize ?? 10
|
|
399
|
+
},
|
|
400
|
+
fontSize: "small"
|
|
401
|
+
}, "Powered by"), /* @__PURE__ */ React15.createElement(FlexRow3, null, /* @__PURE__ */ React15.createElement(XyoBusy, {
|
|
402
|
+
busy
|
|
403
|
+
}), /* @__PURE__ */ React15.createElement("img", {
|
|
404
|
+
src: xyo_color_logo_text_only_default,
|
|
405
|
+
height: logoHeight ?? 24,
|
|
406
|
+
width: 45
|
|
407
|
+
})))) : null;
|
|
408
|
+
}, "PoweredByXyoButton");
|
|
337
409
|
|
|
338
410
|
// src/components/PoweredByXyo.tsx
|
|
339
|
-
|
|
340
|
-
var PoweredByXyo = ({
|
|
341
|
-
autoStop,
|
|
342
|
-
busy,
|
|
343
|
-
buttonProps,
|
|
344
|
-
debugDialog = false,
|
|
345
|
-
disableAnimation = false,
|
|
346
|
-
href = "https://xyo.network",
|
|
347
|
-
logoHeight,
|
|
348
|
-
logoTextSize,
|
|
349
|
-
onButtonClick,
|
|
350
|
-
node: propNode,
|
|
351
|
-
...props
|
|
352
|
-
}) => {
|
|
411
|
+
var PoweredByXyo = /* @__PURE__ */ __name(({ autoStop, busy, buttonProps, debugDialog = false, disableAnimation = false, href = "https://xyo.network", logoHeight, logoTextSize, onButtonClick, node: propNode, ...props }) => {
|
|
353
412
|
const [node] = useProvidedNode2();
|
|
354
413
|
const [debugDialogOpen, setDebugDialogOpen] = useState5(false);
|
|
355
|
-
const busyMap = useMemo(() => ({}), [
|
|
414
|
+
const busyMap = useMemo(() => ({}), [
|
|
415
|
+
node
|
|
416
|
+
]);
|
|
356
417
|
const activeBusy = busy ?? Object.values(busyMap).includes(true);
|
|
357
418
|
const activeOnButtonClick = (debugDialog ? (event) => {
|
|
358
419
|
if (event.shiftKey && event.altKey) {
|
|
@@ -362,72 +423,77 @@ var PoweredByXyo = ({
|
|
|
362
423
|
}
|
|
363
424
|
} : void 0) ?? onButtonClick;
|
|
364
425
|
const activeHref = activeOnButtonClick ? void 0 : href;
|
|
365
|
-
const onKeyDownEscListener = (event) => {
|
|
426
|
+
const onKeyDownEscListener = /* @__PURE__ */ __name((event) => {
|
|
366
427
|
if (event.key === "Escape" && debugDialogOpen) {
|
|
367
428
|
setDebugDialogOpen(false);
|
|
368
429
|
}
|
|
369
|
-
};
|
|
370
|
-
useAsyncEffect(
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
busyMap[mod2.address] = busy2;
|
|
380
|
-
if (autoStop) {
|
|
381
|
-
forget(
|
|
382
|
-
(async () => {
|
|
383
|
-
await delay2(1e3);
|
|
384
|
-
busyMap[mod2.address] = false;
|
|
385
|
-
})()
|
|
386
|
-
);
|
|
387
|
-
}
|
|
388
|
-
});
|
|
389
|
-
});
|
|
390
|
-
activeNode?.on("moduleBusy", ({ mod, busy: busy2 }) => {
|
|
391
|
-
busyMap[mod.address] = busy2;
|
|
430
|
+
}, "onKeyDownEscListener");
|
|
431
|
+
useAsyncEffect(async () => {
|
|
432
|
+
const activeNode = propNode ?? node;
|
|
433
|
+
if (disableAnimation) {
|
|
434
|
+
return;
|
|
435
|
+
} else if (activeNode) {
|
|
436
|
+
const mods = await activeNode?.resolve("*");
|
|
437
|
+
mods?.map((mod) => {
|
|
438
|
+
return mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
|
|
439
|
+
busyMap[mod2.address] = busy2;
|
|
392
440
|
if (autoStop) {
|
|
393
|
-
forget(
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
})()
|
|
398
|
-
);
|
|
441
|
+
forget((async () => {
|
|
442
|
+
await delay2(1e3);
|
|
443
|
+
busyMap[mod2.address] = false;
|
|
444
|
+
})());
|
|
399
445
|
}
|
|
400
446
|
});
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
447
|
+
});
|
|
448
|
+
activeNode?.on("moduleBusy", ({ mod, busy: busy2 }) => {
|
|
449
|
+
busyMap[mod.address] = busy2;
|
|
450
|
+
if (autoStop) {
|
|
451
|
+
forget((async () => {
|
|
452
|
+
await delay2(1e3);
|
|
453
|
+
busyMap[mod.address] = false;
|
|
454
|
+
})());
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
}, [
|
|
459
|
+
disableAnimation,
|
|
460
|
+
propNode,
|
|
461
|
+
node,
|
|
462
|
+
busyMap,
|
|
463
|
+
autoStop
|
|
464
|
+
]);
|
|
465
|
+
return /* @__PURE__ */ React16.createElement(FlexCol6, {
|
|
466
|
+
alignItems: "stretch",
|
|
467
|
+
position: "absolute",
|
|
468
|
+
bottom: "0",
|
|
469
|
+
left: "0",
|
|
470
|
+
...props
|
|
471
|
+
}, /* @__PURE__ */ React16.createElement(Paper, {
|
|
472
|
+
sx: {
|
|
473
|
+
borderRadius: 0
|
|
474
|
+
}
|
|
475
|
+
}, activeHref ? /* @__PURE__ */ React16.createElement(PoweredByXyoButton, {
|
|
476
|
+
onClick: activeOnButtonClick,
|
|
477
|
+
href: activeHref,
|
|
478
|
+
busy: activeBusy,
|
|
479
|
+
logoHeight,
|
|
480
|
+
logoTextSize,
|
|
481
|
+
fullWidth: true,
|
|
482
|
+
...buttonProps
|
|
483
|
+
}) : /* @__PURE__ */ React16.createElement(PoweredByXyoButton, {
|
|
484
|
+
onClick: activeOnButtonClick,
|
|
485
|
+
busy: activeBusy,
|
|
486
|
+
logoHeight,
|
|
487
|
+
logoTextSize,
|
|
488
|
+
fullWidth: true,
|
|
489
|
+
...buttonProps
|
|
490
|
+
})), debugDialog && debugDialogOpen ? /* @__PURE__ */ React16.createElement(DebugDialog, {
|
|
491
|
+
fullScreen: true,
|
|
492
|
+
open: debugDialogOpen,
|
|
493
|
+
onClose: /* @__PURE__ */ __name(() => setDebugDialogOpen(false), "onClose"),
|
|
494
|
+
onKeyDown: onKeyDownEscListener
|
|
495
|
+
}) : null);
|
|
496
|
+
}, "PoweredByXyo");
|
|
431
497
|
export {
|
|
432
498
|
ArchivistSummary,
|
|
433
499
|
BridgeSummary,
|
|
@@ -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 <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"]}
|
|
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":["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","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": "7.
|
|
3
|
+
"version": "7.5.0",
|
|
4
4
|
"description": "Common React library for all XYO projects that use React",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xyo",
|
|
@@ -43,44 +43,45 @@
|
|
|
43
43
|
"src"
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@xylabs/delay": "~5.0.
|
|
47
|
-
"@xylabs/forget": "~5.0.
|
|
48
|
-
"@xylabs/react-async-effect": "~7.1.
|
|
49
|
-
"@xylabs/react-button": "~7.1.
|
|
50
|
-
"@xylabs/react-flexbox": "~7.1.
|
|
51
|
-
"@xylabs/react-promise": "~7.1.
|
|
52
|
-
"@xyo-network/archivist-model": "~5.2
|
|
53
|
-
"@xyo-network/bridge-model": "~5.2
|
|
54
|
-
"@xyo-network/diviner-model": "~5.2
|
|
55
|
-
"@xyo-network/module-model": "~5.2
|
|
56
|
-
"@xyo-network/node-model": "~5.2
|
|
57
|
-
"@xyo-network/payload-model": "~5.2
|
|
58
|
-
"@xyo-network/react-node": "
|
|
59
|
-
"@xyo-network/react-payload-raw-info": "
|
|
60
|
-
"@xyo-network/react-property": "
|
|
61
|
-
"@xyo-network/react-shared": "
|
|
62
|
-
"@xyo-network/sentinel-model": "~5.2
|
|
63
|
-
"@xyo-network/witness-model": "~5.2
|
|
46
|
+
"@xylabs/delay": "~5.0.64",
|
|
47
|
+
"@xylabs/forget": "~5.0.64",
|
|
48
|
+
"@xylabs/react-async-effect": "~7.1.9",
|
|
49
|
+
"@xylabs/react-button": "~7.1.9",
|
|
50
|
+
"@xylabs/react-flexbox": "~7.1.9",
|
|
51
|
+
"@xylabs/react-promise": "~7.1.9",
|
|
52
|
+
"@xyo-network/archivist-model": "~5.3.2",
|
|
53
|
+
"@xyo-network/bridge-model": "~5.3.2",
|
|
54
|
+
"@xyo-network/diviner-model": "~5.3.2",
|
|
55
|
+
"@xyo-network/module-model": "~5.3.2",
|
|
56
|
+
"@xyo-network/node-model": "~5.3.2",
|
|
57
|
+
"@xyo-network/payload-model": "~5.3.2",
|
|
58
|
+
"@xyo-network/react-node": "7.5.0",
|
|
59
|
+
"@xyo-network/react-payload-raw-info": "7.5.0",
|
|
60
|
+
"@xyo-network/react-property": "7.5.0",
|
|
61
|
+
"@xyo-network/react-shared": "7.5.0",
|
|
62
|
+
"@xyo-network/sentinel-model": "~5.3.2",
|
|
63
|
+
"@xyo-network/witness-model": "~5.3.2"
|
|
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": "~10.1
|
|
71
|
-
"@types/react": "^19.2.
|
|
72
|
-
"@xylabs/hex": "~5.0.
|
|
73
|
-
"@xylabs/
|
|
74
|
-
"@
|
|
75
|
-
"@xyo-network/
|
|
76
|
-
"@xyo-network/
|
|
77
|
-
"@xyo-network/
|
|
78
|
-
"
|
|
79
|
-
"react
|
|
80
|
-
"react-
|
|
81
|
-
"
|
|
68
|
+
"@mui/icons-material": "~7.3.7",
|
|
69
|
+
"@mui/material": "~7.3.7",
|
|
70
|
+
"@storybook/react-vite": "~10.2.1",
|
|
71
|
+
"@types/react": "^19.2.10",
|
|
72
|
+
"@xylabs/hex": "~5.0.64",
|
|
73
|
+
"@xylabs/sdk-js": "~5.0.64",
|
|
74
|
+
"@xylabs/ts-scripts-yarn3": "~7.3.2",
|
|
75
|
+
"@xyo-network/account": "~5.3.2",
|
|
76
|
+
"@xyo-network/manifest": "~5.3.2",
|
|
77
|
+
"@xyo-network/module-factory-locator": "~5.3.2",
|
|
78
|
+
"@xyo-network/wallet": "~5.3.2",
|
|
79
|
+
"react": "^19.2.4",
|
|
80
|
+
"react-dom": "^19.2.4",
|
|
81
|
+
"react-router-dom": "^7.13.0",
|
|
82
|
+
"storybook": "~10.2.1",
|
|
82
83
|
"typescript": "^5.9.3",
|
|
83
|
-
"vite": "~7.
|
|
84
|
+
"vite": "~7.3.1"
|
|
84
85
|
},
|
|
85
86
|
"peerDependencies": {
|
|
86
87
|
"@mui/icons-material": ">=6 <8",
|
|
@@ -92,4 +93,4 @@
|
|
|
92
93
|
"access": "public"
|
|
93
94
|
},
|
|
94
95
|
"docs": "dist/docs.json"
|
|
95
|
-
}
|
|
96
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Meta, StoryFn } from '@storybook/react-vite'
|
|
2
2
|
import { delay } from '@xylabs/delay'
|
|
3
|
-
import type { Hash } from '@xylabs/hex'
|
|
4
3
|
import { useAsyncEffect } from '@xylabs/react-async-effect'
|
|
5
4
|
import { FlexCol } from '@xylabs/react-flexbox'
|
|
6
5
|
import { usePromise } from '@xylabs/react-promise'
|
|
6
|
+
import type { Hash } from '@xylabs/sdk-js'
|
|
7
7
|
import { asArchivistInstance } from '@xyo-network/archivist-model'
|
|
8
8
|
import type { PackageManifestPayload } from '@xyo-network/manifest'
|
|
9
9
|
import { ManifestWrapper } from '@xyo-network/manifest'
|
|
@@ -34,7 +34,7 @@ const TemplateWithNodeContainer: StoryFn<typeof PoweredByXyo> = (props: PoweredB
|
|
|
34
34
|
useAsyncEffect(
|
|
35
35
|
async () => {
|
|
36
36
|
const wallet = await HDWallet.random()
|
|
37
|
-
const manifest = new ManifestWrapper(simpleNodeInlineManifest as PackageManifestPayload, wallet, new ModuleFactoryLocator())
|
|
37
|
+
const manifest = new ManifestWrapper(simpleNodeInlineManifest as unknown as PackageManifestPayload, wallet, new ModuleFactoryLocator())
|
|
38
38
|
const [node] = await manifest.loadNodes()
|
|
39
39
|
setNode(node)
|
|
40
40
|
},
|