@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.
@@ -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-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>;
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,uJAA6B,CAAA;AAE1C,QAAA,MAAM,IAAI,uJAA6B,CAAA;AAGvC,QAAA,MAAM,QAAQ,uJAAqC,CAAA;AAEnD,QAAA,MAAM,gBAAgB,uJAAqC,CAAA;AAG3D,OAAO,EACL,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,GAC1C,CAAA;AAED,eAAe,cAAc,CAAA"}
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(".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>;
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,6JAA6B,CAAA;AAC1C,QAAA,MAAM,IAAI,6JAA6B,CAAA;AAGvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAExB,eAAe,cAAc,CAAA"}
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(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, Omit<import("@xylabs/react-flexbox").BusyBoxProps, "children"> & {
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(".store/storybook-virtual-a067dd1507/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, Omit<import("@xylabs/react-flexbox").BusyBoxProps, "children"> & {
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;
@@ -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
- import { jsx, jsxs } from "react/jsx-runtime";
12
- var ModuleSummary = ({
13
- children,
14
- icon,
15
- mod,
16
- ...props
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__ */ jsx(FlexCol, { alignItems: "stretch", width: "100%", ...props, children: /* @__PURE__ */ jsxs(FlexRow, { justifyContent: "flex-start", children: [
29
- /* @__PURE__ */ jsxs(FlexRow, { children: [
30
- /* @__PURE__ */ jsx(TypographyEx, { color: busy ? "gray" : void 0, children: icon ?? /* @__PURE__ */ jsx(ExtensionIcon, {}) }),
31
- /* @__PURE__ */ jsx(TypographyEx, { marginX: 1, children: mod?.config?.name ?? "<Unknown>" })
32
- ] }),
33
- children ?? (downModulesFromResolve !== void 0 && upModulesFromResolve !== void 0) ? `[${downModulesFromResolve}\u2193/${upModulesFromResolve}\u2191]` : null
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
- import { jsx as jsx2 } from "react/jsx-runtime";
39
- var ArchivistSummary = ({ mod, ...props }) => {
40
- return /* @__PURE__ */ jsx2(ModuleSummary, { mod, icon: /* @__PURE__ */ jsx2(Inventory2RoundedIcon, {}), ...props });
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 { jsx as jsx3 } from "react/jsx-runtime";
46
- var BridgeSummary = ({ mod, ...props }) => {
47
- return /* @__PURE__ */ jsx3(ModuleSummary, { mod, icon: /* @__PURE__ */ jsx3(InsertLinkRoundedIcon, {}), ...props });
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
- Button,
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
- Accordion,
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
- import { Fragment, jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
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__ */ jsxs2(Fragment, { children: [
100
- /* @__PURE__ */ jsx4(ButtonEx, { onClick: () => setOpen(!open), ...props, children: children ?? "JSON" }),
101
- /* @__PURE__ */ jsxs2(Dialog, { open, onClose: () => setOpen(false), children: [
102
- title ? /* @__PURE__ */ jsx4(DialogTitle, { children: title }) : null,
103
- /* @__PURE__ */ jsx4(DialogContent, { children: /* @__PURE__ */ jsx4(JsonViewerEx, { value: src, ...jsonViewProps }) }),
104
- /* @__PURE__ */ jsx4(DialogActions, { children: /* @__PURE__ */ jsx4(ButtonEx, { onClick: () => setOpen(false), children: "Close" }) })
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
- import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
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
- }, [mod]);
112
+ }, [
113
+ mod
114
+ ]);
115
115
  const [discover] = usePromise(async () => {
116
116
  return await mod?.state();
117
- }, [mod]);
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
- }, [mod]);
123
+ }, [
124
+ mod
125
+ ]);
122
126
  const queries = mod?.queries;
123
127
  const config = mod?.config;
124
- return /* @__PURE__ */ jsxs3(FlexCol2, { alignItems: "stretch", ...props, children: [
125
- /* @__PURE__ */ jsx5(Property, { title: "Address", value: mod?.address }),
126
- /* @__PURE__ */ jsxs3(FlexRow2, { gap: 1, justifyContent: "space-between", children: [
127
- /* @__PURE__ */ jsxs3(ButtonGroup, { children: [
128
- manifest ? /* @__PURE__ */ jsx5(JsonViewerButton, { variant: "contained", src: manifest, children: "Manifest" }) : null,
129
- config ? /* @__PURE__ */ jsx5(JsonViewerButton, { variant: "contained", src: config, children: "Config" }) : null,
130
- discover ? /* @__PURE__ */ jsx5(JsonViewerButton, { variant: "contained", src: discover, children: "Discover" }) : null,
131
- describe ? /* @__PURE__ */ jsx5(JsonViewerButton, { variant: "contained", src: describe, children: "Describe" }) : null,
132
- queries ? /* @__PURE__ */ jsx5(JsonViewerButton, { variant: "contained", src: queries, children: "Queries" }) : null
133
- ] }),
134
- /* @__PURE__ */ jsxs3(ButtonGroup, { children: [
135
- /* @__PURE__ */ jsx5(ButtonEx2, { target: "_blank", href: `https://explore.xyo.network/block?network=main&address=${mod?.address}`, variant: "outlined", children: "Main" }),
136
- /* @__PURE__ */ jsx5(ButtonEx2, { target: "_blank", href: `https://beta.explore.xyo.network/block?network=kerplunk&address=${mod?.address}`, variant: "outlined", children: "Kerplunk" }),
137
- /* @__PURE__ */ jsx5(ButtonEx2, { target: "_blank", href: `https://beta.explore.xyo.network/block?network=local&address=${mod?.address}`, variant: "outlined", children: "Local" })
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 { jsx as jsx6 } from "react/jsx-runtime";
154
- var DivinerSummary = ({ mod, ...props }) => {
155
- return /* @__PURE__ */ jsx6(ModuleSummary, { mod, icon: /* @__PURE__ */ jsx6(BubbleChartRoundedIcon, {}), ...props });
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 { jsx as jsx7 } from "react/jsx-runtime";
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
- }, [mod]);
167
- const [downModules] = useWeakModulesFromNode2(void 0, { direction: "down" });
168
- const [upModules] = useWeakModulesFromNode2(void 0, { direction: "up" });
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__ */ jsx7(ModuleSummary, { mod, icon: /* @__PURE__ */ jsx7(HubRoundedIcon, {}), ...props, children: manifestPublicModules !== void 0 && downModulesFromResolve !== void 0 && upModulesFromResolve !== void 0 ? `[${manifestPublicModules}m/${downModulesFromResolve}\u2193/${upModulesFromResolve}\u2191]` : null });
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 { jsx as jsx8 } from "react/jsx-runtime";
178
- var SentinelSummary = ({ mod, ...props }) => {
179
- return /* @__PURE__ */ jsx8(ModuleSummary, { mod, icon: /* @__PURE__ */ jsx8(TimerRoundedIcon, {}), ...props });
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 { jsx as jsx9 } from "react/jsx-runtime";
185
- var WitnessSummary = ({ mod, ...props }) => {
186
- return /* @__PURE__ */ jsx9(ModuleSummary, { mod, icon: /* @__PURE__ */ jsx9(VisibilityRoundedIcon, {}), ...props });
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
- import { jsx as jsx10 } from "react/jsx-runtime";
191
- var TypedModuleSummary = ({ mod, ...props }) => {
237
+ var TypedModuleSummary = /* @__PURE__ */ __name(({ mod, ...props }) => {
192
238
  if (isArchivistInstance(mod)) {
193
- return /* @__PURE__ */ jsx10(ArchivistSummary, { mod, ...props });
239
+ return /* @__PURE__ */ React10.createElement(ArchivistSummary, {
240
+ mod,
241
+ ...props
242
+ });
194
243
  }
195
244
  if (isDivinerInstance(mod)) {
196
- return /* @__PURE__ */ jsx10(DivinerSummary, { mod, ...props });
245
+ return /* @__PURE__ */ React10.createElement(DivinerSummary, {
246
+ mod,
247
+ ...props
248
+ });
197
249
  }
198
250
  if (isNodeInstance(mod)) {
199
- return /* @__PURE__ */ jsx10(NodeSummary, { mod, ...props });
251
+ return /* @__PURE__ */ React10.createElement(NodeSummary, {
252
+ mod,
253
+ ...props
254
+ });
200
255
  }
201
256
  if (isWitnessInstance(mod)) {
202
- return /* @__PURE__ */ jsx10(WitnessSummary, { mod, ...props });
257
+ return /* @__PURE__ */ React10.createElement(WitnessSummary, {
258
+ mod,
259
+ ...props
260
+ });
203
261
  }
204
262
  if (isBridgeInstance(mod)) {
205
- return /* @__PURE__ */ jsx10(BridgeSummary, { mod, ...props });
263
+ return /* @__PURE__ */ React10.createElement(BridgeSummary, {
264
+ mod,
265
+ ...props
266
+ });
206
267
  }
207
268
  if (isSentinelInstance(mod)) {
208
- return /* @__PURE__ */ jsx10(SentinelSummary, { mod, ...props });
269
+ return /* @__PURE__ */ React10.createElement(SentinelSummary, {
270
+ mod,
271
+ ...props
272
+ });
209
273
  }
210
- return /* @__PURE__ */ jsx10(ModuleSummary, { mod, ...props });
211
- };
274
+ return /* @__PURE__ */ React10.createElement(ModuleSummary, {
275
+ mod,
276
+ ...props
277
+ });
278
+ }, "TypedModuleSummary");
212
279
 
213
280
  // src/components/ModuleAccordion.tsx
214
- import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
215
- var ModuleAccordion = ({ mod, ...props }) => {
216
- return /* @__PURE__ */ jsxs4(Accordion, { ...props, children: [
217
- /* @__PURE__ */ jsx11(AccordionSummary, { expandIcon: /* @__PURE__ */ jsx11(ExpandMoreIcon, {}), children: /* @__PURE__ */ jsx11(TypedModuleSummary, { mod }) }),
218
- /* @__PURE__ */ jsx11(AccordionDetails, { children: /* @__PURE__ */ jsx11(ModuleDetails, { mod }) })
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
- import { jsx as jsx12 } from "react/jsx-runtime";
224
- var NodeDetails = ({ mod, ...props }) => {
292
+ var NodeDetails = /* @__PURE__ */ __name(({ mod, ...props }) => {
225
293
  const [node = mod] = useProvidedNode();
226
- const [children] = useWeakModulesFromNode3(void 0, { node: node ?? void 0 });
227
- return /* @__PURE__ */ jsx12(FlexCol3, { alignItems: "stretch", ...props, children: children ? /* @__PURE__ */ jsx12(FlexCol3, { alignItems: "stretch", marginY: 1, children: children?.map((child) => {
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__ */ jsx12(ModuleAccordion, { mod: instance }, instance.address) : null;
230
- }) }) : null });
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
- import { jsx as jsx13, jsxs as jsxs5 } from "react/jsx-runtime";
235
- var DebugDialog = ({ onClose, ...props }) => {
236
- return /* @__PURE__ */ jsxs5(Dialog2, { ...props, children: [
237
- /* @__PURE__ */ jsx13(DialogTitle2, { children: "Xyo Module Viewer" }),
238
- /* @__PURE__ */ jsx13(DialogContent2, { children: /* @__PURE__ */ jsx13(NodeDetails, { width: "100%" }) }),
239
- /* @__PURE__ */ jsx13(DialogActions2, { children: /* @__PURE__ */ jsx13(Button, { onClick: (event) => onClose?.(event, "backdropClick"), children: "Close" }) })
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
- import { jsx as jsx14 } from "react/jsx-runtime";
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__ */ jsx14(
281
- FlexCol4,
282
- {
283
- sx: {
284
- "@keyframes spin": {
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
- "animation": busy ? `spin ${1 / spinsPerSecond}s linear infinite` : void 0,
289
- "animationDirection": "reverse"
358
+ "100%": {
359
+ transform: "rotate(0deg)"
360
+ }
290
361
  },
291
- ...props,
292
- children: /* @__PURE__ */ jsx14("img", { src: xyo_color_logo_default, height: widthInPixels ?? 22 })
293
- }
294
- ) : null;
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
- import { jsx as jsx15, jsxs as jsxs6 } from "react/jsx-runtime";
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__ */ jsx15(
316
- ButtonEx3,
317
- {
318
- ...props,
319
- target: props.target ?? "_blank",
320
- variant: props.variant ?? "text",
321
- sx: {
322
- textDecoration: "none",
323
- borderRadius: 0,
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
- ) : null;
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
- import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
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(() => ({}), [node]);
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
- async () => {
372
- const activeNode = propNode ?? node;
373
- if (disableAnimation) {
374
- return;
375
- } else if (activeNode) {
376
- const mods = await activeNode?.resolve("*");
377
- mods?.map((mod) => {
378
- return mod.on("moduleBusy", ({ mod: mod2, busy: busy2 }) => {
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
- (async () => {
395
- await delay2(1e3);
396
- busyMap[mod.address] = false;
397
- })()
398
- );
441
+ forget((async () => {
442
+ await delay2(1e3);
443
+ busyMap[mod2.address] = false;
444
+ })());
399
445
  }
400
446
  });
401
- }
402
- },
403
- [disableAnimation, propNode, node, busyMap, autoStop]
404
- );
405
- return /* @__PURE__ */ jsxs7(FlexCol6, { alignItems: "stretch", position: "absolute", bottom: "0", left: "0", ...props, children: [
406
- /* @__PURE__ */ jsx16(Paper, { sx: { borderRadius: 0 }, children: activeHref ? /* @__PURE__ */ jsx16(
407
- PoweredByXyoButton,
408
- {
409
- onClick: activeOnButtonClick,
410
- href: activeHref,
411
- busy: activeBusy,
412
- logoHeight,
413
- logoTextSize,
414
- fullWidth: true,
415
- ...buttonProps
416
- }
417
- ) : /* @__PURE__ */ jsx16(
418
- PoweredByXyoButton,
419
- {
420
- onClick: activeOnButtonClick,
421
- busy: activeBusy,
422
- logoHeight,
423
- logoTextSize,
424
- fullWidth: true,
425
- ...buttonProps
426
- }
427
- ) }),
428
- debugDialog && debugDialogOpen ? /* @__PURE__ */ jsx16(DebugDialog, { fullScreen: true, open: debugDialogOpen, onClose: () => setDebugDialogOpen(false), onKeyDown: onKeyDownEscListener }) : null
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.4.1",
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.50",
47
- "@xylabs/forget": "~5.0.50",
48
- "@xylabs/react-async-effect": "~7.1.8",
49
- "@xylabs/react-button": "~7.1.8",
50
- "@xylabs/react-flexbox": "~7.1.8",
51
- "@xylabs/react-promise": "~7.1.8",
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"
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.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",
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.2.6"
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
  },